This is the mail archive of the
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: <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org> <email@example.com>
On Wed, Sep 21, 2016 at 3:51 PM, Carlos O'Donell <firstname.lastname@example.org> 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:
(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>
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.