Subject: Re: please review: patches for ieee80211 ioctls
To: None <tech-net@NetBSD.org>
From: Stephen Degler <sdegler@degler.net>
List: tech-net
Date: 08/13/2007 11:38:50
This is a multi-part message in MIME format.
--------------000304070409080100050807
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ah,

And of course I forgot to attach the patches:

Here they are.

skd


--------------000304070409080100050807
Content-Type: text/x-patch;
 name="if.c.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="if.c.patch"

Index: if.c
===================================================================
RCS file: /cvsroot/src/sys/net/if.c,v
retrieving revision 1.195
diff -u -u -r1.195 if.c
--- if.c	7 Aug 2007 04:14:37 -0000	1.195
+++ if.c	13 Aug 2007 13:44:05 -0000
@@ -1386,6 +1386,8 @@
 	case SIOCDELMULTI:
 	case SIOCSIFMEDIA:
 	case SIOCSDRVSPEC:
+	case SIOCG80211:
+	case SIOCS80211:
 	case SIOCS80211NWID:
 	case SIOCS80211NWKEY:
 	case SIOCS80211POWER:
@@ -1561,6 +1563,8 @@
 		break;
 
 	case SIOCSDRVSPEC:
+	case SIOCG80211:
+	case SIOCS80211:
 	case SIOCS80211NWID:
 	case SIOCS80211NWKEY:
 	case SIOCS80211POWER:

--------------000304070409080100050807
Content-Type: text/x-patch;
 name="sockio.h.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="sockio.h.patch"

Index: sockio.h
===================================================================
RCS file: /cvsroot/src/sys/compat/sys/sockio.h,v
retrieving revision 1.3
diff -u -u -r1.3 sockio.h
--- sockio.h	30 May 2007 21:02:02 -0000	1.3
+++ sockio.h	13 Aug 2007 13:46:34 -0000
@@ -114,16 +114,28 @@
 		    sizeof((oi)->ifr_ifru)); \
 	} while (/*CONSTCOND*/0)
 
-/*
- * XXX: The following macro depends on the fact that the only struct
- * sized 0x20 bytes in the ifioctls is struct oifreq and struct ifcapreq.
- * If that changes, then we'll need to use an explicit list here.
- */
-#define ifcapreq(x) ((x) == SIOCGIFCAP || (x) == SIOCSIFCAP)
+#define ifcompatcmd(x) ((x == OSIOCSIFADDR || \
+	                 x == OOSIOCGIFADDR || \
+			 x == OSIOCSIFDSTADDR || \
+	                 x == OOSIOCGIFDSTADDR || \
+	                 x == OSIOCSIFFLAGS || \
+	                 x == OSIOCGIFFLAGS || \
+	                 x == OOSIOCGIFBRDADDR || \
+	                 x == OSIOCSIFBRDADDR || \
+	                 x == OOSIOCGIFCONF || \
+	                 x == OOSIOCGIFNETMASK || \
+	                 x == OSIOCSIFNETMASK || \
+                         x == OSIOCGIFCONF || \
+	                 x == OSIOCADDMULTI || \
+	                 x == OSIOCDELMULTI || \
+	                 x == OSIOCSIFMEDIA || \
+	                 x == OBIOCGETIF || \
+	                 x == OBIOCSETIF || \
+	                 x == OTAPGIFNAME) ? 1 : 0)
 #define cvtcmd(x) \
-    ((IOCPARM_LEN(x) == sizeof(struct oifreq) && !ifcapreq(x)) ? \
-	(((x) & ~(IOCPARM_MASK << IOCPARM_SHIFT)) | \
-	 (sizeof(struct ifreq) << IOCPARM_SHIFT)) : (x))
+    (ifcompatcmd(x) ? \
+     (((x) & ~(IOCPARM_MASK << IOCPARM_SHIFT)) | \
+      (sizeof(struct ifreq) << IOCPARM_SHIFT)) : (x))
 
 #ifdef _KERNEL
 __BEGIN_DECLS

--------------000304070409080100050807--