]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/net/if_media.c
xnu-1699.22.73.tar.gz
[apple/xnu.git] / bsd / net / if_media.c
index 249f394e193df1cc40c5b3286e4dda3cb3a58879..7c2e4be3f51eaf4c3d3840168574200c0856ebbc 100644 (file)
@@ -1,16 +1,19 @@
 /*
  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
- * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
@@ -20,7 +23,7 @@
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 /*     $NetBSD: if_media.c,v 1.1 1997/03/17 02:55:15 thorpej Exp $     */
 /* $FreeBSD: src/sys/net/if_media.c,v 1.9.2.4 2001/07/04 00:12:38 brooks Exp $ */
  *     Useful for debugging newly-ported  drivers.
  */
 
-static struct ifmedia_entry *ifmedia_match __P((struct ifmedia *ifm,
-    int flags, int mask));
+static struct ifmedia_entry *ifmedia_match(struct ifmedia *ifm,
+    int flags, int mask);
 
 #ifdef IFMEDIA_DEBUG
 int    ifmedia_debug = 0;
-static void ifmedia_printword __P((int));
+static void ifmedia_printword(int);
 #endif
 
 /*
@@ -216,11 +219,11 @@ ifmedia_set(ifm, target)
  * Device-independent media ioctl support function.
  */
 int
-ifmedia_ioctl(ifp, ifr, ifm, cmd)
-       struct ifnet *ifp;
-       struct ifreq *ifr;
-       struct ifmedia *ifm;
-       u_long cmd;
+ifmedia_ioctl(
+       struct ifnet *ifp,
+       struct ifreq *ifr,
+       struct ifmedia *ifm,
+       u_long cmd)
 {
        struct ifmedia_entry *match;
        struct ifmediareq *ifmr = (struct ifmediareq *) ifr;
@@ -328,6 +331,8 @@ ifmedia_ioctl(ifp, ifr, ifm, cmd)
                if (ifmr->ifm_count != 0) {
                        kptr = (int *) _MALLOC(ifmr->ifm_count * sizeof(int),
                            M_TEMP, M_WAITOK);
+                       if (kptr == NULL)
+                               return ENOBUFS;
 
                        /*
                         * Get the media words from the interface's list.
@@ -352,7 +357,7 @@ ifmedia_ioctl(ifp, ifr, ifm, cmd)
                sticky = error;
                if ((error == 0 || error == E2BIG) && ifmr->ifm_count != 0) {
                        error = copyout((caddr_t)kptr,
-                           (caddr_t)ifmr->ifm_ulist,
+                           CAST_USER_ADDR_T(ifmr->ifm_ulist),
                            ifmr->ifm_count * sizeof(int));
                }