From 12eac35afe3b9e8daf6f71cc825340a73d5bebf7 Mon Sep 17 00:00:00 2001 From: ru Date: Mon, 7 Aug 2000 09:51:04 +0000 Subject: Adjust TCP checksum rather than compute it afresh. Submitted by: Erik Salander --- sys/netinet/libalias/alias_pptp.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'sys/netinet/libalias') diff --git a/sys/netinet/libalias/alias_pptp.c b/sys/netinet/libalias/alias_pptp.c index 822cfa6..88e177b 100644 --- a/sys/netinet/libalias/alias_pptp.c +++ b/sys/netinet/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.1