This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 10/13] Installed-header hygiene (BZ#20366): struct ether_addr.
- From: Zack Weinberg <zackw at panix dot com>
- To: "Carlos O'Donell" <carlos at redhat dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>, Joseph Myers <joseph at codesourcery dot com>
- Date: Wed, 21 Sep 2016 16:33:50 -0400
- Subject: Re: [PATCH 10/13] Installed-header hygiene (BZ#20366): struct ether_addr.
- Authentication-results: sourceware.org; auth=none
- References: <20160830011645.25769-1-zackw@panix.com> <20160830011645.25769-2-zackw@panix.com> <20160830011645.25769-3-zackw@panix.com> <20160830011645.25769-4-zackw@panix.com> <20160830011645.25769-5-zackw@panix.com> <20160830011645.25769-6-zackw@panix.com> <20160830011645.25769-7-zackw@panix.com> <20160830011645.25769-8-zackw@panix.com> <20160830011645.25769-9-zackw@panix.com> <20160830011645.25769-10-zackw@panix.com> <20160830011645.25769-11-zackw@panix.com> <badd1b04-d7ee-90fe-f7ae-936da4a131d6@redhat.com>
On Wed, Sep 21, 2016 at 3:51 PM, Carlos O'Donell <carlos@redhat.com> wrote:
> On 08/29/2016 09:16 PM, Zack Weinberg wrote:
>> Some versions of netinet/if_ether.h only define struct ether_addr when
>> __USE_MISC. This breaks function prototypes in netinet/ether.h that
>> depend on it. The path of least resistance is to condition those
>> declarations on __USE_MISC too.
>>
>> * inet/netinet/if_ether.h: Condition all function prototypes
>> on __USE_MISC, to ensure struct ether_addr is declared.
>
> Wrong ChangeLog path?
Yes, that should've been inet/netinet/ether.h.
You may have already figured this out for yourself, but for the
record: There are two versions of netinet/if_ether.h in the tree:
./sysdeps/generic/netinet/if_ether.h
./sysdeps/unix/sysv/linux/netinet/if_ether.h
(There is also sysdeps/mach/hurd/net/if_ether.h but that appears to be
an unrelated header - note it's in net/ instead of netinet/ - it
defines approximately the same things that uapi <linux/if_ether.h>
does.)
The generic netinet/if_ether.h defines struct ether_addr
unconditionally. The Linux-specific version, however, defines it only
under __USE_MISC (by conditionally including <net/ethernet.h> ... this
sure is a twisty little maze of subtly different headers, isn't it?)
inet/netinet/ether.h includes <netinet/if_ether.h> and then expects
struct ether_addr to be available. And that's where we came in.
zw