Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Aug 2009 22:42:38 -0700
From:      Doug Barton <dougb@FreeBSD.org>
To:        freebsd-rc@freebsd.org
Cc:        sam@freebsd.org
Subject:   virtualize rtsol test for wireless interfaces in network.subr
Message-ID:  <4A88EDCE.3030306@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
I recently added a test in network.subr (for 8.x only) to make sure
that we are not trying IPv6 rtsol on the underlying wireless
interfaces. Sam subsequently asked me to make that test virtual rather
then listing specific interfaces, which I agreed was definitely the
better approach.

The attached patch moves is_wired_interface() into network.subr,
simplifies it a bit, and uses that method in the rtsol test as well.
Please let me know what you think.

I'd like to get this into 8.0-RELEASE, but I don't regard it as crucial.


Doug

-- 

    This .signature sanitized for your protection


[-- Attachment #2 --]
Index: network.subr
===================================================================
--- network.subr	(revision 196279)
+++ network.subr	(working copy)
@@ -816,6 +816,18 @@
 	echo ${str}
 }
 
+is_wired_interface()
+{
+	local media
+
+	case `ifconfig $1 2>/dev/null` in
+	*media:?Ethernet*) media=Ethernet ;;
+	esac
+
+	test "$media" = "Ethernet"
+}
+
+
 # Setup the interfaces for IPv6
 network6_interface_setup()
 {
@@ -858,14 +870,19 @@
 			ifconfig $i inet6 ${ipv6_ifconfig} alias
 		fi
 
+		# Wireless NIC cards are virtualized through the wlan interface
+		if ! is_wired_interface ${i}; then
+			case "${i}" in
+			wlan*)	rtsol_available=yes ;;
+			*)	rtsol_available=no ;;
+			esac
+		fi
+
 		if [ ${rtsol_available} = yes -a ${rtsol_interface} = yes ]
 		then
 			case ${i} in
 			lo0|gif[0-9]*|stf[0-9]*|faith[0-9]*|lp[0-9]*|sl[0-9]*|tun[0-9]*|pflog[0-9]*|pfsync[0-9]*)
 				;;
-			# Wireless NIC cards are virtualized through the wlan interface
-			an[0-9]*|ath[0-9]*|ipw[0-9]*|iwi[0-9]*|iwn[0-9]*|ral[0-9]*|wi[0-9]*|wl[0-9]*|wpi[0-9]*)
-				;;
 			*)
 				rtsol_interfaces="${rtsol_interfaces} ${i}"
 				;;
Index: rc.d/wpa_supplicant
===================================================================
--- rc.d/wpa_supplicant	(revision 196279)
+++ rc.d/wpa_supplicant	(working copy)
@@ -18,18 +18,6 @@
 	return 1
 fi
 
-is_wired_interface()
-{
-	media=`ifconfig $1 2>/dev/null | while read line; do
-		case "$line" in
-		*media:?Ethernet*)
-			echo Ethernet
-			;;
-		esac
-	done`
-	test "$media" = "Ethernet"
-}
-
 is_ndis_interface()
 {
 	case `sysctl -n net.wlan.${1#wlan}.%parent 2>/dev/null` in

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