Makefile fix and config radius port patches from JK
authorDavid Parrish <david@dparrish.com>
Mon, 26 Jul 2004 00:20:41 +0000 (00:20 +0000)
committerDavid Parrish <david@dparrish.com>
Mon, 26 Jul 2004 00:20:41 +0000 (00:20 +0000)
Changes
Docs/manual.html
Makefile
l2tpns.c
l2tpns.h
radius.c

diff --git a/Changes b/Changes
index 872165f..f1e9da9 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 * ??? 2.0.2
 - Apply patch to fix -v option from Juergen Kammer.
 * ??? 2.0.2
 - Apply patch to fix -v option from Juergen Kammer.
+- Makefile fix from Juergen Kammer to not overwrite existing config files on
+  make install
+- Configurable radius port patch from Juergen Kammer.
 
 * Tue Jul 13 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.1
 - Update INSTALL, Docs/manual.html documentation.
 
 * Tue Jul 13 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.1
 - Update INSTALL, Docs/manual.html documentation.
index d1ce33c..0227ac3 100644 (file)
@@ -983,6 +983,6 @@ That's really what it looks like.<P>
 
 <BR>
 David Parrish<BR>
 
 <BR>
 David Parrish<BR>
-<A HREF="mailto:david@dparrish.com?subject=L2TPNS+Documentation">david@dparrish.com</A>
+<A HREF="mailto:david@dparrish.com?subject=L2TPNS%20Documentation">david@dparrish.com</A>
 </BODY>
 </HTML>
 </BODY>
 </HTML>
index 6cdd6fe..b9007fa 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -41,12 +41,25 @@ depend:
        mv Makefile Makefile.bak
        mv Makefile.tmp Makefile
 
        mv Makefile Makefile.bak
        mv Makefile.tmp Makefile
 
+# install config files only if a startup-config does not exist yet JK 20040713
+#  this does not interfere when building rpms or debs and makes
+#  fast upgrading via make install possible
+
 install: all
        $(INSTALL) -D -o root -g root -m 0755 l2tpns $(bindir)/l2tpns
        $(INSTALL) -D -o root -g root -m 0755 nsctl $(bindir)/nsctl
 install: all
        $(INSTALL) -D -o root -g root -m 0755 l2tpns $(bindir)/l2tpns
        $(INSTALL) -D -o root -g root -m 0755 nsctl $(bindir)/nsctl
-       $(INSTALL) -D -o root -g root -m 0600 etc/startup-config.default $(etcdir)/startup-config
-       $(INSTALL) -D -o root -g root -m 0644 etc/ip_pool.default $(etcdir)/l2tpns.ip_pool
-       $(INSTALL) -D -o root -g root -m 0600 etc/users.default $(etcdir)/l2tpns.users
+       @if [ -f $(etcdir)/startup-config ]; then \
+               echo '***' Installing default config files in $(etcdir) as .defaults; \
+               $(INSTALL) -D -o root -g root -m 0600 etc/startup-config.default $(etcdir)/startup-config.default; \
+               $(INSTALL) -D -o root -g root -m 0644 etc/ip_pool.default $(etcdir)/ip_pool.default; \
+               $(INSTALL) -D -o root -g root -m 0600 etc/users.default $(etcdir)/users.default; \
+       else    \
+               echo '***' Installing default config files in $(etcdir) - remember to adjust them; \
+               $(INSTALL) -D -o root -g root -m 0600 etc/startup-config.default $(etcdir)/startup-config;      \
+               $(INSTALL) -D -o root -g root -m 0644 etc/ip_pool.default $(etcdir)/l2tpns.ip_pool;     \
+               $(INSTALL) -D -o root -g root -m 0600 etc/users.default $(etcdir)/l2tpns.users; \
+       fi
+
        for plugin in $(PLUGINS); do \
                $(INSTALL) -D -o root -g root -m 0755 $$plugin $(libdir)/$$plugin; \
        done
        for plugin in $(PLUGINS); do \
                $(INSTALL) -D -o root -g root -m 0755 $$plugin $(libdir)/$$plugin; \
        done
index 5f005a0..1e5b46c 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -4,7 +4,7 @@
 // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
 // vim: sw=8 ts=8
 
 // 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.15 2004-07-12 15:16:27 bodea Exp $";
+char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.16 2004-07-26 00:20:41 fred_nerk Exp $";
 
 #include <arpa/inet.h>
 #include <assert.h>
 
 #include <arpa/inet.h>
 #include <assert.h>
@@ -100,6 +100,8 @@ struct config_descriptt config_values[] = {
        CONFIG("save_state", save_state, BOOL),
        CONFIG("primary_radius", radiusserver[0], IP),
        CONFIG("secondary_radius", radiusserver[1], IP),
        CONFIG("save_state", save_state, BOOL),
        CONFIG("primary_radius", radiusserver[0], IP),
        CONFIG("secondary_radius", radiusserver[1], IP),
+       CONFIG("primary_radius_port",radiusport[0], SHORT),
+       CONFIG("secondary_radius_port",radiusport[1], SHORT),
        CONFIG("radius_accounting", radius_accounting, BOOL),
        CONFIG("radius_secret", radiussecret, STRING),
        CONFIG("bind_address", bind_address, IP),
        CONFIG("radius_accounting", radius_accounting, BOOL),
        CONFIG("radius_secret", radiussecret, STRING),
        CONFIG("bind_address", bind_address, IP),
@@ -3325,7 +3327,21 @@ void update_config()
        // Update radius
        config->numradiusservers = 0;
        for (i = 0; i < MAXRADSERVER; i++)
        // Update radius
        config->numradiusservers = 0;
        for (i = 0; i < MAXRADSERVER; i++)
-               if (config->radiusserver[i]) config->numradiusservers++;
+               if (config->radiusserver[i])
+               {
+                       config->numradiusservers++;
+                       // Set radius port: if not set, take the port from the
+                       // first radius server.  For the first radius server,
+                       // take the #defined default value from l2tpns.h
+
+                       // test twice, In case someone works with
+                       // a secondary radius server without defining
+                       // a primary one, this will work even then.
+                       if (i>0 && !config->radiusport[i])
+                               config->radiusport[i] = config->radiusport[i-1];
+                       if (!config->radiusport[i])
+                               config->radiusport[i] = RADPORT;
+               }
 
        if (!config->numradiusservers)
        {
 
        if (!config->numradiusservers)
        {
index 56cb9a5..2cf1797 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -1,5 +1,5 @@
 // L2TPNS Global Stuff
 // L2TPNS Global Stuff
-// $Id: l2tpns.h,v 1.12 2004-07-12 08:21:45 bodea Exp $
+// $Id: l2tpns.h,v 1.13 2004-07-26 00:20:41 fred_nerk Exp $
 
 #ifndef __L2TPNS_H__
 #define __L2TPNS_H__
 
 #ifndef __L2TPNS_H__
 #define __L2TPNS_H__
@@ -67,7 +67,6 @@
 #define ACCT_TIME      3000            // 5 minute accounting interval
 #define        L2TPPORT        1701            // L2TP port
 #define RADPORT                1645            // old radius port...
 #define ACCT_TIME      3000            // 5 minute accounting interval
 #define        L2TPPORT        1701            // L2TP port
 #define RADPORT                1645            // old radius port...
-#define        RADAPORT        1646            // old radius accounting port
 #define        PKTARP          0x0806          // ARP packet type
 #define        PKTIP           0x0800          // IP packet type
 #define PSEUDOMAC      0x0200          // pseudo MAC prefix (local significant MAC)
 #define        PKTARP          0x0806          // ARP packet type
 #define        PKTIP           0x0800          // IP packet type
 #define PSEUDOMAC      0x0200          // pseudo MAC prefix (local significant MAC)
@@ -396,6 +395,7 @@ struct configt
        char            radiussecret[64];
        int             radius_accounting;
        ipt             radiusserver[MAXRADSERVER];     // radius servers
        char            radiussecret[64];
        int             radius_accounting;
        ipt             radiusserver[MAXRADSERVER];     // radius servers
+       u16             radiusport[MAXRADSERVER];       // radius base ports
        u8              numradiusservers;               // radius server count
        short           num_radfds;                     // Number of radius filehandles allocated
 
        u8              numradiusservers;               // radius server count
        short           num_radfds;                     // Number of radius filehandles allocated
 
index 7453211..ea3597f 100644 (file)
--- a/radius.c
+++ b/radius.c
@@ -1,6 +1,6 @@
 // L2TPNS Radius Stuff
 
 // L2TPNS Radius Stuff
 
-char const *cvs_id_radius = "$Id: radius.c,v 1.8 2004-07-11 07:57:35 bodea Exp $";
+char const *cvs_id_radius = "$Id: radius.c,v 1.9 2004-07-26 00:20:41 fred_nerk Exp $";
 
 #include <time.h>
 #include <stdio.h>
 
 #include <time.h>
 #include <stdio.h>
@@ -345,7 +345,14 @@ void radiussend(u16 r, u8 state)
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
        *(u32 *) & addr.sin_addr = config->radiusserver[(radius[r].try - 1) % config->numradiusservers];
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
        *(u32 *) & addr.sin_addr = config->radiusserver[(radius[r].try - 1) % config->numradiusservers];
-       addr.sin_port = htons((state == RADIUSAUTH) ? RADPORT : RADAPORT);
+       {
+           // get radius port
+           u16 port = config->radiusport[(radius[r].try - 1) % config->numradiusservers];
+           // no need to define the accounting port for itself:
+           //  the accounting port is as far as I know always one more
+           //  than the auth port    JK 20040713
+           addr.sin_port = htons((state == RADIUSAUTH) ? port : port+1);
+       }
 
        log_hex(5, "RADIUS Send", b, (p - b));
        sendto(radfds[r & RADIUS_MASK], b, p - b, 0, (void *) &addr, sizeof(addr));
 
        log_hex(5, "RADIUS Send", b, (p - b));
        sendto(radfds[r & RADIUS_MASK], b, p - b, 0, (void *) &addr, sizeof(addr));