forked from freifunk-franken/firmware
fff-babeld: Add prefix to configuration name
When the user removes a peer from /etc/config/gateway, the script has to be able to find any leftover configurations that have been created for it. This can be made very easy by prepending a prefix to every automatically generated configuration. This also allows to remove the nasty check for the babeld default interface. Therefore the naming check for cfg* also can be removed. As a side effect all manually created configuration blocks that do not match a prefix will not be touched by configuregateway. Signed-off-by: Fabian Bläse <fabian@blaese.de> Reviewed-by: Robert Langhammer <rlanghammer@web.de>
This commit is contained in:
parent
53ff6f631b
commit
104a260843
|
@ -10,15 +10,19 @@ configure() {
|
||||||
# remove peers missing in gateway config
|
# remove peers missing in gateway config
|
||||||
remove_babelpeer() {
|
remove_babelpeer() {
|
||||||
local name="$1"
|
local name="$1"
|
||||||
if ! echo $name | grep cfg > /dev/null; then # do not delete default interface
|
|
||||||
if ! uci -q get gateway.$name > /dev/null; then
|
# check prefix
|
||||||
# remove interface
|
if [ "$name" = "${name#babelpeer_}" ]; then
|
||||||
uci -q del network.$name
|
return
|
||||||
# remove iif-rules
|
fi
|
||||||
babel_delete_iifrules "$name"
|
|
||||||
# remove babel interface
|
if ! uci -q get gateway.$name > /dev/null; then
|
||||||
babel_delete_interface "$name"
|
# remove interface
|
||||||
fi
|
uci -q del network.$name
|
||||||
|
# remove iif-rules
|
||||||
|
babel_delete_iifrules "$name"
|
||||||
|
# remove babel interface
|
||||||
|
babel_delete_interface "$name"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,15 +32,10 @@ configure() {
|
||||||
#add new peers
|
#add new peers
|
||||||
add_babelpeer() {
|
add_babelpeer() {
|
||||||
local name="$1"
|
local name="$1"
|
||||||
|
local prefixname="babelpeer_$name"
|
||||||
local vlan
|
local vlan
|
||||||
local type
|
local type
|
||||||
|
|
||||||
# prohibit cfg* as name
|
|
||||||
if echo $name | grep cfg > /dev/null; then
|
|
||||||
echo "ERROR: name $name is invalid for babelpeer!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# get iface
|
# get iface
|
||||||
if vlan=$(uci -q get gateway.$name.vlan); then
|
if vlan=$(uci -q get gateway.$name.vlan); then
|
||||||
iface="${SWITCHDEV}.$vlan"
|
iface="${SWITCHDEV}.$vlan"
|
||||||
|
@ -62,21 +61,21 @@ configure() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# add interface
|
# add interface
|
||||||
uci set network.$name=interface
|
uci set network.$prefixname=interface
|
||||||
uci set network.$name.proto=static
|
uci set network.$prefixname.proto=static
|
||||||
uci set network.$name.ifname=$iface
|
uci set network.$prefixname.ifname=$iface
|
||||||
|
|
||||||
# add iif-rules
|
# add iif-rules
|
||||||
babel_add_iifrules "$name" || { echo "Could not add iif-rules for babelpeer $name"; exit 1; }
|
babel_add_iifrules "$prefixname" || { echo "Could not add iif-rules for babelpeer $name"; exit 1; }
|
||||||
|
|
||||||
# peer_ip
|
# peer_ip
|
||||||
uci -q delete "network.$name.ipaddr"
|
uci -q delete "network.$prefixname.ipaddr"
|
||||||
uci -q delete "network.$name.ip6addr"
|
uci -q delete "network.$prefixname.ip6addr"
|
||||||
babel_add_peeraddr "network.$name.ipaddr"
|
babel_add_peeraddr "network.$prefixname.ipaddr"
|
||||||
babel_add_peer6addr "network.$name.ip6addr"
|
babel_add_peer6addr "network.$prefixname.ip6addr"
|
||||||
|
|
||||||
# add babel interface
|
# add babel interface
|
||||||
babel_add_interface "$name" "$iface" "$type" "$rxcost" || { echo "Could not add babeld interface for babelpeer $name"; exit 1; }
|
babel_add_interface "$prefixname" "$iface" "$type" "$rxcost" || { echo "Could not add babeld interface for babelpeer $name"; exit 1; }
|
||||||
}
|
}
|
||||||
|
|
||||||
config_load gateway
|
config_load gateway
|
||||||
|
|
Loading…
Reference in New Issue