lldp: allow to configure restricted interfaces
This improvement intended to allow sending of LLDP packets on an interface even if the interface cannot support programming an extra MAC address in order to receive LLDP messages from the attached link peer. vnet_hw_interface_add_del_mac_address function fails on some 'virtio' interfaces due to limitation to set MAC addresses. Type: improvement Change-Id: I636de148736a0797d1fd70c6ab14759ff8fa42be Signed-off-by: Dmitry Vakrhushev <dmitry@netgate.com>
This commit is contained in:

committed by
Matthew Smith

parent
91b364010c
commit
4a98cf9648
@ -102,15 +102,20 @@ lldp_cfg_intf_set (u32 hw_if_index, u8 ** port_desc, u8 ** mgmt_ip4,
|
|||||||
*mgmt_oid = NULL;
|
*mgmt_oid = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
error =
|
/* Add MAC address to an interface's filter */
|
||||||
vnet_hw_interface_add_del_mac_address (lm->vnet_main, hw_if_index,
|
if (hi->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_MAC_FILTER)
|
||||||
lldp_mac_addr,
|
|
||||||
1 /* is_add */ );
|
|
||||||
if (error)
|
|
||||||
{
|
{
|
||||||
clib_error_free (error);
|
error =
|
||||||
lldp_delete_intf (lm, n);
|
vnet_hw_interface_add_del_mac_address (lm->vnet_main,
|
||||||
return lldp_internal_error;
|
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 =
|
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_intf_t *n = lldp_get_intf (lm, hi->sw_if_index);
|
||||||
lldp_delete_intf (lm, n);
|
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 =
|
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,
|
lldp_mac_addr,
|
||||||
0 /* is_add */ );
|
0 /* is_add */ );
|
||||||
if (error)
|
if (error)
|
||||||
|
Reference in New Issue
Block a user