diff --git a/olsrd/Makefile b/olsrd/Makefile index 362e922..91bd25a 100644 --- a/olsrd/Makefile +++ b/olsrd/Makefile @@ -172,7 +172,7 @@ endef define Package/olsrd/install $(INSTALL_DIR) $(1)/lib/functions - $(INSTALL_DATA) ./files/olsrd.init $(1)/lib/functions/olsrd.sh + $(INSTALL_DATA) ./files/olsrd.sh $(1)/lib/functions/olsrd.sh $(INSTALL_DIR) $(1)/etc/config $(INSTALL_DATA) ./files/olsrd.config $(1)/etc/config/olsrd $(INSTALL_DATA) ./files/olsrd6.config $(1)/etc/config/olsrd6 diff --git a/olsrd/files/olsrd.init b/olsrd/files/olsrd.sh similarity index 97% rename from olsrd/files/olsrd.init rename to olsrd/files/olsrd.sh index 4e74095..65532ff 100644 --- a/olsrd/files/olsrd.init +++ b/olsrd/files/olsrd.sh @@ -1,10 +1,5 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2008-2013 OpenWrt.org - -START=65 - -SERVICE_DAEMONIZE=1 -SERVICE_WRITE_PID=1 +# Copyright (C) 2008-2015 OpenWrt.org OLSRD_OLSRD_SCHEMA='ignore:internal config_file:internal DebugLevel=0 AllowNoInt=yes' OLSRD_IPCCONNECT_SCHEMA='ignore:internal Host:list Net:list2' @@ -752,7 +747,7 @@ olsrd_setup_smartgw_rules() { fi } -start() { +olsrd_generate_config() { SYSTEM_HOSTNAME= SYSTEM_LAT= SYSTEM_LON= @@ -784,23 +779,4 @@ start() { fi [ -z "$OLSRD_CONFIG_FILE" ] && return 1 - - SERVICE_PID_FILE="$PID" - if service_check /usr/sbin/olsrd; then - error "there is already an instance of $UCI_CONF_NAME running (pid: '$(cat $PID)'), not starting." - return 1 - else - service_start /usr/sbin/olsrd -f "$OLSRD_CONFIG_FILE" -nofork - sleep 1 - service_check /usr/sbin/olsrd || { - log "startup-error: check via: '/usr/sbin/olsrd -f \"$OLSRD_CONFIG_FILE\" -nofork'" - } - fi - - olsrd_setup_smartgw_rules -} - -stop() { - SERVICE_PID_FILE="$PID" - service_stop /usr/sbin/olsrd } diff --git a/olsrd/files/olsrd4.init b/olsrd/files/olsrd4.init index 718b3e0..32589d7 100644 --- a/olsrd/files/olsrd4.init +++ b/olsrd/files/olsrd4.init @@ -1,14 +1,18 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2008-2013 OpenWrt.org +# Copyright (C) 2008-2015 OpenWrt.org . $IPKG_INSTROOT/lib/functions/olsrd.sh START=65 - -SERVICE_DAEMONIZE=1 -SERVICE_WRITE_PID=1 - +USE_PROCD=1 CONF=/var/etc/olsrd.conf -PID=/var/run/olsrd.pid - UCI_CONF_NAME=olsrd + +start_service() { + procd_open_instance + procd_set_param command /usr/sbin/olsrd -f $CONF -nofork + procd_set_param respawn + procd_close_instance + + olsrd_setup_smartgw_rules +} diff --git a/olsrd/files/olsrd6.init b/olsrd/files/olsrd6.init index 1dcc4a0..83deaa9 100644 --- a/olsrd/files/olsrd6.init +++ b/olsrd/files/olsrd6.init @@ -1,14 +1,18 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2008-2013 OpenWrt.org +# Copyright (C) 2008-2015 OpenWrt.org . $IPKG_INSTROOT/lib/functions/olsrd.sh START=65 - -SERVICE_DAEMONIZE=1 -SERVICE_WRITE_PID=1 - +USE_PROCD=1 CONF=/var/etc/olsrd6.conf -PID=/var/run/olsrd6.pid - UCI_CONF_NAME=olsrd6 + +start_service() { + procd_open_instance + procd_set_param command /usr/sbin/olsrd -f $CONF -nofork + procd_set_param respawn + procd_close_instance + + olsrd_setup_smartgw_rules +}