babel_add_iifrules() { [ "$#" -ne "1" ] && return 1 local name="$1" local table='10' local prio='31' uci set network.${name}_rule=rule uci set network.${name}_rule.in="$name" uci set network.${name}_rule.lookup="$table" uci set network.${name}_rule.priority="$prio" uci set network.${name}_rule6=rule6 uci set network.${name}_rule6.in="$name" uci set network.${name}_rule6.lookup="$table" uci set network.${name}_rule6.priority="$prio" return 0 } babel_delete_iifrules() { [ "$#" -ne "1" ] && return 1 local name="$1" uci -q del network.${name}_rule uci -q del network.${name}_rule6 return 0 } babel_add_peeraddr() { [ "$#" -ne "1" ] && return 1 local option="$1" if peer_ip=$(uci -q get gateway.@gateway[0].peer_ip); then uci add_list "$option"="$peer_ip" elif router_ip=$(uci -q get gateway.meta.router_ip); then # use router_ip if no peer_ip is set uci add_list "$option"="$router_ip" elif ipaddr=$(uci -q get gateway.@client[0].ipaddr); then # use client interface address (without subnet) if no router_ip is set uci add_list "$option"=$(echo $ipaddr | cut -d / -f1) else echo "WARNING: No peer_ip, router_ip or client interface ipaddr set! IPv4 routing is not possible." return 1 fi return 0 } babel_add_peer6addr() { [ "$#" -ne "1" ] && return 1 local option="$1" if peer_ip6=$(uci -q get gateway.@gateway[0].peer_ip6); then uci add_list "$option"="$peer_ip6" else return 1 fi return 0 } babel_add_interface() { [ "$#" -ne "4" ] && return 1 local name="$1" local interface="$2" local type="$3" local rxcost="$4" uci set babeld.$name=interface uci set babeld.$name.ifname="$interface" uci set babeld.$name.type="$type" uci set babeld.$name.rxcost="$rxcost" return 0 } babel_delete_interface() { [ "$#" -ne "1" ] && return 1 local name="$1" uci -q del babeld.$name return 0 } babel_add_redistribute_filter() { [ "$#" -ne "1" ] && return 1 local prefix="$1" config=$(uci add babeld filter) uci set babeld.$config.type='redistribute' uci set babeld.$config.ip="$prefix" uci set babeld.$config.addedbyautoconfig='true' return 0 } babel_remove_custom_redistribute_filters() { [ "$#" -ne "0" ] && return 1 remove_filters() { local name="$1" # check if filter was added by configuregateway if ! [ "$(uci -q get babeld.$name.addedbyautoconfig)" = 'true' ]; then return fi uci -q del babeld.$name } config_load babeld config_foreach remove_filters filter return 0 }