Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Nov 2012 21:44:02 +0000 (UTC)
From:      Hiroki Sato <hrs@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r243188 - head/etc/rc.d
Message-ID:  <201211172144.qAHLi2VS089163@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hrs
Date: Sat Nov 17 21:44:02 2012
New Revision: 243188
URL: http://svnweb.freebsd.org/changeset/base/243188

Log:
  Use -fib N modifier to add/delete a route to/from multiple FIBs.

Modified:
  head/etc/rc.d/routing

Modified: head/etc/rc.d/routing
==============================================================================
--- head/etc/rc.d/routing	Sat Nov 17 20:19:00 2012	(r243187)
+++ head/etc/rc.d/routing	Sat Nov 17 21:44:02 2012	(r243188)
@@ -139,29 +139,20 @@ static_inet()
 
 static_inet6()
 {
-	local _action i fibs
+	local _action fibmod fibs
 	_action=$1
 
 	# get the number of FIBs supported.
-	fibs=`sysctl -n net.fibs`
-	: ${fibs:=1}
+	fibs=$((`${SYSCTL_N} net.fibs` - 1))
+	if [ -n "$fibs" ]; then
+		fibmod="-fib 0-$fibs"
+	else
+		fibmod=
+	fi
 
 	# disallow "internal" addresses to appear on the wire
-	route ${_action} -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
-	route ${_action} -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject
-	i=1
-	if test ${i} -lt ${fibs}; then
-		printf "Also installing reject routes for FIBs"
-		while test ${i} -lt ${fibs}; do
-			setfib -F ${i} route -q ${_action} \
-			    -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
-			setfib -F ${i} route -q ${_action} \
-			    -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject
-			printf " %d" ${i}
-			i=$((i + 1))
-		done
-		printf "\n"
-	fi
+	route ${_action} -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject ${fibmod}
+	route ${_action} -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject ${fibmod}
 
 	case ${ipv6_defaultrouter} in
 	[Nn][Oo] | '')
@@ -233,21 +224,8 @@ static_inet6()
 	# for the host case, you will allow to omit the identifiers.
 	# Under this configuration, the packets will go to the default
 	# interface.
-	route ${_action} -inet6 fe80:: -prefixlen 10 ::1 -reject
-	route ${_action} -inet6 ff02:: -prefixlen 16 ::1 -reject
-	i=1
-	if test ${i} -lt ${fibs}; then
-		printf "Also installing reject routes for FIBs"
-		while test ${i} -lt ${fibs}; do
-			setfib -F ${i} route -q ${_action} \
-			    -inet6 fe80:: -prefixlen 10 ::1 -reject
-			setfib -F ${i} route -q ${_action} \
-			    -inet6 ff02:: -prefixlen 16 ::1 -reject
-			printf " %d" ${i}
-			i=$((i + 1))
-		done
-		printf "\n"
-	fi
+	route ${_action} -inet6 fe80:: -prefixlen 10 ::1 -reject ${fibmod}
+	route ${_action} -inet6 ff02:: -prefixlen 16 ::1 -reject ${fibmod}
 
 	case ${ipv6_default_interface} in
 	'')



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211172144.qAHLi2VS089163>