reset length of lcp packets
authorBrendan O'Dea <bod@optus.net>
Tue, 10 May 2005 09:35:27 +0000 (09:35 +0000)
committerBrendan O'Dea <bod@optus.net>
Tue, 10 May 2005 09:35:27 +0000 (09:35 +0000)
ppp.c

diff --git a/ppp.c b/ppp.c
index dfbc39d..40d33e3 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.54 2005-05-10 00:56:12 bodea Exp $";
+char const *cvs_id_ppp = "$Id: ppp.c,v 1.55 2005-05-10 09:35:27 bodea Exp $";
 
 #include <stdio.h>
 #include <string.h>
 
 #include <stdio.h>
 #include <string.h>
@@ -405,7 +405,7 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
                                        *q++ = 6;
                                        memset(q, 0, 4); // asyncmap 0
                                        q += 4;
                                        *q++ = 6;
                                        memset(q, 0, 4); // asyncmap 0
                                        q += 4;
-                                       *((uint16_t *) (response + 2)) = htons(q - response); // LCP header length
+                                       *((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length
                                        break;
 
                                case 3: // Authentication-Protocol
                                        break;
 
                                case 3: // Authentication-Protocol
@@ -466,7 +466,7 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
                                                        q = a;
                                                }
 
                                                        q = a;
                                                }
 
-                                               *((uint16_t *) (response + 2)) = htons(q - response); // LCP header length
+                                               *((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length
                                                break;
                                        }
                                        break;
                                                break;
                                        }
                                        break;
@@ -498,7 +498,7 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
 
                                        memcpy(q, o, length);
                                        q += length;
 
                                        memcpy(q, o, length);
                                        q += length;
-                                       *((uint16_t *) (response + 2)) = htons(q - response); // LCP header length
+                                       *((uint16_t *) (response + 2)) = htons(l = q - response); // LCP header length
                        }
                        x -= length;
                        o += length;
                        }
                        x -= length;
                        o += length;
@@ -513,7 +513,7 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l)
                }
 
                LOG(3, s, t, "Sending %s\n", ppp_lcp_type(*response));
                }
 
                LOG(3, s, t, "Sending %s\n", ppp_lcp_type(*response));
-               tunnelsend(b, l + (q - b), t);
+               tunnelsend(b, l + response - b, t);
 
                if (!(session[s].flags & SF_LCP_ACKED))
                        sendlcp(t, s, config->radius_authprefer);
 
                if (!(session[s].flags & SF_LCP_ACKED))
                        sendlcp(t, s, config->radius_authprefer);