blob: d2b5fc97ff2e1c97dd9b38e3fa6d6ee325f77287 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#!/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
}
|