Module Name:    src
Committed By:   christos
Date:           Sat Nov  6 17:20:07 UTC 2010

Modified Files:
        src/sys/compat/common: if_43.c

Log Message:
can't map the old and the new SIO calls the way we did before because the
numbers have changed. Instead provide a switch. Keep the old code there,
to handle cases we did not handle in the first switch, but this is a hack
and should be removed.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/compat/common/if_43.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/common/if_43.c
diff -u src/sys/compat/common/if_43.c:1.2 src/sys/compat/common/if_43.c:1.3
--- src/sys/compat/common/if_43.c:1.2	Mon Mar 16 20:08:10 2009
+++ src/sys/compat/common/if_43.c	Sat Nov  6 13:20:07 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_43.c,v 1.2 2009/03/17 00:08:10 dyoung Exp $	*/
+/*	$NetBSD: if_43.c,v 1.3 2010/11/06 17:20:07 christos Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1990, 1993
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.2 2009/03/17 00:08:10 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.3 2010/11/06 17:20:07 christos Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -86,80 +86,130 @@
 	if (IOCPARM_LEN(cmd) != sizeof(struct oifreq))
 		return cmd;
 
-	ncmd = ((cmd) & ~(IOCPARM_MASK << IOCPARM_SHIFT)) | 
-		(sizeof(struct ifreq) << IOCPARM_SHIFT);
-
-	switch (ncmd) {
-	case BIOCGETIF:
-	case BIOCSETIF:
-	case GREDSOCK:
-	case GREGADDRD:
-	case GREGADDRS:
-	case GREGPROTO:
-	case GRESADDRD:
-	case GRESADDRS:
-	case GRESPROTO:
-	case GRESSOCK:
+	switch (cmd) {
+	case OSIOCSIFADDR:
+		return SIOCSIFADDR;
+	case OOSIOCGIFADDR:
+		return SIOCGIFADDR;
+	case OSIOCSIFDSTADDR:
+		return SIOCSIFDSTADDR;
+	case OOSIOCGIFDSTADDR:
+		return SIOCGIFDSTADDR;
+	case OSIOCSIFFLAGS:
+		return SIOCSIFFLAGS;
+	case OSIOCGIFFLAGS:
+		return SIOCGIFFLAGS;
+	case OOSIOCGIFBRDADDR:
+		return SIOCGIFBRDADDR;
+	case OSIOCSIFBRDADDR:
+		return SIOCSIFBRDADDR;
+	case OOSIOCGIFCONF:
+		return SIOCGIFCONF;
+	case OOSIOCGIFNETMASK:
+		return SIOCGIFNETMASK;
+	case OSIOCSIFNETMASK:
+		return SIOCSIFNETMASK;
+	case OSIOCGIFCONF:
+		return SIOCGIFCONF;
+	case OSIOCADDMULTI:
+		return SIOCADDMULTI;
+	case OSIOCDELMULTI:
+		return SIOCDELMULTI;
+	case OSIOCSIFMEDIA:
+		return SIOCSIFMEDIA;
+	case OSIOCGIFMTU:
+		return SIOCGIFMTU;
+	case OSIOCGIFDATA:
+		return SIOCGIFDATA;
+	case OSIOCZIFDATA:
+		return SIOCZIFDATA;
+	case OBIOCGETIF:
+		return BIOCGETIF;
+	case OBIOCSETIF:
+		return BIOCSETIF;
+	case OTAPGIFNAME:
+		return TAPGIFNAME;
+	default:
+		/*
+		 * XXX: the following code should be removed and the
+		 * needing treatment ioctls should move to the switch
+		 * above.
+		 */
+		ncmd = ((cmd) & ~(IOCPARM_MASK << IOCPARM_SHIFT)) | 
+		    (sizeof(struct ifreq) << IOCPARM_SHIFT);
+		switch (ncmd) {
+		case BIOCGETIF:
+		case BIOCSETIF:
+		case GREDSOCK:
+		case GREGADDRD:
+		case GREGADDRS:
+		case GREGPROTO:
+		case GRESADDRD:
+		case GRESADDRS:
+		case GRESPROTO:
+		case GRESSOCK:
 #ifdef COMPAT_20
-	case OSIOCG80211STATS:
-	case OSIOCG80211ZSTATS:
+		case OSIOCG80211STATS:
+		case OSIOCG80211ZSTATS:
 #endif /* COMPAT_20 */
-	case SIOCADDMULTI:
-	case SIOCDELMULTI:
-	case SIOCDIFADDR:
-	case SIOCDIFADDR_IN6:
-	case SIOCDIFPHYADDR:
-	case SIOCGDEFIFACE_IN6:
-	case SIOCG80211NWID:
-	case SIOCG80211STATS:
-	case SIOCG80211ZSTATS:
-	case SIOCGIFADDR:
-	case SIOCGIFADDR_IN6:
-	case SIOCGIFAFLAG_IN6:
-	case SIOCGIFALIFETIME_IN6:
-	case SIOCGIFBRDADDR:
-	case SIOCGIFDLT:
-	case SIOCGIFDSTADDR:
-	case SIOCGIFDSTADDR_IN6:
-	case SIOCGIFFLAGS:
-	case SIOCGIFGENERIC:
-	case SIOCGIFMETRIC:
-	case SIOCGIFMTU:
-	case SIOCGIFNETMASK:
-	case SIOCGIFNETMASK_IN6:
-	case SIOCGIFPDSTADDR:
-	case SIOCGIFPDSTADDR_IN6:
-	case SIOCGIFPSRCADDR:
-	case SIOCGIFPSRCADDR_IN6:
-	case SIOCGIFSTAT_ICMP6:
-	case SIOCGIFSTAT_IN6:
-	case SIOCGPVCSIF:
-	case SIOCGVH:
-	case SIOCIFCREATE:
-	case SIOCIFDESTROY:
-	case SIOCS80211NWID:
-	case SIOCSDEFIFACE_IN6:
-	case SIOCSIFADDR:
-	case SIOCSIFADDR_IN6:
-	case SIOCSIFBRDADDR:
-	case SIOCSIFDSTADDR:
-	case SIOCSIFDSTADDR_IN6:
-	case SIOCSIFFLAGS:
-	case SIOCSIFGENERIC:
-	case SIOCSIFMEDIA:
-	case SIOCSIFMETRIC:
-	case SIOCSIFMTU:
-	case SIOCSIFNETMASK:
-	case SIOCSIFNETMASK_IN6:
-	case SIOCSNDFLUSH_IN6:
-	case SIOCSPFXFLUSH_IN6:
-	case SIOCSPVCSIF:
-	case SIOCSRTRFLUSH_IN6:
-	case SIOCSVH:
-	case TAPGIFNAME:
-		return ncmd;
+		case SIOCADDMULTI:
+		case SIOCDELMULTI:
+		case SIOCDIFADDR:
+		case SIOCDIFADDR_IN6:
+		case SIOCDIFPHYADDR:
+		case SIOCGDEFIFACE_IN6:
+		case SIOCG80211NWID:
+		case SIOCG80211STATS:
+		case SIOCG80211ZSTATS:
+		case SIOCGIFADDR:
+		case SIOCGIFADDR_IN6:
+		case SIOCGIFAFLAG_IN6:
+		case SIOCGIFALIFETIME_IN6:
+		case SIOCGIFBRDADDR:
+		case SIOCGIFDLT:
+		case SIOCGIFDSTADDR:
+		case SIOCGIFDSTADDR_IN6:
+		case SIOCGIFFLAGS:
+		case SIOCGIFGENERIC:
+		case SIOCGIFMETRIC:
+		case SIOCGIFMTU:
+		case SIOCGIFNETMASK:
+		case SIOCGIFNETMASK_IN6:
+		case SIOCGIFPDSTADDR:
+		case SIOCGIFPDSTADDR_IN6:
+		case SIOCGIFPSRCADDR:
+		case SIOCGIFPSRCADDR_IN6:
+		case SIOCGIFSTAT_ICMP6:
+		case SIOCGIFSTAT_IN6:
+		case SIOCGPVCSIF:
+		case SIOCGVH:
+		case SIOCIFCREATE:
+		case SIOCIFDESTROY:
+		case SIOCS80211NWID:
+		case SIOCSDEFIFACE_IN6:
+		case SIOCSIFADDR:
+		case SIOCSIFADDR_IN6:
+		case SIOCSIFBRDADDR:
+		case SIOCSIFDSTADDR:
+		case SIOCSIFDSTADDR_IN6:
+		case SIOCSIFFLAGS:
+		case SIOCSIFGENERIC:
+		case SIOCSIFMEDIA:
+		case SIOCSIFMETRIC:
+		case SIOCSIFMTU:
+		case SIOCSIFNETMASK:
+		case SIOCSIFNETMASK_IN6:
+		case SIOCSNDFLUSH_IN6:
+		case SIOCSPFXFLUSH_IN6:
+		case SIOCSPVCSIF:
+		case SIOCSRTRFLUSH_IN6:
+		case SIOCSVH:
+		case TAPGIFNAME:
+			return ncmd;
+		default:
+			return cmd;
+		}
 	}
-	return cmd;
 }
 
 int

Reply via email to