Corrected pointer error in ggsn.c
diff --git a/ggsn/cmdline.c b/ggsn/cmdline.c
index bb5c3f1..d8eafe5 100644
--- a/ggsn/cmdline.c
+++ b/ggsn/cmdline.c
@@ -53,8 +53,8 @@
printf(" -nSTRING --net=STRING Network (default='192.168.0.0/24')\n");
printf(" --ipup=STRING Script to run after link-up\n");
printf(" --ipdown=STRING Script to run after link-down\n");
- printf(" --dynip=STRING Dynamic IP address pool (default='192.168.0.0/24')\n");
- printf(" --statip=STRING Static IP address pool (default='192.168.1.0/24')\n");
+ printf(" --dynip=STRING Dynamic IP address pool\n");
+ printf(" --statip=STRING Static IP address pool\n");
printf(" --pcodns1=STRING PCO DNS Server 1 (default='0.0.0.0')\n");
printf(" --pcodns2=STRING PCO DNS Server 2 (default='0.0.0.0')\n");
printf(" --timelimit=INT Exit after timelimit seconds (default='0')\n");
@@ -111,8 +111,8 @@
args_info->net_arg = strdup("192.168.0.0/24") ;\
args_info->ipup_arg = NULL; \
args_info->ipdown_arg = NULL; \
- args_info->dynip_arg = strdup("192.168.0.0/24") ;\
- args_info->statip_arg = strdup("192.168.1.0/24") ;\
+ args_info->dynip_arg = NULL; \
+ args_info->statip_arg = NULL; \
args_info->pcodns1_arg = strdup("0.0.0.0") ;\
args_info->pcodns2_arg = strdup("0.0.0.0") ;\
args_info->timelimit_arg = 0 ;\
diff --git a/ggsn/cmdline.ggo b/ggsn/cmdline.ggo
index 0e3c548..ca4e2c7 100644
--- a/ggsn/cmdline.ggo
+++ b/ggsn/cmdline.ggo
@@ -24,8 +24,8 @@
option "ipup" - "Script to run after link-up" string no
option "ipdown" - "Script to run after link-down" string no
-option "dynip" - "Dynamic IP address pool" string default="192.168.0.0/24" no
-option "statip" - "Static IP address pool" string default="192.168.1.0/24" no
+option "dynip" - "Dynamic IP address pool" string no
+option "statip" - "Static IP address pool" string no
option "pcodns1" - "PCO DNS Server 1" string default="0.0.0.0" no
option "pcodns2" - "PCO DNS Server 2" string default="0.0.0.0" no
diff --git a/ggsn/cmdline.h b/ggsn/cmdline.h
index 0cbf483..f083dbe 100644
--- a/ggsn/cmdline.h
+++ b/ggsn/cmdline.h
@@ -29,8 +29,8 @@
char * net_arg; /* Network (default='192.168.0.0/24'). */
char * ipup_arg; /* Script to run after link-up. */
char * ipdown_arg; /* Script to run after link-down. */
- char * dynip_arg; /* Dynamic IP address pool (default='192.168.0.0/24'). */
- char * statip_arg; /* Static IP address pool (default='192.168.1.0/24'). */
+ char * dynip_arg; /* Dynamic IP address pool. */
+ char * statip_arg; /* Static IP address pool. */
char * pcodns1_arg; /* PCO DNS Server 1 (default='0.0.0.0'). */
char * pcodns2_arg; /* PCO DNS Server 2 (default='0.0.0.0'). */
int timelimit_arg; /* Exit after timelimit seconds (default='0'). */
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index 74fe1cc..5011ed1 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -132,7 +132,7 @@
}
pdp_ntoeua(&member->addr, &pdp->eua);
- pdp->peer = &member;
+ pdp->peer = member;
pdp->ipif = tun; /* TODO */
member->peer = pdp;
@@ -259,7 +259,7 @@
PACKAGE, args_info.listen_arg);
syslog(LOG_ERR, "Invalid listening address: %s!",
args_info.listen_arg);
- return 1;
+ exit(1);
}
else {
memcpy(&listen_.s_addr, host->h_addr, host->h_length);
@@ -275,21 +275,30 @@
if(ippool_aton(&net, &mask, args_info.net_arg, 0)) {
sys_err(LOG_ERR, __FILE__, __LINE__, 0,
"Invalid network address: %s!", args_info.net_arg);
- return -1;
+ exit(1);
}
}
+ else {
+ sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ "Network address must be specified: %s!", args_info.net_arg);
+ exit(1);
+ }
/* dynip */
if (!args_info.dynip_arg) {
- sys_err(LOG_ERR, __FILE__, __LINE__, 0,
- "No dynamic address pool given!");
- return -1;
+ if (ippool_new(&ippool, args_info.net_arg,
+ IPPOOL_NONETWORK | IPPOOL_NOBROADCAST)) {
+ sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+ "Failed to allocate IP pool!");
+ exit(1);
+ }
}
else {
if (ippool_new(&ippool, args_info.dynip_arg,
IPPOOL_NONETWORK | IPPOOL_NOBROADCAST)) {
sys_err(LOG_ERR, __FILE__, __LINE__, 0,
"Failed to allocate IP pool!");
+ exit(1);
}
}