tayga: allow more flexible routing

In some scenarios (e.g. 464xlat) it is desirable to not route the mapped
prefix to tayga's interface. This adds an option 'noroutes' which, when
set to 1, will prevent such routes from being added.

Signed-off-by: Nils Schneider <nils@nilsschneider.net>
This commit is contained in:
Nils Schneider 2015-02-10 03:00:20 +01:00
parent 9fdf0326d7
commit 7d153edb7d
1 changed files with 16 additions and 12 deletions

View File

@ -14,8 +14,8 @@ proto_tayga_setup() {
local iface="$2"
local link="tayga-$cfg"
local ipv4_addr ipv6_addr prefix dynamic_pool ipaddr ip6addr
json_get_vars ipv4_addr ipv6_addr prefix dynamic_pool ipaddr ip6addr
local ipv4_addr ipv6_addr prefix dynamic_pool ipaddr ip6addr noroutes
json_get_vars ipv4_addr ipv6_addr prefix dynamic_pool ipaddr ip6addr noroutes
[ -z "$ipv4_addr" -o -z "$prefix" ] && {
proto_notify_error "$cfg" "REQUIRED_PARAMETERS_MISSING"
proto_block_restart "$cfg"
@ -49,16 +49,19 @@ proto_tayga_setup() {
[ -n "$ipaddr" ] && proto_add_ipv4_address "$ipaddr" "255.255.255.255"
[ -n "$ip6addr" ] && proto_add_ipv6_address "$ip6addr" "128"
[ -n "$ipv6_addr" ] && proto_add_ipv6_route "$ipv6_addr" "128"
[ -n "$dynamic_pool" ] && {
local pool="${dynamic_pool%%/*}"
local mask="${dynamic_pool##*/}"
proto_add_ipv4_route "$pool" "$mask"
}
[ -n "$prefix" ] && {
local prefix6="${prefix%%/*}"
local mask6="${prefix##*/}"
proto_add_ipv6_route "$prefix6" "$mask6"
[ "$noroutes" != 1 ] && {
[ -n "$ipv6_addr" ] && proto_add_ipv6_route "$ipv6_addr" "128"
[ -n "$dynamic_pool" ] && {
local pool="${dynamic_pool%%/*}"
local mask="${dynamic_pool##*/}"
proto_add_ipv4_route "$pool" "$mask"
}
[ -n "$prefix" ] && {
local prefix6="${prefix%%/*}"
local mask6="${prefix##*/}"
proto_add_ipv6_route "$prefix6" "$mask6"
}
}
proto_send_update "$cfg"
@ -85,6 +88,7 @@ proto_tayga_init_config() {
proto_config_add_string "dynamic_pool"
proto_config_add_string "ipaddr"
proto_config_add_string "ip6addr:ip6addr"
proto_config_add_boolean "noroutes"
}
[ -n "$INCLUDE_ONLY" ] || {