Sync interface state from VPP to LCP
This is the first in a series of functions that aims to copy forward interface changes in the VPP dataplane into the linux interfaces. Capture link state changes (set interface state ...) and apply them to Linux. There's an important dissonance here: - When Linux sets a parent interface up, all children also go up. ip link set enp66s0f1 down ip link add link enp66s0f1 name foo type vlan id 1234 ip link set foo down ip link | grep enp66s0f1 9: enp66s0f1: <BROADCAST,MULTICAST> mtu 9000 qdisc mq state DOWN mode DEFAULT group default qlen 1000 61: foo@enp66s0f1: <BROADCAST,MULTICAST,M-DOWN> mtu 9000 qdisc noop state DOWN mode DEFAULT group default qlen 1000 ip link set enp66s0f1 up ip link | grep s0f1 9: enp66s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000 61: foo@enp66s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP mode DEFAULT group default qlen 1000 While in VPP this is not so, there each individual interface and sub-interface stands for itself. I think the proper fix here is to walk all sub-interfaces when a phy changes, and force a sync of those from VPP to LCP as well. I'll do that in a followup commit so it's easier to roll back.
This commit is contained in:
@ -21,6 +21,18 @@
|
||||
|
||||
#include <plugins/lcpng/lcpng.h>
|
||||
|
||||
extern vlib_log_class_t lcp_itf_pair_logger;
|
||||
|
||||
#define LCP_ITF_PAIR_DBG(...) \
|
||||
vlib_log_notice (lcp_itf_pair_logger, __VA_ARGS__);
|
||||
|
||||
#define LCP_ITF_PAIR_INFO(...) \
|
||||
vlib_log_notice (lcp_itf_pair_logger, __VA_ARGS__);
|
||||
|
||||
#define LCP_ITF_PAIR_ERR(...) \
|
||||
vlib_log_err (lcp_itf_pair_logger, __VA_ARGS__);
|
||||
|
||||
|
||||
#define foreach_lcp_itf_pair_flag _ (STALE, 0, "stale")
|
||||
|
||||
typedef enum lip_flag_t_
|
||||
@ -154,6 +166,10 @@ typedef struct lcp_itf_pair_vft
|
||||
} lcp_itf_pair_vft_t;
|
||||
|
||||
void lcp_itf_pair_register_vft (lcp_itf_pair_vft_t *lcp_itf_vft);
|
||||
|
||||
/* Set TAP and Linux host link state */
|
||||
void lcp_itf_set_link_state (const lcp_itf_pair_t *lip, u8 state);
|
||||
|
||||
/*
|
||||
* fd.io coding-style-patch-verification: ON
|
||||
*
|
||||
|
Reference in New Issue
Block a user