summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Stapp <mjs@cisco.com>2024-11-21 21:51:43 +0100
committerMark Stapp <mjs@cisco.com>2024-12-05 15:23:53 +0100
commitbea4aa7b5ec51d365ac121f3c125bd430ce8c19c (patch)
tree3a86912851a21a1ae8e527680e2c3140a8569101
parentzebra: remove unused dplane route api (diff)
downloadfrr-bea4aa7b5ec51d365ac121f3c125bd430ce8c19c.tar.xz
frr-bea4aa7b5ec51d365ac121f3c125bd430ce8c19c.zip
zebra: remove thread-unsafe debugs from netlink route encode
The netlink route message encode function accessed and used zebra vrfs to produce debug output. That's not thread-safe, and that encode code needs to run in (at least) the dplane pthread and the FPM plugin pthread. Signed-off-by: Mark Stapp <mjs@cisco.com>
-rw-r--r--zebra/rt_netlink.c43
1 files changed, 16 insertions, 27 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index f88c70cc5..ed188ee6c 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -1857,13 +1857,10 @@ static bool _netlink_route_build_singlepath(const struct prefix *p,
{
char label_buf[256];
- struct vrf *vrf;
char addrstr[INET6_ADDRSTRLEN];
assert(nexthop);
- vrf = vrf_lookup_by_id(nexthop->vrf_id);
-
if (!_netlink_route_encode_label_info(nexthop, nlmsg, req_size, rtmsg,
label_buf, sizeof(label_buf)))
return false;
@@ -2024,10 +2021,10 @@ static bool _netlink_route_build_singlepath(const struct prefix *p,
}
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: 5549 (%s): %pFX nexthop via %s %s if %u vrf %s(%u)",
+ zlog_debug("%s: 5549 (%s): %pFX nexthop via %s %s if %u vrf %u",
__func__, routedesc, p, ipv4_ll_buf,
label_buf, nexthop->ifindex,
- VRF_LOGNAME(vrf), nexthop->vrf_id);
+ nexthop->vrf_id);
return true;
}
@@ -2050,10 +2047,9 @@ static bool _netlink_route_build_singlepath(const struct prefix *p,
if (IS_ZEBRA_DEBUG_KERNEL) {
inet_ntop(AF_INET, &nexthop->gate.ipv4, addrstr,
sizeof(addrstr));
- zlog_debug("%s: (%s): %pFX nexthop via %s %s if %u vrf %s(%u)",
+ zlog_debug("%s: (%s): %pFX nexthop via %s %s if %u vrf %u",
__func__, routedesc, p, addrstr, label_buf,
- nexthop->ifindex, VRF_LOGNAME(vrf),
- nexthop->vrf_id);
+ nexthop->ifindex, nexthop->vrf_id);
}
}
@@ -2074,10 +2070,9 @@ static bool _netlink_route_build_singlepath(const struct prefix *p,
if (IS_ZEBRA_DEBUG_KERNEL) {
inet_ntop(AF_INET6, &nexthop->gate.ipv6, addrstr,
sizeof(addrstr));
- zlog_debug("%s: (%s): %pFX nexthop via %s %s if %u vrf %s(%u)",
+ zlog_debug("%s: (%s): %pFX nexthop via %s %s if %u vrf %u",
__func__, routedesc, p, addrstr, label_buf,
- nexthop->ifindex, VRF_LOGNAME(vrf),
- nexthop->vrf_id);
+ nexthop->ifindex, nexthop->vrf_id);
}
}
@@ -2099,9 +2094,9 @@ static bool _netlink_route_build_singlepath(const struct prefix *p,
}
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: (%s): %pFX nexthop via if %u vrf %s(%u)",
+ zlog_debug("%s: (%s): %pFX nexthop via if %u vrf %u",
__func__, routedesc, p, nexthop->ifindex,
- VRF_LOGNAME(vrf), nexthop->vrf_id);
+ nexthop->vrf_id);
}
return true;
@@ -2185,7 +2180,6 @@ static bool _netlink_route_build_multipath(const struct prefix *p,
route_tag_t tag, bool fpm)
{
char label_buf[256];
- struct vrf *vrf;
struct rtnexthop *rtnh;
rtnh = nl_attr_rtnh(nlmsg, req_size);
@@ -2194,8 +2188,6 @@ static bool _netlink_route_build_multipath(const struct prefix *p,
assert(nexthop);
- vrf = vrf_lookup_by_id(nexthop->vrf_id);
-
if (!_netlink_route_encode_label_info(nexthop, nlmsg, req_size, rtmsg,
label_buf, sizeof(label_buf)))
return false;
@@ -2218,10 +2210,9 @@ static bool _netlink_route_build_multipath(const struct prefix *p,
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug(
- "%s: 5549 (%s): %pFX nexthop via %s %s if %u vrf %s(%u)",
+ "%s: 5549 (%s): %pFX nexthop via %s %s if %u vrf %u",
__func__, routedesc, p, ipv4_ll_buf, label_buf,
- nexthop->ifindex, VRF_LOGNAME(vrf),
- nexthop->vrf_id);
+ nexthop->ifindex, nexthop->vrf_id);
nl_attr_rtnh_end(nlmsg, rtnh);
return true;
}
@@ -2239,10 +2230,9 @@ static bool _netlink_route_build_multipath(const struct prefix *p,
*src = &nexthop->src;
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: (%s): %pFX nexthop via %pI4 %s if %u vrf %s(%u)",
+ zlog_debug("%s: (%s): %pFX nexthop via %pI4 %s if %u vrf %u",
__func__, routedesc, p, &nexthop->gate.ipv4,
- label_buf, nexthop->ifindex,
- VRF_LOGNAME(vrf), nexthop->vrf_id);
+ label_buf, nexthop->ifindex, nexthop->vrf_id);
}
if (nexthop->type == NEXTHOP_TYPE_IPV6
|| nexthop->type == NEXTHOP_TYPE_IPV6_IFINDEX) {
@@ -2257,10 +2247,9 @@ static bool _netlink_route_build_multipath(const struct prefix *p,
*src = &nexthop->src;
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: (%s): %pFX nexthop via %pI6 %s if %u vrf %s(%u)",
+ zlog_debug("%s: (%s): %pFX nexthop via %pI6 %s if %u vrf %u",
__func__, routedesc, p, &nexthop->gate.ipv6,
- label_buf, nexthop->ifindex,
- VRF_LOGNAME(vrf), nexthop->vrf_id);
+ label_buf, nexthop->ifindex, nexthop->vrf_id);
}
/*
@@ -2279,9 +2268,9 @@ static bool _netlink_route_build_multipath(const struct prefix *p,
*src = &nexthop->src;
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: (%s): %pFX nexthop via if %u vrf %s(%u)",
+ zlog_debug("%s: (%s): %pFX nexthop via if %u vrf %u",
__func__, routedesc, p, nexthop->ifindex,
- VRF_LOGNAME(vrf), nexthop->vrf_id);
+ nexthop->vrf_id);
}
if (nexthop->weight)