aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/linux-cp/lcp_router.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/linux-cp/lcp_router.c')
-rw-r--r--src/plugins/linux-cp/lcp_router.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/linux-cp/lcp_router.c b/src/plugins/linux-cp/lcp_router.c
index 6392e2a16f4..7542aa06614 100644
--- a/src/plugins/linux-cp/lcp_router.c
+++ b/src/plugins/linux-cp/lcp_router.c
@@ -557,6 +557,14 @@ lcp_router_neigh_del (struct rtnl_neigh *rn)
lcp_router_mk_addr (rtnl_neigh_get_dst (rn), &nh);
+ if (ip46_address_is_multicast (&ip_addr_46 (&nh)))
+ {
+ LCP_ROUTER_DBG ("ignore neighbor del: %U %U", format_ip_address, &nh,
+ format_vnet_sw_if_index_name, vnet_get_main (),
+ sw_if_index);
+ return;
+ }
+
rv = ip_neighbor_del (&nh, sw_if_index);
if (rv)
@@ -597,6 +605,15 @@ lcp_router_neigh_add (struct rtnl_neigh *rn)
int state;
lcp_router_mk_addr (rtnl_neigh_get_dst (rn), &nh);
+
+ if (ip46_address_is_multicast (&ip_addr_46 (&nh)))
+ {
+ LCP_ROUTER_DBG ("ignore neighbor add: %U %U", format_ip_address, &nh,
+ format_vnet_sw_if_index_name, vnet_get_main (),
+ sw_if_index);
+ return;
+ }
+
ll = rtnl_neigh_get_lladdr (rn);
state = rtnl_neigh_get_state (rn);