From: Brendan O'Dea Date: Tue, 10 May 2005 09:47:23 +0000 (+0000) Subject: set length properly X-Git-Tag: 2.2.1-2fdn3.1~19^2^2~1^2~195 X-Git-Url: http://git.sameswireless.fr/l2tpns.git/commitdiff_plain/2267fbe504476b75d30270fb39a0f01481087676?hp=6b6c8a8933ab99139647e6185eb69336473e5c42 set length properly --- diff --git a/ppp.c b/ppp.c index 40d33e3..6888328 100644 --- a/ppp.c +++ b/ppp.c @@ -1,6 +1,6 @@ // L2TPNS PPP Stuff -char const *cvs_id_ppp = "$Id: ppp.c,v 1.55 2005-05-10 09:35:27 bodea Exp $"; +char const *cvs_id_ppp = "$Id: ppp.c,v 1.56 2005-05-10 09:47:23 bodea Exp $"; #include #include @@ -405,7 +405,6 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) *q++ = 6; memset(q, 0, 4); // asyncmap 0 q += 4; - *((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length break; case 3: // Authentication-Protocol @@ -466,7 +465,6 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) q = a; } - *((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length break; } break; @@ -498,18 +496,22 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) memcpy(q, o, length); q += length; - *((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length } x -= length; o += length; } - if (!response) + if (response) { - // Send back a ConfigAck - q = response = makeppp(b, sizeof(b), p, l, t, s, PPPLCP); - if (!q) return; - *q = ConfigAck; + l = q - response; // LCP packet length + *((uint16_t *) (response + 2)) = htons(l); // update header + } + else + { + // Send packet back as ConfigAck + response = makeppp(b, sizeof(b), p, l, t, s, PPPLCP); + if (!response) return; + *response = ConfigAck; } LOG(3, s, t, "Sending %s\n", ppp_lcp_type(*response));