From patchwork Mon Jun 11 17:27:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [v2,2/2] Allow initial configuration from Ethernet From: Fabian Blaese X-Patchwork-Id: 852 Message-Id: <20180611172748.6267-2-fabian@blaese.de> To: franken-dev@freifunk.net Cc: Adrian Schmutzler Date: Mon, 11 Jun 2018 19:27:48 +0200 Signed-off-by: Fabian Bläse --- Apply after MacKnocker patchset! Changes in v2: - Fix indentation - Improve usage message - Return if no ethmesh_dev exists - Replace . with : in ping6 sed --- .../fff-hoods/files/usr/lib/functions/fff/hoodfile | 39 ++++++++++++++++++---- .../fff/fff-hoods/files/usr/sbin/configurehood | 2 +- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile index b88a3d4..bc52883 100644 --- a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile +++ b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile @@ -2,8 +2,7 @@ . /lib/functions/fff/wireless getWirelessHoodfile() { - if [ $# != 1 ] - then + if [ $# != 1 ]; then echo "Usage: getWirelessHoodfile " return 1 fi @@ -54,9 +53,32 @@ getWirelessHoodfile() { fi } +getEthernetHoodfile() { + if [ $# != 1 ]; then + echo "Usage: getEthernetHoodfile " + return 1 + fi + file=$1 + + echo "Trying to get hoodfile from ethernet neighbor..." + + if ! ethmesh_dev=$(uci -q get network.ethmesh.ifname); then + # no ethmesh interface + return 1 + fi + + neighbor_addrs=$(ping6 -c2 ff02::1%${ethmesh_dev} | grep seq | cut -d " " -f4 | sed s/:$//g | sort | uniq) + + for addr in $neighbor_addrs; do + wget -T2 -t1 -qO "$file" "http://[${addr}%${ethmesh_dev}]:2342/keyxchangev2data" && return 0 + done + + # got no hoodfile + return 1 +} + getGatewayHoodfile() { - if [ $# != 1 ] - then + if [ $# != 1 ]; then echo "Usage: getGatewayHoodfile " return 1 fi @@ -72,8 +94,7 @@ getGatewayHoodfile() { } getKeyserverHoodfile() { - if [ $# != 1 ] - then + if [ $# != 1 ]; then echo "Usage: getKeyserverHoodfile " return 1 fi @@ -81,5 +102,9 @@ getKeyserverHoodfile() { echo "Getting hoodfile from Keyserver" - wget -T15 -t5 -O "$file" "http://keyserver.freifunk-franken.de/v2/?lat=$lat&long=$long" + if wget -T15 -t5 -O "$file" "http://keyserver.freifunk-franken.de/v2/?lat=$lat&long=$long"; then + return 0 + else + return 1 + fi } diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood index aee20e5..282e21b 100755 --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood @@ -101,7 +101,7 @@ else sleep 30 # Wait for the config AP, which may be created at the same time as this script has started - getWirelessHoodfile "$hoodfile" + getEthernetHoodfile "$hoodfile" || getWirelessHoodfile "$hoodfile" #UPLINK: Set up uplink data on first contact: if [ -s /tmp/keyxchangev2data ]; then