aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/ipvs
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2008-01-11 22:14:00 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:53:47 -0500
commitc439cb2e4b13cf1cb2abcd006b906315a3381323 (patch)
tree7bb9d27214e010d37d6a715d0533a7148a8f429a /net/ipv4/ipvs
parent227620e295090629fcb2c46ad3828222ab65438d (diff)
[IPV4]: Add ip_local_out
Most callers of the LOCAL_OUT chain will set the IP packet length and header checksum before doing so. They also share the same output function dst_output. This patch creates a new function called ip_local_out which does all of that and converts the appropriate users over to it. Apart from removing duplicate code, it will also help in merging the IPsec output path once the same thing is done for IPv6. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ipvs')
-rw-r--r--net/ipv4/ipvs/ip_vs_xmit.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ipv4/ipvs/ip_vs_xmit.c b/net/ipv4/ipvs/ip_vs_xmit.c
index 7c074e386c17..66775ad9e328 100644
--- a/net/ipv4/ipvs/ip_vs_xmit.c
+++ b/net/ipv4/ipvs/ip_vs_xmit.c
@@ -16,8 +16,8 @@
16 */ 16 */
17 17
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/ip.h>
20#include <linux/tcp.h> /* for tcphdr */ 19#include <linux/tcp.h> /* for tcphdr */
20#include <net/ip.h>
21#include <net/tcp.h> /* for csum_tcpudp_magic */ 21#include <net/tcp.h> /* for csum_tcpudp_magic */
22#include <net/udp.h> 22#include <net/udp.h>
23#include <net/icmp.h> /* for icmp_send */ 23#include <net/icmp.h> /* for icmp_send */
@@ -406,14 +406,12 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
406 iph->daddr = rt->rt_dst; 406 iph->daddr = rt->rt_dst;
407 iph->saddr = rt->rt_src; 407 iph->saddr = rt->rt_src;
408 iph->ttl = old_iph->ttl; 408 iph->ttl = old_iph->ttl;
409 iph->tot_len = htons(skb->len);
410 ip_select_ident(iph, &rt->u.dst, NULL); 409 ip_select_ident(iph, &rt->u.dst, NULL);
411 ip_send_check(iph);
412 410
413 /* Another hack: avoid icmp_send in ip_fragment */ 411 /* Another hack: avoid icmp_send in ip_fragment */
414 skb->local_df = 1; 412 skb->local_df = 1;
415 413
416 IP_VS_XMIT(skb, rt); 414 ip_local_out(skb);
417 415
418 LeaveFunction(10); 416 LeaveFunction(10);
419 417