From nobody@FreeBSD.org  Mon Mar  9 17:36:16 2009
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 484861065B8B
	for <freebsd-gnats-submit@FreeBSD.org>; Mon,  9 Mar 2009 17:36:16 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 1DA9C8FC1B
	for <freebsd-gnats-submit@FreeBSD.org>; Mon,  9 Mar 2009 17:36:16 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n29HaFWN093681
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 9 Mar 2009 17:36:15 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id n29HaFYe093680;
	Mon, 9 Mar 2009 17:36:15 GMT
	(envelope-from nobody)
Message-Id: <200903091736.n29HaFYe093680@www.freebsd.org>
Date: Mon, 9 Mar 2009 17:36:15 GMT
From: Sergey Matveychuk <sem@FreeBSD.org>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [rc.d] [patch] add support setfib(1) in rc.d/routing
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         132476
>Category:       conf
>Synopsis:       [rc.d] [patch] add support setfib(1) in rc.d/routing
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    hrs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Mar 09 17:40:01 UTC 2009
>Closed-Date:    
>Last-Modified:  Mon Jan 23 04:46:57 UTC 2012
>Originator:     Sergey Matveychuk
>Release:        CURRENT
>Organization:
>Environment:
>Description:
Add support of setfib(1) in rc.d routing script. setfib works only with IPv4 so it's useless for IPv6.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

--- etc/rc.d/routing.orig	2009-03-04 12:36:15.000000000 +0300
+++ etc/rc.d/routing	2009-03-04 12:36:22.000000000 +0300
@@ -27,28 +27,44 @@
 
 routing_stop()
 {
-	route -n flush
+	_fibs_num=`sysctl -n net.fibs`
+	for i in `jot ${_fibs_num} 0`; do
+		setfib -F $i route -n flush
+	done
 }
 
 static_start()
 {
-	case ${defaultrouter} in
-	[Nn][Oo] | '')
-		;;
-	*)
-		static_routes="default ${static_routes}"
-		route_default="default ${defaultrouter}"
-		;;
-	esac
+	_fibs_num=`sysctl -n net.fibs`
+	if [ -n "${static_routes}" ]; then
+		static_routes_fib0=${static_routes}
+	fi
+	if [ -n "${defaultrouter}" ]; then
+		defaultrouter_fib0=${defaultrouter}
+	fi
 
 	# Setup static routes. This should be done before router discovery.
 	#
-	if [ -n "${static_routes}" ]; then
-		for i in ${static_routes}; do
-			eval route_args=\$route_${i}
-			route add ${route_args}
-		done
-	fi
+	for n in `jot ${_fibs_num} 0`; do
+		eval _drouter=\$defaultrouter_fib${n}
+		eval _routes=\$static_routes_fib${n}
+
+		case ${_drouter} in
+		[Nn][Oo] | '')
+			;;
+		*)
+			_routes="default ${_routes}"
+			route_default="default ${_drouter}"
+			;;
+		esac
+
+		if [ -n "${_routes}" ]; then
+			for i in ${_routes}; do
+				eval route_args=\$route_${i}
+				setfib -F $n route add ${route_args}
+			done
+		fi
+	done
 	# Now ATM static routes
 	#
 	if [ -n "${natm_static_routes}" ]; then
--- share/man/man5/rc.conf.5.orig	2009-03-04 12:41:55.000000000 +0300
+++ share/man/man5/rc.conf.5	2009-03-09 20:19:45.000000000 +0300
@@ -2187,7 +2187,14 @@
 .Dq Li NO ,
 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!).
+name server!). It's an equivalent of
+.Va defaultrouter_fib0 .
+.It Va defaultrouter_fibN
+.Pq Vt str
+If not set to
+.Dq Li NO ,
+create a default route to this host name or IP address in FIB
+number N. See the setfib(1).
 .It Va ipv6_defaultrouter
 .Pq Vt str
 The IPv6 equivalent of
@@ -2195,10 +2202,9 @@
 .It Va static_routes
 .Pq Vt str
 Set to the list of static routes that are to be added at system
-boot time.
-If not set to
-.Dq Li NO
-then for each whitespace separated
+boot time. (It's an equivalent of
+.Va static_routes_fib0 )
+If not empty then for each whitespace separated
 .Ar element
 in the value, a
 .Va route_ Ns Aq Ar element
@@ -2212,6 +2218,10 @@
 route_mcast="-net 224.0.0.0/4 -iface gif0"
 route_gif0local="-host 169.254.1.1 -iface lo0"
 .Ed
+.It Va static_routes_fibN
+.Pq Vt str
+Set to the list of static routes that are to be added in FIB
+number N. See setfib(1).
 .It Va ipv6_static_routes
 .Pq Vt str
 The IPv6 equivalent of


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-rc@FreeBSD.org 
Responsible-Changed-By: sem 
Responsible-Changed-When: Mon Mar 9 17:40:52 UTC 2009 
Responsible-Changed-Why:  
Over to maintainer 

http://www.freebsd.org/cgi/query-pr.cgi?pr=132476 
Responsible-Changed-From-To: freebsd-rc@FreeBSD.org->freebsd-rc 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Mon Mar 9 17:45:44 UTC 2009 
Responsible-Changed-Why:  
Canonicalize assignment. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=132476 

From: Angelo Turetta <aturetta@bestunion.it>
To: bug-followup@FreeBSD.org, sem@FreeBSD.org
Cc:  
Subject: Re: conf/132476: [rc.d] [patch] add support setfib(1) in rc.d/routing
Date: Thu, 06 May 2010 14:45:54 +0200

 Ping....
 
 I think this issue deserves some attention.
 
 Thanks
 Angelo.

From: Sergey Matveychuk <sem@FreeBSD.org>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: conf/132476: [rc.d] [patch] add support setfib(1) in rc.d/routing
Date: Thu, 06 May 2010 20:38:21 +0400

 This is a multi-part message in MIME format.
 --------------070600000107030003030603
 Content-Type: text/plain; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: 7bit
 
 The patch without jot(1). (A first feedback for 1 year and 2 monthes I 
 accidentally read in rc@).
 
 Unfortunately I have no a box with CURRENT now. Sorry.
 So, the patch for 7.x and 8.x.
 
 --------------070600000107030003030603
 Content-Type: text/plain;
  name="setfib-rc.patch"
 Content-Transfer-Encoding: base64
 Content-Disposition: inline;
  filename="setfib-rc.patch"
 
 LS0tIGV0Yy9yYy5kL3JvdXRpbmcub3JpZwkyMDEwLTAzLTI0IDIwOjU4OjQ4LjAwMDAwMDAw
 MCArMDMwMAorKysgZXRjL3JjLmQvcm91dGluZwkyMDEwLTA1LTA2IDIwOjI0OjAzLjAwMDAw
 MDAwMCArMDQwMApAQCAtMjcsMjggKzI3LDQ4IEBACiAKIHJvdXRpbmdfc3RvcCgpCiB7Ci0J
 cm91dGUgLW4gZmx1c2gKKwlfZmlic19udW09YHN5c2N0bCAtbiBuZXQuZmlic2AKKwlpPTAK
 Kwl3aGlsZSBbICRpIC1sdCAke19maWJzX251bX0gXSA7IGRvCisJCXNldGZpYiAtRiAkaSBy
 b3V0ZSAtbiBmbHVzaAorCQlpPSQoKGkgKyAxKSkKKwlkb25lCiB9CiAKIHN0YXRpY19zdGFy
 dCgpCiB7Ci0JY2FzZSAke2RlZmF1bHRyb3V0ZXJ9IGluCi0JW05uXVtPb10gfCAnJykKLQkJ
 OzsKLQkqKQotCQlzdGF0aWNfcm91dGVzPSJkZWZhdWx0ICR7c3RhdGljX3JvdXRlc30iCi0J
 CXJvdXRlX2RlZmF1bHQ9ImRlZmF1bHQgJHtkZWZhdWx0cm91dGVyfSIKLQkJOzsKLQllc2Fj
 CisJX2ZpYnNfbnVtPWBzeXNjdGwgLW4gbmV0LmZpYnNgCisJaWYgWyAtbiAiJHtzdGF0aWNf
 cm91dGVzfSIgXTsgdGhlbgorCQlzdGF0aWNfcm91dGVzX2ZpYjA9JHtzdGF0aWNfcm91dGVz
 fQorCWZpCisJaWYgWyAtbiAiJHtkZWZhdWx0cm91dGVyfSIgXTsgdGhlbgorCQlkZWZhdWx0
 cm91dGVyX2ZpYjA9JHtkZWZhdWx0cm91dGVyfQorCWZpCiAKIAkjIFNldHVwIHN0YXRpYyBy
 b3V0ZXMuIFRoaXMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJvdXRlciBkaXNjb3ZlcnkuCiAJ
 IwotCWlmIFsgLW4gIiR7c3RhdGljX3JvdXRlc30iIF07IHRoZW4KLQkJZm9yIGkgaW4gJHtz
 dGF0aWNfcm91dGVzfTsgZG8KLQkJCWV2YWwgcm91dGVfYXJncz1cJHJvdXRlXyR7aX0KLQkJ
 CXJvdXRlIGFkZCAke3JvdXRlX2FyZ3N9Ci0JCWRvbmUKLQlmaQorCW49MAorCXdoaWxlIFsg
 JG4gLWx0ICR7X2ZpYnNfbnVtfSBdIDsgZG8KKwkJZXZhbCBfZHJvdXRlcj1cJGRlZmF1bHRy
 b3V0ZXJfZmliJHtufQorCQlldmFsIF9yb3V0ZXM9XCRzdGF0aWNfcm91dGVzX2ZpYiR7bn0K
 KworCQljYXNlICR7X2Ryb3V0ZXJ9IGluCisJCVtObl1bT29dIHwgJycpCisJCQk7OworCQkq
 KQorCQkJX3JvdXRlcz0iZGVmYXVsdCAke19yb3V0ZXN9IgorCQkJcm91dGVfZGVmYXVsdD0i
 ZGVmYXVsdCAke19kcm91dGVyfSIKKwkJCTs7CisJCWVzYWMKKworCQlpZiBbIC1uICIke19y
 b3V0ZXN9IiBdOyB0aGVuCisJCQlmb3IgaSBpbiAke19yb3V0ZXN9OyBkbworCQkJCWV2YWwg
 cm91dGVfYXJncz1cJHJvdXRlXyR7aX0KKwkJCQlzZXRmaWIgLUYgJG4gcm91dGUgYWRkICR7
 cm91dGVfYXJnc30KKwkJCWRvbmUKKwkJZmkKKwkJbj0kKChuICsgMSkpCisJZG9uZQogCSMg
 Tm93IEFUTSBzdGF0aWMgcm91dGVzCiAJIwogCWlmIFsgLW4gIiR7bmF0bV9zdGF0aWNfcm91
 dGVzfSIgXTsgdGhlbgoKLS0tIHNoYXJlL21hbi9tYW41L3JjLmNvbmYuNS5vcmlnCTIwMDkt
 MDMtMDQgMTI6NDE6NTUuMDAwMDAwMDAwICswMzAwCisrKyBzaGFyZS9tYW4vbWFuNS9yYy5j
 b25mLjUJMjAwOS0wMy0wOSAyMDoxOTo0NS4wMDAwMDAwMDAgKzAzMDAKQEAgLTIxODcsNyAr
 MjE4NywxNCBAQAogLkRxIExpIE5PICwKIGNyZWF0ZSBhIGRlZmF1bHQgcm91dGUgdG8gdGhp
 cyBob3N0IG5hbWUgb3IgSVAgYWRkcmVzcwogKHVzZSBhbiBJUCBhZGRyZXNzIGlmIHRoaXMg
 cm91dGVyIGlzIGFsc28gcmVxdWlyZWQgdG8gZ2V0IHRvIHRoZQotbmFtZSBzZXJ2ZXIhKS4K
 K25hbWUgc2VydmVyISkuIEl0J3MgYW4gZXF1aXZhbGVudCBvZgorLlZhIGRlZmF1bHRyb3V0
 ZXJfZmliMCAuCisuSXQgVmEgZGVmYXVsdHJvdXRlcl9maWJOCisuUHEgVnQgc3RyCitJZiBu
 b3Qgc2V0IHRvCisuRHEgTGkgTk8gLAorY3JlYXRlIGEgZGVmYXVsdCByb3V0ZSB0byB0aGlz
 IGhvc3QgbmFtZSBvciBJUCBhZGRyZXNzIGluIEZJQgorbnVtYmVyIE4uIFNlZSB0aGUgc2V0
 ZmliKDEpLgogLkl0IFZhIGlwdjZfZGVmYXVsdHJvdXRlcgogLlBxIFZ0IHN0cgogVGhlIElQ
 djYgZXF1aXZhbGVudCBvZgpAQCAtMjE5NSwxMCArMjIwMiw5IEBACiAuSXQgVmEgc3RhdGlj
 X3JvdXRlcwogLlBxIFZ0IHN0cgogU2V0IHRvIHRoZSBsaXN0IG9mIHN0YXRpYyByb3V0ZXMg
 dGhhdCBhcmUgdG8gYmUgYWRkZWQgYXQgc3lzdGVtCi1ib290IHRpbWUuCi1JZiBub3Qgc2V0
 IHRvCi0uRHEgTGkgTk8KLXRoZW4gZm9yIGVhY2ggd2hpdGVzcGFjZSBzZXBhcmF0ZWQKK2Jv
 b3QgdGltZS4gKEl0J3MgYW4gZXF1aXZhbGVudCBvZgorLlZhIHN0YXRpY19yb3V0ZXNfZmli
 MCApCitJZiBub3QgZW1wdHkgdGhlbiBmb3IgZWFjaCB3aGl0ZXNwYWNlIHNlcGFyYXRlZAog
 LkFyIGVsZW1lbnQKIGluIHRoZSB2YWx1ZSwgYQogLlZhIHJvdXRlXyBOcyBBcSBBciBlbGVt
 ZW50CkBAIC0yMjEyLDYgKzIyMTgsMTAgQEAKIHJvdXRlX21jYXN0PSItbmV0IDIyNC4wLjAu
 MC80IC1pZmFjZSBnaWYwIgogcm91dGVfZ2lmMGxvY2FsPSItaG9zdCAxNjkuMjU0LjEuMSAt
 aWZhY2UgbG8wIgogLkVkCisuSXQgVmEgc3RhdGljX3JvdXRlc19maWJOCisuUHEgVnQgc3Ry
 CitTZXQgdG8gdGhlIGxpc3Qgb2Ygc3RhdGljIHJvdXRlcyB0aGF0IGFyZSB0byBiZSBhZGRl
 ZCBpbiBGSUIKK251bWJlciBOLiBTZWUgc2V0ZmliKDEpLgogLkl0IFZhIGlwdjZfc3RhdGlj
 X3JvdXRlcwogLlBxIFZ0IHN0cgogVGhlIElQdjYgZXF1aXZhbGVudCBvZgoK
 --------------070600000107030003030603--
Responsible-Changed-From-To: freebsd-rc->hrs 
Responsible-Changed-By: hrs 
Responsible-Changed-When: Mon Jan 23 04:46:28 UTC 2012 
Responsible-Changed-Why:  
I'll take this. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=132476 
>Unformatted:
