35 #ifndef LWIP_HDR_NETIF_ETHARP_H 36 #define LWIP_HDR_NETIF_ETHARP_H 40 #if LWIP_ARP || LWIP_ETHERNET 51 #ifndef ETHARP_HWADDR_LEN 52 #define ETHARP_HWADDR_LEN 6 55 #ifdef PACK_STRUCT_USE_INCLUDES 63 #ifdef PACK_STRUCT_USE_INCLUDES 67 #ifdef PACK_STRUCT_USE_INCLUDES 81 #ifdef PACK_STRUCT_USE_INCLUDES 85 #define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE) 87 #if ETHARP_SUPPORT_VLAN 89 #ifdef PACK_STRUCT_USE_INCLUDES 101 #ifdef PACK_STRUCT_USE_INCLUDES 105 #define SIZEOF_VLAN_HDR 4 106 #define VLAN_ID(vlan_hdr) (htons((vlan_hdr)->prio_vid) & 0xFFF) 111 #define ETHTYPE_IP 0x0800U 112 #define ETHTYPE_ARP 0x0806U 113 #define ETHTYPE_WOL 0x0842U 114 #define ETHTYPE_VLAN 0x8100U 115 #define ETHTYPE_IPV6 0x86DDU 116 #define ETHTYPE_PPPOEDISC 0x8863U 117 #define ETHTYPE_PPPOE 0x8864U 118 #define ETHTYPE_JUMBO 0x8870U 119 #define ETHTYPE_PROFINET 0x8892U 120 #define ETHTYPE_ETHERCAT 0x88A4U 121 #define ETHTYPE_LLDP 0x88CCU 122 #define ETHTYPE_SERCOS 0x88CDU 123 #define ETHTYPE_PTP 0x88F7U 124 #define ETHTYPE_QINQ 0x9100U 132 #ifndef LWIP_ARP_FILTER_NETIF 133 #define LWIP_ARP_FILTER_NETIF 0 136 #if LWIP_IPV4 && LWIP_ARP 138 #ifdef PACK_STRUCT_USE_INCLUDES 155 #ifdef PACK_STRUCT_USE_INCLUDES 159 #define SIZEOF_ETHARP_HDR 28 161 #define SIZEOF_ETHARP_PACKET (SIZEOF_ETH_HDR + SIZEOF_ETHARP_HDR) 162 #if ETHARP_SUPPORT_VLAN && defined(LWIP_HOOK_VLAN_SET) 163 #define SIZEOF_ETHARP_PACKET_TX (SIZEOF_ETHARP_PACKET + SIZEOF_VLAN_HDR) 165 #define SIZEOF_ETHARP_PACKET_TX SIZEOF_ETHARP_PACKET 169 #define ARP_TMR_INTERVAL 1000 173 #ifndef ETHADDR32_COPY 174 #define ETHADDR32_COPY(dst, src) SMEMCPY(dst, src, ETHARP_HWADDR_LEN) 179 #ifndef ETHADDR16_COPY 180 #define ETHADDR16_COPY(dst, src) SMEMCPY(dst, src, ETHARP_HWADDR_LEN) 184 #define ARP_REQUEST 1 191 struct etharp_q_entry {
192 struct etharp_q_entry *next;
197 #define etharp_init() 198 void etharp_tmr(
void);
199 s8_t etharp_find_addr(
struct netif *
netif,
const ip4_addr_t *ipaddr,
200 struct eth_addr **eth_ret,
const ip4_addr_t **ip_ret);
201 u8_t etharp_get_entry(
u8_t i, ip4_addr_t **ipaddr,
struct netif **
netif,
struct eth_addr **eth_ret);
209 #define etharp_gratuitous(netif) etharp_request((netif), netif_ip4_addr(netif)) 210 void etharp_cleanup_netif(
struct netif *
netif);
212 #if ETHARP_SUPPORT_STATIC_ENTRIES 213 err_t etharp_add_static_entry(
const ip4_addr_t *ipaddr,
struct eth_addr *ethaddr);
214 err_t etharp_remove_static_entry(
const ip4_addr_t *ipaddr);
218 err_t etharp_raw(
struct netif *
netif,
const struct eth_addr *ethsrc_addr,
219 const struct eth_addr *ethdst_addr,
220 const struct eth_addr *hwsrc_addr,
const ip4_addr_t *ipsrc_addr,
221 const struct eth_addr *hwdst_addr,
const ip4_addr_t *ipdst_addr,
229 #define eth_addr_cmp(addr1, addr2) (memcmp((addr1)->addr, (addr2)->addr, ETHARP_HWADDR_LEN) == 0) 231 extern const struct eth_addr ethbroadcast, ethzero;
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_FLD_8(x)
#define PACK_STRUCT_FIELD(x)
#define PACK_STRUCT_FLD_S(x)
#define PACK_STRUCT_BEGIN