diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-10-17 04:59:20 -0400 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-10-17 04:59:20 -0400 |
commit | 0b4f5b1d6385826093dc3cd9035b186f0d77a5dc (patch) | |
tree | e7602057216d3de837995b267a281ae09d899a26 /net/netfilter | |
parent | 939ccba437da1726a5c8a5b702a47d473da927ae (diff) | |
parent | 9f0d3c2781baa1102108e16efbe640dd74564a7c (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
To obtain new flag FLOWI_FLAG_KNOWN_NH to fix netfilter's xt_TEE target.
Diffstat (limited to 'net/netfilter')
-rw-r--r-- | net/netfilter/ipvs/ip_vs_xmit.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c index 56f6d5d81a77..cc4c8095681a 100644 --- a/net/netfilter/ipvs/ip_vs_xmit.c +++ b/net/netfilter/ipvs/ip_vs_xmit.c | |||
@@ -50,6 +50,7 @@ enum { | |||
50 | * local | 50 | * local |
51 | */ | 51 | */ |
52 | IP_VS_RT_MODE_CONNECT = 8, /* Always bind route to saddr */ | 52 | IP_VS_RT_MODE_CONNECT = 8, /* Always bind route to saddr */ |
53 | IP_VS_RT_MODE_KNOWN_NH = 16,/* Route via remote addr */ | ||
53 | }; | 54 | }; |
54 | 55 | ||
55 | /* | 56 | /* |
@@ -113,6 +114,8 @@ static struct rtable *do_output_route4(struct net *net, __be32 daddr, | |||
113 | fl4.daddr = daddr; | 114 | fl4.daddr = daddr; |
114 | fl4.saddr = (rt_mode & IP_VS_RT_MODE_CONNECT) ? *saddr : 0; | 115 | fl4.saddr = (rt_mode & IP_VS_RT_MODE_CONNECT) ? *saddr : 0; |
115 | fl4.flowi4_tos = rtos; | 116 | fl4.flowi4_tos = rtos; |
117 | fl4.flowi4_flags = (rt_mode & IP_VS_RT_MODE_KNOWN_NH) ? | ||
118 | FLOWI_FLAG_KNOWN_NH : 0; | ||
116 | 119 | ||
117 | retry: | 120 | retry: |
118 | rt = ip_route_output_key(net, &fl4); | 121 | rt = ip_route_output_key(net, &fl4); |
@@ -1061,7 +1064,8 @@ ip_vs_dr_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, | |||
1061 | if (!(rt = __ip_vs_get_out_rt(skb, cp->dest, cp->daddr.ip, | 1064 | if (!(rt = __ip_vs_get_out_rt(skb, cp->dest, cp->daddr.ip, |
1062 | RT_TOS(iph->tos), | 1065 | RT_TOS(iph->tos), |
1063 | IP_VS_RT_MODE_LOCAL | | 1066 | IP_VS_RT_MODE_LOCAL | |
1064 | IP_VS_RT_MODE_NON_LOCAL, NULL))) | 1067 | IP_VS_RT_MODE_NON_LOCAL | |
1068 | IP_VS_RT_MODE_KNOWN_NH, NULL))) | ||
1065 | goto tx_error_icmp; | 1069 | goto tx_error_icmp; |
1066 | if (rt->rt_flags & RTCF_LOCAL) { | 1070 | if (rt->rt_flags & RTCF_LOCAL) { |
1067 | ip_rt_put(rt); | 1071 | ip_rt_put(rt); |