* ??? 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.
<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>
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) -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
// 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>
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),
// 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)
{
// 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__
#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)
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
// 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>
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));