batman-adv: init script tries to retrieve interfaces from uci
authorMarek Lindner <lindner_marek@yahoo.de>
Tue, 19 Apr 2011 12:49:37 +0000 (12:49 +0000)
committerMarek Lindner <lindner_marek@yahoo.de>
Tue, 19 Apr 2011 12:49:37 +0000 (12:49 +0000)
The batman-adv init script will query uci (network.$iface.ifname)
to retrieve the interface name to re-use the existing network
configuration system.
The default iface configuration (batman-adv.bat0.interfaces) is
set to 'mesh' which allows to start batman-adv as soon as the
network configuration contains a 'mesh' stanza.

Signed-off-by: Filippo Sallemi <tonyputi@gmail.com>
Signed-off-by: Gioacchino Mazzurco <gmazzurco89@gmail.com>
SVN-Revision: 26719

net/batman-adv/files/etc/config/batman-adv
net/batman-adv/files/etc/init.d/batman-adv

index 9c66c93fe6b01a5362e5e9039ba4c007c53f4203..31ef797fbb31cd271fe36e50d9ca367d4b4a5408 100644 (file)
@@ -1,6 +1,6 @@
 
 config 'mesh' 'bat0'
-       option 'interfaces' 'wlan0'
+       option 'interfaces' 'mesh'
        option 'aggregated_ogms'
        option 'bonding'
        option 'fragmentation'
index 5011b6d1835899c77b831411d43e7b85f9bdb5b5..a6a85000d484e6d28039f7ab9d2e47ec0eeb80e0 100644 (file)
@@ -1,4 +1,6 @@
 #!/bin/sh /etc/rc.common
+# Copyright (C) 2011 OpenWrt.org
+
 START=90
 
 is_module_loaded() {
@@ -33,11 +35,16 @@ start_mesh () {
                echo Error, you must specify at least a network interface
                return
        fi
-
+       
        for interface in $interfaces
           do
-               [ ! -f "/sys/class/net/$interface/batman_adv/mesh_iface" ] && echo "Can't add interface $interface - ignoring" && continue
-               echo $meshif > /sys/class/net/$interface/batman_adv/mesh_iface
+             ifname=$(uci -P /var/state get network.$interface.ifname 2>&-)
+             [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && {
+                ifname=${interface}
+                [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && echo "Can't add interface $ifname - ignoring" && continue
+             }
+
+             echo $meshif > /sys/class/net/$ifname/batman_adv/mesh_iface
           done
 
        if [ $orig_interval ]; then
@@ -86,7 +93,7 @@ stop_mesh() {
        for iface in $(ls /sys/class/net/*)
           do
                 [ ! -f "$iface/batman_adv/mesh_iface" ] && continue
-                [ "$(head -1 $iface/batman_adv/mesh_iface)" != "status: $meshif" ] && continue
+                [ "$(head -1 $iface/batman_adv/mesh_iface)" != "$meshif" ] && continue
 
                 echo "none" > $iface/batman_adv/mesh_iface
           done