alfred: Support multiple listening interfaces
authorSven Eckelmann <sven@narfation.org>
Thu, 1 Aug 2019 18:58:41 +0000 (20:58 +0200)
committerSven Eckelmann <sven@narfation.org>
Thu, 1 Aug 2019 19:34:44 +0000 (21:34 +0200)
The alfred daemon allows to be started with multiple interfaces. The first
interface is used for communication and to calculate the source mac
address. The rest of the interfaces are only used for communication.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
alfred/Makefile
alfred/files/alfred.config
alfred/files/alfred.init

index aa43b67afdc3cbe9ce6938c57d6eccdc5d4157c3..9bc1f73931b76e4e65b1b6b9fe8ddcd47273a459 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=alfred
 PKG_VERSION:=2019.3
-PKG_RELEASE:=0
+PKG_RELEASE:=1
 PKG_HASH:=a4c37920de497701680abb55c49cdcd11e4e7135e0e7e79259c35492a3df4766
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
index 9d3fff6801ad1a0272d8af301e0129090010dcea..704adf13b2641800100588314c81f0aa15c56227 100644 (file)
@@ -1,5 +1,5 @@
 config 'alfred' 'alfred'
-       option interface 'br-lan'
+       list interface 'br-lan'
        option mode 'master'
        option batmanif 'bat0'
        option start_vis '1'
index 89e33ab55a0bd301fcd6ae490a5e93b7f92c2bd2..e5d200661e32a8037665b23c2f96bbcba8179804 100755 (executable)
@@ -54,10 +54,17 @@ wait_for_ll_address() {
        exit 1
 }
 
+append_interface()
+{
+       append "interfaces" "$1" ","
+       wait_for_ll_address "$1"
+}
+
 alfred_start() {
        local args=""
        local section="$1"
        local disabled interface mode
+       local interfaces
 
        # check if section is disabled
        config_get_bool disabled "$section" disabled 0
@@ -65,8 +72,12 @@ alfred_start() {
 
        args=""
 
-       config_get interface "$section" interface
-       append args "-i $interface"
+       config_list_foreach "$section" "interface" append_interface
+       if [ -z "$interfaces" ]; then
+               config_get interface "$section" interface
+               append_interface "$interface"
+       fi
+       append args "-i $interfaces"
 
        config_get mode "$section" mode
        [ "$mode" = "master" ] && append args "-m"
@@ -78,8 +89,6 @@ alfred_start() {
                wait_for_dir "$batmanif" "/sys/class/net/$batmanif/mesh"
        fi
 
-       wait_for_ll_address "$interface"
-
        append alfred_args "$args"
        enable=1