Module Name: src Committed By: christos Date: Sat Oct 5 23:16:54 UTC 2013
Modified Files: src/share/man/man4: netintro.4 src/sys/net: if.c if.h src/sys/sys: sockio.h Log Message: Add SIOCGIFINDEX from Ty Sarna and Matthew Sporleder. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/share/man/man4/netintro.4 cvs rdiff -u -r1.265 -r1.266 src/sys/net/if.c cvs rdiff -u -r1.156 -r1.157 src/sys/net/if.h cvs rdiff -u -r1.31 -r1.32 src/sys/sys/sockio.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man4/netintro.4 diff -u src/share/man/man4/netintro.4:1.25 src/share/man/man4/netintro.4:1.26 --- src/share/man/man4/netintro.4:1.25 Fri Mar 1 13:25:27 2013 +++ src/share/man/man4/netintro.4 Sat Oct 5 19:16:54 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: netintro.4,v 1.25 2013/03/01 18:25:27 joerg Exp $ +.\" $NetBSD: netintro.4,v 1.26 2013/10/05 23:16:54 christos Exp $ .\" .\" Copyright (c) 1983, 1990, 1991, 1993 .\" The Regents of the University of California. All rights reserved. @@ -197,9 +197,17 @@ struct ifreq { #define ifr_addr ifr_ifru.ifru_addr /* address */ #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ +#define ifr_space ifr_ifru.ifru_space /* sockaddr_storage */ #define ifr_flags ifr_ifru.ifru_flags /* flags */ #define ifr_metric ifr_ifru.ifru_metric /* metric */ +#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ +#define ifr_dlt ifr_ifru.ifru_dlt /* data link type (DLT_*) */ +#define ifr_value ifr_ifru.ifru_value /* generic value */ +#define ifr_media ifr_ifru.ifru_metric /* media options (overload) */ #define ifr_data ifr_ifru.ifru_data /* for use by interface */ +#define ifr_buf ifr_ifru.ifru_b.b_buf /* new interface ioctls */ +#define ifr_buflen ifr_ifru.ifru_b.b_buflen +#define ifr_index ifr_ifru.ifru_value /* interface index */ }; .Ed .Pp @@ -241,6 +249,8 @@ Set interface routing metric. The metric is used only by user-level routers. .It Dv SIOCGIFMETRIC Get interface metric. +.It Dv SIOCGIFINDEX +Get the interface index and populate ifr_index. .El .Pp There are two requests that make use of a new structure: Index: src/sys/net/if.c diff -u src/sys/net/if.c:1.265 src/sys/net/if.c:1.266 --- src/sys/net/if.c:1.265 Sat Jun 29 17:06:58 2013 +++ src/sys/net/if.c Sat Oct 5 19:16:54 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if.c,v 1.265 2013/06/29 21:06:58 rmind Exp $ */ +/* $NetBSD: if.c,v 1.266 2013/10/05 23:16:54 christos Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.265 2013/06/29 21:06:58 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.266 2013/10/05 23:16:54 christos Exp $"); #include "opt_inet.h" @@ -990,7 +990,7 @@ again: if (ifc == NULL) { if (*ifname == '\0' || - module_autoload(ifname, MODULE_CLASS_DRIVER)) + module_autoload(ifname, MODULE_CLASS_DRIVER, "if")) return NULL; *ifname = '\0'; goto again; @@ -1644,6 +1644,11 @@ ifioctl_common(struct ifnet *ifp, u_long ifdr->ifdr_data = ifp->if_data; break; + case SIOCGIFINDEX: + ifr = data; + ifr->ifr_index = ifp->if_index; + break; + case SIOCZIFDATA: ifdr = data; ifdr->ifdr_data = ifp->if_data; Index: src/sys/net/if.h diff -u src/sys/net/if.h:1.156 src/sys/net/if.h:1.157 --- src/sys/net/if.h:1.156 Sat Jun 29 17:06:58 2013 +++ src/sys/net/if.h Sat Oct 5 19:16:54 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if.h,v 1.156 2013/06/29 21:06:58 rmind Exp $ */ +/* $NetBSD: if.h,v 1.157 2013/10/05 23:16:54 christos Exp $ */ /*- * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. @@ -598,6 +598,7 @@ struct ifreq { */ #define ifr_buf ifr_ifru.ifru_b.b_buf /* new interface ioctls */ #define ifr_buflen ifr_ifru.ifru_b.b_buflen +#define ifr_index ifr_ifru.ifru_index /* interface index */ }; #ifdef _KERNEL Index: src/sys/sys/sockio.h diff -u src/sys/sys/sockio.h:1.31 src/sys/sys/sockio.h:1.32 --- src/sys/sys/sockio.h:1.31 Wed Oct 31 06:17:35 2012 +++ src/sys/sys/sockio.h Sat Oct 5 19:16:54 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sockio.h,v 1.31 2012/10/31 10:17:35 msaitoh Exp $ */ +/* $NetBSD: sockio.h,v 1.32 2013/10/05 23:16:54 christos Exp $ */ /*- * Copyright (c) 1982, 1986, 1990, 1993, 1994 @@ -136,6 +136,7 @@ /* 138 is SIOCGATHDIAG in athioctl.h */ #define SIOCGETHERCAP _IOWR('i', 139, struct eccapreq) /* get ethercap */ +#define SIOCGIFINDEX _IOWR('i', 140, struct ifreq) /* get ifnet index */ #define SIOCSETPFSYNC _IOW('i', 247, struct ifreq) #define SIOCGETPFSYNC _IOWR('i', 248, struct ifreq)