diff options
author | ru <ru@FreeBSD.org> | 2001-12-18 16:13:45 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2001-12-18 16:13:45 +0000 |
commit | 642a135b454e748e021b30bb5d887d257f819edc (patch) | |
tree | a0981b43d850b1db665faf11da05c03166a762c9 /lib/libalias | |
parent | 54c092ee1465a0cfe3f681d89dec3d1407c50367 (diff) | |
download | FreeBSD-src-642a135b454e748e021b30bb5d887d257f819edc.zip FreeBSD-src-642a135b454e748e021b30bb5d887d257f819edc.tar.gz |
Fixed the bug in transparent TCP proxying with the "encode_ip_hdr"
option -- TcpAliasOut() did not catch the IP header length change.
Submitted by: Stepachev Andrey <aka50@mail.ru>
Diffstat (limited to 'lib/libalias')
-rw-r--r-- | lib/libalias/alias.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/libalias/alias.c b/lib/libalias/alias.c index 154cf4e..320c5c2 100644 --- a/lib/libalias/alias.c +++ b/lib/libalias/alias.c @@ -1058,12 +1058,14 @@ TcpAliasOut(struct ip *pip, int maxpacketsize) u_short *sptr; /* Save original destination address, if this is a proxy packet. - Also modify packet to include destination encoding. */ + Also modify packet to include destination encoding. This may + change the size of IP header. */ if (proxy_type != 0) { SetProxyPort(link, dest_port); SetProxyAddress(link, dest_address); ProxyModify(link, pip, maxpacketsize, proxy_type); + tc = (struct tcphdr *) ((char *) pip + (pip->ip_hl << 2)); } /* Get alias address and port */ |