Trivial: Clean up some typos.
[vpp.git] / src / vnet / l2 / l2_input.c
index 69de281..1c9ddaa 100644 (file)
@@ -539,6 +539,27 @@ l2input_set_bridge_features (u32 bd_index, u32 feat_mask, u32 feat_value)
   return bd_config->feature_bitmap;
 }
 
+void
+l2input_interface_mac_change (u32 sw_if_index,
+                             const u8 * old_address, const u8 * new_address)
+{
+  /* check if the sw_if_index passed is a BVI in a BD */
+  l2_input_config_t *intf_config;
+
+  intf_config = l2input_intf_config (sw_if_index);
+
+  if (intf_config->bridge && intf_config->bvi)
+    {
+      /* delete and re-add l2fib entry for the bvi interface */
+      l2fib_del_entry (old_address, intf_config->bd_index, sw_if_index);
+      l2fib_add_entry (new_address,
+                      intf_config->bd_index,
+                      sw_if_index,
+                      L2FIB_ENTRY_RESULT_FLAG_BVI |
+                      L2FIB_ENTRY_RESULT_FLAG_STATIC);
+    }
+}
+
 /**
  * Set the subinterface to run in l2 or l3 mode.
  * For L3 mode, just the sw_if_index is specified.
@@ -564,7 +585,6 @@ set_int_l2_mode (vlib_main_t * vm, vnet_main_t * vnet_main, /*           */
   l2_input_config_t *config;
   l2_bridge_domain_t *bd_config;
   i32 l2_if_adjust = 0;
-  u32 slot;
   vnet_device_class_t *dev_class;
 
   hi = vnet_get_sup_hw_interface (vnet_main, sw_if_index);
@@ -587,14 +607,7 @@ set_int_l2_mode (vlib_main_t * vm, vnet_main_t * vnet_main,        /*           */
          config->bvi = 0;
 
          /* delete the l2fib entry for the bvi interface */
-         l2fib_del_entry (hi->hw_address, config->bd_index);
-
-         /* Make loop output node send packet back to ethernet-input node */
-         slot =
-           vlib_node_add_named_next_with_slot (vm, hi->tx_node_index,
-                                               "ethernet-input",
-                                               VNET_SIMULATED_ETHERNET_TX_NEXT_ETHERNET_INPUT);
-         ASSERT (slot == VNET_SIMULATED_ETHERNET_TX_NEXT_ETHERNET_INPUT);
+         l2fib_del_entry (hi->hw_address, config->bd_index, sw_if_index);
 
          /* since this is a no longer BVI interface do not to flood to it */
          si = vnet_get_sw_interface (vnm, sw_if_index);
@@ -692,18 +705,13 @@ set_int_l2_mode (vlib_main_t * vm, vnet_main_t * vnet_main,       /*           */
              config->bvi = 1;
 
              /* create the l2fib entry for the bvi interface */
-             l2fib_add_fwd_entry (hi->hw_address, bd_index, sw_if_index, 1, 1);        /* static + bvi */
+             l2fib_add_entry (hi->hw_address, bd_index, sw_if_index,
+                              L2FIB_ENTRY_RESULT_FLAG_BVI |
+                              L2FIB_ENTRY_RESULT_FLAG_STATIC);
 
              /* Disable learning by default. no use since l2fib entry is static. */
              config->feature_bitmap &= ~L2INPUT_FEAT_LEARN;
 
-             /* Make loop output node send packet to l2-input node */
-             slot =
-               vlib_node_add_named_next_with_slot (vm, hi->tx_node_index,
-                                                   "l2-input",
-                                                   VNET_SIMULATED_ETHERNET_TX_NEXT_ETHERNET_INPUT);
-             ASSERT (slot == VNET_SIMULATED_ETHERNET_TX_NEXT_ETHERNET_INPUT);
-
              /* since this is a BVI interface we want to flood to it */
              si = vnet_get_sw_interface (vnm, sw_if_index);
              si->flood_class = VNET_FLOOD_CLASS_BVI;
@@ -961,7 +969,7 @@ done:
 
 /*?
  * Use this command put an interface into Layer 2 cross-connect mode.
- * Both interfaces must be in this mode for bi-directioal traffic. All
+ * Both interfaces must be in this mode for bi-directional traffic. All
  * packets received on one interface will be transmitted to the other.
  * To remove the Layer 2 cross-connect, put the interface in a different
  * mode, for example Layer 3 mode.
@@ -1114,11 +1122,11 @@ done:
 }
 
 /*?
- * Show the packet processing mode (Layer2 xcross-onnect, Layer 2 bridge,
+ * Show the packet processing mode (Layer2 cross-connect, Layer 2 bridge,
  * Layer 3 routed) of all interfaces and sub-interfaces, or limit the
  * output to just the provided list of interfaces and sub-interfaces.
  * The output shows the mode, the interface, and if the interface is
- * a member of a bridge, the bridge-domain-id and the split horizen group (shg).
+ * a member of a bridge, the bridge-domain-id and the split horizon group (shg).
  *
  * @cliexpar
  * Example of displaying the mode of all interfaces:
@@ -1133,7 +1141,7 @@ done:
  * l2 xconnect GigabitEthernet0/8/0.300 GigabitEthernet0/9/0.300
  * l2 xconnect GigabitEthernet0/9/0.300 GigabitEthernet0/8/0.300
  * @cliexend
- * Example of displaying the mode of a seleted list of interfaces:
+ * Example of displaying the mode of a selected list of interfaces:
  * @cliexstart{show mode GigabitEthernet0/8/0 GigabitEthernet0/8/0.200}
  * l3 GigabitEthernet0/8/0
  * l2 bridge GigabitEthernet0/8/0.200 bd_id 200 shg 0