contrib/freifunk-policyrouting: Use a new table 'localnets' for locally attached networks and populate it
This commit is contained in:
parent
7f3b0af6d9
commit
8e9cdbea14
3 changed files with 22 additions and 14 deletions
|
@ -4,7 +4,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=freifunk-policyrouting
|
PKG_NAME:=freifunk-policyrouting
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ config_get enable pr enable
|
||||||
config_get fallback pr fallback
|
config_get fallback pr fallback
|
||||||
config_get zones pr zones
|
config_get zones pr zones
|
||||||
|
|
||||||
|
|
||||||
if [ "$ACTION" = "ifup" ] && [ "$enable" = "1" ]; then
|
if [ "$ACTION" = "ifup" ] && [ "$enable" = "1" ]; then
|
||||||
network_get_subnet net $INTERFACE
|
network_get_subnet net $INTERFACE
|
||||||
network_get_subnet6 net6 $INTERFACE
|
network_get_subnet6 net6 $INTERFACE
|
||||||
|
@ -18,27 +19,26 @@ if [ "$ACTION" = "ifup" ] && [ "$enable" = "1" ]; then
|
||||||
|
|
||||||
if [ "$net" != "" -a -n "$dev" ]; then
|
if [ "$net" != "" -a -n "$dev" ]; then
|
||||||
eval $(/bin/ipcalc.sh $net)
|
eval $(/bin/ipcalc.sh $net)
|
||||||
if [ "$PREFIX" != "0" ]; then
|
if [ "$PREFIX" != "0" -a "$NETWORK" != "127.0.0.0" ]; then
|
||||||
if [ ! "$(ip r s t olsr-default |grep "throw $NETWORK/$PREFIX")" ]; then
|
if [ ! "$(ip r s t localnets |grep "$NETWORK/$PREFIX dev")" ]; then
|
||||||
ip r a throw $NETWORK/$PREFIX table olsr-default
|
cmd="ip r a $NETWORK/$PREFIX dev $dev table localnets"
|
||||||
|
$cmd
|
||||||
if [ "$?" = 0 ]; then
|
if [ "$?" = 0 ]; then
|
||||||
logger -s -t policyrouting "Add route: throw $NETWORK/$PREFIX table olsr-default"
|
logger -s -t policyrouting "Add route: $cmd"
|
||||||
else
|
else
|
||||||
logger -s -t policyrouting "Error! Could not add route: throw $NETWORK/$PREFIX table olsr-default"
|
logger -s -t policyrouting "Error! Could not add route: $cmd"
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "$net6" ]; then
|
if [ -n "$net6" ]; then
|
||||||
if [ ! "$(ip -6 r s t olsr-default |grep "throw $net6")" ]; then
|
cmd="ip -6 r a $net6 dev $dev table localnets"
|
||||||
rule="throw $net6 table olsr-default dev $dev"
|
$cmd 2>&1 > /dev/null
|
||||||
ip -6 r a $rule
|
|
||||||
if [ "$?" = 0 ]; then
|
if [ "$?" = 0 ]; then
|
||||||
logger -s -t policyrouting "Add route: $rule (IPv6)"
|
logger -s -t policyrouting "Add route: $cmd (IPv6)"
|
||||||
else
|
|
||||||
logger -s -t policyrouting "Error! Could not add route: $rule (IPv6)"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
networks=""
|
networks=""
|
||||||
|
@ -68,6 +68,7 @@ if [ "$ACTION" = "ifup" ] && [ "$enable" = "1" ]; then
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ACTION" = "ifdown" ]; then
|
if [ "$ACTION" = "ifdown" ]; then
|
||||||
|
|
|
@ -33,12 +33,16 @@ olsrd_intalltables() {
|
||||||
|
|
||||||
rt_tables() {
|
rt_tables() {
|
||||||
tables="/etc/iproute2/rt_tables"
|
tables="/etc/iproute2/rt_tables"
|
||||||
|
if [ -z "`grep "110" $tables`" ]; then
|
||||||
|
echo "110 localnets" >> $tables
|
||||||
|
fi
|
||||||
if [ -z "`grep "111" $tables`" ]; then
|
if [ -z "`grep "111" $tables`" ]; then
|
||||||
echo "111 olsr" >> $tables
|
echo "111 olsr" >> $tables
|
||||||
fi
|
fi
|
||||||
if [ -z "`grep "112" $tables`" ]; then
|
if [ -z "`grep "112" $tables`" ]; then
|
||||||
echo "112 olsr-default" >> $tables
|
echo "112 olsr-default" >> $tables
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_dyngw() {
|
disable_dyngw() {
|
||||||
|
@ -80,6 +84,9 @@ start() {
|
||||||
for p in $proto; do
|
for p in $proto; do
|
||||||
if [ ! "$(ip -$p ru s | grep "1000: from all lookup olsr")" ]; then
|
if [ ! "$(ip -$p ru s | grep "1000: from all lookup olsr")" ]; then
|
||||||
ip -$p rule add lookup olsr prio 1000
|
ip -$p rule add lookup olsr prio 1000
|
||||||
|
# add table for routes to local networks
|
||||||
|
ip -$p rule add lookup localnets prio 2000
|
||||||
|
|
||||||
if [ "$?" = "0" ]; then
|
if [ "$?" = "0" ]; then
|
||||||
logger -s -t policyrouting "Added rule: lookup olsr prio 1000 (IPv$p)"
|
logger -s -t policyrouting "Added rule: lookup olsr prio 1000 (IPv$p)"
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue