diff options
author | Malcolm Turnbull <malcolm@loadbalancer.org> | 2008-09-05 11:17:13 +1000 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2008-09-05 11:17:13 +1000 |
commit | 4856c84c1358b79852743ac64e50c1e9d5118f05 (patch) | |
tree | 9d36ac3cb5571f85da582f4cd9fd082eaf6e0cab /net/ipv4/ipvs/ip_vs_proto_tcp.c | |
parent | f94fd041402e4e70d2b4ed00008b9bb857e6ae87 (diff) | |
download | kernel_samsung_smdk4412-4856c84c1358b79852743ac64e50c1e9d5118f05.zip kernel_samsung_smdk4412-4856c84c1358b79852743ac64e50c1e9d5118f05.tar.gz kernel_samsung_smdk4412-4856c84c1358b79852743ac64e50c1e9d5118f05.tar.bz2 |
ipvs: load balance IPv4 connections from a local process
This allows IPVS to load balance connections made by a local process.
For example a proxy server running locally.
External client --> pound:443 -> Local:443 --> IPVS:80 --> RealServer
Signed-off-by: Siim Põder <siim@p6drad-teel.net>
Signed-off-by: Malcolm Turnbull <malcolm@loadbalancer.org>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'net/ipv4/ipvs/ip_vs_proto_tcp.c')
-rw-r--r-- | net/ipv4/ipvs/ip_vs_proto_tcp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv4/ipvs/ip_vs_proto_tcp.c b/net/ipv4/ipvs/ip_vs_proto_tcp.c index de8ed73..808e8be 100644 --- a/net/ipv4/ipvs/ip_vs_proto_tcp.c +++ b/net/ipv4/ipvs/ip_vs_proto_tcp.c @@ -166,7 +166,7 @@ tcp_snat_handler(struct sk_buff *skb, tcph->source = cp->vport; /* Adjust TCP checksums */ - if (!cp->app) { + if (!cp->app && (tcph->check != 0)) { /* Only port and addr are changed, do fast csum update */ tcp_fast_csum_update(cp->af, tcph, &cp->daddr, &cp->vaddr, cp->dport, cp->vport); @@ -235,7 +235,7 @@ tcp_dnat_handler(struct sk_buff *skb, /* * Adjust TCP checksums */ - if (!cp->app) { + if (!cp->app && (tcph->check != 0)) { /* Only port and addr are changed, do fast csum update */ tcp_fast_csum_update(cp->af, tcph, &cp->vaddr, &cp->daddr, cp->vport, cp->dport); |