From 9cd37fb28ce03b22a741e2be31250790b11182e0 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Fri, 19 Aug 2022 19:54:40 +0000 Subject: [PATCH] linux-cp: handle AF_BRIDGE neighbors Type: improvement VPP crashes when a linux-cp tap is added to a bridge on the host system because rtnl_neigh_get_dst() returns NULL for the neighbor message that is sent by the kernel. Check for NULL before trying to use the address from a neighbor in a netlink message. Signed-off-by: Matthew Smith Change-Id: I8a683d815a09620df9c0cc76e18df39828428e2c Signed-off-by: Matthew Smith --- src/plugins/linux-cp/lcp_router.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugins/linux-cp/lcp_router.c b/src/plugins/linux-cp/lcp_router.c index acf0a034be0..04a6ba05a89 100644 --- a/src/plugins/linux-cp/lcp_router.c +++ b/src/plugins/linux-cp/lcp_router.c @@ -710,8 +710,11 @@ lcp_router_neigh_del (struct rtnl_neigh *rn) { ip_address_t nh; int rv; + struct nl_addr *rna; - lcp_router_mk_addr (rtnl_neigh_get_dst (rn), &nh); + if ((rna = rtnl_neigh_get_dst (rn)) == NULL) + return; + lcp_router_mk_addr (rna, &nh); if (ip46_address_is_multicast (&ip_addr_46 (&nh))) { @@ -759,8 +762,11 @@ lcp_router_neigh_add (struct rtnl_neigh *rn) struct nl_addr *ll; ip_address_t nh; int state; + struct nl_addr *rna; - lcp_router_mk_addr (rtnl_neigh_get_dst (rn), &nh); + if ((rna = rtnl_neigh_get_dst (rn)) == NULL) + return; + lcp_router_mk_addr (rna, &nh); if (ip46_address_is_multicast (&ip_addr_46 (&nh))) { -- 2.16.6