Unified Openwrt startup scripts for OONF
This commit is contained in:
parent
8afb34944b
commit
2a34bedcec
12 changed files with 184 additions and 393 deletions
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=oonf-dlep-proxy
|
PKG_NAME:=oonf-dlep-proxy
|
||||||
PKG_VERSION:=0.9.1-r1
|
PKG_VERSION:=0.9.1-r2
|
||||||
PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d
|
PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d
|
||||||
PKG_RELEASE:=$(PKG_REV)
|
PKG_RELEASE:=$(PKG_REV)
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ endef
|
||||||
define Package/oonf-dlep-proxy
|
define Package/oonf-dlep-proxy
|
||||||
$(call Package/oonf-git/template)
|
$(call Package/oonf-git/template)
|
||||||
TITLE:= Build DLEP Radio+Router Agent
|
TITLE:= Build DLEP Radio+Router Agent
|
||||||
DEPENDS:=+librt +libnl-tiny +libuci
|
DEPENDS:=+librt +libnl-tiny +libuci +oonf-init-scripts
|
||||||
VERSION:=$(PKG_VERSION)
|
VERSION:=$(PKG_VERSION)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
daemon=dlep_proxy
|
DAEMON='dlep_proxy'
|
||||||
|
|
||||||
case "$ACTION" in
|
. /lib/functions/oonf_hotplug.sh
|
||||||
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
|
|
||||||
|
|
|
@ -1,124 +1,6 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
START=82
|
START=82
|
||||||
|
DAEMON='dlep_proxy'
|
||||||
|
|
||||||
daemon=dlep_proxy
|
. /lib/functions/oonf_init.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
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=oonf-dlep-radio
|
PKG_NAME:=oonf-dlep-radio
|
||||||
PKG_VERSION:=0.9.1-r1
|
PKG_VERSION:=0.9.1-r2
|
||||||
PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d
|
PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d
|
||||||
PKG_RELEASE:=$(PKG_REV)
|
PKG_RELEASE:=$(PKG_REV)
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ endef
|
||||||
define Package/oonf-dlep-radio
|
define Package/oonf-dlep-radio
|
||||||
$(call Package/oonf-git/template)
|
$(call Package/oonf-git/template)
|
||||||
TITLE:= Build DLEP Radio Agent
|
TITLE:= Build DLEP Radio Agent
|
||||||
DEPENDS:=+librt +libnl-tiny +libuci
|
DEPENDS:=+librt +libnl-tiny +libuci +oonf-init-scripts
|
||||||
VERSION:=$(PKG_VERSION)
|
VERSION:=$(PKG_VERSION)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
daemon=dlep_radio
|
DAEMON='dlep_radio'
|
||||||
|
|
||||||
case "$ACTION" in
|
. /lib/functions/oonf_hotplug.sh
|
||||||
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
|
|
||||||
|
|
|
@ -1,124 +1,6 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
START=82
|
START=82
|
||||||
|
DAEMON='dlep_radio'
|
||||||
|
|
||||||
daemon=dlep_radio
|
. /lib/functions/oonf_init.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
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
36
oonf-init-scripts/Makefile
Normal file
36
oonf-init-scripts/Makefile
Normal file
|
@ -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 <hrogge@gmail.com>
|
||||||
|
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))
|
10
oonf-init-scripts/files/oonf_hotplug.sh
Executable file
10
oonf-init-scripts/files/oonf_hotplug.sh
Executable file
|
@ -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
|
120
oonf-init-scripts/files/oonf_init.sh
Executable file
120
oonf-init-scripts/files/oonf_init.sh
Executable file
|
@ -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
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=oonf-olsrd2
|
PKG_NAME:=oonf-olsrd2
|
||||||
PKG_VERSION:=0.9.1-r1
|
PKG_VERSION:=0.9.1-r2
|
||||||
PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d
|
PKG_REV:=eab3845089bc2410a3c115fb8274572b16a0e47d
|
||||||
PKG_RELEASE:=$(PKG_REV)
|
PKG_RELEASE:=$(PKG_REV)
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ endef
|
||||||
define Package/oonf-olsrd2
|
define Package/oonf-olsrd2
|
||||||
$(call Package/oonf-git/template)
|
$(call Package/oonf-git/template)
|
||||||
TITLE:= Build Olsrd V2 Routing Agent
|
TITLE:= Build Olsrd V2 Routing Agent
|
||||||
DEPENDS:=+librt +libnl-tiny +libuci
|
DEPENDS:=+librt +libnl-tiny +libuci +oonf-init-scripts
|
||||||
VERSION:=$(PKG_VERSION)
|
VERSION:=$(PKG_VERSION)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
daemon=olsrd2
|
DAEMON='olsrd2'
|
||||||
|
|
||||||
case "$ACTION" in
|
. /lib/functions/oonf_hotplug.sh
|
||||||
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
|
|
||||||
|
|
|
@ -1,124 +1,6 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
START=82
|
START=82
|
||||||
|
DAEMON='olsrd2'
|
||||||
|
|
||||||
daemon=olsrd2
|
. /lib/functions/oonf_init.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
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue