35#ifndef _NETINET_IF_ETHER_H_
36#define _NETINET_IF_ETHER_H_
38#include <net/ethernet.h>
39#include <net/if_arp.h>
46#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \
53 (enaddr)[3] = ((const u_char *)ipaddr)[1] & 0x7f; \
54 (enaddr)[4] = ((const u_char *)ipaddr)[2]; \
55 (enaddr)[5] = ((const u_char *)ipaddr)[3]; \
62#define ETHER_MAP_IPV6_MULTICAST(ip6addr, enaddr) \
68 (enaddr)[2] = ((const u_char *)ip6addr)[12]; \
69 (enaddr)[3] = ((const u_char *)ip6addr)[13]; \
70 (enaddr)[4] = ((const u_char *)ip6addr)[14]; \
71 (enaddr)[5] = ((const u_char *)ip6addr)[15]; \
88#define arp_hrd ea_hdr.ar_hrd
89#define arp_pro ea_hdr.ar_pro
90#define arp_hln ea_hdr.ar_hln
91#define arp_pln ea_hdr.ar_pln
92#define arp_op ea_hdr.ar_op
110#define RTF_USETRAILERS RTF_PROTO1
111#define RTF_ANNOUNCE RTF_PROTO2
120int arpresolve(
struct ifnet *ifp,
int is_gw,
struct mbuf *m,
121 const struct sockaddr *dst, u_char *desten,
uint32_t *pflags,
122 struct llentry **plle);
124 const struct in_addr *, u_char *);
125void arp_ifinit(
struct ifnet *,
struct ifaddr *);
u_char ether_ipmulticast_max[ETHER_ADDR_LEN]
void arprequest(struct ifnet *, const struct in_addr *, const struct in_addr *, u_char *)
int arpresolve(struct ifnet *ifp, int is_gw, struct mbuf *m, const struct sockaddr *dst, u_char *desten, uint32_t *pflags, struct llentry **plle)
u_char ether_ipmulticast_min[ETHER_ADDR_LEN]
void arp_ifinit(struct ifnet *, struct ifaddr *)
void arp_announce_ifaddr(struct ifnet *, struct in_addr addr, u_char *)
u_char arp_sha[ETHER_ADDR_LEN]
u_char arp_tha[ETHER_ADDR_LEN]
struct in_addr sin_srcaddr