Go to the documentation of this file.
41 #include "net/ipv4/inet.h"
42 #include "netif/arp.h"
43 #include "net/ipv4/ip.h"
48 #define HWTYPE_ETHERNET 1
68 #define ARPH_HWLEN(hdr) (NTOHS((hdr)->_hwlen_protolen) >> 8)
69 #define ARPH_PROTOLEN(hdr) (NTOHS((hdr)->_hwlen_protolen) & 0xff)
72 #define ARPH_HWLEN_SET(hdr, len) (hdr)->_hwlen_protolen = HTONS(ARPH_PROTOLEN(hdr) | ((len) << 8))
73 #define ARPH_PROTOLEN_SET(hdr, len) (hdr)->_hwlen_protolen = HTONS((len) | (ARPH_HWLEN(hdr) << 8))
112 DEBUGF(ARP_DEBUG, (
"arp_timer: expired entry %d.\n", i));
136 for(k = 0; k < 6; ++k) {
172 for(k = 0; k < 6; ++k) {
189 if(!ip_addr_maskcmp(&(hdr->ip.src), &(
netif->ip_addr), &(
netif->netmask))) {
192 DEBUGF(ARP_DEBUG, (
"arp_ip_input: updating ARP table.\n"));
193 add_arp_entry(&(hdr->ip.src), &(hdr->eth.src));
212 switch(
htons(hdr->opcode)) {
226 for(i = 0; i < 6; ++i) {
227 hdr->dhwaddr.addr[i] = hdr->shwaddr.addr[i];
228 hdr->shwaddr.addr[i] = ethaddr->addr[i];
229 hdr->ethhdr.dest.addr[i] = hdr->dhwaddr.addr[i];
230 hdr->ethhdr.src.addr[i] = ethaddr->addr[i];
247 add_arp_entry(&(hdr->sipaddr), &(hdr->shwaddr));
251 kprintf(
"arp_arp_input: unknown type %d\n",
htons(hdr->opcode));
288 for(i = 0; i < 6; ++i) {
289 hdr->dhwaddr.addr[i] = 0x00;
290 hdr->shwaddr.addr[i] = ethaddr->addr[i];
302 for(i = 0; i < 6; ++i) {
303 hdr->ethhdr.dest.addr[i] = 0xff;
304 hdr->ethhdr.src.addr[i] = ethaddr->addr[i];
#define ip_addr_cmp(addr1, addr2)
PACK_STRUCT_FIELD(struct eth_hdr ethhdr)
unsigned short int uInt16
#define ip_addr_set(dest, src)
#define ip_addr_isany(ipaddr)
#define ARPH_PROTOLEN_SET(hdr, len)
u8_t pbuf_free(struct pbuf *p)
#define ARPH_HWLEN_SET(hdr, len)
struct pbuf * pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type)
#define PACK_STRUCT_BEGIN
struct eth_addr * arp_lookup(struct ip_addr *ipaddr)
struct pbuf * arp_query(struct netif *netif, struct eth_addr *ethaddr, struct ip_addr *ipaddr)
PACK_STRUCT_FIELD(struct eth_hdr eth)
struct pbuf * arp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p)
void arp_ip_input(struct netif *netif, struct pbuf *p)
int kprintf(const char *,...)
PACK_STRUCT_BEGIN struct arp_hdr PACK_STRUCT_STRUCT