// L2TPNS PPP Stuff
-char const *cvs_id_ppp = "$Id: ppp.c,v 1.91 2005/12/15 14:23:03 bodea Exp $";
+char const *cvs_id_ppp = "$Id: ppp.c,v 1.93 2006/01/19 21:06:39 bodea Exp $";
#include <stdio.h>
#include <string.h>
{
uint8_t b[MAXETHER];
uint8_t *q = NULL;
- uint32_t magicno = 0;
uint16_t hl;
CSTAT(processlcp);
}
break;
- case 5: // Magic-Number
- magicno = ntohl(*(uint32_t *)(o + 2));
- break;
-
case 4: // Quality-Protocol
+ case 5: // Magic-Number
case 7: // Protocol-Field-Compression
case 8: // Address-And-Control-Field-Compression
break;
break;
+ case 5: // Magic-Number
+ if (*p == ConfigNak)
+ {
+ session[s].magic = ntohl(*(uint32_t *)(o + 2));
+ LOG(3, s, t, " Remote requested magic-no %x\n", session[s].magic);
+ if (!session[s].magic) session[s].magic = time_now; // Netgear DG814 sends zero??
+ break;
+ }
+ // ConfigRej: fallthrough
+
default:
LOG(2, s, t, "LCP: remote sent %s for type %u?\n", ppp_code(*p), type);
sessionshutdown(s, "Unable to negotiate LCP.", 3, 0);
- break;
+ return;
}
x -= length;
o += length;