diff options
Diffstat (limited to 'etc/rc.d/network_ipv6')
-rw-r--r-- | etc/rc.d/network_ipv6 | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/etc/rc.d/network_ipv6 b/etc/rc.d/network_ipv6 index a46194f..aa8d6a2 100644 --- a/etc/rc.d/network_ipv6 +++ b/etc/rc.d/network_ipv6 @@ -161,6 +161,9 @@ network6_pass1() { # setup static routes network6_static_routes_setup + # setup faith + network6_faith_setup + case ${ipv6_gateway_enable} in [Yy][Ee][Ss]) # ipv6_router @@ -389,6 +392,32 @@ network6_static_routes_setup() { esac } +network6_faith_setup() { + case ${ipv6_faith_prefix} in + [Nn][Oo] | '') + ;; + *) + sysctl -w net.inet6.ip6.keepfaith=1 + ifconfig faith0 up + for prefix in ${ipv6_faith_prefix}; do + prefixlen=`expr "${prefix}" : ".*/\(.*\)"` + case ${prefixlen} in + '') + prefixlen=96 + ;; + *) + prefix=`expr "${prefix}" : \ + "\(.*\)/${prefixlen}"` + ;; + esac + route add -inet6 ${prefix} -prefixlen ${prefixlen} ::1 + route change -inet6 ${prefix} -prefixlen ${prefixlen} \ + -ifp faith0 + done + ;; + esac +} + network6_default_interface_setup() { # Choose IPv6 default interface if it is not clearly specified. case ${ipv6_default_interface} in |