2021-02-14 23:49:58 +01:00
|
|
|
# SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
|
2022-01-05 13:45:58 +01:00
|
|
|
babel_get_version() {
|
|
|
|
/usr/sbin/bird --version 2>&1 | sed "s/BIRD version /bird-/"
|
|
|
|
}
|
|
|
|
|
2021-02-14 23:49:58 +01:00
|
|
|
babel_add_interface() {
|
|
|
|
[ "$#" -ne "4" ] && return 1
|
|
|
|
|
|
|
|
local name="$1"
|
|
|
|
local interface="$2"
|
|
|
|
local type="$3"
|
|
|
|
local rxcost="$4"
|
|
|
|
|
|
|
|
mkdir -p /tmp/bird/fff/babelpeers
|
|
|
|
echo "interface \"$interface\" { type $type; rxcost $rxcost; };" > /tmp/bird/fff/babelpeers/$name.conf
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
babel_delete_interface() {
|
|
|
|
[ "$#" -ne "1" ] && return 1
|
|
|
|
|
|
|
|
local name="$1"
|
|
|
|
|
|
|
|
# Removing peers from /etc is not necessary, as all peers are generated into /tmp on every configuration run,
|
|
|
|
# which completely overwrites existing peers in /etc in the apply step.
|
|
|
|
rm -f /tmp/bird/fff/babelpeers/$name.conf
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
babel_add_redistribute_filter() {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
babel_add_private_prefix_filter() {
|
|
|
|
[ "$#" -ne "1" ] && return 1
|
|
|
|
|
|
|
|
local prefix="$1"
|
|
|
|
prefix=$(owipcalc "$prefix" network prefix "$prefix")
|
|
|
|
|
|
|
|
mkdir -p /tmp/bird/fff
|
|
|
|
echo "if net ~ $prefix then reject;" > /tmp/bird/fff/nat-filter.conf
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
babel_remove_custom_redistribute_filters() {
|
|
|
|
mkdir -p /tmp/bird/fff
|
|
|
|
> /tmp/bird/fff/nat-filter.conf
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2022-01-05 13:45:58 +01:00
|
|
|
babel_apply_implementation() {
|
2021-02-14 23:49:58 +01:00
|
|
|
# error output hidden because apply might be executed without a preceding configure step.
|
|
|
|
if [ -d /tmp/bird/fff ]; then
|
|
|
|
rm -rf /etc/bird/fff
|
|
|
|
mv /tmp/bird/fff /etc/bird/fff
|
|
|
|
fi
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2022-01-05 13:45:58 +01:00
|
|
|
babel_reload_implementation() {
|
2021-02-14 23:49:58 +01:00
|
|
|
/etc/init.d/fff-bird reload
|
|
|
|
}
|
|
|
|
|
|
|
|
babel_revert() {
|
2023-02-21 23:46:42 +01:00
|
|
|
rm -rf /tmp/bird/fff
|
2021-02-14 23:49:58 +01:00
|
|
|
}
|