handle LCP NAK of magic-number
authorbodea <bodea>
Thu, 19 Jan 2006 21:00:24 +0000 (21:00 +0000)
committerbodea <bodea>
Thu, 19 Jan 2006 21:00:24 +0000 (21:00 +0000)
Changes
ppp.c

diff --git a/Changes b/Changes
index b37bb45..d10fb30 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 * Fri Jan 20 2006 Brendan O'Dea <bod@optus.net> 2.1.16
 - Send configured magic-no in LCP EchoReq when LCP is opened.
 - Correct addition of single IP to pool (Jonathan Yarden).
 * Fri Jan 20 2006 Brendan O'Dea <bod@optus.net> 2.1.16
 - Send configured magic-no in LCP EchoReq when LCP is opened.
 - Correct addition of single IP to pool (Jonathan Yarden).
+- Handle LCP NAK of magic-number.
 
 * Mon Dec 19 2005 Brendan O'Dea <bod@optus.net> 2.1.15
 - Drop backtrace.
 
 * Mon Dec 19 2005 Brendan O'Dea <bod@optus.net> 2.1.15
 - Drop backtrace.
diff --git a/ppp.c b/ppp.c
index 6af5066..244d59a 100644 (file)
--- a/ppp.c
+++ b/ppp.c
@@ -1,6 +1,6 @@
 // L2TPNS PPP Stuff
 
 // 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.92 2006/01/19 21:00:24 bodea Exp $";
 
 #include <stdio.h>
 #include <string.h>
 
 #include <stdio.h>
 #include <string.h>
@@ -794,6 +794,16 @@ void processlcp(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
 
                                        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);
                                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);