summaryrefslogtreecommitdiff
path: root/accel-pppd
diff options
context:
space:
mode:
authorGuillaume Nault <g.nault@alphalink.fr>2016-05-09 21:41:00 +0200
committerDmitry Kozlov <xeb@mail.ru>2016-05-11 13:26:02 +0300
commitf21ca06be19609f12584ddc96620d21b9a7b32a5 (patch)
tree5d9eaa5b6b97f80fbc3e09fc0740e5edba83a616 /accel-pppd
parent448d99b34e18c94cabe9c41e12fd678212acf103 (diff)
downloadaccel-ppp-f21ca06be19609f12584ddc96620d21b9a7b32a5.tar.gz
accel-ppp-f21ca06be19609f12584ddc96620d21b9a7b32a5.zip
iprange: don't warn about empty iprange config if no modules depend on it
Move warning messages to PPTP and L2TP modules. No other module actually uses iprange, so it's perfectly valid to disable it, or at least to not configure any range, when PPTP and L2TP aren't used. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Diffstat (limited to 'accel-pppd')
-rw-r--r--accel-pppd/ctrl/l2tp/l2tp.c13
-rw-r--r--accel-pppd/ctrl/pptp/pptp.c13
-rw-r--r--accel-pppd/iprange.c27
-rw-r--r--accel-pppd/iprange.h10
4 files changed, 57 insertions, 6 deletions
diff --git a/accel-pppd/ctrl/l2tp/l2tp.c b/accel-pppd/ctrl/l2tp/l2tp.c
index 72264aa5..76c679c7 100644
--- a/accel-pppd/ctrl/l2tp/l2tp.c
+++ b/accel-pppd/ctrl/l2tp/l2tp.c
@@ -4910,6 +4910,19 @@ static void load_config(void)
}
conf_ip_pool = conf_get_opt("l2tp", "ip-pool");
+
+ switch (iprange_check_activation()) {
+ case IPRANGE_DISABLED:
+ log_warn("l2tp: iprange module disabled, improper IP configuration of PPP interfaces may cause kernel soft lockup\n");
+ break;
+ case IPRANGE_NO_RANGE:
+ log_warn("l2tp: no IP address range defined in section [%s], incoming L2TP connections will be rejected\n",
+ IPRANGE_CONF_SECTION);
+ break;
+ default:
+ /* Makes compiler happy */
+ break;
+ }
}
static void l2tp_init(void)
diff --git a/accel-pppd/ctrl/pptp/pptp.c b/accel-pppd/ctrl/pptp/pptp.c
index 0a0afa4d..ec20586f 100644
--- a/accel-pppd/ctrl/pptp/pptp.c
+++ b/accel-pppd/ctrl/pptp/pptp.c
@@ -773,6 +773,19 @@ static void load_config(void)
}
conf_ip_pool = conf_get_opt("pptp", "ip-pool");
+
+ switch (iprange_check_activation()) {
+ case IPRANGE_DISABLED:
+ log_warn("pptp: iprange module disabled, improper IP configuration of PPP interfaces may cause kernel soft lockup\n");
+ break;
+ case IPRANGE_NO_RANGE:
+ log_warn("pptp: no IP address range defined in section [%s], incoming PPTP connections will be rejected\n",
+ IPRANGE_CONF_SECTION);
+ break;
+ default:
+ /* Makes compiler happy */
+ break;
+ }
}
static void pptp_init(void)
diff --git a/accel-pppd/iprange.c b/accel-pppd/iprange.c
index 6281a745..d2b896f1 100644
--- a/accel-pppd/iprange.c
+++ b/accel-pppd/iprange.c
@@ -168,11 +168,8 @@ static bool load_ranges(struct list_head *list, const char *conf_sect)
struct conf_option_t *opt;
struct iprange_t *r;
- if (!s) {
- log_emerg("iprange: section '%s' not found in config file, pptp and l2tp probably will not work...\n", conf_sect);
-
+ if (!s)
return false;
- }
list_for_each_entry(opt, &s->items, entry) {
/* Ignore parsing errors, parse_iprange() already logs suitable
@@ -182,7 +179,6 @@ static bool load_ranges(struct list_head *list, const char *conf_sect)
continue;
if (!r) {
- log_warn("iprange: iprange module disabled, improper IP address assignment may cause kernel soft lockup!\n");
free_ranges(list);
return true;
@@ -207,6 +203,25 @@ static int check_range(struct list_head *list, in_addr_t ipaddr)
return -1;
}
+enum iprange_status __export iprange_check_activation(void)
+{
+ bool disabled;
+ bool empty;
+
+ pthread_mutex_lock(&iprange_lock);
+ disabled = conf_disable;
+ empty = list_empty(&client_ranges);
+ pthread_mutex_unlock(&iprange_lock);
+
+ if (disabled)
+ return IPRANGE_DISABLED;
+
+ if (empty)
+ return IPRANGE_NO_RANGE;
+
+ return IPRANGE_ACTIVE;
+}
+
int __export iprange_client_check(in_addr_t ipaddr)
{
int res;
@@ -241,7 +256,7 @@ static void iprange_load_config(void *data)
LIST_HEAD(old_ranges);
bool disable;
- disable = load_ranges(&new_ranges, "client-ip-range");
+ disable = load_ranges(&new_ranges, IPRANGE_CONF_SECTION);
pthread_mutex_lock(&iprange_lock);
list_replace(&client_ranges, &old_ranges);
diff --git a/accel-pppd/iprange.h b/accel-pppd/iprange.h
index 88a2486a..39bd8ba2 100644
--- a/accel-pppd/iprange.h
+++ b/accel-pppd/iprange.h
@@ -3,6 +3,16 @@
#include <netinet/in.h>
+
+#define IPRANGE_CONF_SECTION "client-ip-range"
+
+enum iprange_status {
+ IPRANGE_DISABLED,
+ IPRANGE_NO_RANGE,
+ IPRANGE_ACTIVE,
+};
+
+enum iprange_status iprange_check_activation(void);
int iprange_client_check(in_addr_t ipaddr);
int iprange_tunnel_check(in_addr_t ipaddr);