tayga: allow more flexible routing 887/head
authorNils Schneider <nils@nilsschneider.net>
Tue, 10 Feb 2015 02:00:20 +0000 (03:00 +0100)
committerNils Schneider <nils@nilsschneider.net>
Tue, 10 Feb 2015 02:34:10 +0000 (03:34 +0100)
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>
ipv6/tayga/files/tayga-proto.sh

index 6bec0b60d305629ea469fd6c043ff28fc2560028..b92c2a6617bf8519096c093d86561b58dc330e3b 100755 (executable)
@@ -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" ] || {