// 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.29 2004/09/23 03:59:09 fred_nerk Exp $";
+char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.31 2004/10/25 15:07:51 bodea Exp $";
#include <arpa/inet.h>
#include <assert.h>
}
// Init data structures
-void initdata(void)
+void initdata(int optdebug, char *optconfig)
{
int i;
char *p;
}
memset(config, 0, sizeof(struct configt));
time(&config->start_time);
- strncpy(config->config_file, CONFIGFILE, sizeof(config->config_file) - 1);
+ config->debug = optdebug;
+ strncpy(config->config_file, optconfig, strlen(optconfig));
if (!(tunnel = shared_malloc(sizeof(tunnelt) * MAXTUNNEL)))
{
log(0, 0, 0, 0, "Error doing malloc for tunnels: %s\n", strerror(errno));
{
int o;
int optdebug = 0;
+ char *optconfig = CONFIGFILE;
_program_name = strdup(argv[0]);
time(&basetime); // start clock
// scan args
- while ((o = getopt(argc, argv, "vc:h:a:")) >= 0)
+ while ((o = getopt(argc, argv, "dvc:h:")) >= 0)
{
switch (o)
{
case 'v':
optdebug++;
break;
+ case 'c':
+ optconfig = optarg;
+ break;
case 'h':
snprintf(hostname, sizeof(hostname), "%s", optarg);
break;
- case '?':
default:
printf("Args are:\n"
"\t-d\tDetach from terminal\n"
initiptables();
initplugins();
- initdata();
-
- config->debug = optdebug;
+ initdata(optdebug, optconfig);
init_tbf();
init_cli();
CSTAT(call_sessionsetup);
-
log(3, session[s].ip, s, t, "Doing session setup for session\n");
if (!session[s].ip || session[s].ip == 0xFFFFFFFE)
log(3, 0, s, t, " No IP allocated. Assigned %s from pool\n",
inet_toa(htonl(session[s].ip)));
else
+ {
log(0, 0, s, t, " No IP allocated. The IP address pool is FULL!\n");
+ sessionshutdown(s, "No IP addresses available");
+ return 0;
+ }
}