1*5083Swnj /* if.h 4.3 81/11/26 */ 24945Swnj 34945Swnj /* 4*5083Swnj * Definitions for network interfaces. 5*5083Swnj */ 6*5083Swnj struct ifqueue { 7*5083Swnj struct mbuf *ifq_head; 8*5083Swnj struct mbuf *ifq_tail; 9*5083Swnj }; 10*5083Swnj 11*5083Swnj /* 12*5083Swnj * Structure defining a queue for a network interface. 134945Swnj * 144945Swnj * (Would like to call this struct ``if'', but C isn't PL/1.) 154945Swnj */ 164945Swnj struct ifnet { 174945Swnj short if_unit; /* sub-unit for lower level driver */ 184945Swnj short if_mtu; /* maximum transmission unit */ 194945Swnj short if_net; /* network number of interface */ 20*5083Swnj int if_host[2]; /* local net host number */ 214945Swnj struct in_addr if_addr; /* internet address of interface */ 22*5083Swnj struct ifqueue if_snd; /* output queue */ 23*5083Swnj int (*if_output)(); /* output routine */ 24*5083Swnj int (*if_ubareset)(); /* uba reset routine */ 25*5083Swnj int if_collisions; 26*5083Swnj int if_ierrors; 27*5083Swnj int if_oerrors; 284951Swnj struct ifnet *if_next; 294945Swnj }; 304945Swnj 31*5083Swnj #define IF_ENQUEUE(ifq, m) { \ 32*5083Swnj (m)->m_act = 0; \ 33*5083Swnj if ((ifq)->ifq_tail == 0) \ 34*5083Swnj (ifq)->ifq_head = (ifq)->ifq_tail = m; \ 35*5083Swnj else \ 36*5083Swnj (ifq)->ifq_tail->m_act = m; \ 37*5083Swnj } 38*5083Swnj #define IF_DEQUEUE(ifq, m) { \ 39*5083Swnj (m) = (ifq)->ifq_head; \ 40*5083Swnj if (m) { \ 41*5083Swnj if (((ifq)->ifq_head = (m)->m_act) == 0) \ 42*5083Swnj (ifq)->ifq_tail = 0; \ 43*5083Swnj (m)->m_act = 0; \ 44*5083Swnj } \ 45*5083Swnj } 464945Swnj 474945Swnj #ifdef KERNEL 48*5083Swnj #ifdef INET 49*5083Swnj struct ifqueue ipintrq; /* ip packet input queue */ 50*5083Swnj #endif 514945Swnj struct ifnet *ifnet; 52*5083Swnj struct ifnet *if_ifwithaddr(), *if_ifonnetof(), *if_gatewayfor(); 534945Swnj #endif 54