Merge pull request #489 from ecsv/batmand-procd
[feed/routing.git] / batmand / files / etc / init.d / batmand
index add4ec8249fe73459c1ae9a7358aba5b4b07081a..8361e7255ca8c621023d306e38832fb6d9fb7b4f 100644 (file)
@@ -1,21 +1,39 @@
 #!/bin/sh /etc/rc.common
 START=90
+USE_PROCD=1
 
-start () {
-       interface=$(uci get batmand.general.interface)
+batmand_start() {
+       local config="$1"
+       local batman_args
+       local interface
+       local hnas
+       local gateway_class
+       local originator_interval
+       local preferred_gateway
+       local routing_class
+       local visualisation_srv
+       local local policy_routing_script
+       local disable_client_nat
+       local disable_aggregation
+
+       [ "$config" = "general" ] || return 1
+
+       config_get interface "$config" interface
        if [ "$interface" = "" ]; then
                echo $1 Error, you must specify at least a network interface
-               exit
-       fi
-       hnas=$(uci get batmand.general.hna)
-       gateway_class=$(uci get batmand.general.gateway_class)
-       originator_interval=$(uci get batmand.general.originator_interval)
-       preferred_gateway=$(uci get batmand.general.preferred_gateway)
-       routing_class=$(uci get batmand.general.routing_class)
-       visualisation_srv=$(uci get batmand.general.visualisation_srv)
-       policy_routing_script=$(uci get batmand.general.policy_routing_script)
-       disable_client_nat=$(uci get batmand.general.disable_client_nat)
-       disable_aggregation=$(uci get batmand.general.disable_aggregation)
+               return 1
+       fi
+
+       config_get hnas "$config" hna
+       config_get gateway_class "$config" gateway_class
+       config_get originator_interval "$config" originator_interval
+       config_get preferred_gateway "$config" preferred_gateway
+       config_get routing_class "$config" routing_class
+       config_get visualisation_srv "$config" visualisation_srv
+       config_get policy_routing_script "$config" policy_routing_script
+       config_get disable_client_nat "$config" disable_client_nat
+       config_get disable_aggregation "$config" disable_aggregation
+
        batman_args=""
 
        for hna in $hnas; do
@@ -54,10 +72,20 @@ start () {
                batman_args=${batman_args}'--disable-aggregation '
        fi
 
-       batman_args=${batman_args}$interface
-       batmand $batman_args >/dev/null 2>&1
+       procd_open_instance "${config}"
+       procd_set_param command /usr/sbin/batmand
+       procd_append_param command --no-detach
+       procd_append_param command ${batman_args}
+       procd_append_param command ${interface}
+       procd_set_param netdev ${interface}
+       procd_close_instance
+}
+
+start_service() {
+       config_load "batmand"
+       config_foreach batmand_start batmand
 }
 
-stop () {
-       killall batmand
+service_triggers() {
+       procd_add_reload_trigger "batmand"
 }