[Top][All Lists]
[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