1 #!/bin/sh /etc/rc.common
4 . /lib/functions/network.sh
8 [ -f /proc/net/ipv6_route ] && proto="4 6"
10 config_load freifunk-policyrouting
11 config_get enable pr enable
12 config_get fallback pr fallback
13 config_get zones pr zones
16 # Remove custom routing tables from olsrd
17 if [ "`uci -q get olsrd.@olsrd[0].RtTable`" == "111" ] || [ "`uci -q get olsrd.@olsrd[0].RtTableDefault`" == "112" ]; then
18 uci delete olsrd.@olsrd[0].RtTable
19 uci delete olsrd.@olsrd[0].RtTableDefault
24 olsrd_intalltables() {
25 if [ ! "`uci -q get olsrd.@olsrd[0].RtTable`" == "111" ] || [ ! "`uci -q get olsrd.@olsrd[0].RtTableDefault`" == "112" ]; then
26 uci set olsrd.@olsrd[0].RtTable='111'
27 uci set olsrd.@olsrd[0].RtTableDefault='112'
29 /etc/init.d/olsrd restart 2&> /dev/null
34 tables="/etc/iproute2/rt_tables"
35 if [ -z "`grep "110" $tables`" ]; then
36 echo "110 localnets" >> $tables
38 if [ -z "`grep "111" $tables`" ]; then
39 echo "111 olsr" >> $tables
41 if [ -z "`grep "112" $tables`" ]; then
42 echo "112 olsr-default" >> $tables
48 dyngwlib=`uci show olsrd |grep dyn_gw.so |awk {' FS="."; print $1"."$2 '}`
49 if [ -n "$dyngwlib" ]; then
50 uci set $dyngwlib.ignore=1
54 dyngwplainlib=`uci show olsrd |grep dyn_gw_plain |awk {' FS="."; print $1"."$2 '}`
55 if [ -n "$dyngwplainlib" ]; then
56 rttable="$(uci -q get $dyngwplainlib.RtTable)"
57 if [ -z "$rttable" ] || [ "$rttable" = "254" ]; then
58 uci set $dyngwplainlib.ignore=1
65 logger -s -t policyrouting -p info "Restarting services"
66 /etc/init.d/network restart 2&> /dev/null
67 /etc/init.d/olsrd restart 2&> /dev/null
71 if [ "$enable" = "1" ]; then
72 [ -d /var/state ] || mkdir -p /var/state
73 touch /var/state/freifunk-policyrouting
74 start noservicerestart
85 if [ -z "$name" -o -z "$lookup" -o -z "$prio" ]; then
86 logger -s -t policyrouting "Missing parameters for add_rule!"
89 if [ "$p" = "6" ]; then
96 set network.${name}ipv${p}="$rule"
97 set network.${name}ipv${p}.lookup="$lookup"
98 set network.${name}ipv${p}.priority="$prio"
107 uci -q delete network.${name}ipv${p}
112 if [ $enable = "1" ]; then
113 logger -s -t policyrouting "Starting policy routing."
118 add_lookup_rule olsr olsr 1000
119 add_lookup_rule localnets localnets 2000
121 if [ "$fallback" = 1 ]; then
122 add_lookup_rule olsr-default olsr-default 100000
126 if [ ! "$1" = "noservicerestart" ]; then
132 logger -s -t policyrouting "Stopping policy routing"
134 del_lookup_rule olsr-default
136 del_lookup_rule localnets
139 echo "Hint: To completely disable freifunk-policyrouting set enable=0 in /etc/config/freifunk-policyrouting."
143 logger -s -t policyrouting "Restarting policy routing"
145 del_lookup_rule olsr-default
147 del_lookup_rule localnets