ARP: Ensure STATIC and DYANMIC ARP flags are mutually exclusive. 37/12637/2
authorJon Loeliger <jdl@netgate.com>
Thu, 17 May 2018 20:55:00 +0000 (15:55 -0500)
committerJohn Lo <loj@cisco.com>
Fri, 18 May 2018 11:03:03 +0000 (11:03 +0000)
Change-Id: I44278dea2ee1daa147b0928bfe26e861907a209f
Signed-off-by: Jon Loeliger <jdl@netgate.com>
src/vnet/ethernet/arp.c

index 8df96f6..55beb70 100644 (file)
@@ -628,9 +628,15 @@ vnet_arp_set_ip4_over_ethernet_internal (vnet_main_t * vnm,
 
   e->time_last_updated = vlib_time_now (vm);
   if (is_static)
-    e->flags |= ETHERNET_ARP_IP4_ENTRY_FLAG_STATIC;
+    {
+      e->flags &= ~ETHERNET_ARP_IP4_ENTRY_FLAG_DYNAMIC;
+      e->flags |= ETHERNET_ARP_IP4_ENTRY_FLAG_STATIC;
+    }
   else
-    e->flags |= ETHERNET_ARP_IP4_ENTRY_FLAG_DYNAMIC;
+    {
+      e->flags &= ~ETHERNET_ARP_IP4_ENTRY_FLAG_STATIC;
+      e->flags |= ETHERNET_ARP_IP4_ENTRY_FLAG_DYNAMIC;
+    }
 
   adj_nbr_walk_nh4 (sw_if_index, &e->ip4_address, arp_mk_complete_walk, e);
 
@@ -1819,7 +1825,7 @@ vnet_arp_flush_ip4_over_ethernet_internal (vnet_main_t * vnm,
        */
       if (e->flags & ETHERNET_ARP_IP4_ENTRY_FLAG_STATIC)
        {
-         e->flags &= ETHERNET_ARP_IP4_ENTRY_FLAG_DYNAMIC;
+         e->flags &= ~ETHERNET_ARP_IP4_ENTRY_FLAG_DYNAMIC;
        }
       else if (e->flags & ETHERNET_ARP_IP4_ENTRY_FLAG_DYNAMIC)
        {