alfred: Support multiple listening interfaces

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>
This commit is contained in:
Sven Eckelmann 2019-08-01 20:58:41 +02:00
parent ce3569e159
commit 157da8c4ee
3 changed files with 15 additions and 6 deletions

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=alfred PKG_NAME:=alfred
PKG_VERSION:=2019.3 PKG_VERSION:=2019.3
PKG_RELEASE:=0 PKG_RELEASE:=1
PKG_HASH:=a4c37920de497701680abb55c49cdcd11e4e7135e0e7e79259c35492a3df4766 PKG_HASH:=a4c37920de497701680abb55c49cdcd11e4e7135e0e7e79259c35492a3df4766
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz

View File

@ -1,5 +1,5 @@
config 'alfred' 'alfred' config 'alfred' 'alfred'
option interface 'br-lan' list interface 'br-lan'
option mode 'master' option mode 'master'
option batmanif 'bat0' option batmanif 'bat0'
option start_vis '1' option start_vis '1'

View File

@ -54,10 +54,17 @@ wait_for_ll_address() {
exit 1 exit 1
} }
append_interface()
{
append "interfaces" "$1" ","
wait_for_ll_address "$1"
}
alfred_start() { alfred_start() {
local args="" local args=""
local section="$1" local section="$1"
local disabled interface mode local disabled interface mode
local interfaces
# check if section is disabled # check if section is disabled
config_get_bool disabled "$section" disabled 0 config_get_bool disabled "$section" disabled 0
@ -65,8 +72,12 @@ alfred_start() {
args="" args=""
config_get interface "$section" interface config_list_foreach "$section" "interface" append_interface
append args "-i $interface" if [ -z "$interfaces" ]; then
config_get interface "$section" interface
append_interface "$interface"
fi
append args "-i $interfaces"
config_get mode "$section" mode config_get mode "$section" mode
[ "$mode" = "master" ] && append args "-m" [ "$mode" = "master" ] && append args "-m"
@ -78,8 +89,6 @@ alfred_start() {
wait_for_dir "$batmanif" "/sys/class/net/$batmanif/mesh" wait_for_dir "$batmanif" "/sys/class/net/$batmanif/mesh"
fi fi
wait_for_ll_address "$interface"
append alfred_args "$args" append alfred_args "$args"
enable=1 enable=1