++ Bugfixes:
+ 2009-05-12 Simon Goldschmidt
+ * etharp.h, etharp.c, netif.c: fixed bug #26507: "Gratuitous ARP depends on
+ arp_table / uses etharp_query" by adding etharp_gratuitous()
+
2009-05-12 Simon Goldschmidt
* ip.h, ip.c, igmp.c: bug #26487: Added ip_output_if_opt that can add IP options
to the IP header (used by igmp_ip_output_if)
NETIF_STATUS_CALLBACK(netif);
#if LWIP_ARP
- /** For Ethernet network interfaces, we would like to send a
- * "gratuitous ARP"; this is an ARP packet sent by a node in order
- * to spontaneously cause other nodes to update an entry in their
- * ARP cache. From RFC 3220 "IP Mobility Support for IPv4" section 4.6.
- */
+ /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */
if (netif->flags & NETIF_FLAG_ETHARP) {
- etharp_query(netif, &(netif->ip_addr), NULL);
+ etharp_gratuitous(netif);
}
#endif /* LWIP_ARP */
netif->flags |= NETIF_FLAG_LINK_UP;
#if LWIP_ARP
- /** For Ethernet network interfaces, we would like to send a
- * "gratuitous ARP"; this is an ARP packet sent by a node in order
- * to spontaneously cause other nodes to update an entry in their
- * ARP cache. From RFC 3220 "IP Mobility Support for IPv4" section 4.6.
- */
- if (netif->flags & NETIF_FLAG_ETHARP) {
- etharp_query(netif, &(netif->ip_addr), NULL);
- }
+ /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */
+ if (netif->flags & NETIF_FLAG_ETHARP) {
+ etharp_gratuitous(netif);
+ }
#endif /* LWIP_ARP */
#if LWIP_IGMP
err_t etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr);
err_t etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q);
err_t etharp_request(struct netif *netif, struct ip_addr *ipaddr);
+/** For Ethernet network interfaces, we might want to send "gratuitous ARP";
+ * this is an ARP packet sent by a node in order to spontaneously cause other
+ * nodes to update an entry in their ARP cache.
+ * From RFC 3220 "IP Mobility Support for IPv4" section 4.6. */
+#define etharp_gratuitous(netif) etharp_request((netif), &(netif)->ip_addr)
err_t ethernet_input(struct pbuf *p, struct netif *netif);
*
* This implementation complies with RFC 826 (Ethernet ARP). It supports
* Gratuitious ARP from RFC3220 (IP Mobility Support for IPv4) section 4.6
- * if an interface calls etharp_query(our_netif, its_ip_addr, NULL) upon
- * address change.
+ * if an interface calls etharp_gratuitous(our_netif) upon address change.
*/
/*