From 3bad8b62d87513c5f4004c3172551c8785c78e65 Mon Sep 17 00:00:00 2001 From: Stanislav Zaikin Date: Mon, 25 Apr 2022 19:11:36 +0200 Subject: linux-cp: sync addr and neigh only for lcp interfaces Type: fix Signed-off-by: Stanislav Zaikin Change-Id: I792467b73449074e59c4232b1f82d134c399624c --- src/plugins/linux-cp/lcp_router.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/linux-cp/lcp_router.c b/src/plugins/linux-cp/lcp_router.c index af01b54d52f..acf0a034be0 100644 --- a/src/plugins/linux-cp/lcp_router.c +++ b/src/plugins/linux-cp/lcp_router.c @@ -662,10 +662,25 @@ lcp_router_link_addr_add (struct rtnl_addr *la) lcp_router_link_addr_add_del (la, 0); } +static walk_rc_t +lcp_router_address_mark (index_t index, void *ctx) +{ + vnet_main_t *vnm = vnet_get_main (); + + lcp_itf_pair_t *lip = lcp_itf_pair_get (index); + if (!lip) + return WALK_CONTINUE; + + ip_interface_address_mark_one_interface ( + vnm, vnet_get_sw_interface (vnm, lip->lip_phy_sw_if_index), 0); + + return WALK_CONTINUE; +} + static void lcp_router_link_addr_sync_begin (void) { - ip_interface_address_mark (); + lcp_itf_pair_walk (lcp_router_address_mark, 0); LCP_ROUTER_INFO ("Begin synchronization of interface addresses"); } @@ -795,11 +810,23 @@ lcp_router_neigh_add (struct rtnl_neigh *rn) rtnl_neigh_get_ifindex (rn)); } +static walk_rc_t +lcp_router_neighbor_mark (index_t index, void *ctx) +{ + lcp_itf_pair_t *lip = lcp_itf_pair_get (index); + if (!lip) + return WALK_CONTINUE; + + ip_neighbor_walk (AF_IP4, lip->lip_phy_sw_if_index, ip_neighbor_mark_one, 0); + ip_neighbor_walk (AF_IP6, lip->lip_phy_sw_if_index, ip_neighbor_mark_one, 0); + + return WALK_CONTINUE; +} + static void lcp_router_neigh_sync_begin (void) { - ip_neighbor_mark (AF_IP4); - ip_neighbor_mark (AF_IP6); + lcp_itf_pair_walk (lcp_router_neighbor_mark, 0); LCP_ROUTER_INFO ("Begin synchronization of neighbors"); } -- cgit 1.2.3-korg