All of lore.kernel.org
 help / color / mirror / Atom feed
From: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
To: Cong Wang <amwang@redhat.com>
Cc: Thomas Backlund <tmb@mageia.org>, Eric Blake <eblake@redhat.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	libvirt-list@redhat.com, tgraf@suug.ch,
	David Miller <davem@davemloft.net>,
	libc-alpha@sourceware.org, schwab@suse.de,
	carlos@systemhalted.org,
	YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Subject: Re: Redefinition of struct in6_addr in <netinet/in.h> and <linux/in6.h>
Date: Wed, 16 Jan 2013 23:21:21 +0900	[thread overview]
Message-ID: <50F6B761.8070106@linux-ipv6.org> (raw)
In-Reply-To: <1358316366.14898.8.camel@cr0>

Cong Wang wrote:
> (Cc'ing some glibc developers...)
> 
> Hello,
> 
> In glibc source file inet/netinet/in.h and kernel source file
> include/uapi/linux/in6.h, both define struct in6_addr, and both are
> visible to user applications. Thomas reported a conflict below.
> 
> So, how can we handle this? /me is wondering why we didn't see this
> before.
> 
> Thanks.
> 
> On Tue, 2013-01-15 at 12:55 +0200, Thomas Backlund wrote:
>> Cong Wang skrev 15.1.2013 12:11:
>>>
>>> Does the following patch help?
>>>
>>> $ git diff include/uapi/linux/if_bridge.h
>>> diff --git a/include/uapi/linux/if_bridge.h
>>> b/include/uapi/linux/if_bridge.h
>>> index 5db2975..653db23 100644
>>> --- a/include/uapi/linux/if_bridge.h
>>> +++ b/include/uapi/linux/if_bridge.h
>>> @@ -14,6 +14,7 @@
>>>   #define _UAPI_LINUX_IF_BRIDGE_H
>>>
>>>   #include <linux/types.h>
>>> +#include <linux/in6.h>
>>>
>>>   #define SYSFS_BRIDGE_ATTR      "bridge"
>>>   #define SYSFS_BRIDGE_FDB       "brforward"
>>>
>>
>> Well, I suggested the same fix in the beginning of the thread
>> on netdev and lkml: "if_bridge.h: include in6.h for struct in6_addr use"
>>
>> as it seemed to fix the libvirt case
>>
>> but then asked it to be ignored after I tried to build connman,
>> and hit this conflict with glibc-2.17:
>>
>> In file included from /usr/include/arpa/inet.h:22:0,
>>                   from ./include/connman/inet.h:25,
>>                   from src/connman.h:128,
>>                   from src/tethering.c:40:
>> /usr/include/netinet/in.h:35:5: error: expected identifier before 
>> numeric constant
>> /usr/include/netinet/in.h:197:8: error: redefinition of 'struct in6_addr'
>> In file included from /usr/include/linux/if_bridge.h:17:0,
>>                   from src/tethering.c:38:
>> /usr/include/linux/in6.h:30:8: note: originally defined here
>> In file included from /usr/include/arpa/inet.h:22:0,
>>                   from ./include/connman/inet.h:25,
>>                   from src/connman.h:128,
>>                   from src/tethering.c:40:
>> /usr/include/netinet/in.h:238:8: error: redefinition of 'struct 
>> sockaddr_in6'
>> In file included from /usr/include/linux/if_bridge.h:17:0,
>>                   from src/tethering.c:38:
>> /usr/include/linux/in6.h:46:8: note: originally defined here
>> In file included from /usr/include/arpa/inet.h:22:0,
>>                   from ./include/connman/inet.h:25,
>>                   from src/connman.h:128,
>>                   from src/tethering.c:40:
>> /usr/include/netinet/in.h:274:8: error: redefinition of 'struct ipv6_mreq'
>> In file included from /usr/include/linux/if_bridge.h:17:0,
>>                   from src/tethering.c:38:
>> /usr/include/linux/in6.h:54:8: note: originally defined here
>> make[1]: *** [src/src_connmand-tethering.o] Error 1
>>
>>
>> So I'm not sure it's the right one...

This is not a new issue.  In addition to this,
netinet/in.h also conflits with linux/in.h.

We might have
 #if !defined(__GLIBC__) || !defined(_NETINET_IN_H)
 :
 #endif
around those conflicting definitions in uapi/linux/in{,6}.h.

--yoshfuji

  reply	other threads:[~2013-01-16 14:21 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-13 18:38 if_bridge.h: include in6.h for struct in6_addr use Thomas Backlund
2013-01-13 20:05 ` Thomas Backlund
2013-01-14 23:57   ` [libvirt] " Eric Blake
2013-01-15 10:03     ` the patch "bridge: export multicast database via netlink" broke kernel 3.8 uapi (was: Re: [libvirt] if_bridge.h: include in6.h for struct in6_addr use) Thomas Backlund
2013-01-15 10:03       ` [libvirt] the patch "bridge: export multicast database via netlink" broke kernel 3.8 uapi (was: " Thomas Backlund
2013-01-15 10:11       ` the patch "bridge: export multicast database via netlink" broke kernel 3.8 uapi (was: Re: [libvirt] " Cong Wang
2013-01-15 10:55         ` the patch "bridge: export multicast database via netlink" broke kernel 3.8 uapi Thomas Backlund
2013-01-16  5:51           ` Cong Wang
2013-01-16  6:06           ` Redefinition of struct in6_addr in <netinet/in.h> and <linux/in6.h> Cong Wang
2013-01-16 14:21             ` YOSHIFUJI Hideaki [this message]
2013-01-16 15:47               ` Ben Hutchings
2013-01-16 17:04                 ` Mike Frysinger
2013-01-16 17:10                   ` Ben Hutchings
2013-01-16 17:28                     ` Mike Frysinger
2013-01-16 18:59                       ` David Miller
2013-01-16 19:22                         ` Mike Frysinger
2013-01-16 19:25                           ` David Miller
2013-01-17  3:40                           ` Cong Wang
2013-01-17  3:55                         ` [libvirt] " Jike Song
2013-01-17  6:59                           ` Cong Wang
2013-01-17  7:02                             ` Cong Wang
2013-01-16 18:57                   ` David Miller
2013-01-16 19:29                     ` Mike Frysinger
2013-01-17  2:15                     ` Carlos O'Donell
2013-01-17  3:10                       ` YOSHIFUJI Hideaki
2013-01-17  3:15                       ` David Miller
2013-01-18  4:20                         ` Mike Frysinger
2013-01-18  4:22                           ` Carlos O'Donell
2013-01-18  4:34                             ` Mike Frysinger
2013-01-18 10:44                             ` Pedro Alves
2013-01-18 13:35                               ` Carlos O'Donell
2013-01-18 14:24                                 ` YOSHIFUJI Hideaki
2013-01-18 14:36                                   ` Pedro Alves
2013-01-18 14:54                                     ` Carlos O'Donell
2013-01-21  0:54                                     ` Mike Frysinger
2013-01-17  3:22                       ` YOSHIFUJI Hideaki
2013-01-18  4:13                         ` Carlos O'Donell
2013-01-16 21:45                 ` David Miller
2013-01-17  1:58                   ` Carlos O'Donell
2013-01-17  2:05                     ` David Miller
2013-01-17 10:57                       ` Jan Engelhardt
2013-01-18  4:14                   ` Mike Frysinger
2013-01-18  4:55                     ` David Miller
2013-01-18  5:27                       ` Mike Frysinger
2013-03-13 15:17     ` [libvirt] if_bridge.h: include in6.h for struct in6_addr use Kumar Gala
2013-03-13 16:24       ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50F6B761.8070106@linux-ipv6.org \
    --to=yoshfuji@linux-ipv6.org \
    --cc=amwang@redhat.com \
    --cc=carlos@systemhalted.org \
    --cc=davem@davemloft.net \
    --cc=eblake@redhat.com \
    --cc=libc-alpha@sourceware.org \
    --cc=libvirt-list@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=schwab@suse.de \
    --cc=tgraf@suug.ch \
    --cc=tmb@mageia.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.