[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