ltq-app-vdsl: convert init script to procd, add support for switching between atm...
authorFelix Fietkau <nbd@openwrt.org>
Mon, 16 Nov 2015 11:02:14 +0000 (11:02 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 16 Nov 2015 11:02:14 +0000 (11:02 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 47485

package/network/config/ltq-vdsl-app/Makefile
package/network/config/ltq-vdsl-app/files/dsl_control
package/network/config/ltq-vdsl-app/files/vdsl_cpe_control_wrapper [new file with mode: 0644]

index 061a966bf7301912df4ac852d6300de6d10ed589..250d6f7664e37e0c9b99a6c05c25b6abe205f70c 100644 (file)
@@ -68,10 +68,10 @@ CONFIGURE_ARGS += --enable-model=full
 #CONFIGURE_ARGS += --enable-model=debug
 
 define Package/ltq-vdsl-app/install
-       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_DIR) $(1)/etc/init.d $(1)/sbin
        $(INSTALL_BIN) ./files/dsl_control $(1)/etc/init.d/
+       $(INSTALL_BIN) ./files/vdsl_cpe_control_wrapper $(1)/sbin/
 
-       $(INSTALL_DIR) $(1)/sbin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/dsl_cpe_control $(1)/sbin/vdsl_cpe_control
 endef
 
index 394e1c085973c3a2d4309566a6e71010bb9bb3f4..d7eb4cd0d9f6847ff10db90bc9f1e63fbaec0b2e 100644 (file)
@@ -3,14 +3,12 @@
 
 # needs to start before the atm layer which starts at 50
 START=48
+USE_PROCD=1
 
 EXTRA_COMMANDS="status lucistat"
 EXTRA_HELP="   status  Get DSL status information
        lucistat  Get status information if lua friendly format"
 
-SERVICE_DAEMONIZE=1
-SERVICE_WRITE_PID=1
-
 [ -f /lib/functions/lantiq_dsl.sh ] && . /lib/functions/lantiq_dsl.sh
 
 # G.992.1 Annex A
@@ -37,7 +35,11 @@ xtse_adsl_j="10 00 10 40 00 04 01 00"
 
 xtse_vdsl="00 00 00 00 00 00 00 07"
 
-start() {
+service_triggers() {
+       procd_add_reload_trigger network
+}
+
+start_service() {
        local annex
        local firmware
        local xtse
@@ -53,11 +55,13 @@ start() {
 
        case "${xfer_mode}" in
        atm)
-               insmod ltq_atm_vr9
+               LOAD=ltq_atm_vr9
+               UNLOAD=ltq_ptm_vr9
                mode=1
                ;;
        *)
-               insmod ltq_ptm_vr9
+               LOAD=ltq_ptm_vr9
+               UNLOAD=ltq_atm_vr9
                mode=2
                ;;
        esac
@@ -75,17 +79,18 @@ start() {
                return 1
        }
 
-       service_start /sbin/vdsl_cpe_control \
+       procd_open_instance
+       procd_set_param command /sbin/vdsl_cpe_control_wrapper \
                        -i `echo $xtse | sed "s/ /_/g"` \
                        -n /sbin/dsl_notify.sh \
                        -f ${firmware} \
                        -M ${mode}
+       procd_append_param env "LOAD=$LOAD" "UNLOAD=$UNLOAD"
+       procd_close_instance
 }
 
-stop() {
+stop_service() {
        DSL_NOTIFICATION_TYPE="DSL_INTERFACE_STATUS" \
        DSL_INTERFACE_STATUS="DOWN" \
                /sbin/dsl_notify.sh
-
-       service_stop /sbin/vdsl_cpe_control
 }
diff --git a/package/network/config/ltq-vdsl-app/files/vdsl_cpe_control_wrapper b/package/network/config/ltq-vdsl-app/files/vdsl_cpe_control_wrapper
new file mode 100644 (file)
index 0000000..8e7c1cb
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+for mod in $UNLOAD; do
+       grep -q "$mod " /proc/modules && rmmod "$mod"
+done
+for mod in $LOAD; do
+       grep -q "$mod " /proc/modules || insmod "$mod"
+done
+
+exec /sbin/vdsl_cpe_control "$@"