set length properly

This commit is contained in:
bodea 2005-05-10 09:47:23 +00:00
parent e2a4beaae9
commit f1f5b976db

20
ppp.c
View file

@ -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 <stdio.h>
#include <string.h>
@ -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));