SOURCES (LINUX_2_6): kernel-tproxy.patch - updated for .25.3 and vserver ch...
zbyniu
zbyniu at pld-linux.org
Wed May 14 19:29:42 CEST 2008
Author: zbyniu Date: Wed May 14 17:29:42 2008 GMT
Module: SOURCES Tag: LINUX_2_6
---- Log message:
- updated for .25.3 and vserver changes
---- Files affected:
SOURCES:
kernel-tproxy.patch (1.1 -> 1.1.2.1)
---- Diffs:
================================================================
Index: SOURCES/kernel-tproxy.patch
diff -u SOURCES/kernel-tproxy.patch:1.1 SOURCES/kernel-tproxy.patch:1.1.2.1
--- SOURCES/kernel-tproxy.patch:1.1 Wed May 14 19:27:05 2008
+++ SOURCES/kernel-tproxy.patch Wed May 14 19:29:37 2008
@@ -212,7 +212,7 @@
if (!sysctl_ip_nonlocal_bind &&
- !inet->freebind &&
+ !(inet->freebind || inet->transparent) &&
- addr->sin_addr.s_addr != htonl(INADDR_ANY) &&
+ nsa.saddr != htonl(INADDR_ANY) &&
chk_addr_ret != RTN_LOCAL &&
chk_addr_ret != RTN_MULTICAST &&
--
@@ -229,88 +229,14 @@
Signed-off-by: KOVACS Krisztian <hidden at sch.bme.hu>
---
- include/net/inet_sock.h | 7 -------
+ include/net/inet_sock.h | 7 ------- VSERVER patch removed this!
include/net/route.h | 5 +++++
net/ipv4/netfilter/nf_nat_helper.c | 1 +
net/ipv4/syncookies.c | 1 +
net/ipv6/af_inet6.c | 1 +
5 files changed, 8 insertions(+), 7 deletions(-)
-diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
-index 2fafaab..5ca683e 100644
---- a/include/net/inet_sock.h
-+++ b/include/net/inet_sock.h
-@@ -24,7 +24,6 @@
- #include <net/flow.h>
- #include <net/sock.h>
- #include <net/request_sock.h>
--#include <net/route.h>
-
- /** struct ip_options - IP Options
- *
-@@ -192,10 +191,4 @@ static inline int inet_sk_ehashfn(const struct sock *sk)
- return inet_ehashfn(laddr, lport, faddr, fport);
- }
-
--
--static inline int inet_iif(const struct sk_buff *skb)
--{
-- return skb->rtable->rt_iif;
--}
--
- #endif /* _INET_SOCK_H */
-diff --git a/include/net/route.h b/include/net/route.h
-index c633880..13e464f 100644
---- a/include/net/route.h
-+++ b/include/net/route.h
-@@ -204,6 +204,11 @@ static inline struct inet_peer *rt_get_peer(struct rtable *rt)
- return rt->peer;
- }
-
-+static inline int inet_iif(const struct sk_buff *skb)
-+{
-+ return skb->rtable->rt_iif;
-+}
-+
- extern ctl_table ipv4_route_table[];
-
- #endif /* _ROUTE_H */
-diff --git a/net/ipv4/netfilter/nf_nat_helper.c b/net/ipv4/netfilter/nf_nat_helper.c
-index 11976ea..112dcfa 100644
---- a/net/ipv4/netfilter/nf_nat_helper.c
-+++ b/net/ipv4/netfilter/nf_nat_helper.c
-@@ -16,6 +16,7 @@
- #include <linux/udp.h>
- #include <net/checksum.h>
- #include <net/tcp.h>
-+#include <net/route.h>
-
- #include <linux/netfilter_ipv4.h>
- #include <net/netfilter/nf_conntrack.h>
-diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
-index 73ba989..19a1037 100644
---- a/net/ipv4/syncookies.c
-+++ b/net/ipv4/syncookies.c
-@@ -18,6 +18,7 @@
- #include <linux/cryptohash.h>
- #include <linux/kernel.h>
- #include <net/tcp.h>
-+#include <net/route.h>
-
- /* Timestamps: lowest 9 bits store TCP options */
- #define TSBITS 9
-diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
-index 3c6aafb..f6645d2 100644
---- a/net/ipv6/af_inet6.c
-+++ b/net/ipv6/af_inet6.c
-@@ -52,6 +52,7 @@
- #include <net/ipip.h>
- #include <net/protocol.h>
- #include <net/inet_common.h>
-+#include <net/route.h>
- #include <net/transp_v6.h>
- #include <net/ip6_route.h>
- #include <net/addrconf.h>
+VSERVER patch has own (almost identical) implementation of this.
--
1.5.2.5
@@ -341,17 +267,16 @@
#include <linux/in_route.h>
#include <linux/rtnetlink.h>
#include <linux/route.h>
-@@ -161,6 +161,10 @@ static inline int ip_route_connect(struct rtable **rp, __be32 dst,
-
+@@ -161,6 +161,9 @@ static inline int ip_route_connect(struct rtable **rp, __be32 dst,
int err;
struct net *net = sock_net(sk);
+ struct nx_info *nx_info = current->nx_info;
+
+ if (inet_sk(sk)->transparent)
+ fl.flags |= FLOWI_FLAG_ANYSRC;
-+
- if (!dst || !src) {
- err = __ip_route_output_key(net, rp, &fl);
- if (err)
+
+ if (sk)
+ nx_info = sk->sk_nx_info;
--
1.5.2.5
@@ -492,7 +417,7 @@
arg.csumoffset = offsetof(struct tcphdr, check) / 2;
+ arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0;
- ip_send_reply(dev_net(skb->dst->dev)->ipv4.tcp_sock, skb,
+ ip_send_reply(skb->dst->dev->nd_net->ipv4.tcp_sock, skb,
&arg, arg.iov[0].iov_len);
@@ -608,7 +609,7 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
@@ -796,9 +721,9 @@
* (C) 2002-2004 Netfilter Core Team <coreteam at netfilter.org>
*
@@ -24,6 +25,7 @@
+ #include <net/netfilter/nf_conntrack_l3proto.h>
#include <net/netfilter/nf_conntrack_core.h>
#include <net/netfilter/ipv4/nf_conntrack_ipv4.h>
- #include <net/netfilter/nf_nat_helper.h>
+#include <net/netfilter/ipv4/nf_defrag_ipv4.h>
int (*nf_nat_seq_adjust_hook)(struct sk_buff *skb,
@@ -1325,7 +1250,7 @@
+ }
+#endif
+
-+ sk = nf_tproxy_get_sock_v4(dev_net(skb->dev), iph->protocol,
++ sk = nf_tproxy_get_sock_v4(skb->dev->nd_net, iph->protocol,
+ iph->saddr, daddr,
+ hp->source, dport, in, false);
+ if (sk != NULL) {
@@ -1518,7 +1443,7 @@
+ if (hp == NULL)
+ return NF_DROP;
+
-+ sk = nf_tproxy_get_sock_v4(dev_net(skb->dev), iph->protocol,
++ sk = nf_tproxy_get_sock_v4(skb->dev->nd_net, iph->protocol,
+ iph->saddr, tgi->laddr ? tgi->laddr : iph->daddr,
+ hp->source, tgi->lport ? tgi->lport : hp->dest,
+ in, true);
@@ -1618,7 +1543,7 @@
+ skb->sk = NULL;
+ } else
+#endif
- sk = __inet_lookup(dev_net(skb->dev), &tcp_hashinfo, iph->saddr,
+ sk = __inet_lookup(skb->dev->nd_net, &tcp_hashinfo, iph->saddr,
th->source, iph->daddr, th->dest, inet_iif(skb));
+
if (!sk)
@@ -1655,7 +1580,7 @@
+ skb->sk = NULL;
+ } else
+#endif
- sk = __udp4_lib_lookup(dev_net(skb->dev), iph->daddr, uh->dest,
+ sk = __udp4_lib_lookup(skb->dev->nd_net, iph->daddr, uh->dest,
iph->saddr, uh->source, skb->dev->ifindex, udptable);
if (sk == NULL) {
@@ -1188,6 +1196,14 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
@@ -1670,7 +1595,7 @@
+ skb->sk = NULL;
+ } else
+#endif
- sk = __udp4_lib_lookup(dev_net(skb->dev), saddr, uh->source, daddr,
+ sk = __udp4_lib_lookup(skb->dev->nd_net, saddr, uh->source, daddr,
uh->dest, inet_iif(skb), udptable);
--
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/kernel-tproxy.patch?r1=1.1&r2=1.1.2.1&f=u
More information about the pld-cvs-commit
mailing list