conf/104884: Add support EtherChannel configuration to rc.conf

Norikatsu Shigemura nork at FreeBSD.org
Sun Jan 28 15:29:54 UTC 2007


On Sat, 28 Oct 2006 16:10:18 GMT
FreeBSD-gnats-submit at FreeBSD.org wrote:
> Thank you very much for your problem report.
> It has the internal identification `conf/104884'.
> The individual assigned to look at your
> report is: freebsd-bugs. 
> You can access the state of your problem report at any time
> via this link:
> http://www.freebsd.org/cgi/query-pr.cgi?pr=104884
> >Category:       conf
> >Responsible:    freebsd-bugs
> >Synopsis:       Add support EtherChannel configuration to rc.conf
> >Arrival-Date:   Sat Oct 28 16:10:18 GMT 2006

	I chased HEAD.  Please see following patch.
	Anyone, please handle this PR?
	And I'll make a patch for 6-stable.

Index: network.subr
===================================================================
RCS file: /home/ncvs/src/etc/network.subr,v
retrieving revision 1.176
diff -u -r1.176 network.subr
--- network.subr	29 Oct 2006 13:29:49 -0000	1.176
+++ network.subr	28 Jan 2007 14:52:36 -0000
@@ -907,3 +907,78 @@
 		esac
 	done
 }
+
+ng_mkpeer() {
+	ngctl -f - 2> /dev/null <<EOF
+mkpeer $*
+msg dummy nodeinfo
+EOF
+}
+
+ng_create_one() {
+	ng_mkpeer $* | while read line; do
+		t=`expr "${line}" : '.* name="\([a-z]*[0-9]*\)" .*'`
+		if [ -n "${t}" ]; then
+			echo ${t}
+			return
+		fi
+	done
+}
+
+ng_fec_create() {
+	local req_iface iface bogus
+	req_iface="$1"
+
+	if [ -z "${req_iface}" ]; then
+		iface=`ng_create_one fec dummy fec`
+		if [ -z "${iface}" ]; then
+			exit 2
+		fi
+		echo ${iface}
+		return
+	fi
+
+	ngctl shutdown ${req_iface}: > /dev/null 2>&1
+
+	bogus=""
+	while true; do
+		iface=`ng_create_one fec dummy fec`
+		if [ -z "${iface}" ]; then
+			exit 2
+		fi
+		if [ "${iface}" = "${req_iface}" ]; then
+			echo ${iface}
+			break
+		fi
+		bogus="${bogus} ${iface}"
+	done
+
+	for iface in ${bogus}; do
+		ngctl shutdown ${iface}:
+	done
+}
+
+# fec_up ifn
+# Configure Fast EtherChannel for interface $ifn. Returns 0 if FEC
+# arguments were found and configured; returns 1 otherwise.
+fec_up() {
+	case ${fec_interfaces} in
+	[Nn][Oo] | '')
+		;;
+	*)
+		for i in ${fec_interfaces}; do
+			ng_fec_create $i
+			for j in `get_if_var $i fecconfig_IF`; do
+				case ${j} in
+				'')
+					continue
+					;;
+				*)
+					ngctl msg ${i}: add_iface "\"${j}\""
+					;;
+				esac
+			done
+		done
+		;;
+	esac
+}
Index: defaults/rc.conf
===================================================================
RCS file: /home/ncvs/src/etc/defaults/rc.conf,v
retrieving revision 1.303
diff -u -r1.303 rc.conf
--- defaults/rc.conf	20 Jan 2007 04:24:19 -0000	1.303
+++ defaults/rc.conf	28 Jan 2007 14:52:36 -0000
@@ -183,6 +183,10 @@
 				# Choose correct tunnel addrs.
 #gifconfig_gif0="10.1.1.1 10.1.2.1"	# Examples typically for a router.
 #gifconfig_gif1="10.1.1.2 10.1.2.2"	# Examples typically for a router.
+fec_interfaces="NO"		# List of Fast EtherChannels (or "NO")
+#fec_interfaces="fec0 fec1"
+#fecconfig_fec0="fxp0 dc0"	# Examples typically for two NICs
+#fecconfig_fec1="em0 em1 bge0 bge1"	# Examples typically for four NICs
 
 # User ppp configuration.
 ppp_enable="NO"		# Start user-ppp (or NO).
Index: rc.d/netif
===================================================================
RCS file: /home/ncvs/src/etc/rc.d/netif,v
retrieving revision 1.21
diff -u -r1.21 netif
--- rc.d/netif	30 Dec 2006 22:53:20 -0000	1.21
+++ rc.d/netif	28 Jan 2007 14:52:36 -0000
@@ -57,6 +57,9 @@
 		# Create cloned interfaces
 		clone_up
 
+		# Create Fast EtherChannel interfaces
+		fec_up
+
 		# Create IPv6<-->IPv4 tunnels
 		gif_up


More information about the freebsd-bugs mailing list