clean up some compiler errors
[l2tpns.git] / l2tpns.c
index a544134..394a323 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -4,8 +4,6 @@
 // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
 // vim: sw=8 ts=8
 
-char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.173 2009-12-08 14:49:28 bodea Exp $";
-
 #include <arpa/inet.h>
 #include <assert.h>
 #include <errno.h>
@@ -1278,7 +1276,7 @@ static void processipout(uint8_t *buf, int len)
                 if(session[s].bundle != 0 && bundle[session[s].bundle].num_of_links > 1)
                 {
                         bid = session[s].bundle;
-                        s = bundle[bid].members[bundle[bid].current_ses = ++bundle[bid].current_ses % bundle[bid].num_of_links];
+                        s = bundle[bid].members[bundle[bid].current_ses = (bundle[bid].current_ses + 1) % bundle[bid].num_of_links];
                        t = session[s].tunnel;
                        sp = &session[s];
                         LOG(4, s, t, "MPPP: (1)Session number becomes: %d\n", s);
@@ -1301,8 +1299,8 @@ static void processipout(uint8_t *buf, int len)
                                update_session_out_stat(s, sp, fraglen);
                                remain -= fraglen;
                                while (remain > last_fraglen)
-                               { 
-                                       s = b->members[b->current_ses = ++b->current_ses % num_of_links];
+                               {
+                                       s = b->members[b->current_ses = (b->current_ses + 1) % num_of_links];
                                        t = session[s].tunnel;
                                        sp = &session[s];
                                        LOG(4, s, t, "MPPP: (2)Session number becomes: %d\n", s);
@@ -1313,7 +1311,7 @@ static void processipout(uint8_t *buf, int len)
                                        remain -= fraglen;
                                }
                                // send the last fragment
-                               s = b->members[b->current_ses = ++b->current_ses % num_of_links];
+                               s = b->members[b->current_ses = (b->current_ses + 1) % num_of_links];
                                t = session[s].tunnel;
                                sp = &session[s];
                                        LOG(4, s, t, "MPPP: (2)Session number becomes: %d\n", s);
@@ -1420,7 +1418,7 @@ static void processipv6out(uint8_t * buf, int len)
        if (session[s].bundle && bundle[session[s].bundle].num_of_links > 1)
        {
                bundleidt bid = session[s].bundle;
-               s = bundle[bid].members[bundle[bid].current_ses = ++bundle[bid].current_ses % bundle[bid].num_of_links];
+               s = bundle[bid].members[bundle[bid].current_ses = (bundle[bid].current_ses + 1) % bundle[bid].num_of_links];
                LOG(3, s, session[s].tunnel, "MPPP: Session number becomes: %u\n", s);
        }
        t = session[s].tunnel;
@@ -1475,7 +1473,6 @@ static void send_ipout(sessionidt s, uint8_t *buf, int len)
 {
        sessiont *sp;
        tunnelidt t;
-       in_addr_t ip;
 
        uint8_t b[MAXETHER + 20];
 
@@ -1489,8 +1486,6 @@ static void send_ipout(sessionidt s, uint8_t *buf, int len)
        buf += 4;
        len -= 4;
 
-       ip = *(in_addr_t *)(buf + 16);
-
        if (!session[s].ip)
                return;
 
@@ -1730,6 +1725,7 @@ void sessionshutdown(sessionidt s, char const *reason, int cdn_result, int cdn_e
                struct param_kill_session data = { &tunnel[session[s].tunnel], &session[s] };
                LOG(2, s, session[s].tunnel, "Shutting down session %u: %s\n", s, reason);
                run_plugins(PLUGIN_KILL_SESSION, &data);
+               session[s].die = TIME + 150; // Clean up in 15 seconds
        }
 
        if (session[s].ip && !walled_garden && !session[s].die)
@@ -1832,9 +1828,6 @@ void sessionshutdown(sessionidt s, char const *reason, int cdn_result, int cdn_e
                controladd(c, session[s].far, session[s].tunnel); // send the message
        }
 
-       if (!session[s].die)
-               session[s].die = TIME + 150; // Clean up in 15 seconds
-
        // update filter refcounts
        if (session[s].filter_in) ip_filters[session[s].filter_in - 1].used--;
        if (session[s].filter_out) ip_filters[session[s].filter_out - 1].used--;
@@ -1930,8 +1923,9 @@ void sessionkill(sessionidt s, char *reason)
                return;
        }
 
-       session[s].die = TIME;
-       sessionshutdown(s, reason, CDN_ADMIN_DISC, TERM_ADMIN_RESET);  // close radius/routes, etc.
+       if (!session[s].die)
+               sessionshutdown(s, reason, CDN_ADMIN_DISC, TERM_ADMIN_RESET);  // close radius/routes, etc.
+
        if (sess_local[s].radius)
                radiusclear(sess_local[s].radius, s); // cant send clean accounting data, session is killed
 
@@ -2687,9 +2681,11 @@ void processudp(uint8_t *buf, int len, struct sockaddr_in *addr)
                                        break;
                                case 2:       // SCCRP
                                        tunnel[t].state = TUNNELOPEN;
+                                       tunnel[t].lastrec = time_now;
                                        break;
                                case 3:       // SCCN
                                        tunnel[t].state = TUNNELOPEN;
+                                       tunnel[t].lastrec = time_now;
                                        controlnull(t); // ack
                                        break;
                                case 4:       // StopCCN
@@ -3032,7 +3028,7 @@ static void regular_cleanups(double period)
                        if (tunnel[t].retry <= TIME)
                        {
                                controlt *c = tunnel[t].controls;
-                               uint8_t w = tunnel[t].window;
+                               uint16_t w = tunnel[t].window;
                                tunnel[t].try++; // another try
                                if (tunnel[t].try > 5)
                                        tunnelkill(t, "Timeout on control message"); // game over