. /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 }