-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
-}