Commit c72c6b2a291bb6c61b1546d116784a79e15a6c29

Authored by Patrick McHardy
Committed by David S. Miller
1 parent e89862f4c5

[NETFILTER]: nf_nat: fix ICMP translation with statically linked conntrack

When nf_nat/nf_conntrack_ipv4 are linked statically, nf_nat is initialized
before nf_conntrack_ipv4, which makes the nf_ct_l3proto_find_get(AF_INET)
call during nf_nat initialization return the generic l3proto instead of
the AF_INET specific one. This breaks ICMP error translation since the
generic protocol always initializes the IPs in the tuple to 0.

Change the linking order and put nf_conntrack_ipv4 first.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 1 changed file with 10 additions and 10 deletions Side-by-side Diff

net/ipv4/netfilter/Makefile
... ... @@ -4,6 +4,14 @@
4 4  
5 5 # objects for the standalone - connection tracking / NAT
6 6 ip_conntrack-objs := ip_conntrack_standalone.o ip_conntrack_core.o ip_conntrack_proto_generic.o ip_conntrack_proto_tcp.o ip_conntrack_proto_udp.o ip_conntrack_proto_icmp.o
  7 +# objects for l3 independent conntrack
  8 +nf_conntrack_ipv4-objs := nf_conntrack_l3proto_ipv4.o nf_conntrack_proto_icmp.o
  9 +ifeq ($(CONFIG_NF_CONNTRACK_PROC_COMPAT),y)
  10 +ifeq ($(CONFIG_PROC_FS),y)
  11 +nf_conntrack_ipv4-objs += nf_conntrack_l3proto_ipv4_compat.o
  12 +endif
  13 +endif
  14 +
7 15 ip_nat-objs := ip_nat_core.o ip_nat_helper.o ip_nat_proto_unknown.o ip_nat_proto_tcp.o ip_nat_proto_udp.o ip_nat_proto_icmp.o
8 16 nf_nat-objs := nf_nat_core.o nf_nat_helper.o nf_nat_proto_unknown.o nf_nat_proto_tcp.o nf_nat_proto_udp.o nf_nat_proto_icmp.o
9 17 ifneq ($(CONFIG_NF_NAT),)
... ... @@ -20,6 +28,8 @@
20 28  
21 29 # connection tracking
22 30 obj-$(CONFIG_IP_NF_CONNTRACK) += ip_conntrack.o
  31 +obj-$(CONFIG_NF_CONNTRACK_IPV4) += nf_conntrack_ipv4.o
  32 +
23 33 obj-$(CONFIG_IP_NF_NAT) += ip_nat.o
24 34 obj-$(CONFIG_NF_NAT) += nf_nat.o
25 35  
... ... @@ -105,15 +115,4 @@
105 115 obj-$(CONFIG_IP_NF_ARPFILTER) += arptable_filter.o
106 116  
107 117 obj-$(CONFIG_IP_NF_QUEUE) += ip_queue.o
108   -
109   -# objects for l3 independent conntrack
110   -nf_conntrack_ipv4-objs := nf_conntrack_l3proto_ipv4.o nf_conntrack_proto_icmp.o
111   -ifeq ($(CONFIG_NF_CONNTRACK_PROC_COMPAT),y)
112   -ifeq ($(CONFIG_PROC_FS),y)
113   -nf_conntrack_ipv4-objs += nf_conntrack_l3proto_ipv4_compat.o
114   -endif
115   -endif
116   -
117   -# l3 independent conntrack
118   -obj-$(CONFIG_NF_CONNTRACK_IPV4) += nf_conntrack_ipv4.o