From 642a135b454e748e021b30bb5d887d257f819edc Mon Sep 17 00:00:00 2001 From: ru Date: Tue, 18 Dec 2001 16:13:45 +0000 Subject: 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 --- lib/libalias/alias.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/libalias') 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 */ -- cgit v1.1