mirror of
https://github.com/openwrt/routing.git
synced 2025-02-23 03:26:18 +00:00
Generate config file from uci and set as start config on start of pimbd. Signed-off-by: Christian Strebe <uipo@freenet.de>
151 lines
2.7 KiB
Bash
151 lines
2.7 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=90
|
|
STOP=10
|
|
USE_PROCD=1
|
|
|
|
TYPE=''
|
|
|
|
DEV=''
|
|
PIM='off'
|
|
SSBIDIR='off'
|
|
MLD='off'
|
|
IGMP='off'
|
|
|
|
RPAADDRESS=''
|
|
RPALIST=''
|
|
|
|
reset_link_values() {
|
|
PIM='off'
|
|
SSBIDIR='off'
|
|
MLD='off'
|
|
IGMP='off'
|
|
}
|
|
|
|
apply_link() {
|
|
if test ! -z "$DEV"; then
|
|
echo "Setting pimbc link set $DEV pim $PIM ssbidir $SSBIDIR mld $MLD igmp $IGMP"
|
|
echo "link set $DEV pim $PIM ssbidir $SSBIDIR mld $MLD igmp $IGMP" >> /tmp/pimbd.conf
|
|
fi
|
|
reset_link_values
|
|
}
|
|
|
|
apply_rpa() {
|
|
if test -z "$RPAADDRESS"; then
|
|
echo "No RPA address is set!"
|
|
return
|
|
fi
|
|
for i in $RPALIST; do
|
|
echo "adding pimbc rpa add $RPAADDRESS $i"
|
|
echo "rpa add $RPAADDRESS $i" >> /tmp/pimbd.conf
|
|
done
|
|
RPAADDRESS=''
|
|
RPALIST=''
|
|
}
|
|
|
|
store_interface_option() {
|
|
local name="$1"
|
|
local value="$2"
|
|
case $name in
|
|
dev)
|
|
DEV=$value
|
|
;;
|
|
pim)
|
|
PIM=$value
|
|
;;
|
|
ssbidir)
|
|
SSBIDIR=$value
|
|
;;
|
|
mld)
|
|
MLD=$value
|
|
;;
|
|
igmp)
|
|
IGMP=$value
|
|
;;
|
|
esac
|
|
}
|
|
|
|
store_rpa_option() {
|
|
local name="$1"
|
|
local value="$2"
|
|
echo "store_rpa_option $name $value"
|
|
case $name in
|
|
address)
|
|
RPAADDRESS="$value"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
store_rpa_list() {
|
|
local name="$1"
|
|
local value="$2"
|
|
echo "store rpa_list $name $value"
|
|
case $name in
|
|
prefix)
|
|
RPALIST="${RPALIST} $value"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
start_service() {
|
|
. /lib/functions.sh
|
|
. /lib/functions/network.sh
|
|
|
|
rm -f /tmp/pimbd.conf
|
|
|
|
config_cb() {
|
|
local name="$1"
|
|
local value="$2"
|
|
# commands to be run for every option
|
|
echo "config_cb $name $value"
|
|
case $TYPE in
|
|
interface)
|
|
apply_link
|
|
;;
|
|
rpa)
|
|
apply_rpa
|
|
;;
|
|
esac
|
|
TYPE=$name
|
|
DEV=$value
|
|
}
|
|
|
|
option_cb() {
|
|
local name="$1"
|
|
local value="$2"
|
|
# commands to be run for every option
|
|
echo "option_cb $name $value"
|
|
case $TYPE in
|
|
interface)
|
|
store_interface_option "$name" "$value"
|
|
;;
|
|
rpa)
|
|
store_rpa_option "$name" "$value"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
list_cb() {
|
|
local name="$1"
|
|
local value="$2"
|
|
# commands to be run for every list item
|
|
echo "list_cb $name $value"
|
|
|
|
case $TYPE in
|
|
rpa)
|
|
store_rpa_list "$name" "$value"
|
|
;;
|
|
esac
|
|
}
|
|
config_load pimb
|
|
|
|
procd_open_instance
|
|
procd_set_param command /usr/sbin/pimbd
|
|
procd_append_param command -S
|
|
procd_append_param command -L 6
|
|
procd_append_param command -c /tmp/pimbd.conf
|
|
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|