Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 May 2003 14:05:01 -0700
From:      "Sean Hamilton" <sh@planetquake.com>
To:        <hackers@freebsd.org>
Subject:   Re: Bridge config in /etc/rc (patch)
Message-ID:  <001501c31413$28ace720$0300000a@antalus>
References:  <000d01c31410$0e574b20$0300000a@antalus>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
I wrote:
| And here it is. This is a patch for 5.0-RELEASE, not a diff from my
| previous one.

Probably helps if I remember to include the patch.

sh


[-- Attachment #2 --]
diff -Nru etcorig/rc.d/bridge etc/rc.d/bridge
--- etcorig/rc.d/bridge	Wed Dec 31 16:00:00 1969
+++ etc/rc.d/bridge	Tue May  6 13:25:47 2003
@@ -0,0 +1,83 @@
+#!/bin/sh -x
+
+# PROVIDE: bridge
+# REQUIRE: ipfw ip6fw ipfilter
+# KEYWORD: FreeBSD
+
+. /etc/rc.subr
+
+name="bridge"
+start_cmd="bridge_start"
+stop_cmd="bridge_stop"
+
+bridge_start()
+{
+	case ${bridge_enable} in
+	[Yy][Ee][Ss])
+
+		bridge_in_kernel=1
+
+		if ! sysctl net.link.ether.bridge >/dev/null 2>&1; then
+			if kldload bridge; then
+				echo 'Bridge module loaded'
+			else
+				echo 'Warning: Bridge module failed to load.'
+				bridge_in_kernel=0
+			fi
+		fi
+
+		if [ "${bridge_in_kernel}" -eq 1 ]; then
+
+			bridgenum=1
+			bridgecfg=
+
+			if [ -n "${bridges}" ]; then
+				for bridge in ${bridges}; do
+					eval bridge_args=\$bridge_${bridge}
+					bridge_args=`echo -n "${bridge_args}" | sed 's/,/ /'`
+					for iface in ${bridge_args}; do
+						if [ -n "${bridgecfg}" ]; then
+							bridgecfg=${bridgecfg},
+						fi
+						bridgecfg=${bridgecfg}${iface}:$(($bridgenum))
+					done
+					bridgenum=$(($bridgenum + 1))
+				done
+			fi
+
+			echo $bridgecfg
+
+			case ${bridge_ipfw} in
+			[Yy][Ee][Ss])
+				sysctl net.link.ether.bridge_ipfw=1 >/dev/null
+				;;
+			esac
+
+			case ${bridge_ipfilter} in
+			[Yy][Ee][Ss])
+				sysctl net.link.ether.bridge_ipf=1 >/dev/null
+				;;
+			esac
+
+			sysctl net.link.ether.bridge_cfg="${bridgecfg}" >/dev/null
+			sysctl net.link.ether.bridge=1 >/dev/null
+		fi
+		;;
+	esac
+}
+
+bridge_stop()
+{
+	sysctl net.link.ether.bridge=0 >/dev/null
+	sysctl net.link.ether.bridge_cfg= >/dev/null
+	sysctl net.link.ether.bridge_ipfw=0 >/dev/null
+	sysctl net.link.ether.bridge_ipf=0 >/dev/null
+
+	if kldstat -n bridge >/dev/null 2>&1; then
+		kldunload bridge
+	fi
+}
+
+load_rc_config $name
+run_rc_command "$1"
+
diff -Nru etcorig/rc.d/network2 etc/rc.d/network2
--- etcorig/rc.d/network2	Mon May  5 22:05:19 2003
+++ etc/rc.d/network2	Mon May  5 22:05:42 2003
@@ -115,6 +115,13 @@
 		;;
 	esac
 
+	case ${ip_any_interface} in
+	[Yy][Ee][Ss])
+		echo -n ' any interface=YES'
+		sysctl net.inet.ip.check_interface=0 >/dev/null
+		;;
+	esac
+
 	case ${ip_portrange_first} in
 	[Nn][Oo] | '')
 		;;
diff -Nru etcorig/rc.network etc/rc.network
--- etcorig/rc.network	Mon May  5 21:58:12 2003
+++ etc/rc.network	Tue May  6 13:32:44 2003
@@ -393,6 +393,64 @@
 		;;
 	esac
 
+	# Bridge
+	#
+	case ${bridge_enable} in
+	[Yy][Ee][Ss])
+
+		bridge_in_kernel=1
+		if ! sysctl net.link.ether.bridge >/dev/null 2>&1; then
+			if kldload bridge; then
+				echo 'Bridge module loaded'
+			else
+				echo 'Warning: Bridge module failed to load.'
+				bridge_in_kernel=0
+			fi
+		fi
+
+		if [ "${bridge_in_kernel}" -eq 1 ]; then
+
+			bridgenum=1
+			bridgecfg=
+
+			if [ -n "${bridges}" ]; then
+				for bridge in ${bridges}; do
+					eval bridge_args=\$bridge_${bridge}
+					bridge_args=`echo -n "${bridge_args}" | sed 's/,/ /'`
+					for iface in ${bridge_args}; do
+						if [ -n "${bridgecfg}" ]; then
+							bridgecfg=${bridgecfg},
+						fi
+						bridgecfg=${bridgecfg}${iface}:$(($bridgenum))
+					done
+					bridgenum=$(($bridgenum + 1))
+				done
+			fi
+
+			case ${bridge_ipfw} in
+			[Yy][Ee][Ss])
+				sysctl net.link.ether.bridge_ipfw=1 >/dev/null
+				;;
+			esac
+
+			case ${bridge_ipfilter} in
+			[Yy][Ee][Ss])
+				sysctl net.link.ether.bridge_ipf=1 >/dev/null
+				;;
+			esac
+
+			sysctl net.link.ether.bridge_cfg="${bridgecfg}" >/dev/null
+			sysctl net.link.ether.bridge=1 >/dev/null
+		fi
+		;;
+	esac
+
+	case ${ip_any_interface} in
+	[Yy][Ee][Ss])
+		sysctl net.inet.ip.check_interface=0 >/dev/null
+		;;
+	esac
+
 	# Additional ATM interface configuration
 	#
 	if [ -n "${atm_pass1_done}" ]; then
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001501c31413$28ace720$0300000a>