CMP EMBEDDED.COM

Login | Register     Welcome Guest  
HOME DESIGN PRODUCTS COLUMNS E-LEARNING CONFERENCES CODE FORUMS/BLOGS NEWSLETTERS CONTACT FEATURES RSS RSS

Listing 5: A function to add an entry to the ARP cache

int
NetArpAddEntry(INT8U * hw_addr, INT32U ip_addr)
{
int i;
/*
* Look for a place to insert the entry into the ARP cache.
*/
for (i = 0; i 
<
NET_ARP_CACHE_SIZE; i++)
{
if ((gArpCache[i].ip_addr == ip_addr) || 
(gArpCache[i].ip_addr == 0))
{
/*
* Found existing or new slot in cache.
*/
gArpCache[i].ip_addr = ip_addr;
memcpy(gArpCache[i].hw_addr, hw_addr, HW_ADDR_LEN);
return (i);
}
}
/*
* The ARP cache is full! Clear the cache and use first slot.
*/
NetArpFlush();
gArpCache[0].ip_addr = ip_addr;
memcpy(gArpCache[0].hw_addr, hw_addr, HW_ADDR_LEN);
return (0);
} /* NetArpAddEntry() */

Embedded.com Career Center
Looking for a new job?
SEARCH JOBS

Browse all jobs

SPONSOR
RECENT JOB POSTINGS





 :