Type: improvement
Change-Id: I4f2dc4e4c1c467fb9acd0fed231c56fcd54c8da9
Signed-off-by: Klement Sekera <ksekera@cisco.com>
lldp_ok,
lldp_not_supported,
lldp_invalid_arg,
lldp_ok,
lldp_not_supported,
lldp_invalid_arg,
} lldp_cfg_err_t;
lldp_cfg_err_t lldp_cfg_intf_set (u32 hw_if_index, u8 ** port_desc,
u8 **mgmt_ip4, u8 **mgmt_ip6, u8 **mgmt_oid, int enable);
lldp_cfg_err_t lldp_cfg_set (u8 ** host, int hold_time, int tx_interval);
} lldp_cfg_err_t;
lldp_cfg_err_t lldp_cfg_intf_set (u32 hw_if_index, u8 ** port_desc,
u8 **mgmt_ip4, u8 **mgmt_ip6, u8 **mgmt_oid, int enable);
lldp_cfg_err_t lldp_cfg_set (u8 ** host, int hold_time, int tx_interval);
+extern const u8 lldp_mac_addr[6];
#endif /* __included_lldp_h__ */
#endif /* __included_lldp_h__ */
return clib_error_return (0, "not supported");
case lldp_invalid_arg:
return clib_error_return (0, "invalid argument");
return clib_error_return (0, "not supported");
case lldp_invalid_arg:
return clib_error_return (0, "invalid argument");
+ case lldp_internal_error:
+ return clib_error_return (0, "internal error");
+ if (!vnet_hw_interface_add_del_mac_address (lm->vnet_main, hw_if_index,
+ lldp_mac_addr,
+ 1 /* is_add */ ))
+ {
+ return lldp_internal_error;
+ }
+
const vnet_sw_interface_t *sw =
vnet_get_sw_interface (lm->vnet_main, hi->sw_if_index);
if (sw->flags & (VNET_SW_INTERFACE_FLAG_ADMIN_UP))
const vnet_sw_interface_t *sw =
vnet_get_sw_interface (lm->vnet_main, hi->sw_if_index);
if (sw->flags & (VNET_SW_INTERFACE_FLAG_ADMIN_UP))
{
lldp_intf_t *n = lldp_get_intf (lm, hi->sw_if_index);
lldp_delete_intf (lm, n);
{
lldp_intf_t *n = lldp_get_intf (lm, hi->sw_if_index);
lldp_delete_intf (lm, n);
+ if (n)
+ {
+ vnet_hw_interface_add_del_mac_address (lm->vnet_main, hw_if_index,
+ lldp_mac_addr,
+ 0 /* is_add */ );
+ }
+
+/* 01:80:C2:00:00:0E - propagation constrained to a single
+ * physical link - stopped by all type of bridge */
+const u8 lldp_mac_addr[6] = { 0x01, 0x80, 0xC3, 0x00, 0x00, 0x0E };
+
static clib_error_t *
lldp_template_init (vlib_main_t * vm)
{
static clib_error_t *
lldp_template_init (vlib_main_t * vm)
{
clib_memset (&h, 0, sizeof (h));
clib_memset (&h, 0, sizeof (h));
- /*
- * Send to 01:80:C2:00:00:0E - propagation constrained to a single
- * physical link - stopped by all type of bridge
- */
- h.dst_address[0] = 0x01;
- h.dst_address[1] = 0x80;
- h.dst_address[2] = 0xC2;
- /* h.dst_address[3] = 0x00; (clib_memset) */
- /* h.dst_address[4] = 0x00; (clib_memset) */
- h.dst_address[5] = 0x0E;
+ h.dst_address[0] = lldp_mac_addr[0];
+ h.dst_address[1] = lldp_mac_addr[1];
+ h.dst_address[2] = lldp_mac_addr[2];
+ h.dst_address[3] = lldp_mac_addr[3];
+ h.dst_address[4] = lldp_mac_addr[4];
+ h.dst_address[5] = lldp_mac_addr[5];
/* leave src address blank (fill in at send time) */
/* leave src address blank (fill in at send time) */