summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libalias/alias_pptp.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/libalias/alias_pptp.c b/lib/libalias/alias_pptp.c
index 822cfa6..88e177b 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);
}
}
OpenPOWER on IntegriCloud