set length properly
This commit is contained in:
parent
6b6c8a8933
commit
2267fbe504
1 changed files with 11 additions and 9 deletions
20
ppp.c
20
ppp.c
|
|
@ -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));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue