Subject: Re: 2.6.28 headers break kbd and net-tools userspace builds

From: Andrew Walrond <[email-masked]>
Date: Mon, 02 Feb 2009 10:35:25 +0000

Hey guys. A gentle nudge...

My distro scripts build the

    glibc
    iproute2
    iputils
    kbd
    lm_sensors
    net-tools
    strace

packages and others against every new release of linux and linux-stable, 
(hence my initial report).
Right now I'm stalled at the 2.6.27.? headers so can't do any more 
testing until this is resolved.

Andrew Walrond

Jan Engelhardt wrote:
> On Wednesday 2009-01-28 21:29, David Miller wrote:
>   
>>> On Tuesday 2009-01-27 06:08, David Miller wrote:
>>>       
>>>> The fly in the ointment is linux/if_tunnel.h
>>>>
>>>> We export a structure there for a userland interface which
>>>> uses "struct iphdr".
>>>>
>>>> Because of that, we are faced with the difficult choice between
>>>> defining the structure (as we do) in linux/ip.h or using some ugly
>>>> __KERNEL__ ifdefs in linux/if_tunnel.h to conditionally include
>>>> netinet/ip.h instead. :-/
>>>>
>>>> Really, I have no idea what to do about this as the problem has
>>>> existed for so long.
>>>>         
>>> I think in the long term, exported structs should probably
>>> have a "kernel_" prefix, much like userspace libraries use
>>> such prefixes to (try to) guard against simple name clashes.
>>>       
>> This is a reasonable rule for future interfaces, but won't
>> help us here on this one.[...]
>> Really, we page a huge price these days because the relationship
>> between glibc's and the kernel's userland header exports in the
>> past has been anti-social at best.
>>
>>     
> Yeah I just had to notice >:-(
>
> IPPROTO_MH is only defined in linux/in6.h, but inclusion of it:
>
> /usr/include/linux/in6.h:31: error: redefinition of ■struct in6_addr■
> /usr/include/linux/in6.h:52: error: redefinition of ■struct sockaddr_in6■
> /usr/include/linux/in6.h:60: error: redefinition of ■struct ipv6_mreq■
>
> Ick. That's even worse than tunnels.
>
>