diff mbox

linux-next: Tree for February 18 (netfilter)

Message ID 4B7D7CAA.1070605@trash.net
State RFC, archived
Delegated to: David Miller
Headers show

Commit Message

Patrick McHardy Feb. 18, 2010, 5:45 p.m. UTC
Randy Dunlap wrote:
> On 02/18/10 09:03, Patrick McHardy wrote:
>> Randy Dunlap wrote:
>>> On 02/18/10 01:49, Stephen Rothwell wrote:
>>>> Hi all,
>>>>
>>>> Changes since 20100217:
>>>>
>>>> The net tree lost its build failure but gained a conflict against the kvm
>>>> tree.
>>>
>>> include/net/netfilter/nf_conntrack.h:94: error: field 'ct_general' has incomplete type
>>> include/net/netfilter/nf_conntrack.h:178: error: 'const struct sk_buff' has no member named 'nfct'
>>> include/net/netfilter/nf_conntrack.h:185: error: implicit declaration of function 'nf_conntrack_put'
>>> include/net/netfilter/nf_conntrack.h:294: error: 'const struct sk_buff' has no member named 'nfct'
>>> net/ipv4/netfilter/nf_defrag_ipv4.c:45: error: 'struct sk_buff' has no member named 'nfct'
>>> net/ipv4/netfilter/nf_defrag_ipv4.c:46: error: 'struct sk_buff' has no member named 'nfct'
>>>
>>> CONFIG_NF_CONNTRACK is not enabled
>>> but CONFIG_NF_DEFRAG_IPV4=y.  It is "select"ed by
>>> NETFILTER_XT_MATCH_SOCKET and NETFILTER_XT_TARGET_TPROXY,
>>> both of which are enabled.
>>>
>>> Hm, NETFILTER_XT_MATCH_SOCKET depends on !NF_CONNTRACK || NF_CONNTRACK.
>>> Maybe NETFILTER_XT_TARGET_TPROXY needs to do that also.  No, that would
>>> go against that config option's help text:
>> No, the problem is use of skb->nfct without CONFIG_NF_CONNTRACK.
>>
>> This patch should fix it.
> 
> Nope:
> 
> In file included from /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack_extend.h:4,
>                  from /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack_zones.h:4,
>                  from /lnx/src/NEXT/linux-next-20100218/net/ipv4/netfilter/nf_defrag_ipv4.c:19:
> /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack.h:94: error: field 'ct_general' has incomplete type
> /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack.h: In function 'nf_ct_get':

Ah I see, we must not include nf_conntrack.h at all. Eventually
we need to fix this properly by making nf_conntrack.h usable
even with NF_CONNTRACK=n, but that's a more complicated change.

This patch works fine for me using your config:

Comments

Randy Dunlap Feb. 18, 2010, 5:50 p.m. UTC | #1
On 02/18/10 09:45, Patrick McHardy wrote:
> Randy Dunlap wrote:
>> On 02/18/10 09:03, Patrick McHardy wrote:
>>> Randy Dunlap wrote:
>>>> On 02/18/10 01:49, Stephen Rothwell wrote:
>>>>> Hi all,
>>>>>
>>>>> Changes since 20100217:
>>>>>
>>>>> The net tree lost its build failure but gained a conflict against the kvm
>>>>> tree.
>>>>
>>>> include/net/netfilter/nf_conntrack.h:94: error: field 'ct_general' has incomplete type
>>>> include/net/netfilter/nf_conntrack.h:178: error: 'const struct sk_buff' has no member named 'nfct'
>>>> include/net/netfilter/nf_conntrack.h:185: error: implicit declaration of function 'nf_conntrack_put'
>>>> include/net/netfilter/nf_conntrack.h:294: error: 'const struct sk_buff' has no member named 'nfct'
>>>> net/ipv4/netfilter/nf_defrag_ipv4.c:45: error: 'struct sk_buff' has no member named 'nfct'
>>>> net/ipv4/netfilter/nf_defrag_ipv4.c:46: error: 'struct sk_buff' has no member named 'nfct'
>>>>
>>>> CONFIG_NF_CONNTRACK is not enabled
>>>> but CONFIG_NF_DEFRAG_IPV4=y.  It is "select"ed by
>>>> NETFILTER_XT_MATCH_SOCKET and NETFILTER_XT_TARGET_TPROXY,
>>>> both of which are enabled.
>>>>
>>>> Hm, NETFILTER_XT_MATCH_SOCKET depends on !NF_CONNTRACK || NF_CONNTRACK.
>>>> Maybe NETFILTER_XT_TARGET_TPROXY needs to do that also.  No, that would
>>>> go against that config option's help text:
>>> No, the problem is use of skb->nfct without CONFIG_NF_CONNTRACK.
>>>
>>> This patch should fix it.
>>
>> Nope:
>>
>> In file included from /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack_extend.h:4,
>>                  from /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack_zones.h:4,
>>                  from /lnx/src/NEXT/linux-next-20100218/net/ipv4/netfilter/nf_defrag_ipv4.c:19:
>> /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack.h:94: error: field 'ct_general' has incomplete type
>> /lnx/src/NEXT/linux-next-20100218/include/net/netfilter/nf_conntrack.h: In function 'nf_ct_get':
> 
> Ah I see, we must not include nf_conntrack.h at all. Eventually
> we need to fix this properly by making nf_conntrack.h usable
> even with NF_CONNTRACK=n, but that's a more complicated change.
> 
> This patch works fine for me using your config:
> 

Ack.  Thanks.
Patrick McHardy Feb. 18, 2010, 6:04 p.m. UTC | #2
Randy Dunlap wrote:
> On 02/18/10 09:45, Patrick McHardy wrote:
>> Ah I see, we must not include nf_conntrack.h at all. Eventually
>> we need to fix this properly by making nf_conntrack.h usable
>> even with NF_CONNTRACK=n, but that's a more complicated change.
>>
>> This patch works fine for me using your config:
>>
> 
> Ack.  Thanks.
> 

Thanks, I'll send it upstream shortly.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/net/netfilter/nf_conntrack_zones.h b/include/net/netfilter/nf_conntrack_zones.h
index 0bbb2bd..034efe8 100644
--- a/include/net/netfilter/nf_conntrack_zones.h
+++ b/include/net/netfilter/nf_conntrack_zones.h
@@ -1,10 +1,11 @@ 
 #ifndef _NF_CONNTRACK_ZONES_H
 #define _NF_CONNTRACK_ZONES_H
 
-#include <net/netfilter/nf_conntrack_extend.h>
-
 #define NF_CT_DEFAULT_ZONE	0
 
+#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+#include <net/netfilter/nf_conntrack_extend.h>
+
 struct nf_conntrack_zone {
 	u16	id;
 };
@@ -20,4 +21,5 @@  static inline u16 nf_ct_zone(const struct nf_conn *ct)
 	return NF_CT_DEFAULT_ZONE;
 }
 
+#endif /* CONFIG_NF_CONNTRACK || CONFIG_NF_CONNTRACK_MODULE */
 #endif /* _NF_CONNTRACK_ZONES_H */
diff --git a/net/ipv4/netfilter/nf_defrag_ipv4.c b/net/ipv4/netfilter/nf_defrag_ipv4.c
index d498a70..cb763ae 100644
--- a/net/ipv4/netfilter/nf_defrag_ipv4.c
+++ b/net/ipv4/netfilter/nf_defrag_ipv4.c
@@ -16,9 +16,11 @@ 
 
 #include <linux/netfilter_bridge.h>
 #include <linux/netfilter_ipv4.h>
-#include <net/netfilter/nf_conntrack_zones.h>
 #include <net/netfilter/ipv4/nf_defrag_ipv4.h>
+#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
 #include <net/netfilter/nf_conntrack.h>
+#endif
+#include <net/netfilter/nf_conntrack_zones.h>
 
 /* Returns new sk_buff, or NULL */
 static int nf_ct_ipv4_gather_frags(struct sk_buff *skb, u_int32_t user)
@@ -42,8 +44,10 @@  static enum ip_defrag_users nf_ct_defrag_user(unsigned int hooknum,
 {
 	u16 zone = NF_CT_DEFAULT_ZONE;
 
+#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
 	if (skb->nfct)
 		zone = nf_ct_zone((struct nf_conn *)skb->nfct);
+#endif
 
 #ifdef CONFIG_BRIDGE_NETFILTER
 	if (skb->nf_bridge &&