Subject: [libvirt] the patch "bridge: export multicast database via netlink" broke kernel 3.8 uapi (was: Re: if_bridge.h: include in6.h for struct in6_addr use)

From: Thomas Backlund <[email-masked]>
Date: Tue, 15 Jan 2013 12:03:02 +0200

Eric Blake skrev 15.1.2013 01:57:
> On 01/13/2013 01:05 PM, Thomas Backlund wrote:
>> Thomas Backlund skrev 13.1.2013 20:38:
>>> patch both inline and attached as thunderbird tends to mess up ...
>>
>>> -----
>>>
>>> if_bridge.h uses struct in6_addr ip6; but does not include the in6.h
>>> header.
>>>
>>> Found by trying to build libvirt and connman against 3.8-rc3 headers.
>>>
>>
>> Ok,
>> ignore this patch, it's not the correct fix as it introduces
>> redefinitions...
>>
>> Btw, the error that I hit that made me suggest this fix was libvirt
>> config check bailing out:
>>
>> config.log:/usr/include/linux/if_bridge.h:173:20: error: field 'ip6' has
>> incomplete type
>
> Hmm, just now noticing this thread, after independently hitting and and
> having to work around the same problem in libvirt:
> https://www.redhat.com/archives/libvir-list/2013-January/msg00930.html
> https://bugzilla.redhat.com/show_bug.cgi?id=895141

Yep,

and the commit breaking uapi headers is by using "struct in6_addr ip6" is:

 From ee07c6e7a6f8a25c18f0a6b18152fbd7499245f6 Mon Sep 17 00:00:00 2001
From: Cong Wang <[email-masked]>
Date: Fri, 7 Dec 2012 00:04:48 +0000
Subject: [PATCH] bridge: export multicast database via netlink

V5: fix two bugs pointed out by Thomas
     remove seq check for now, mark it as TODO

V4: remove some useless #include
     some coding style fix

V3: drop debugging printk's
     update selinux perm table as well

V2: drop patch 1/2, export ifindex directly
     Redesign netlink attributes
     Improve netlink seq check
     Handle IPv6 addr as well

This patch exports bridge multicast database via netlink
message type RTM_GETMDB. Similar to fdb, but currently bridge-specific.
We may need to support modify multicast database too (RTM_{ADD,DEL}MDB).

(Thanks to Thomas for patient reviews)

Cc: Herbert Xu <[email-masked]>
Cc: Stephen Hemminger <[email-masked]>
Cc: "David S. Miller" <[email-masked]>
Cc: Thomas Graf <[email-masked]>
Cc: Jesper Dangaard Brouer <[email-masked]>
Signed-off-by: Cong Wang <[email-masked]>
Acked-by: Thomas Graf <[email-masked]>
Signed-off-by: David S. Miller <[email-masked]>
---
  include/uapi/linux/if_bridge.h |   55 ++++++++++++++
  include/uapi/linux/rtnetlink.h |    3 +
  net/bridge/Makefile            |    2 +-
  net/bridge/br_mdb.c            |  163 
++++++++++++++++++++++++++++++++++++++++
  net/bridge/br_multicast.c      |    1 +
  net/bridge/br_private.h        |    1 +
  security/selinux/nlmsgtab.c    |    1 +
  7 files changed, 225 insertions(+), 1 deletions(-)
  create mode 100644 net/bridge/br_mdb.c

--
Thomas