set length properly

This commit is contained in:
Brendan O'Dea 2005-05-10 09:47:23 +00:00
parent 6b6c8a8933
commit 2267fbe504

20
ppp.c
View file

@ -1,6 +1,6 @@
// L2TPNS PPP Stuff // 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 <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -405,7 +405,6 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
*q++ = 6; *q++ = 6;
memset(q, 0, 4); // asyncmap 0 memset(q, 0, 4); // asyncmap 0
q += 4; q += 4;
*((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length
break; break;
case 3: // Authentication-Protocol case 3: // Authentication-Protocol
@ -466,7 +465,6 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
q = a; q = a;
} }
*((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length
break; break;
} }
break; break;
@ -498,18 +496,22 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
memcpy(q, o, length); memcpy(q, o, length);
q += length; q += length;
*((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length
} }
x -= length; x -= length;
o += length; o += length;
} }
if (!response) if (response)
{ {
// Send back a ConfigAck l = q - response; // LCP packet length
q = response = makeppp(b, sizeof(b), p, l, t, s, PPPLCP); *((uint16_t *) (response + 2)) = htons(l); // update header
if (!q) return; }
*q = ConfigAck; 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)); LOG(3, s, t, "Sending %s\n", ppp_lcp_type(*response));