Merge branch 'release-0.6.8'
[olsrd.git] / files / olsrd-adhoc-setup
index dda1d42..6de3cd1 100755 (executable)
@@ -1,16 +1,40 @@
 #!/bin/sh
 
-channel=7
-essid=olsr.org
 
-if [ -x /usr/bin/nmcli ]; then
-       echo -n "Turning off NetworkManager wifi control: "
-    /usr/bin/nmcli nm wifi off
-    echo "done"
+#- globals --------------------------------------------------------------------#
+
+nmcli="/usr/bin/nmcli --mode tabular"
+
+#- functions ------------------------------------------------------------------#
+
+get_wlan_if()
+{
+    if [ -x /sbin/iwconfig ]; then
+        echo `/sbin/iwconfig 2>&1 | grep 'IEEE 802.11' | head -1 | awk '{print $1}'`
+    elif [ -x /usr/bin/nmcli ]; then
+        echo `$nmcli dev list | grep -B6 WIFI-PROPERTIES| head -1 | awk '{print $2}'`
+    else
+        # wild guess, why not...
+        echo "wlan0"
+    fi
+}
+
+get_current_bssid()
+{
+    if [ -x /sbin/iwgetid ]; then
+        iwgetid --ap --raw
+    fi
+}
+
+#- main -----------------------------------------------------------------------#
+
+if [ ! -x /sbin/iwconfig ]; then
+    echo "/sbin/iwconfig required! sudo apt-get install wireless-tools"
+    exit
 fi
 
-if [ "$1" = "" ]; then
-    wlan=`/sbin/iwconfig 2>&1 | grep 'IEEE 802.11' | head -1 | cut -d ' ' -f 1`
+if [ -z "$1" ]; then
+    wlan=$(get_wlan_if)
 else
     wlan=$1
 fi
@@ -20,6 +44,34 @@ if [ "$wlan" = "" ]; then
     exit
 fi
 
+if [ -z "$2" ]; then
+    channel=5
+else
+    channel=$2
+fi
+
+if [ -z "$3" ]; then
+    essid=commotionwireless.net
+else
+    essid="$3"
+fi
+
+if [ -z "$4" ]; then
+    bssid=02:ca:ff:ee:ba:be
+else
+    bssid="$4"
+fi
+
+echo "Setting mesh on '$wlan' to channel $channel:"
+echo "Attaching to '$essid' with BSSID '$bssid'"
+
+# set NetworkManager to play nice
+if [ -x /usr/bin/nmcli ]; then
+       echo -n "Turning off NetworkManager wifi control: "
+    $nmcli nm sleep false   2> /dev/null
+    $nmcli nm wifi on   2> /dev/null
+    $nmcli dev disconnect iface $wlan   2> /dev/null
+fi
 
 echo -n "Setting up ad-hoc networking: "
 
@@ -27,7 +79,7 @@ echo -n "Setting up ad-hoc networking: "
 /sbin/ifconfig $wlan down
 
 # disassociate from current BSSID in case an ad-hoc BSSID already stuck there
-/sbin/iwconfig $wlan ap 00:00:00:00:00:00
+/sbin/iwconfig $wlan ap $bssid
 
 sleep 1
 
@@ -43,8 +95,8 @@ sleep 1
 
 /sbin/ifconfig $wlan up
 
-# some cards what to be configured after the interface is up
-sleep 4
+# some cards want to be configured after the interface is up
+sleep 5
 mode=`iwgetid --mode --raw`
 if [ "$mode" != "1" ]; then
     /sbin/iwconfig $wlan mode ad-hoc
@@ -73,4 +125,4 @@ ip=$net.$ip3.$ip4
 echo "done"
 
 echo "OLSR ad-hoc setup on $wlan using $essid on channel $channel with IP $ip"
-echo "    ad-hoc Cell BSSID: `iwgetid --ap --raw`"
+echo "    ad-hoc Cell BSSID: `get_current_bssid`"