34 #ifndef _NETINET_IF_ETHER_H_ 35 #define _NETINET_IF_ETHER_H_ 47 #define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \ 54 (enaddr)[3] = ((u_char *)ipaddr)[1] & 0x7f; \ 55 (enaddr)[4] = ((u_char *)ipaddr)[2]; \ 56 (enaddr)[5] = ((u_char *)ipaddr)[3]; \ 69 u_char arp_sha[ETHER_ADDR_LEN];
71 u_char arp_tha[ETHER_ADDR_LEN];
74 #define arp_hrd ea_hdr.ar_hrd 75 #define arp_pro ea_hdr.ar_pro 76 #define arp_hln ea_hdr.ar_hln 77 #define arp_pln ea_hdr.ar_pln 78 #define arp_op ea_hdr.ar_op 93 #define RTF_USETRAILERS RTF_PROTO1 94 #define RTF_ANNOUNCE RTF_PROTO2 97 extern u_char etherbroadcastaddr[ETHER_ADDR_LEN];
98 extern u_char ether_ipmulticast_min[ETHER_ADDR_LEN];
99 extern u_char ether_ipmulticast_max[ETHER_ADDR_LEN];
100 extern struct ifqueue arpintrq;
102 int arpresolve(
struct arpcom *,
struct rtentry *,
struct mbuf *,
104 void arp_ifinit(
struct arpcom *,
struct ifaddr *);
105 int ether_addmulti(
struct ifreq *,
struct arpcom *);
106 int ether_delmulti(
struct ifreq *,
struct arpcom *);
117 u_char enm_addrlo[ETHER_ADDR_LEN];
118 u_char enm_addrhi[ETHER_ADDR_LEN];
119 struct arpcom *enm_ac;
121 struct ether_multi *enm_next;
128 struct ether_multistep {
129 struct ether_multi *e_enm;
137 #define ETHER_LOOKUP_MULTI(addrlo, addrhi, ac, enm) \ 143 for ((enm) = (ac)->ac_multiaddrs; \ 145 (bcmp((enm)->enm_addrlo, (addrlo), ETHER_ADDR_LEN) != 0 || \ 146 bcmp((enm)->enm_addrhi, (addrhi), ETHER_ADDR_LEN) != 0); \ 147 (enm) = (enm)->enm_next); \ 157 #define ETHER_NEXT_MULTI(step, enm) \ 161 if (((enm) = (step).e_enm) != NULL) \ 162 (step).e_enm = (enm)->enm_next; \ 165 #define ETHER_FIRST_MULTI(step, ac, enm) \ 170 (step).e_enm = (ac)->ac_multiaddrs; \ 171 ETHER_NEXT_MULTI((step), (enm)); \
Definition: if_ether.h:68
Definition: if_ether.h:81