Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Jan 2015 19:07:13 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r277261 - projects/ifnet/sys/netgraph
Message-ID:  <201501161907.t0GJ7DUW031353@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Fri Jan 16 19:07:13 2015
New Revision: 277261
URL: https://svnweb.freebsd.org/changeset/base/277261

Log:
  Obtain the interface index via SIOCGIFINDEX.  This allows us to
  stop including if_var.h and become 100% opaque ifnet user.
  
  Sponsored by:	Nginx, Inc.

Modified:
  projects/ifnet/sys/netgraph/ng_iface.c

Modified: projects/ifnet/sys/netgraph/ng_iface.c
==============================================================================
--- projects/ifnet/sys/netgraph/ng_iface.c	Fri Jan 16 19:05:15 2015	(r277260)
+++ projects/ifnet/sys/netgraph/ng_iface.c	Fri Jan 16 19:07:13 2015	(r277261)
@@ -71,7 +71,6 @@
 
 #include <net/bpf.h>
 #include <net/if.h>
-#include <net/if_var.h>		/* XXXGL: for if_transmit() and if_index. */
 #include <net/if_types.h>
 #include <net/netisr.h>
 #include <net/route.h>
@@ -555,14 +554,18 @@ ng_iface_rcvmsg(node_p node, item_p item
 		    }
 
 		case NGM_IFACE_GET_IFINDEX:
+		    {
+			struct ifreq ifr;
+
 			NG_MKRESPONSE(resp, msg, sizeof(uint32_t), M_NOWAIT);
 			if (resp == NULL) {
 				error = ENOMEM;
 				break;
 			}
-			*((uint32_t *)resp->data) = ifp->if_index;
+			if_drvioctl(SIOCGIFINDEX, ifp, &ifr, curthread);
+			*((uint32_t *)resp->data) = ifr.ifr_index;
 			break;
-
+		    }
 		default:
 			error = EINVAL;
 			break;



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