Commit 329b61d16b for frr

commit 329b61d16bd4520e2b0e94f0cfb80fc50f6541c0
Author: Philippe Guibert <philippe.guibert@6wind.com>
Date:   Fri Oct 2 09:53:14 2026 +0200

    bgpd: improve leak update nexthop information

    Tell in log message whether the path attribute is srv6 or mpls.

    > Oct 02 09:46:45 pe1-vm bgpd[2503]: [RPMVR-23GWS] leak_update_nexthop_valid: 11:11::10:155/128 nexthop srv6 is valid (in VRF vrfA)

    Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>

diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c
index 390e2154a3..97aadf0aac 100644
--- a/bgpd/bgp_mplsvpn.c
+++ b/bgpd/bgp_mplsvpn.c
@@ -1157,6 +1157,7 @@ static bool leak_update_nexthop_valid(struct bgp *to_bgp, struct bgp_dest *bn,
 	struct bgp_table *table;
 	struct interface *ifp;
 	bool nh_valid;
+	char buff[10] = {};

 	bpi_ultimate = bgp_get_imported_bpi_ultimate(source_bpi);
 	table = bgp_dest_table(bpi_ultimate->net);
@@ -1225,10 +1226,17 @@ static bool leak_update_nexthop_valid(struct bgp *to_bgp, struct bgp_dest *bn,
 	    nh_valid)
 		nh_valid = is_pi_srv6_valid(bpi, bgp_nexthop, afi, safi);

-	if (debug)
-		zlog_debug("%s: %pFX nexthop is %svalid (in %s)", __func__, p,
+	if (debug) {
+		if (bgp_attr_get_srv6_l3service(bpi->attr) || bgp_attr_get_srv6_vpn(bpi->attr))
+			snprintfrr(buff, sizeof(buff), " srv6");
+		else if (!bgp_attr_get_srv6_l3service(bpi->attr) &&
+			 BGP_PATH_INFO_NUM_LABELS(bpi) == 1 &&
+			 decode_label(&bpi->extra->labels->label[0]) != MPLS_LABEL_NONE)
+			snprintfrr(buff, sizeof(buff), " mpls");
+
+		zlog_debug("%s: %pFX nexthop%s is %svalid (in %s)", __func__, p, buff,
 			   (nh_valid ? "" : "not "), bgp_nexthop->name_pretty);
-
+	}
 	return nh_valid;
 }