strongswan: convert init script to procd
[feed/packages.git] / net / strongswan / files / ipsec.init
index 4635eae9cfe092911d83c7ccb480ad564a41c843..2d500047941ce8a94febb3defbdfc491e777a3e9 100644 (file)
@@ -3,9 +3,10 @@
 START=90
 STOP=10
 
-. $IPKG_INSTROOT/lib/functions.sh
+USE_PROCD=1
+PROG=/usr/lib/ipsec/starter
 
-UCI_IPSEC_CONFIG=/etc/config/ipsec
+. $IPKG_INSTROOT/lib/functions.sh
 
 IPSEC_SECRETS_FILE=/etc/ipsec.secrets
 IPSEC_CONN_FILE=/etc/ipsec.conf
@@ -15,8 +16,6 @@ IPSEC_VAR_SECRETS_FILE=/var/ipsec/ipsec.secrets
 IPSEC_VAR_CONN_FILE=/var/ipsec/ipsec.conf
 STRONGSWAN_VAR_CONF_FILE=/var/ipsec/strongswan.conf
 
-ENABLED_REMOTE_PEERS=0
-
 file_reset() {
        : > "$1"
 }
@@ -227,8 +226,6 @@ config_remote() {
        config_get_bool enabled "$1" enabled 0
        [ "$enabled" = "0" ] && return
 
-       ENABLED_REMOTE_PEERS=$((ENABLED_REMOTE_PEERS + 1))
-
        config_get gateway           "$1" gateway
        config_get pre_shared_key    "$1" pre_shared_key
        config_get auth_method       "$1" authentication_method
@@ -321,28 +318,34 @@ prepare_env() {
        config_foreach config_remote remote
 }
 
-start() {
+reload_service() {
        prepare_env
-       [ $ENABLED_REMOTE_PEERS != 0 -o ! -f $UCI_IPSEC_CONFIG ] && ipsec start
+       if ipsec status > /dev/null 2>&1; then
+               ipsec rereadall
+               ipsec reload
+       else
+               ipsec start
+       fi
 }
 
-stop() {
-       ipsec stop
+service_triggers() {
+       procd_add_reload_trigger "ipsec"
 }
 
-restart() {
+start_service() {
        prepare_env
-       [ $ENABLED_REMOTE_PEERS != 0 -o ! -f $UCI_IPSEC_CONFIG ] && ipsec restart || ipsec stop
-}
 
-reload() {
-       prepare_env
-       [ $ENABLED_REMOTE_PEERS != 0 -o ! -f $UCI_IPSEC_CONFIG ] && {
-               ipsec secrets
-               if [[ ! -z "$(ipsec status)" ]]; then
-                       ipsec reload
-               else
-                       ipsec start
-               fi
-       } || ipsec stop
+       procd_open_instance
+
+       procd_set_param command $PROG --daemon charon --nofork
+
+       procd_set_param file $IPSEC_CONN_FILE
+       procd_append_param file $IPSEC_SECRETS_FILE
+       procd_append_param file $STRONGSWAN_CONF_FILE
+       procd_append_param file /etc/strongswan.d/*.conf
+       procd_append_param file /etc/strongswan.d/charon/*.conf
+
+       procd_set_param respawn
+
+       procd_close_instance
 }