From d7c249fa1c8d64315264850fce2cbfbfb1fd186c Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Thu, 14 Jul 2016 10:35:40 +0200 Subject: ppp: Extend uci datamodel with persistency sypport PPP daemon can be put into persist mode meaning the daemon will not exit after a connection gets terminated but will instead try to reopen the connection. The re-initiation after the link has been terminated can be controlled via holdoff; this is helpfull in scenarios where a BRAS is in denial of service mode due to link setup requests after a BRAS has gone down Following uci parameters have been added : persist (boolean) : Puts the ppp daemon in persist mode maxfail (integer) : Number of consecutive fail attempts which puts the PPP daemon in exit mode holdoff (interget) : Specifies how many seconds to wait before re-initiating link setup after it has been terminated Signed-off-by: Alin Nastac Signed-off-by: Hans Dedecker --- package/network/services/ppp/Makefile | 2 +- package/network/services/ppp/files/ppp.sh | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/package/network/services/ppp/Makefile b/package/network/services/ppp/Makefile index e3492ac55f..177950f2c7 100644 --- a/package/network/services/ppp/Makefile +++ b/package/network/services/ppp/Makefile @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ppp PKG_VERSION:=2.4.7 -PKG_RELEASE:=9 +PKG_RELEASE:=10 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://download.samba.org/pub/ppp/ diff --git a/package/network/services/ppp/files/ppp.sh b/package/network/services/ppp/files/ppp.sh index 2a7e76b7fe..f8b04dec9f 100755 --- a/package/network/services/ppp/files/ppp.sh +++ b/package/network/services/ppp/files/ppp.sh @@ -79,13 +79,16 @@ ppp_generic_init_config() { proto_config_add_int mtu proto_config_add_string pppname proto_config_add_string unnumbered + proto_config_add_boolean persist + proto_config_add_int maxfail + proto_config_add_int holdoff } ppp_generic_setup() { local config="$1"; shift local localip - json_get_vars ipv6 demand keepalive keepalive_adaptive username password pppd_options pppname unnumbered + json_get_vars ipv6 demand keepalive keepalive_adaptive username password pppd_options pppname unnumbered persist maxfail holdoff if [ "$ipv6" = 0 ]; then ipv6="" elif [ -z "$ipv6" -o "$ipv6" = auto ]; then @@ -98,6 +101,12 @@ ppp_generic_setup() { else demand="" fi + if [ -n "$persist" ]; then + [ "${persist}" -lt 1 ] && persist="nopersist" || persist="persist" + fi + if [ -z "$maxfail" ]; then + [ "$persist" = "persist" ] && maxfail=0 || maxfail=1 + fi [ -n "$mtu" ] || json_get_var mtu mtu [ -n "$pppname" ] || pppname="${proto:-ppp}-$config" [ -n "$unnumbered" ] && { @@ -129,7 +138,8 @@ ppp_generic_setup() { ${autoipv6:+set AUTOIPV6=1} \ nodefaultroute \ usepeerdns \ - $demand maxfail 1 \ + $demand $persist maxfail $maxfail \ + ${holdoff:+holdoff "$holdoff"} \ ${username:+user "$username" password "$password"} \ ${connect:+connect "$connect"} \ ${disconnect:+disconnect "$disconnect"} \ -- cgit v1.2.3