Skip to content

Commit 9d6ac4f

Browse files
authored
Merge pull request #12562 from opensourcerouting/fix/add_frrtrace_points_for_peer_lock_unlock
bgpd: A bit more tracepoints for lttng
2 parents 7430278 + eb47318 commit 9d6ac4f

File tree

4 files changed

+82
-2
lines changed

4 files changed

+82
-2
lines changed

bgpd/bgp_route.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,10 @@ struct bgp_path_info_extra *bgp_path_info_extra_get(struct bgp_path_info *pi)
277277
}
278278

279279
/* Free bgp route information. */
280-
static void bgp_path_info_free(struct bgp_path_info *path)
280+
void bgp_path_info_free_with_caller(const char *name,
281+
struct bgp_path_info *path)
281282
{
283+
frrtrace(2, frr_bgp, bgp_path_info_free, path, name);
282284
bgp_attr_unintern(&path->attr);
283285

284286
bgp_unlink_nexthop(path);
@@ -389,8 +391,10 @@ static int bgp_dest_set_defer_flag(struct bgp_dest *dest, bool delete)
389391
return -1;
390392
}
391393

392-
void bgp_path_info_add(struct bgp_dest *dest, struct bgp_path_info *pi)
394+
void bgp_path_info_add_with_caller(const char *name, struct bgp_dest *dest,
395+
struct bgp_path_info *pi)
393396
{
397+
frrtrace(2, frr_bgp, bgp_path_info_add, dest, pi, name);
394398
struct bgp_path_info *top;
395399

396400
top = bgp_dest_get_bgp_path_info(dest);

bgpd/bgp_route.h

+8
Original file line numberDiff line numberDiff line change
@@ -883,4 +883,12 @@ bgp_path_selection_reason2str(enum bgp_path_selection_reason reason);
883883
extern bool bgp_addpath_encode_rx(struct peer *peer, afi_t afi, safi_t safi);
884884
extern const struct prefix_rd *bgp_rd_from_dest(const struct bgp_dest *dest,
885885
safi_t safi);
886+
extern void bgp_path_info_free_with_caller(const char *caller,
887+
struct bgp_path_info *path);
888+
extern void bgp_path_info_add_with_caller(const char *caller,
889+
struct bgp_dest *dest,
890+
struct bgp_path_info *pi);
891+
#define bgp_path_info_add(A, B) \
892+
bgp_path_info_add_with_caller(__func__, (A), (B))
893+
#define bgp_path_info_free(B) bgp_path_info_free_with_caller(__func__, (B))
886894
#endif /* _QUAGGA_BGP_ROUTE_H */

bgpd/bgp_trace.h

+65
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,71 @@ TRACEPOINT_EVENT(
247247
)
248248
TRACEPOINT_LOGLEVEL(frr_bgp, bgp_dest_unlock, TRACE_INFO)
249249

250+
/*
251+
* peer_lock/peer_unlock
252+
*/
253+
TRACEPOINT_EVENT(
254+
frr_bgp,
255+
bgp_peer_lock,
256+
TP_ARGS(struct peer *, peer,
257+
const char *, name),
258+
TP_FIELDS(
259+
ctf_string(caller, name)
260+
ctf_string(peer, PEER_HOSTNAME(peer))
261+
ctf_integer(unsigned int, count, peer->lock)
262+
)
263+
)
264+
TRACEPOINT_LOGLEVEL(frr_bgp, bgp_peer_lock, TRACE_INFO)
265+
266+
TRACEPOINT_EVENT(
267+
frr_bgp,
268+
bgp_peer_unlock,
269+
TP_ARGS(struct peer *, peer,
270+
const char *, name),
271+
TP_FIELDS(
272+
ctf_string(caller, name)
273+
ctf_string(peer, PEER_HOSTNAME(peer))
274+
ctf_integer(unsigned int, count, peer->lock)
275+
)
276+
)
277+
TRACEPOINT_LOGLEVEL(frr_bgp, bgp_peer_unlock, TRACE_INFO)
278+
279+
/*
280+
* bgp_path_info_add/bgp_path_info_free
281+
*/
282+
TRACEPOINT_EVENT(
283+
frr_bgp,
284+
bgp_path_info_add,
285+
TP_ARGS(struct bgp_dest *, dest,
286+
struct bgp_path_info *, bpi,
287+
const char *, name),
288+
TP_FIELDS(
289+
ctf_string(caller, name)
290+
ctf_string(prefix, bgp_dest_get_prefix_str(dest))
291+
ctf_string(peer, PEER_HOSTNAME(bpi->peer))
292+
ctf_integer(unsigned int, dest_lock,
293+
bgp_dest_get_lock_count(dest))
294+
ctf_integer(unsigned int, peer_lock, bpi->peer->lock)
295+
)
296+
)
297+
TRACEPOINT_LOGLEVEL(frr_bgp, bgp_path_info_add, TRACE_INFO)
298+
299+
TRACEPOINT_EVENT(
300+
frr_bgp,
301+
bgp_path_info_free,
302+
TP_ARGS(struct bgp_path_info *, bpi,
303+
const char *, name),
304+
TP_FIELDS(
305+
ctf_string(caller, name)
306+
ctf_string(prefix, bgp_dest_get_prefix_str(bpi->net))
307+
ctf_string(peer, PEER_HOSTNAME(bpi->peer))
308+
ctf_integer(unsigned int, dest_lock,
309+
bgp_dest_get_lock_count(bpi->net))
310+
ctf_integer(unsigned int, peer_lock, bpi->peer->lock)
311+
)
312+
)
313+
TRACEPOINT_LOGLEVEL(frr_bgp, bgp_path_info_free, TRACE_INFO)
314+
250315
TRACEPOINT_EVENT(
251316
frr_bgp,
252317
evpn_mac_ip_zsend,

bgpd/bgpd.c

+3
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
#include "bgpd/bgp_evpn_mh.h"
9494
#include "bgpd/bgp_mac.h"
9595
#include "bgpd/bgp_orr.h"
96+
#include "bgp_trace.h"
9697

9798
DEFINE_MTYPE_STATIC(BGPD, PEER_TX_SHUTDOWN_MSG, "Peer shutdown message (TX)");
9899
DEFINE_MTYPE_STATIC(BGPD, BGP_EVPN_INFO, "BGP EVPN instance information");
@@ -1194,6 +1195,7 @@ static void peer_free(struct peer *peer)
11941195
/* increase reference count on a struct peer */
11951196
struct peer *peer_lock_with_caller(const char *name, struct peer *peer)
11961197
{
1198+
frrtrace(2, frr_bgp, bgp_peer_lock, peer, name);
11971199
assert(peer && (peer->lock >= 0));
11981200

11991201
peer->lock++;
@@ -1206,6 +1208,7 @@ struct peer *peer_lock_with_caller(const char *name, struct peer *peer)
12061208
*/
12071209
struct peer *peer_unlock_with_caller(const char *name, struct peer *peer)
12081210
{
1211+
frrtrace(2, frr_bgp, bgp_peer_unlock, peer, name);
12091212
assert(peer && (peer->lock > 0));
12101213

12111214
peer->lock--;

0 commit comments

Comments
 (0)