lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [lwip-users] Etharp drops packets for unlisted arp entries


From: Tom C. Barker
Subject: RE: [lwip-users] Etharp drops packets for unlisted arp entries
Date: Tue, 13 Jul 2004 11:25:45 -0700

Leon,

To confirm, I have 0.7.2. And my observation of my request being dropped 
if there is no arp entry, even with ARP_QUEUEING turned on, is correct?

Following the code (as it executes), since there is no arp entry PENDING or
STABLE, i == 10 and the first branch is taken making sure that the 
etharp_enqueue(i, q) call is never made (from etharp.c). 

Does the next release perform the query/queueing that you are speaking about?

Tom

if (i == ARP_TABLE_SIZE) {
 LWIP_DEBUGF(ETHARP_DEBUG | DBG_TRACE, ("etharp_query: IP address not found in 
ARP table\n"));
 /* find an available (unused or old) entry */
 i = find_arp_entry();
 /* bail out if no ARP entries are available */
 if (i == ERR_MEM) {
   LWIP_DEBUGF(ETHARP_DEBUG | 2, ("etharp_query: no more ARP entries available. 
Should seldom occur.\n"));
   return ERR_MEM;
 }
 /* i is available, create ARP entry */
 arp_table[i].state = ETHARP_STATE_PENDING;
 ip_addr_set(&arp_table[i].ipaddr, ipaddr);
 /* queried address was already in ARP table */
 } else {
 #if ARP_QUEUEING
   etharp_enqueue(i, q);
 #endif
}




-----Original Message-----
From: address@hidden
[mailto:address@hidden Behalf
Of Leon Woestenberg
Sent: Saturday, July 03, 2004 5:18 AM
To: Mailing list for lwIP users
Subject: Re: [lwip-users] Etharp drops packets for unlisted arp entries


Hello Tom,

Tom C. Barker wrote:

>My dns queries get dropped if the address is not in the arp table.
>
>    /* { packet was queued (ERR_OK), or discarded } */
>
>Does the stack allow any knowledge that this has happened?
>  
>
The code in CVS does, 0.7.x does not and will not as we will not break 
the API
within the stable (0.7) branch.

>(We return always with a NULL.)
>
>  
>
That's 0.7.x etharp_output() I assume.
This has changed for the better in CVS HEAD, which has a change in API:

err_t
etharp_output(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q)
{

.....

    /* queue on destination Ethernet address belonging to ipaddr */
    return etharp_query(netif, ipaddr, q);
  }


Regards,

Leon.


_______________________________________________
lwip-users mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/lwip-users




reply via email to

[Prev in Thread] Current Thread [Next in Thread]