From a84e564f854395b7139535d7467d2e6ce2cff9b5 Mon Sep 17 00:00:00 2001 From: Henning Rogge Date: Thu, 6 Aug 2015 22:31:56 +0200 Subject: [PATCH] Unified Openwrt startup scripts for OONF --- oonf-dlep-proxy/Makefile | 4 +- oonf-dlep-proxy/files/dlep_proxy.hotplug | 11 +- oonf-dlep-proxy/files/dlep_proxy.init | 122 +---------------------- oonf-dlep-radio/Makefile | 4 +- oonf-dlep-radio/files/dlep_radio.hotplug | 11 +- oonf-dlep-radio/files/dlep_radio.init | 122 +---------------------- oonf-init-scripts/Makefile | 36 +++++++ oonf-init-scripts/files/oonf_hotplug.sh | 10 ++ oonf-init-scripts/files/oonf_init.sh | 120 ++++++++++++++++++++++ oonf-olsrd2/Makefile | 4 +- oonf-olsrd2/files/olsrd2.hotplug | 11 +- oonf-olsrd2/files/olsrd2.init | 122 +---------------------- 12 files changed, 184 insertions(+), 393 deletions(-) create mode 100644 oonf-init-scripts/Makefile create mode 100755 oonf-init-scripts/files/oonf_hotplug.sh create mode 100755 oonf-init-scripts/files/oonf_init.sh diff --git a/oonf-dlep-proxy/Makefile b/oonf-dlep-proxy/Makefile index 9a6cd2f..3f02c5d 100644 --- a/oonf-dlep-proxy/Makefile +++ b/oonf-dlep-proxy/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=oonf-dlep-proxy -PKG_VERSION:=0.9.1-r1 +PKG_VERSION:=0.9.1-r2 PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d PKG_RELEASE:=$(PKG_REV) @@ -40,7 +40,7 @@ endef define Package/oonf-dlep-proxy $(call Package/oonf-git/template) TITLE:= Build DLEP Radio+Router Agent - DEPENDS:=+librt +libnl-tiny +libuci + DEPENDS:=+librt +libnl-tiny +libuci +oonf-init-scripts VERSION:=$(PKG_VERSION) endef diff --git a/oonf-dlep-proxy/files/dlep_proxy.hotplug b/oonf-dlep-proxy/files/dlep_proxy.hotplug index e42e646..3ebe1b7 100755 --- a/oonf-dlep-proxy/files/dlep_proxy.hotplug +++ b/oonf-dlep-proxy/files/dlep_proxy.hotplug @@ -1,12 +1,5 @@ #!/bin/sh -daemon=dlep_proxy +DAEMON='dlep_proxy' -case "$ACTION" in - ifup) - . /etc/rc.common /etc/init.d/${daemon} enabled && { - logger -t '${daemon}[hotplug]' -p daemon.info 'reloading configuration' - . /etc/rc.common /etc/init.d/${daemon} reload - } - ;; -esac +. /lib/functions/oonf_hotplug.sh diff --git a/oonf-dlep-proxy/files/dlep_proxy.init b/oonf-dlep-proxy/files/dlep_proxy.init index fddbf01..c47ff84 100755 --- a/oonf-dlep-proxy/files/dlep_proxy.init +++ b/oonf-dlep-proxy/files/dlep_proxy.init @@ -1,124 +1,6 @@ #!/bin/sh /etc/rc.common START=82 +DAEMON='dlep_proxy' -daemon=dlep_proxy - -. /usr/share/libubox/jshn.sh - -oonf_log() -{ - logger -s -t ${daemon} -p daemon.info "$1" -} - -oonf_get_layer3_device() -{ - local interface="$1" # e.g. 'mywifi' - local status dev proto - local query="{ \"interface\" : \"$interface\" }" - - status="$( ubus -S call network.interface status "$query" )" && { - json_load "$status" - json_get_var 'dev' l3_device - json_get_var 'proto' proto - case "$proto" in - pppoe) - # TODO: otherwise it segfaults - oonf_log "refusing to add '$interface', because of proto '$proto'" - ;; - *) - echo "$dev" # e.g. 'wlan0-1' - ;; - esac - } -} - -oonf_add_devices_to_configuration() -{ - local i=0 - local device_name= section= interface= single_interface= - - # make a copy of configuration and - # add a 'name' (physical name) for all - # 'interface-names' (e.g. mywifi) - # - # olsrd2.@interface[2]=interface - # olsrd2.@interface[2].ifname='wan lan wlanadhoc wlanadhocRADIO1' - - # /var is in ramdisc/tmpfs - cp /etc/config/${daemon} /var/etc/${daemon}_dev - - while section="$( uci -q -c /etc/config get "${daemon}.@[$i]" )"; do { - echo "section: $section" - - interface="$( uci -q -c /etc/config get "${daemon}.@[$i].ifname" )" || { - i=$(( $i + 1 )) - continue - } - - case "$( uci -q get "${daemon}.@[$i].ignore" )" in - 1|on|true|enabled|yes) - oonf_log "removing/ignore section '$section'" - uci -q -c /var/etc delete "${daemon}_dev.@[$j]" - i=$(( $i + 1 )) - - continue - ;; - esac - - for single_interface in $interface; do { - device_name="$( oonf_get_layer3_device "$single_interface" )" - - echo "Interface: $single_interface = $device_name" - - if [ ! -z "$device_name" ] - then - # add option 'name' for 'ifname' (e.g. 'mywifi') - uci -q -c /var/etc add_list "${daemon}_dev.@[$i].name=$device_name" - fi - } done - i=$(( $i + 1 )) - } done - - uci -q -c /var/etc commit ${daemon}_dev - - oonf_log "wrote '/var/etc/${daemon}_dev'" -} - -oonf_reread_config() -{ - local pid - local pidfile='/var/run/${daemon}.pid' - - if [ -e "$pidfile" ]; then - read pid <"$pidfile" - elif pidfile="$( uci -q get '${daemon}.@global[0].pidfile' )"; then - read pid <"$pidfile" - fi - - # if empty, ask kernel - pid="${pid:-$( pidof ${daemon} )}" - - [ -n "$pid" ] && kill -SIGHUP $pid -} - -start() -{ - oonf_add_devices_to_configuration - - # produce coredumps - ulimit -c unlimited - - service_start /usr/sbin/${daemon} --set global.fork=true --load uci:///var/etc/${daemon}_dev -} - -stop() -{ - service_stop /usr/sbin/${daemon} -} - -reload() -{ - oonf_add_devices_to_configuration - oonf_reread_config -} +. /lib/functions/oonf_init.sh diff --git a/oonf-dlep-radio/Makefile b/oonf-dlep-radio/Makefile index 4fb9124..f0db64f 100644 --- a/oonf-dlep-radio/Makefile +++ b/oonf-dlep-radio/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=oonf-dlep-radio -PKG_VERSION:=0.9.1-r1 +PKG_VERSION:=0.9.1-r2 PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d PKG_RELEASE:=$(PKG_REV) @@ -40,7 +40,7 @@ endef define Package/oonf-dlep-radio $(call Package/oonf-git/template) TITLE:= Build DLEP Radio Agent - DEPENDS:=+librt +libnl-tiny +libuci + DEPENDS:=+librt +libnl-tiny +libuci +oonf-init-scripts VERSION:=$(PKG_VERSION) endef diff --git a/oonf-dlep-radio/files/dlep_radio.hotplug b/oonf-dlep-radio/files/dlep_radio.hotplug index 87d1dbe..b7146a4 100755 --- a/oonf-dlep-radio/files/dlep_radio.hotplug +++ b/oonf-dlep-radio/files/dlep_radio.hotplug @@ -1,12 +1,5 @@ #!/bin/sh -daemon=dlep_radio +DAEMON='dlep_radio' -case "$ACTION" in - ifup) - . /etc/rc.common /etc/init.d/${daemon} enabled && { - logger -t '${daemon}[hotplug]' -p daemon.info 'reloading configuration' - . /etc/rc.common /etc/init.d/${daemon} reload - } - ;; -esac +. /lib/functions/oonf_hotplug.sh diff --git a/oonf-dlep-radio/files/dlep_radio.init b/oonf-dlep-radio/files/dlep_radio.init index be22ed1..c660a21 100755 --- a/oonf-dlep-radio/files/dlep_radio.init +++ b/oonf-dlep-radio/files/dlep_radio.init @@ -1,124 +1,6 @@ #!/bin/sh /etc/rc.common START=82 +DAEMON='dlep_radio' -daemon=dlep_radio - -. /usr/share/libubox/jshn.sh - -oonf_log() -{ - logger -s -t ${daemon} -p daemon.info "$1" -} - -oonf_get_layer3_device() -{ - local interface="$1" # e.g. 'mywifi' - local status dev proto - local query="{ \"interface\" : \"$interface\" }" - - status="$( ubus -S call network.interface status "$query" )" && { - json_load "$status" - json_get_var 'dev' l3_device - json_get_var 'proto' proto - case "$proto" in - pppoe) - # TODO: otherwise it segfaults - oonf_log "refusing to add '$interface', because of proto '$proto'" - ;; - *) - echo "$dev" # e.g. 'wlan0-1' - ;; - esac - } -} - -oonf_add_devices_to_configuration() -{ - local i=0 - local device_name= section= interface= single_interface= - - # make a copy of configuration and - # add a 'name' (physical name) for all - # 'interface-names' (e.g. mywifi) - # - # olsrd2.@interface[2]=interface - # olsrd2.@interface[2].ifname='wan lan wlanadhoc wlanadhocRADIO1' - - # /var is in ramdisc/tmpfs - cp /etc/config/${daemon} /var/etc/${daemon}_dev - - while section="$( uci -q -c /etc/config get "${daemon}.@[$i]" )"; do { - echo "section: $section" - - interface="$( uci -q -c /etc/config get "${daemon}.@[$i].ifname" )" || { - i=$(( $i + 1 )) - continue - } - - case "$( uci -q get "${daemon}.@[$i].ignore" )" in - 1|on|true|enabled|yes) - oonf_log "removing/ignore section '$section'" - uci -q -c /var/etc delete "${daemon}_dev.@[$j]" - i=$(( $i + 1 )) - - continue - ;; - esac - - for single_interface in $interface; do { - device_name="$( oonf_get_layer3_device "$single_interface" )" - - echo "Interface: $single_interface = $device_name" - - if [ ! -z "$device_name" ] - then - # add option 'name' for 'ifname' (e.g. 'mywifi') - uci -q -c /var/etc add_list "${daemon}_dev.@[$i].name=$device_name" - fi - } done - i=$(( $i + 1 )) - } done - - uci -q -c /var/etc commit ${daemon}_dev - - oonf_log "wrote '/var/etc/${daemon}_dev'" -} - -oonf_reread_config() -{ - local pid - local pidfile='/var/run/${daemon}.pid' - - if [ -e "$pidfile" ]; then - read pid <"$pidfile" - elif pidfile="$( uci -q get '${daemon}.@global[0].pidfile' )"; then - read pid <"$pidfile" - fi - - # if empty, ask kernel - pid="${pid:-$( pidof ${daemon} )}" - - [ -n "$pid" ] && kill -SIGHUP $pid -} - -start() -{ - oonf_add_devices_to_configuration - - # produce coredumps - ulimit -c unlimited - - service_start /usr/sbin/${daemon} --set global.fork=true --load uci:///var/etc/${daemon}_dev -} - -stop() -{ - service_stop /usr/sbin/${daemon} -} - -reload() -{ - oonf_add_devices_to_configuration - oonf_reread_config -} +. /lib/functions/oonf_init.sh diff --git a/oonf-init-scripts/Makefile b/oonf-init-scripts/Makefile new file mode 100644 index 0000000..fd1aa06 --- /dev/null +++ b/oonf-init-scripts/Makefile @@ -0,0 +1,36 @@ +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=oonf-init-scripts +PKG_VERSION:=0.9.1-r2 +PKG_RELEASE:=1 +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/oonf-init-scripts + SECTION:=net + CATEGORY:=Network + MAINTAINER:=Henning Rogge + SUBMENU:=OLSR.org network framework + URL:=http://www.olsr.org/ + TITLE:= Common OONF startup scripts + VERSION:=$(PKG_VERSION) +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/oonf-init-scripts/install + $(INSTALL_BIN) -D ./files/oonf_init.sh $(1)/lib/functions/oonf_init.sh + $(INSTALL_BIN) -D ./files/oonf_hotplug.sh $(1)/lib/functions/oonf_hotplug.sh +endef + +$(eval $(call BuildPackage,oonf-init-scripts)) diff --git a/oonf-init-scripts/files/oonf_hotplug.sh b/oonf-init-scripts/files/oonf_hotplug.sh new file mode 100755 index 0000000..b230b94 --- /dev/null +++ b/oonf-init-scripts/files/oonf_hotplug.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +case "${ACTION}" in + ifup) + . /etc/rc.common /etc/init.d/${DAEMON} enabled && { + logger -t '${DAEMON}[hotplug]' -p daemon.info 'reloading configuration' + . /etc/rc.common /etc/init.d/${DAEMON} reload + } + ;; +esac diff --git a/oonf-init-scripts/files/oonf_init.sh b/oonf-init-scripts/files/oonf_init.sh new file mode 100755 index 0000000..1c7b414 --- /dev/null +++ b/oonf-init-scripts/files/oonf_init.sh @@ -0,0 +1,120 @@ +#!/bin/sh + +. /usr/share/libubox/jshn.sh + +oonf_log() +{ + logger -s -t ${DAEMON} -p daemon.info "${1}" +} + +oonf_get_layer3_device() +{ + local interface="${1}" # e.g. 'mywifi' + local status dev proto + local query="{ \"interface\" : \"${interface}\" }" + + status="$( ubus -S call network.interface status "${query}" )" && { + json_load "${status}" + json_get_var 'dev' l3_device + json_get_var 'proto' proto + case "${proto}" in + pppoe) + # TODO: otherwise it segfaults + oonf_log "refusing to add '$interface', because of proto '${proto}'" + ;; + *) + echo "${dev}" # e.g. 'wlan0-1' + ;; + esac + } +} + +oonf_add_devices_to_configuration() +{ + local i=0 + local device_name= section= interface= single_interface= + + # make a copy of configuration and + # add a 'name' (physical name) for all + # 'interface-names' (e.g. mywifi) + # + # olsrd2.@interface[2]=interface + # olsrd2.@interface[2].ifname='wan lan wlanadhoc wlanadhocRADIO1' + + # /var is in ramdisc/tmpfs + uci export ${DAEMON} >"/var/etc/${DAEMON}_dev" + + while section="$( uci -q -c /etc/config get "${DAEMON}.@[${i}]" )"; do { + echo "section: ${section}" + + interface="$( uci -q -c /etc/config get "${DAEMON}.@[${i}].ifname" )" || { + i=$(( i + 1 )) + continue + } + + case "$( uci -q get "${DAEMON}.@[${i}].ignore" )" in + 1|on|true|enabled|yes) + oonf_log "removing/ignore section '$section'" + uci -q -c /var/etc delete "${DAEMON}_dev.@[${j}]" + i=$(( i + 1 )) + + continue + ;; + esac + + for single_interface in ${interface}; do { + device_name="$( oonf_get_layer3_device "${single_interface}" )" + + echo "Interface: ${single_interface} = ${device_name}" + + if [ ! -z "${device_name}" ] + then + # add option 'name' for 'ifname' (e.g. 'mywifi') + uci -q -c /var/etc add_list "${DAEMON}_dev.@[${i}].name=${device_name}" + fi + } done + i=$(( $i + 1 )) + } done + + uci -q -c /var/etc commit "${DAEMON}_dev" + + oonf_log "wrote '/var/etc/${DAEMON}_dev'" +} + +oonf_reread_config() +{ + local pid + local pidfile="/var/run/${DAEMON}.pid" + + if [ -e "${pidfile}" ]; then + read pid <"${pidfile}" + elif pidfile="$( uci -q get "${DAEMON}.@global[0].pidfile" )"; then + read pid <"${pidfile}" + fi + + # if empty, ask kernel + pid="${pid:-$( pidof ${DAEMON} )}" + + [ -n "${pid}" ] && kill -SIGHUP ${pid} +} + +start() +{ + oonf_add_devices_to_configuration + + # produce coredumps + ulimit -c unlimited + + service_start /usr/sbin/${DAEMON} --set global.fork=true --load uci:///var/etc/${DAEMON}_dev +} + +stop() +{ + service_stop /usr/sbin/${DAEMON} +} + +reload() +{ + oonf_add_devices_to_configuration + oonf_reread_config +} diff --git a/oonf-olsrd2/Makefile b/oonf-olsrd2/Makefile index 4651f94..9c23ac7 100644 --- a/oonf-olsrd2/Makefile +++ b/oonf-olsrd2/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=oonf-olsrd2 -PKG_VERSION:=0.9.1-r1 +PKG_VERSION:=0.9.1-r2 PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d PKG_RELEASE:=$(PKG_REV) @@ -40,7 +40,7 @@ endef define Package/oonf-olsrd2 $(call Package/oonf-git/template) TITLE:= Build Olsrd V2 Routing Agent - DEPENDS:=+librt +libnl-tiny +libuci + DEPENDS:=+librt +libnl-tiny +libuci +oonf-init-scripts VERSION:=$(PKG_VERSION) endef diff --git a/oonf-olsrd2/files/olsrd2.hotplug b/oonf-olsrd2/files/olsrd2.hotplug index a67de86..3a277ce 100755 --- a/oonf-olsrd2/files/olsrd2.hotplug +++ b/oonf-olsrd2/files/olsrd2.hotplug @@ -1,12 +1,5 @@ #!/bin/sh -daemon=olsrd2 +DAEMON='olsrd2' -case "$ACTION" in - ifup) - . /etc/rc.common /etc/init.d/${daemon} enabled && { - logger -t '${daemon}[hotplug]' -p daemon.info 'reloading configuration' - . /etc/rc.common /etc/init.d/${daemon} reload - } - ;; -esac +. /lib/functions/oonf_hotplug.sh diff --git a/oonf-olsrd2/files/olsrd2.init b/oonf-olsrd2/files/olsrd2.init index 3f3b667..debae98 100755 --- a/oonf-olsrd2/files/olsrd2.init +++ b/oonf-olsrd2/files/olsrd2.init @@ -1,124 +1,6 @@ #!/bin/sh /etc/rc.common START=82 +DAEMON='olsrd2' -daemon=olsrd2 - -. /usr/share/libubox/jshn.sh - -oonf_log() -{ - logger -s -t ${daemon} -p daemon.info "$1" -} - -oonf_get_layer3_device() -{ - local interface="$1" # e.g. 'mywifi' - local status dev proto - local query="{ \"interface\" : \"$interface\" }" - - status="$( ubus -S call network.interface status "$query" )" && { - json_load "$status" - json_get_var 'dev' l3_device - json_get_var 'proto' proto - case "$proto" in - pppoe) - # TODO: otherwise it segfaults - oonf_log "refusing to add '$interface', because of proto '$proto'" - ;; - *) - echo "$dev" # e.g. 'wlan0-1' - ;; - esac - } -} - -oonf_add_devices_to_configuration() -{ - local i=0 - local device_name= section= interface= single_interface= - - # make a copy of configuration and - # add a 'name' (physical name) for all - # 'interface-names' (e.g. mywifi) - # - # olsrd2.@interface[2]=interface - # olsrd2.@interface[2].ifname='wan lan wlanadhoc wlanadhocRADIO1' - - # /var is in ramdisc/tmpfs - cp /etc/config/${daemon} /var/etc/${daemon}_dev - - while section="$( uci -q -c /etc/config get "${daemon}.@[$i]" )"; do { - echo "section: $section" - - interface="$( uci -q -c /etc/config get "${daemon}.@[$i].ifname" )" || { - i=$(( $i + 1 )) - continue - } - - case "$( uci -q get "${daemon}.@[$i].ignore" )" in - 1|on|true|enabled|yes) - oonf_log "removing/ignore section '$section'" - uci -q -c /var/etc delete "${daemon}_dev.@[$j]" - i=$(( $i + 1 )) - - continue - ;; - esac - - for single_interface in $interface; do { - device_name="$( oonf_get_layer3_device "$single_interface" )" - - echo "Interface: $single_interface = $device_name" - - if [ ! -z "$device_name" ] - then - # add option 'name' for 'ifname' (e.g. 'mywifi') - uci -q -c /var/etc add_list "${daemon}_dev.@[$i].name=$device_name" - fi - } done - i=$(( $i + 1 )) - } done - - uci -q -c /var/etc commit ${daemon}_dev - - oonf_log "wrote '/var/etc/${daemon}_dev'" -} - -oonf_reread_config() -{ - local pid - local pidfile='/var/run/${daemon}.pid' - - if [ -e "$pidfile" ]; then - read pid <"$pidfile" - elif pidfile="$( uci -q get '${daemon}.@global[0].pidfile' )"; then - read pid <"$pidfile" - fi - - # if empty, ask kernel - pid="${pid:-$( pidof ${daemon} )}" - - [ -n "$pid" ] && kill -SIGHUP $pid -} - -start() -{ - oonf_add_devices_to_configuration - - # produce coredumps - ulimit -c unlimited - - service_start /usr/sbin/${daemon} --set global.fork=true --load uci:///var/etc/${daemon}_dev -} - -stop() -{ - service_stop /usr/sbin/${daemon} -} - -reload() -{ - oonf_add_devices_to_configuration - oonf_reread_config -} +. /lib/functions/oonf_init.sh -- 2.30.2