Index: libexec/rc/rc.conf =================================================================== --- libexec/rc/rc.conf +++ libexec/rc/rc.conf @@ -427,6 +427,7 @@ ### Network routing options: ### defaultrouter="NO" # Set to default gateway (or NO). +#defaultrouter_fibN="..." # Use this form to set a gateway for FIB N static_arp_pairs="" # Set to static ARP list (or leave empty). static_ndp_pairs="" # Set to static NDP list (or leave empty). static_routes="" # Set to static route list (or leave empty). @@ -489,6 +490,7 @@ # reason. ipv6_defaultrouter="NO" # Set to IPv6 default gateway (or NO). #ipv6_defaultrouter="2002:c058:6301::" # Use this for 6to4 (RFC 3068) +#ipv6_defaultrouter_fibN="..." # Use this form to set a gateway for FIB N ipv6_static_routes="" # Set to static route list (or leave empty). #ipv6_static_routes="xxx" # An example to set fec0:0000:0000:0006::/64 # route toward loopback interface. Index: libexec/rc/rc.d/routing =================================================================== --- libexec/rc/rc.d/routing +++ libexec/rc/rc.d/routing @@ -140,11 +140,12 @@ static_inet() { - local _action _if _skip _fibmod + local _action _if _skip _fibmod _fibs _action=$1 _if=$2 _fibmod=`get_fibmod` + _fibs=$((`${SYSCTL_N} net.fibs` - 1)) # Provide loopback route in all routing tables. This has to come # first so that any following routes can be added. @@ -161,6 +162,22 @@ ;; esac + # Add default routes for fibs + if [ ${_fibs} -gt 0 ]; then + for _fibnum in `jot ${_fibs}` ; do + eval _fib_gw=\${defaultrouter_fib${_fibnum}} + case ${_fib_gw} in + [Nn][Oo] | '') + ;; + *) + static_routes="${static_routes} _default_fib${_fibnum}" + eval route__default_fib${fibnum}="'default ${_fib_gw} -fib ${_fibnum}'" + ;; + esac + done + fi + + # Install configured routes. if [ -n "${static_routes}" ]; then for i in ${static_routes}; do @@ -185,11 +202,12 @@ static_inet6() { - local _action _if _skip fibmod allfibs + local _action _if _skip fibmod _fibs _action=$1 _if=$2 fibmod=`get_fibmod` + _fibs=$((`${SYSCTL_N} net.fibs` - 1)) # Add pre-defined static routes first. ipv6_static_routes="_v4mapped _v4compat ${ipv6_static_routes}" @@ -220,6 +238,22 @@ ipv6_route__default="default ${ipv6_defaultrouter}" ;; esac + + # Add default routes for fibs + if [ ${_fibs} -gt 0 ]; then + for _fibnum in `jot ${_fibs}` ; do + eval _fib_gw=\${ipv6_defaultrouter_fib${_fibnum}} + case ${_fib_gw} in + [Nn][Oo] | '') + ;; + *) + ipv6_static_routes="${static_routes} _default_fib${_fibnum}" + eval ipv6_route__default_fib${fibnum}="'default ${_fib_gw} -fib ${_fibnum}'" + ;; + esac + done + fi + # Install configured routes. if [ -n "${ipv6_static_routes}" ]; then Index: share/man/man5/rc.conf.5 =================================================================== --- share/man/man5/rc.conf.5 +++ share/man/man5/rc.conf.5 @@ -2806,10 +2806,19 @@ create a default route to this host name or IP address (use an IP address if this router is also required to get to the name server!). +.It Va defaultrouter_fibN +.Pq Vt str +If not set to +.Dq Li NO , +create a default route in FIB N to this host .It Va ipv6_defaultrouter .Pq Vt str The IPv6 equivalent of .Va defaultrouter . +.It Va ipv6_defaultrouter_fibN +.Pq Vt str +The IPv6 equivalent of +.Va defaultrouter_fibN . .It Va static_arp_pairs .Pq Vt str Set to the list of static ARP pairs that are to be added at system