summaryrefslogtreecommitdiff
path: root/sys/netinet/libalias/alias_pptp.c
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@FreeBSD.org>2000-08-07 09:51:04 +0000
committerRuslan Ermilov <ru@FreeBSD.org>2000-08-07 09:51:04 +0000
commit934a4fb381632fe5f9cf310360a947f64b729eae (patch)
tree43f11c16d46db15bb3a8957b4bb438cae115f280 /sys/netinet/libalias/alias_pptp.c
parentbc8617937e9b00b8adbb23d49bb67eb3b1588560 (diff)
Notes
Diffstat (limited to 'sys/netinet/libalias/alias_pptp.c')
-rw-r--r--sys/netinet/libalias/alias_pptp.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/netinet/libalias/alias_pptp.c b/sys/netinet/libalias/alias_pptp.c
index 822cfa61ddff..88e177b4c03e 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);
}
}