From: Matthew Smith Date: Fri, 19 Aug 2022 19:54:40 +0000 (+0000) Subject: linux-cp: handle AF_BRIDGE neighbors X-Git-Tag: v23.02-rc0~75 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=9cd37fb28ce03b22a741e2be31250790b11182e0;p=vpp.git 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 --- 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))) {