firmware/src/packages/fff/fff-babeld/files/etc/layer3.d/40-babel

104 lines
2.2 KiB
Plaintext

. /lib/functions.sh
. /lib/functions/fff/babel
#load board specific properties
BOARD="$(uci get board.model.name)"
. /etc/network.$BOARD
configure() {
## babelpeer
# remove peers missing in gateway config
remove_babelpeer() {
local name="$1"
# check prefix
if [ "$name" = "${name#babelpeer_}" ]; then
return
fi
if ! uci -q get gateway.$name > /dev/null; then
# remove interface
uci -q del network.$name
# remove iif-rules
babel_delete_iifrules "$name"
# remove babel interface
babel_delete_interface "$name"
fi
}
config_load babeld
config_foreach remove_babelpeer interface
#add new peers
add_babelpeer() {
local name="$1"
local prefixname="babelpeer_$name"
local vlan
local type
# get iface
if vlan=$(uci -q get gateway.$name.vlan); then
iface="${SWITCHDEV}.$vlan"
elif iface=$(uci -q get gateway.$name.iface); then
iface="$iface"
else
echo "ERROR: No iface set for babelpeer $name!"
exit 1
fi
# get type
if type=$(uci -q get gateway.$name.type); then
type="$type"
else
type=wired
fi
# get rxcost
if rxcost=$(uci -q get gateway.$name.rxcost); then
rxcost="$rxcost"
else
rxcost=96
fi
# add interface
uci set network.$prefixname=interface
uci set network.$prefixname.proto=static
uci set network.$prefixname.ifname=$iface
# add iif-rules
babel_add_iifrules "$prefixname" || { echo "Could not add iif-rules for babelpeer $name"; exit 1; }
# peer_ip
uci -q delete "network.$prefixname.ipaddr"
uci -q delete "network.$prefixname.ip6addr"
babel_add_peeraddr "network.$prefixname.ipaddr"
babel_add_peer6addr "network.$prefixname.ip6addr"
# add babel interface
babel_add_interface "$prefixname" "$iface" "$type" "$rxcost" || { echo "Could not add babeld interface for babelpeer $name"; exit 1; }
}
config_load gateway
config_foreach add_babelpeer babelpeer
# configure babeld filters for custom ipv6 addresses
## remove old filters
babel_remove_custom_redistribute_filters
## add new filters set for client interface in gatewayconfig
for prefix in $(uci -q get gateway.@client[0].ip6addr); do
babel_add_redistribute_filter "$prefix"
done
}
apply() {
uci commit network
uci commit babeld
}
revert() {
uci revert network
uci revert babeld
}