From 934a4fb381632fe5f9cf310360a947f64b729eae Mon Sep 17 00:00:00 2001 From: Ruslan Ermilov Date: Mon, 7 Aug 2000 09:51:04 +0000 Subject: Adjust TCP checksum rather than compute it afresh. Submitted by: Erik Salander --- lib/libalias/alias_pptp.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'lib/libalias') diff --git a/lib/libalias/alias_pptp.c b/lib/libalias/alias_pptp.c index 822cfa61ddffd..88e177b4c03e4 100644 --- a/lib/libalias/alias_pptp.c +++ b/lib/libalias/alias_pptp.c @@ -190,13 +190,15 @@ AliasHandlePptpOut(struct ip *pip, /* IP packet to examine/patch */ cptr->cid1); if (gre_link != NULL) { + int accumulate = cptr->cid1; + /* alias the Call Id */ cptr->cid1 = GetAliasPort(gre_link); /* Compute TCP checksum for revised packet */ tc = (struct tcphdr *) ((char *) pip + (pip->ip_hl << 2)); - tc->th_sum = 0; - tc->th_sum = TcpChecksum(pip); + accumulate -= cptr->cid1; + ADJUST_CHECKSUM(accumulate, tc->th_sum); } } } @@ -237,13 +239,15 @@ AliasHandlePptpIn(struct ip *pip, /* IP packet to examine/patch */ *pcall_id); if (gre_link != NULL) { + int accumulate = *pcall_id; + /* alias the Call Id */ *pcall_id = GetOriginalPort(gre_link); /* Compute TCP checksum for modified packet */ tc = (struct tcphdr *) ((char *) pip + (pip->ip_hl << 2)); - tc->th_sum = 0; - tc->th_sum = TcpChecksum(pip); + accumulate -= *pcall_id; + ADJUST_CHECKSUM(accumulate, tc->th_sum); } } -- cgit v1.3