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:
parent
9fdf0326d7
commit
7d153edb7d
1 changed files with 16 additions and 12 deletions
|
@ -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" ] || {
|
||||
|
|
Loading…
Reference in a new issue