From: bodea Date: Thu, 17 Nov 2005 06:46:24 +0000 (+0000) Subject: fix checksum recalc X-Git-Tag: release_2_1_12~2 X-Git-Url: http://git.sameswireless.fr/l2tpns.git/commitdiff_plain/2dd8d794c9e054980473d6b1d84c88dcfd3cdb36?ds=inline fix checksum recalc --- diff --git a/l2tpns.c b/l2tpns.c index 0d9a2c2..6effc9f 100644 --- a/l2tpns.c +++ b/l2tpns.c @@ -4,7 +4,7 @@ // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced // vim: sw=8 ts=8 -char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.148 2005/11/14 21:08:30 bodea Exp $"; +char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.149 2005/11/17 06:46:24 bodea Exp $"; #include #include @@ -1043,7 +1043,7 @@ void adjust_tcp_mss(sessionidt s, tunnelidt t, uint8_t *buf, int len, uint8_t *t sum = orig + (~MSS & 0xffff); sum += ntohs(*(uint16_t *) (tcp + 16)); sum = (sum & 0xffff) + (sum >> 16); - *(uint16_t *) (tcp + 16) = htons(sum); + *(uint16_t *) (tcp + 16) = htons(sum + (sum >> 16)); } // process outgoing (to tunnel) IP @@ -1170,7 +1170,8 @@ static void processipout(uint8_t *buf, int len) master_throttle_packet(sp->tbf_out, data, size); return; } - else if (sp->walled_garden && !config->cluster_iam_master) + + if (sp->walled_garden && !config->cluster_iam_master) { // We are walled-gardening this master_garden_packet(s, data, size);