Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Sat, 2 Nov 2013 15:34:23 -0400
From: Rich Felker <>
Subject: Re: netinet/if_ether.h and linux/if_ether.h

On Sat, Nov 02, 2013 at 08:07:43PM +0100, Szabolcs Nagy wrote:
> * Paul Schutte <> [2013-11-02 13:18:41 +0000]:
> > I am trying to compile openvpn against musl and I get the following:
> > 
> > In file included from /usr/include/linux/if_tun.h:20:0,
> >                  from syshead.h:222,
> >                  from base64.c:40:
> > /usr/include/linux/if_ether.h:127:8: error: redefinition of 'struct ethhdr'
> > /usr/include/netinet/if_ether.h:93:8: note: originally defined here
> > 
> yes this was reported earlier but it was not addressed
> there is no clean solution: netinet/if_ether.h should include
> linux/if_ether.h so they don't conflict, but then it cannot be
> used without the kernel headers
> > I can get it to work by just removing the netinet/if_ether.h part, but
> > maybe it is something worthy of your attention.
> netinet/if_ether.h has additional interfaces over the linux/if_ether.h
> ones, so this does not work in general

I think the proper solution is just to acknowledge that kernel headers
and userspace headers are generally not to be used together. In
particular things like this should be split into multiple source

If there are still too many programs that break and can't be fixed
easily, maybe we can make a script that removes the conflicting
definitions from kernel headers and includes the userspace (libc)
headers for them. The other direction is not really acceptable because
the kernel folks do not respect namespace (how would you deal with
things from the kernel that should be exposed under _GNU_SOURCE but
not POSIX?)...


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.