]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lwip.git/commitdiff
fixed bug #26507: "Gratuitous ARP depends on arp_table / uses etharp_query" by adding...
authorgoldsimon <goldsimon>
Tue, 12 May 2009 20:13:45 +0000 (20:13 +0000)
committergoldsimon <goldsimon>
Tue, 12 May 2009 20:13:45 +0000 (20:13 +0000)
CHANGELOG
src/core/netif.c
src/include/netif/etharp.h
src/netif/etharp.c

index 92ed75e17bbb649131f83c67ff2f1ff0ce61f25d..740cf12cb959b9a05a8e96dc22226bdd8de59389 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -109,6 +109,10 @@ HISTORY
 
   ++ 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)
index a417f0a473ba5c91f0b2d512d497b4ecc0277008..34206bce8c9734c9828368ca105d25ca5691d10b 100644 (file)
@@ -401,13 +401,9 @@ void netif_set_up(struct netif *netif)
     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 */
     
@@ -464,14 +460,10 @@ void netif_set_link_up(struct netif *netif )
   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
index 2b76823bb1fc67eddd431aa12add22d940f22217..db691d91d22c8ae1a3fc17805b04a5ee53975cd6 100644 (file)
@@ -151,6 +151,11 @@ void etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr,
 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);
 
index 917320b7824b53132e444eef8d4ec9f8ce77e612..73ea2117364ed703ab5b856bad1fc2ea754ddf23 100644 (file)
@@ -8,8 +8,7 @@
  *
  * 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.
  */
 
 /*