[Devel] Re: [PATCH rhel6] Allow ipv6 proxies and arp proxies be shown with iproute2

Thomas Graf tgraf at infradead.org
Thu Jan 26 11:16:55 PST 2012


On Thu, Jan 26, 2012 at 06:49:52PM +0400, Tony Zelenoff wrote:
> +	/* check for full ndmsg structure presence, family member is
> +	 * the same for both structures */
> +	if (nlmsg_len(cb->nlh) == sizeof(struct ndmsg) &&
> +	    ((struct ndmsg *) nlmsg_data(cb->nlh))->ndm_flags == NTF_PROXY)
> +		proxy = 1;
> +

Please change this check to nlmsg_len(cb->nlh) >= sizeof(struct ndmsg) so
we have the possibility to extend the request message in the future
without breaking backwards compatibility.

>  	s_t = cb->args[0];
>  
> -	for (tbl = neigh_tables, t = 0; tbl; tbl = tbl->next, t++) {
> +	for (tbl = neigh_tables, t = 0; tbl && (err >= 0);
> +	     tbl = tbl->next, t++) {
>  		if (t < s_t || (family && tbl->family != family))
>  			continue;
>  		if (t > s_t)
>  			memset(&cb->args[1], 0, sizeof(cb->args) -
>  						sizeof(cb->args[0]));
> -		if (neigh_dump_table(tbl, skb, cb) < 0)
> -			break;
> +		if (proxy) {
> +			err = pneigh_dump_table(tbl, skb, cb);
> +			continue;
> +		}
> +		err = neigh_dump_table(tbl, skb, cb);

Personally I would call neigh_dump_table() in the else branch and avoid
the continue statement.




More information about the Devel mailing list