1 #!/bin/sh /etc/rc.common
4 .
/lib
/functions
/network.sh
8 [ -f /proc
/net
/ipv6_route
] && proto
="4 6"
9 [ -f /etc
/config
/olsrd
] && cfgs
="olsrd"
10 [ -f /etc
/config
/olsrd6
] && cfgs
="$cfgs olsrd6"
12 config_load freifunk-policyrouting
13 config_get
enable pr enable
14 config_get fallback
pr fallback
15 config_get zones
pr zones
20 # Remove custom routing tables from olsrd
21 if [ "`uci -q get $cfg.@olsrd[0].RtTable`" == "111" ] ||
[ "`uci -q get $cfg.@olsrd[0].RtTableDefault`" == "112" ]; then
22 uci delete
$cfg.@olsrd
[0].RtTable
23 uci delete
$cfg.@olsrd
[0].RtTableDefault
29 olsrd_intalltables
() {
31 if [ ! "`uci -q get $cfg.@olsrd[0].RtTable`" == "111" ] ||
[ ! "`uci -q get $cfg.@olsrd[0].RtTableDefault`" == "112" ]; then
32 uci
set $cfg.@olsrd
[0].RtTable
='111'
33 uci
set $cfg.@olsrd
[0].RtTableDefault
='112'
35 /etc
/init.d
/$cfg restart
2&> /dev
/null
41 tables
="/etc/iproute2/rt_tables"
42 if [ -z "`grep "110" $tables`" ]; then
43 echo "110 localnets" >> $tables
45 if [ -z "`grep "111" $tables`" ]; then
46 echo "111 olsr" >> $tables
48 if [ -z "`grep "112" $tables`" ]; then
49 echo "112 olsr-default" >> $tables
54 handle_disable_dyngw
() {
57 config_get library
"$cfg" library
60 config_get RtTable
"$cfg" RtTable
61 if [ -z "$RtTable" ] ||
[ "$RtTable" = "254" ]; then
62 config_set
"$cfg" ignore
'1'
63 uci
set $olsrd_cfg.
$cfg.ignore
="1"
65 logger
-s -t policyrouting
-p info
"dyngw_plain plugin disabled."
69 logger
-s -t policyrouting
-p info
"$cfg"
70 uci
set $olsrd_cfg.
$cfg.ignore
="1"
72 logger
-s -t policyrouting
-p info
"dyngw plugin disabled."
78 for olsrd_cfg
in $cfgs; do
79 config_load
$olsrd_cfg
80 config_foreach handle_disable_dyngw LoadPlugin
$olsrd_cfg
85 logger
-s -t policyrouting
-p info
"Restarting services"
86 /etc
/init.d
/network restart
2&> /dev
/null
88 /etc
/init.d
/$cfg restart
2&> /dev
/null
93 if [ "$enable" = "1" ]; then
94 [ -d /var
/state
] || mkdir
-p /var
/state
95 touch /var
/state
/freifunk-policyrouting
96 start noservicerestart
107 if [ -z "$name" -o -z "$lookup" -o -z "$prio" ]; then
108 logger
-s -t policyrouting
"Missing parameters for add_rule!"
111 if [ "$p" = "6" ]; then
118 set network.${name}ipv${p}="$rule"
119 set network.${name}ipv${p}.lookup="$lookup"
120 set network.${name}ipv${p}.priority="$prio"
129 uci
-q delete network.
${name}ipv
${p}
134 if [ $enable = "1" ]; then
135 logger
-s -t policyrouting
"Starting policy routing."
140 add_lookup_rule olsr olsr
1000
141 add_lookup_rule localnets localnets
2000
143 if [ "$fallback" = 1 ]; then
144 add_lookup_rule olsr-default olsr-default
100000
148 if [ ! "$1" = "noservicerestart" ]; then
154 logger
-s -t policyrouting
"Stopping policy routing"
156 del_lookup_rule olsr-default
158 del_lookup_rule localnets
161 echo "Hint: To completely disable freifunk-policyrouting set enable=0 in /etc/config/freifunk-policyrouting."
165 logger
-s -t policyrouting
"Restarting policy routing"
167 del_lookup_rule olsr-default
169 del_lookup_rule localnets