net: bridge: extend MLD/IGMP query stats
authorNikolay Aleksandrov <razor@blackwall.org>
Wed, 6 Jul 2016 19:12:21 +0000 (12:12 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 Jul 2016 21:40:09 +0000 (17:40 -0400)
commita65056ecf4b48be0d0284a7b6a57b6dace10b843
tree9b97ca89db6b4c0b28ac9519ea3e8c07737cea6b
parentf1533cce60d1f84378c1dd925f9ef1038fa93507
net: bridge: extend MLD/IGMP query stats

As was suggested this patch adds support for the different versions of MLD
and IGMP query types. Since the user visible structure is still in net-next
we can augment it instead of adding netlink attributes.
The distinction between the different IGMP/MLD query types is done as
suggested in Section 7.1, RFC 3376 [1] and Section 8.1, RFC 3810 [2] based
on query payload size and code for IGMP. Since all IGMP packets go through
multicast_rcv() and it uses ip_mc_check_igmp/ipv6_mc_check_mld we can be
sure that at least the ip/ipv6 header can be directly used.

[1] https://tools.ietf.org/html/rfc3376#section-7
[2] https://tools.ietf.org/html/rfc3810#section-8.1

Suggested-by: Linus Lüssing <linus.luessing@c0d3.blue>
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/if_bridge.h
net/bridge/br_forward.c
net/bridge/br_input.c
net/bridge/br_multicast.c
net/bridge/br_private.h