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