Mailing List Archive

Re: include/linux/netfilter.h after make headers_install is incomplete
From: "Greg Steuck" <greg@nest.cx>
Date: Tue, 20 May 2008 11:44:56 -0700

> I asked this on netfilter list, but it doesn't seem to be generating any
> interest there. Maybe the question belongs on this list?

No, it does not. netfilter-devel@vger.kernel.org is the correct place
to discuss this, added to CC:.

Perhaps you sent this to plain "netfilter@vger.kernel.org" or the
older lists which are no longer in use.

> I ran make headers_install in 2.6.25 tree and the installed netfilter.h is
> not complete. Namely, it declares
> union nf_inet_addr {
> __u32 all[4];
> __be32 ip;
> __be32 ip6[4];
> ...
> }
>
> The __u32, __be32 types are declared in <linux/types.h> and the #include
> directive is removed by the installation process. This in turn makes some
> applications unbuildable against such an exported tree, e.g.
>
> busybox-1.10.1/networking/tcpudp.c:#include <linux/netfilter_ipv4.h>
>
> If I correctly understand the purpose of make headers_install, it is
> supposed to generate an API for applications. I could certainly
> make tcpudp.c include linux/types.h, but given that the application
> does not even use nf_inet_addr, this would be the wrong place for
> the fix.
>
> Is kernel the right place then?
>
> Thanks
> Greg
> --
> nest.cx is Gmail hosted, use PGP for anything private. Key:
> http://tinyurl.com/ho8qg
> Fingerprint: 5E2B 2D0E 1E03 2046 BEC3 4D50 0B15 42BD 8DF5 A1B0
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Re: include/linux/netfilter.h after make headers_install is incomplete [ In reply to ]
David Miller wrote:
> From: "Greg Steuck" <greg@nest.cx>
> Date: Tue, 20 May 2008 11:44:56 -0700
>
>> I ran make headers_install in 2.6.25 tree and the installed netfilter.h is
>> not complete. Namely, it declares
>> union nf_inet_addr {
>> __u32 all[4];
>> __be32 ip;
>> __be32 ip6[4];
>> ...
>> }
>>
>> The __u32, __be32 types are declared in <linux/types.h> and the #include
>> directive is removed by the installation process. This in turn makes some
>> applications unbuildable against such an exported tree, e.g.
>>
>> busybox-1.10.1/networking/tcpudp.c:#include <linux/netfilter_ipv4.h>
>>
>> If I correctly understand the purpose of make headers_install, it is
>> supposed to generate an API for applications. I could certainly
>> make tcpudp.c include linux/types.h, but given that the application
>> does not even use nf_inet_addr, this would be the wrong place for
>> the fix.

These types are used by countless header files. I don't know
why types.h is stripped, I guess this question can be best
answered by whoever maintains the header-install stuff (Sam?
I don't know).

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Re: include/linux/netfilter.h after make headers_install is incomplete [ In reply to ]
On Wed, May 21, 2008 at 11:56:55AM +0200, Patrick McHardy wrote:
> David Miller wrote:
> >From: "Greg Steuck" <greg@nest.cx>
> >Date: Tue, 20 May 2008 11:44:56 -0700
> >
> >>I ran make headers_install in 2.6.25 tree and the installed netfilter.h is
> >>not complete. Namely, it declares
> >>union nf_inet_addr {
> >> __u32 all[4];
> >> __be32 ip;
> >> __be32 ip6[4];
> >>...
> >>}
> >>
> >>The __u32, __be32 types are declared in <linux/types.h> and the #include
> >>directive is removed by the installation process. This in turn makes some
> >>applications unbuildable against such an exported tree, e.g.
> >>
> >>busybox-1.10.1/networking/tcpudp.c:#include <linux/netfilter_ipv4.h>
> >>
> >>If I correctly understand the purpose of make headers_install, it is
> >>supposed to generate an API for applications. I could certainly
> >>make tcpudp.c include linux/types.h, but given that the application
> >>does not even use nf_inet_addr, this would be the wrong place for
> >>the fix.
>
> These types are used by countless header files. I don't know
> why types.h is stripped, I guess this question can be best
> answered by whoever maintains the header-install stuff (Sam?
> I don't know).

Everything inside
#ifdef __KERNEL__
...
#endif

are stripped.

From netfilter.h:
#ifdef __KERNEL__
#include <linux/init.h>
#include <linux/types.h>
#include <linux/skbuff.h>
#include <linux/net.h>
#include <linux/netdevice.h>
#include <linux/if.h>
#include <linux/in.h>
#include <linux/in6.h>
#include <linux/wait.h>
#include <linux/list.h>
#include <net/net_namespace.h>
#endif

Include of types.h should be outside the #ifdef block.

Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Re: include/linux/netfilter.h after make headers_install is incomplete [ In reply to ]
Sam Ravnborg wrote:
> On Wed, May 21, 2008 at 11:56:55AM +0200, Patrick McHardy wrote:
>> David Miller wrote:
>>> From: "Greg Steuck" <greg@nest.cx>
>>> Date: Tue, 20 May 2008 11:44:56 -0700
>>>
>>>> I ran make headers_install in 2.6.25 tree and the installed netfilter.h is
>>>> not complete. Namely, it declares
>>>> union nf_inet_addr {
>>>> __u32 all[4];
>>>> __be32 ip;
>>>> __be32 ip6[4];
>>>> ...
>>>> }
>>>>
>>>> The __u32, __be32 types are declared in <linux/types.h> and the #include
>>>> directive is removed by the installation process. This in turn makes some
>>>> applications unbuildable against such an exported tree, e.g.
>>>>
>>>> busybox-1.10.1/networking/tcpudp.c:#include <linux/netfilter_ipv4.h>
>>>>
>>>> If I correctly understand the purpose of make headers_install, it is
>>>> supposed to generate an API for applications. I could certainly
>>>> make tcpudp.c include linux/types.h, but given that the application
>>>> does not even use nf_inet_addr, this would be the wrong place for
>>>> the fix.
>> These types are used by countless header files. I don't know
>> why types.h is stripped, I guess this question can be best
>> answered by whoever maintains the header-install stuff (Sam?
>> I don't know).
>
> Everything inside
> #ifdef __KERNEL__
> ...
> #endif
>
> are stripped.


I didn't notice the ifdef around the include statement, this makes
sense of course.

I'll fix it up, thanks Sam.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/