As promised here's a take on hiding ifnet via _KERNEL.  This looks
a bit simpler.  I've tried not to toss things around that much and
have only moved 'ifqueue'.

diff --git sys/net/if.h sys/net/if.h
index b7d1b3c..9a14117 100644
--- sys/net/if.h
+++ sys/net/if.h
@@ -58,16 +58,15 @@ void        if_freenameindex(struct if_nameindex *);
 __END_DECLS
 #endif
 
 #if __BSD_VISIBLE
 
+#ifdef _KERNEL
 #include <sys/queue.h>
 #include <sys/tree.h>
 #include <altq/if_altq.h>
-#ifdef _KERNEL
 #include <net/hfsc.h>
-#endif
 
 /*
  * Structures defining a network interface, providing a packet
  * transport mechanism (ala level 0 of the PUP protocols).
  *
@@ -116,10 +115,11 @@ struct if_clone {
        int     (*ifc_destroy)(struct ifnet *);
 };
 
 #define        IF_CLONE_INITIALIZER(name, create, destroy)                     
\
        { { 0 }, name, sizeof(name) - 1, create, destroy }
+#endif /* _KERNEL */
 
 /*
  * Structure used to query names of interface cloners.
  */
 struct if_clonereq {
@@ -168,30 +168,10 @@ struct    if_data {
        struct  timeval ifi_lastchange; /* last operational state change */
 
        struct mclpool  ifi_mclpool[MCLPOOLS];
 };
 
-#define IFQ_NQUEUES    8
-#define IFQ_MAXPRIO    IFQ_NQUEUES - 1
-#define IFQ_DEFPRIO    3
-
-/*
- * Structure defining a queue for a network interface.
- * XXX keep in sync with struct ifaltq.
- */
-struct ifqueue {
-       struct {
-               struct  mbuf *head;
-               struct  mbuf *tail;
-       }                        ifq_q[IFQ_NQUEUES];
-       int                      ifq_len;
-       int                      ifq_maxlen;
-       int                      ifq_drops;
-       struct hfsc_if          *ifq_hfsc;
-       struct timeout          *ifq_congestion;
-};
-
 /*
  * Values for if_link_state.
  */
 #define LINK_STATE_UNKNOWN     0       /* link unknown */
 #define LINK_STATE_INVALID     1       /* link invalid */
@@ -214,12 +194,11 @@ struct if_status_description {
 };
 
 #define LINK_STATE_DESC_MATCH(_ifs, _t, _s)                            \
        (((_ifs)->ifs_type == (_t) || (_ifs)->ifs_type == 0) &&         \
            (_ifs)->ifs_state == (_s))
-               
-       
+
 
 #define LINK_STATE_DESCRIPTIONS {                                      \
        { IFT_ETHER, LINK_STATE_DOWN, "no carrier" },                   \
                                                                        \
        { IFT_IEEE80211, LINK_STATE_DOWN, "no network" },               \
@@ -240,25 +219,46 @@ struct if_status_description {
        { 0, LINK_STATE_DOWN, "down" },                                 \
        { 0, LINK_STATE_KALIVE_DOWN, "keepalive down" },                \
        { 0, 0, NULL }                                                  \
 }
 
-/*
- * Structure defining a queue for a network interface.
- *
- * (Would like to call this struct ``if'', but C isn't PL/1.)
- */
-TAILQ_HEAD(ifnet_head, ifnet);         /* the actual queue head */
-
 /* Traditional BSD name for length of interface external name. */
 #define        IFNAMSIZ        IF_NAMESIZE
 
 /*
  * Length of interface description, including terminating '\0'.
  */
 #define        IFDESCRSIZE     64
 
+#define        IFQ_NQUEUES     8
+#define        IFQ_MAXPRIO     IFQ_NQUEUES - 1
+#define        IFQ_DEFPRIO     3
+
+#ifdef _KERNEL
+/*
+ * Structure defining a queue for a network interface.
+ * XXX keep in sync with struct ifaltq.
+ */
+struct ifqueue {
+       struct {
+               struct  mbuf *head;
+               struct  mbuf *tail;
+       }                        ifq_q[IFQ_NQUEUES];
+       int                      ifq_len;
+       int                      ifq_maxlen;
+       int                      ifq_drops;
+       struct hfsc_if          *ifq_hfsc;
+       struct timeout          *ifq_congestion;
+};
+
+/*
+ * Structure defining a queue for a network interface.
+ *
+ * (Would like to call this struct ``if'', but C isn't PL/1.)
+ */
+TAILQ_HEAD(ifnet_head, ifnet);         /* the actual queue head */
+
 struct ifnet {                         /* and the entries */
        void    *if_softc;              /* lower-level data for this if */
        TAILQ_ENTRY(ifnet) if_list;     /* all struct ifnets are chained */
        TAILQ_ENTRY(ifnet) if_txlist;   /* list of ifnets ready to tx */
        TAILQ_HEAD(, ifaddr) if_addrlist; /* linked list of addresses per if */
@@ -330,10 +330,11 @@ struct ifnet {                            /* and the 
entries */
 #define        if_omcasts      if_data.ifi_omcasts
 #define        if_iqdrops      if_data.ifi_iqdrops
 #define        if_noproto      if_data.ifi_noproto
 #define        if_lastchange   if_data.ifi_lastchange
 #define        if_capabilities if_data.ifi_capabilities
+#endif /* _KERNEL */
 
 #define        IFF_UP          0x1             /* interface is up */
 #define        IFF_BROADCAST   0x2             /* broadcast address valid */
 #define        IFF_DEBUG       0x4             /* turn on debugging */
 #define        IFF_LOOPBACK    0x8             /* is a loopback net */
@@ -382,10 +383,11 @@ struct ifnet {                            /* and the 
entries */
 #define        IFCAP_WOL               0x00008000      /* can do wake on lan */
 
 #define IFCAP_CSUM_MASK                (IFCAP_CSUM_IPv4 | IFCAP_CSUM_TCPv4 | \
     IFCAP_CSUM_UDPv4 | IFCAP_CSUM_TCPv6 | IFCAP_CSUM_UDPv6)
 
+#ifdef _KERNEL
 /*
  * Output queues (ifp->if_snd) and internetwork datagram level (pup level 1)
  * input routines have queues of messages stored on ifqueue structures
  * (defined above).  Entries are added to and deleted from these structures
  * by these macros, which should be called with ipl raised to splnet().
@@ -460,10 +462,11 @@ do {                                                      
                \
 #define        IF_LEN(ifq)             ((ifq)->ifq_len)
 #define        IF_IS_EMPTY(ifq)        ((ifq)->ifq_len == 0)
 
 #define        IFQ_MAXLEN      256
 #define        IFNET_SLOWHZ    1               /* granularity is 1 second */
+#endif /* _KERNEL */
 
 /* symbolic names for terminal (per-protocol) CTL_IFQ_ nodes */
 #define IFQCTL_LEN 1
 #define IFQCTL_MAXLEN 2
 #define IFQCTL_DROPS 3
@@ -477,10 +480,11 @@ do {                                                      
                \
        { "maxlen", CTLTYPE_INT }, \
        { "drops", CTLTYPE_INT }, \
        { "congestion", CTLTYPE_INT }, \
 }
 
+#ifdef _KERNEL
 /*
  * The ifaddr structure contains information about one address
  * of an interface.  They are maintained by the different address families,
  * are allocated and attached when an address is set, and are linked
  * together so all addresses for an interface can be located.
@@ -505,10 +509,11 @@ struct ifaddr_item {
        struct sockaddr         *ifai_addr;
        struct ifaddr           *ifai_ifa;
        struct ifaddr_item      *ifai_next;
        u_int                    ifai_rdomain;
 };
+#endif /* _KERNEL */
 
 /*
  * Message format for use in obtaining information about interfaces
  * from sysctl and the routing socket.
  */
@@ -543,11 +548,10 @@ struct ifa_msghdr {
        int     ifam_addrs;     /* like rtm_addrs */
        int     ifam_flags;     /* value of ifa_flags */
        int     ifam_metric;    /* value of ifa_metric */
 };
 
-
 /*
  * Message format announcing the arrival or departure of a network interface.
  */
 struct if_announcemsghdr {
        u_short ifan_msglen;    /* to skip over non-understood messages */
@@ -567,10 +571,11 @@ struct if_announcemsghdr {
  */
 
 #define        IFG_ALL         "all"           /* group contains all 
interfaces */
 #define        IFG_EGRESS      "egress"        /* if(s) default route(s) point 
to */
 
+#ifdef _KERNEL
 struct ifg_group {
        char                             ifg_group[IFNAMSIZ];
        u_int                            ifg_refcnt;
        caddr_t                          ifg_pf_kif;
        int                              ifg_carp_demoted;
@@ -585,10 +590,11 @@ struct ifg_member {
 
 struct ifg_list {
        struct ifg_group        *ifgl_group;
        TAILQ_ENTRY(ifg_list)    ifgl_next;
 };
+#endif /* _KERNEL */
 
 struct ifg_req {
        union {
                char                     ifgrqu_group[IFNAMSIZ];
                char                     ifgrqu_member[IFNAMSIZ];
diff --git usr.bin/netstat/if.c usr.bin/netstat/if.c
index 1cc7e07..96d56b4 100644
--- usr.bin/netstat/if.c
+++ usr.bin/netstat/if.c
@@ -35,11 +35,13 @@
 #include <sys/ioctl.h>
 #include <sys/protosw.h>
 #include <sys/socket.h>
 #include <sys/sysctl.h>
 
+#define _KERNEL
 #include <net/if.h>
+#undef _KERNEL
 #include <net/if_dl.h>
 #include <net/if_types.h>
 #include <net/route.h>
 #include <netinet/in.h>
 #include <netinet/in_var.h>
diff --git usr.bin/netstat/mroute6.c usr.bin/netstat/mroute6.c
index d92c15f..7185260 100644
--- usr.bin/netstat/mroute6.c
+++ usr.bin/netstat/mroute6.c
@@ -69,11 +69,13 @@
 #include <sys/socket.h>
 #include <sys/socketvar.h>
 #include <sys/protosw.h>
 #include <sys/sysctl.h>
 
+#define _KERNEL 1
 #include <net/if.h>
+#undef _KERNEL
 
 #include <netinet/in.h>
 
 #define _KERNEL 1
 #include <netinet6/ip6_mroute.h>
diff --git usr.bin/netstat/net80211.c usr.bin/netstat/net80211.c
index 8f34d06..5fdb480 100644
--- usr.bin/netstat/net80211.c
+++ usr.bin/netstat/net80211.c
@@ -20,11 +20,13 @@
 #include <sys/time.h>
 #include <sys/socket.h>
 #include <sys/file.h>
 #include <sys/ioctl.h>
 
+#define _KERNEL
 #include <net/if.h>
+#undef _KERNEL
 
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
 #include <netinet/if_ether.h>
 
diff --git usr.bin/netstat/route.c usr.bin/netstat/route.c
index fc5281d..c475bdf 100644
--- usr.bin/netstat/route.c
+++ usr.bin/netstat/route.c
@@ -32,11 +32,13 @@
 
 #include <sys/param.h>
 #include <sys/protosw.h>
 #include <sys/socket.h>
 
+#define _KERNEL
 #include <net/if.h>
+#undef _KERNEL
 #include <net/if_dl.h>
 #include <net/if_types.h>
 #define _KERNEL
 #include <net/route.h>
 #undef _KERNEL
diff --git usr.bin/netstat/show.c usr.bin/netstat/show.c
index 67295e3..cbc76bb 100644
--- usr.bin/netstat/show.c
+++ usr.bin/netstat/show.c
@@ -33,11 +33,13 @@
 #include <sys/param.h>
 #include <sys/protosw.h>
 #include <sys/socket.h>
 #include <sys/sysctl.h>
 
+#define _KERNEL
 #include <net/if.h>
+#undef _KERNEL
 #include <net/if_dl.h>
 #include <net/if_types.h>
 #include <net/pfkeyv2.h>
 #include <net/route.h>
 #include <netinet/in.h>
diff --git usr.sbin/snmpd/snmpd.h usr.sbin/snmpd/snmpd.h
index 6a84df3..1dec598 100644
--- usr.sbin/snmpd/snmpd.h
+++ usr.sbin/snmpd/snmpd.h
@@ -215,10 +215,30 @@ struct kif {
        struct if_data           if_data;
        u_long                   if_ticks;
        int                      if_flags;
        u_short                  if_index;
 };
+#define        if_mtu          if_data.ifi_mtu
+#define        if_type         if_data.ifi_type
+#define        if_addrlen      if_data.ifi_addrlen
+#define        if_hdrlen       if_data.ifi_hdrlen
+#define        if_metric       if_data.ifi_metric
+#define        if_link_state   if_data.ifi_link_state
+#define        if_baudrate     if_data.ifi_baudrate
+#define        if_ipackets     if_data.ifi_ipackets
+#define        if_ierrors      if_data.ifi_ierrors
+#define        if_opackets     if_data.ifi_opackets
+#define        if_oerrors      if_data.ifi_oerrors
+#define        if_collisions   if_data.ifi_collisions
+#define        if_ibytes       if_data.ifi_ibytes
+#define        if_obytes       if_data.ifi_obytes
+#define        if_imcasts      if_data.ifi_imcasts
+#define        if_omcasts      if_data.ifi_omcasts
+#define        if_iqdrops      if_data.ifi_iqdrops
+#define        if_noproto      if_data.ifi_noproto
+#define        if_lastchange   if_data.ifi_lastchange
+#define        if_capabilities if_data.ifi_capabilities
 
 #define F_CONNECTED            0x0001
 #define F_STATIC               0x0002
 #define F_BLACKHOLE            0x0004
 #define F_REJECT               0x0008

Reply via email to