summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/lldp/lldp_cli.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/plugins/lldp/lldp_cli.c b/src/plugins/lldp/lldp_cli.c
index d2cdf120e6e..ef3fccc8b4b 100644
--- a/src/plugins/lldp/lldp_cli.c
+++ b/src/plugins/lldp/lldp_cli.c
@@ -102,15 +102,20 @@ lldp_cfg_intf_set (u32 hw_if_index, u8 ** port_desc, u8 ** mgmt_ip4,
*mgmt_oid = NULL;
}
- error =
- vnet_hw_interface_add_del_mac_address (lm->vnet_main, hw_if_index,
- lldp_mac_addr,
- 1 /* is_add */ );
- if (error)
+ /* Add MAC address to an interface's filter */
+ if (hi->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_MAC_FILTER)
{
- clib_error_free (error);
- lldp_delete_intf (lm, n);
- return lldp_internal_error;
+ error =
+ vnet_hw_interface_add_del_mac_address (lm->vnet_main,
+ hw_if_index,
+ lldp_mac_addr,
+ 1 /* is_add */ );
+ if (error)
+ {
+ clib_error_free (error);
+ lldp_delete_intf (lm, n);
+ return lldp_internal_error;
+ }
}
const vnet_sw_interface_t *sw =
@@ -124,10 +129,12 @@ lldp_cfg_intf_set (u32 hw_if_index, u8 ** port_desc, u8 ** mgmt_ip4,
{
lldp_intf_t *n = lldp_get_intf (lm, hi->sw_if_index);
lldp_delete_intf (lm, n);
- if (n)
+ /* Remove MAC address from the interface's filter */
+ if ((n) && (hi->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_MAC_FILTER))
{
error =
- vnet_hw_interface_add_del_mac_address (lm->vnet_main, hw_if_index,
+ vnet_hw_interface_add_del_mac_address (lm->vnet_main,
+ hw_if_index,
lldp_mac_addr,
0 /* is_add */ );
if (error)