netlink: Rightsize IFLA_AF_SPEC size calculation
authorArad, Ronen <ronen.arad@intel.com>
Mon, 19 Oct 2015 16:23:28 +0000 (09:23 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 22 Oct 2015 02:15:20 +0000 (19:15 -0700)
commitb1974ed05ea90264d534a200e8a13932ad55f8b8
tree854bca789c6a4e38dadbb9e5373742b970830fe7
parent6ac311ae8bfb47de09f349e781e26373944d2ee3
netlink: Rightsize IFLA_AF_SPEC size calculation

if_nlmsg_size() overestimates the minimum allocation size of netlink
dump request (when called from rtnl_calcit()) or the size of the
message (when called from rtnl_getlink()). This is because
ext_filter_mask is not supported by rtnl_link_get_af_size() and
rtnl_link_get_size().

The over-estimation is significant when at least one netdev has many
VLANs configured (8 bytes for each configured VLAN).

This patch-set "rightsizes" the protocol specific attribute size
calculation by propagating ext_filter_mask to rtnl_link_get_af_size()
and adding this a argument to get_link_af_size op in rtnl_af_ops.

Bridge module already used filtering aware sizing for notifications.
br_get_link_af_size_filtered() is consistent with the modified
get_link_af_size op so it replaces br_get_link_af_size() in br_af_ops.
br_get_link_af_size() becomes unused and thus removed.

Signed-off-by: Ronen Arad <ronen.arad@intel.com>
Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/rtnetlink.h
net/bridge/br_netlink.c
net/core/rtnetlink.c
net/ipv4/devinet.c
net/ipv6/addrconf.c