Index: sys/net/if.c
===================================================================
RCS file: /cvsroot/src/sys/net/if.c,v
retrieving revision 1.327
diff -p -u -r1.327 if.c
--- sys/net/if.c 23 Mar 2016 07:05:28 -0000 1.327
+++ sys/net/if.c 3 Apr 2016 09:46:16 -0000
@@ -882,6 +882,29 @@ bad:
return;
}
+/*
+ * Access interface list
+ */
+struct ifnet *
+ifnet_first(void)
+{
+
+ return TAILQ_FIRST(&ifnet_list);
+}
+
+int
+ifnet_empty(void)
+{
+
+ return TAILQ_EMPTY(&ifnet_list);
+}
+
+struct ifnet *
+ifnet_next(struct ifnet *ifp)
+{
+
+ return TAILQ_NEXT(ifp, if_list);
+}
/*
* The common interface input routine that is called by device drivers,
Index: sys/net/if.h
===================================================================
RCS file: /cvsroot/src/sys/net/if.h,v
retrieving revision 1.198
diff -p -u -r1.198 if.h
--- sys/net/if.h 19 Feb 2016 20:05:43 -0000 1.198
+++ sys/net/if.h 3 Apr 2016 09:46:16 -0000
@@ -885,6 +885,9 @@ MALLOC_DECLARE(M_IFMADDR);
int ifreq_setaddr(u_long, struct ifreq *, const struct sockaddr *);
+int ifnet_empty(void);
+struct ifnet *ifnet_first(void);
+struct ifnet *ifnet_next(struct ifnet *);
struct ifnet *if_alloc(u_char);
void if_free(struct ifnet *);
void if_initname(struct ifnet *, const char *, int);
@@ -987,10 +990,10 @@ __END_DECLS
#ifdef _KERNEL
-#define IFNET_FIRST() TAILQ_FIRST(&ifnet_list)
-#define IFNET_EMPTY() TAILQ_EMPTY(&ifnet_list)
-#define IFNET_NEXT(__ifp) TAILQ_NEXT((__ifp), if_list)
-#define IFNET_FOREACH(__ifp) TAILQ_FOREACH(__ifp, &ifnet_list, if_list)
+#define IFNET_FIRST() ifnet_first()
+#define IFNET_EMPTY() ifnet_empty()
+#define IFNET_NEXT(__ifp) ifnet_next(__ifp)
+#define IFNET_FOREACH(__ifp) for ((__ifp) = ifnet_first(); (__ifp); (__ifp) = ifnet_next(__ifp))
#define IFADDR_FIRST(__ifp) TAILQ_FIRST(&(__ifp)->if_addrlist)
#define IFADDR_NEXT(__ifa) TAILQ_NEXT((__ifa), ifa_list)
#define IFADDR_FOREACH(__ifa, __ifp) TAILQ_FOREACH(__ifa, \
@@ -1000,7 +1003,6 @@ __END_DECLS
&(__ifp)->if_addrlist, ifa_list, __nifa)
#define IFADDR_EMPTY(__ifp) TAILQ_EMPTY(&(__ifp)->if_addrlist)
-extern struct ifnet_head ifnet_list;
extern struct ifnet *lo0ifp;
ifnet_t * if_byindex(u_int);
Index: sys/rump/librump/rumpnet/net_stub.c
===================================================================
RCS file: /cvsroot/src/sys/rump/librump/rumpnet/net_stub.c,v
retrieving revision 1.21
diff -p -u -r1.21 net_stub.c
--- sys/rump/librump/rumpnet/net_stub.c 2 Dec 2014 14:34:19 -0000 1.21
+++ sys/rump/librump/rumpnet/net_stub.c 3 Apr 2016 09:46:18 -0000
@@ -62,6 +62,16 @@ __weak_alias(ieee8023ad_marker_input,rum
struct ifnet_head ifnet_list;
+/* if */
+struct ifnet *rumpnet_ifnet_first(void);
+struct ifnet *
+rumpnet_ifnet_first(void)
+{
+ return NULL;
+}
+__weak_alias(ifnet_first,rumpnet_ifnet_first);
+__weak_alias(ifnet_next,rumpnet_stub);
+
int
compat_ifconf(u_long cmd, void *data)
{