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) {