[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <kq8q3h$9lu$1@ger.gmane.org>
Date: Mon, 24 Jun 2013 06:48:17 +0000 (UTC)
From: Cong Wang <xiyou.wangcong@...il.com>
To: netdev@...r.kernel.org
Subject: Re: [PATCH net-next v4 2/2] vxlan: allow specifying multiple
default destinations
On Sun, 23 Jun 2013 at 16:22 GMT, Mike Rapoport <mike.rapoport@...ellosystems.com> wrote:
> static int vxlan_validate(struct nlattr *tb[], struct nlattr *data[])
> {
> + int err;
> +
> if (tb[IFLA_ADDRESS]) {
> if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN) {
> pr_debug("invalid link address (not ethernet)\n");
> @@ -1460,6 +1599,10 @@ static int vxlan_validate(struct nlattr *tb[], struct nlattr *data[])
> }
> }
>
> + err = vxlan_validate_remotes(data[IFLA_VXLAN_REMOTES]);
> + if (err)
> + return err;
> +
> return 0;
> }
Seems you can simply return vxlan_validate_remotes(...); here.
> +static int vxlan_fill_remotes_info(struct sk_buff *skb,
> + const struct vxlan_dev *vxlan)
> +{
> + struct vxlan_rdst *rd;
> + struct nlattr *nest, *rdst_nest;
> + __be32 ip;
> + int i = 1;
> +
> + if (!vxlan->remotes_cnt)
> + return 0;
> +
> + nest = nla_nest_start(skb, IFLA_VXLAN_REMOTES);
> + if (nest == NULL)
> + goto nla_put_failure;
> +
> + list_for_each_entry_rcu(rd, &vxlan->remotes, list) {
Need RCU read lock here?
> + ip = rd->remote_ip;
> +
> + if (ip == vxlan->default_dst.remote_ip)
> + continue;
> +
> + rdst_nest = nla_nest_start(skb, i);
> + if (rdst_nest == NULL)
> + goto nla_put_failure;
> +
> + if (nla_put_be32(skb, IFLA_VXLAN_REMOTE_ADDR, ip))
> + goto nla_put_failure;
> +
> + nla_nest_end(skb, rdst_nest);
> + i++;
> + }
> +
> + nla_nest_end(skb, nest);
> +
> + return 0;
> +
> +nla_put_failure:
> + return -EMSGSIZE;
> +}
> +
Thanks!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists