#include "bgpd/bgp_errors.h" // for expanded error reference information
#include "bgpd/bgp_fsm.h" // for BGP_EVENT_ADD, bgp_event
#include "bgpd/bgp_packet.h" // for bgp_notify_send_with_data, bgp_notify...
-#include "bgpd/bgp_trace.h" // for tracepoints
+#include "bgpd/bgp_trace.h" // for frrtraces
#include "bgpd/bgpd.h" // for peer, BGP_MARKER_SIZE, bgp_master, bm
/* clang-format on */
stream_set_endp(pkt, pktsize);
frr_with_mutex(&peer->io_mtx) {
- tracepoint(frr_bgp, packet_read, peer, pkt);
+ frrtrace(2, frr_bgp, packet_read, peer, pkt);
stream_fifo_push(peer->ibuf, pkt);
}
*/
switch (type) {
case BGP_MSG_OPEN:
- tracepoint(frr_bgp, open_process, peer, size);
+ frrtrace(2, frr_bgp, open_process, peer, size);
atomic_fetch_add_explicit(&peer->open_in, 1,
memory_order_relaxed);
mprc = bgp_open_receive(peer, size);
__func__, peer->host);
break;
case BGP_MSG_UPDATE:
- tracepoint(frr_bgp, update_process, peer, size);
+ frrtrace(2, frr_bgp, update_process, peer, size);
atomic_fetch_add_explicit(&peer->update_in, 1,
memory_order_relaxed);
peer->readtime = monotime(NULL);
__func__, peer->host);
break;
case BGP_MSG_NOTIFY:
- tracepoint(frr_bgp, notification_process, peer, size);
+ frrtrace(2, frr_bgp, notification_process, peer, size);
atomic_fetch_add_explicit(&peer->notify_in, 1,
memory_order_relaxed);
mprc = bgp_notify_receive(peer, size);
__func__, peer->host);
break;
case BGP_MSG_KEEPALIVE:
- tracepoint(frr_bgp, keepalive_process, peer, size);
+ frrtrace(2, frr_bgp, keepalive_process, peer, size);
peer->readtime = monotime(NULL);
atomic_fetch_add_explicit(&peer->keepalive_in, 1,
memory_order_relaxed);
break;
case BGP_MSG_ROUTE_REFRESH_NEW:
case BGP_MSG_ROUTE_REFRESH_OLD:
- tracepoint(frr_bgp, refresh_process, peer, size);
+ frrtrace(2, frr_bgp, refresh_process, peer, size);
atomic_fetch_add_explicit(&peer->refresh_in, 1,
memory_order_relaxed);
mprc = bgp_route_refresh_receive(peer, size);
__func__, peer->host);
break;
case BGP_MSG_CAPABILITY:
- tracepoint(frr_bgp, capability_process, peer, size);
+ frrtrace(2, frr_bgp, capability_process, peer, size);
atomic_fetch_add_explicit(&peer->dynamic_cap_in, 1,
memory_order_relaxed);
mprc = bgp_capability_receive(peer, size);
}
done:
- if (tracepoint_enabled(frr_bgp, input_filter)) {
+ if (frrtrace_enabled(frr_bgp, input_filter)) {
char pfxprint[PREFIX2STR_BUFFER];
prefix2str(p, pfxprint, sizeof(pfxprint));
- tracepoint(frr_bgp, input_filter, peer, pfxprint, afi, safi,
- ret == FILTER_PERMIT ? "permit" : "deny");
+ frrtrace(5, frr_bgp, input_filter, peer, pfxprint, afi, safi,
+ ret == FILTER_PERMIT ? "permit" : "deny");
}
return ret;
}
}
- if (tracepoint_enabled(frr_bgp, output_filter)) {
+ if (frrtrace_enabled(frr_bgp, output_filter)) {
char pfxprint[PREFIX2STR_BUFFER];
prefix2str(p, pfxprint, sizeof(pfxprint));
- tracepoint(frr_bgp, output_filter, peer, pfxprint, afi, safi,
- ret == FILTER_PERMIT ? "permit" : "deny");
+ frrtrace(5, frr_bgp, output_filter, peer, pfxprint, afi, safi,
+ ret == FILTER_PERMIT ? "permit" : "deny");
}
done:
uint8_t pi_type = 0;
uint8_t pi_sub_type = 0;
- if (tracepoint_enabled(frr_bgp, process_update)) {
+ if (frrtrace_enabled(frr_bgp, process_update)) {
char pfxprint[PREFIX2STR_BUFFER];
prefix2str(p, pfxprint, sizeof(pfxprint));
- tracepoint(frr_bgp, process_update, peer, pfxprint, addpath_id,
- afi, safi, attr);
+ frrtrace(6, frr_bgp, process_update, peer, pfxprint, addpath_id,
+ afi, safi, attr);
}
#ifdef ENABLE_BGP_VNC
#if !defined(_BGP_TRACE_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
#define _BGP_TRACE_H
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
+#include "lib/trace.h"
#ifdef HAVE_LTTNG
#include <lttng/tracepoint-event.h>
-#else /* HAVE_LTTNG */
-
-#define tracepoint(...)
-#define tracef(...)
-#define tracelog(...)
-#define tracepoint_enabled(...) true
-
#endif /* HAVE_LTTNG */
#endif /* _BGP_TRACE_H */
sigfillset(&blocksigs);
pthread_sigmask(SIG_BLOCK, &blocksigs, &oldsigs);
- tracepoint(frr_libfrr, frr_pthread_run, fpt->name);
+ frrtrace(1, frr_libfrr, frr_pthread_run, fpt->name);
fpt->rcu_thread = rcu_thread_prepare();
ret = pthread_create(&fpt->thread, attr, frr_pthread_inner, fpt);
int frr_pthread_stop(struct frr_pthread *fpt, void **result)
{
- tracepoint(frr_libfrr, frr_pthread_stop, fpt->name);
+ frrtrace(1, frr_libfrr, frr_pthread_stop, fpt->name);
int ret = (*fpt->attr.stop)(fpt, result);
memset(&fpt->thread, 0x00, sizeof(fpt->thread));
void *hash_get(struct hash *hash, void *data, void *(*alloc_func)(void *))
{
- tracepoint(frr_libfrr, hash_get, hash, data);
+ frrtrace(2, frr_libfrr, hash_get, hash, data);
unsigned int key;
unsigned int index;
hash->index[index] = bucket;
hash->count++;
- tracepoint(frr_libfrr, hash_insert, hash, data, key);
+ frrtrace(3, frr_libfrr, hash_insert, hash, data, key);
int oldlen = bucket->next ? bucket->next->len : 0;
int newlen = oldlen + 1;
pp = bucket;
}
- tracepoint(frr_libfrr, hash_release, hash, data, ret);
+ frrtrace(3, frr_libfrr, hash_release, hash, data, ret);
return ret;
}
#if !defined(_LIBFRR_TRACE_H_) || defined(TRACEPOINT_HEADER_MULTI_READ)
#define _LIBFRR_TRACE_H_
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
+#include "trace.h"
#ifdef HAVE_LTTNG
#include <lttng/tracepoint-event.h>
#include <lttng/tracelog.h>
-#else /* HAVE_LTTNG */
-
-#define tracepoint(...)
-#define tracef(...)
-#define tracelog(...)
-#define tracepoint_enabled(...) true
-
#endif /* HAVE_LTTNG */
-#endif /* _TRACE_H */
+#endif /* _LIBFRR_TRACE_H_ */
struct listnode *listnode_add(struct list *list, void *val)
{
- tracepoint(frr_libfrr, list_add, list, val);
+ frrtrace(2, frr_libfrr, list_add, list, val);
struct listnode *node;
void listnode_delete(struct list *list, const void *val)
{
- tracepoint(frr_libfrr, list_remove, list, val);
+ frrtrace(2, frr_libfrr, list_remove, list, val);
struct listnode *node = listnode_lookup(list, val);
void list_delete_node(struct list *list, struct listnode *node)
{
- tracepoint(frr_libfrr, list_delete_node, list, node);
+ frrtrace(2, frr_libfrr, list_delete_node, list, node);
if (node->prev)
node->prev->next = node->next;
void list_sort(struct list *list, int (*cmp)(const void **, const void **))
{
- tracepoint(frr_libfrr, list_sort, list);
+ frrtrace(1, frr_libfrr, list_sort, list);
struct listnode *ln, *nn;
int i = -1;
static inline void mt_count_free(struct memtype *mt, void *ptr)
{
- tracepoint(frr_libfrr, memfree, mt, ptr);
+ frrtrace(2, frr_libfrr, memfree, mt, ptr);
assert(mt->n_alloc);
atomic_fetch_sub_explicit(&mt->n_alloc, 1, memory_order_relaxed);
static inline void *mt_checkalloc(struct memtype *mt, void *ptr, size_t size)
{
- tracepoint(frr_libfrr, memalloc, mt, ptr, size);
+ frrtrace(3, frr_libfrr, memalloc, mt, ptr, size);
if (__builtin_expect(ptr == NULL, 0)) {
if (size) {
struct route_node *route_node_get(struct route_table *table,
union prefixconstptr pu)
{
- if (tracepoint_enabled(frr_libfrr, route_node_get)) {
+ if (frrtrace_enabled(frr_libfrr, route_node_get)) {
char buf[PREFIX2STR_BUFFER];
prefix2str(pu, buf, sizeof(buf));
- tracepoint(frr_libfrr, route_node_get, table, buf);
+ frrtrace(2, frr_libfrr, route_node_get, table, buf);
}
struct route_node search;
struct thread **thread_array;
if (dir == THREAD_READ)
- tracepoint(frr_libfrr, schedule_read, m, funcname, schedfrom,
- fromln, t_ptr, fd, 0, arg, 0);
+ frrtrace(9, frr_libfrr, schedule_read, m, funcname, schedfrom,
+ fromln, t_ptr, fd, 0, arg, 0);
else
- tracepoint(frr_libfrr, schedule_write, m, funcname, schedfrom,
- fromln, t_ptr, fd, 0, arg, 0);
+ frrtrace(9, frr_libfrr, schedule_write, m, funcname, schedfrom,
+ fromln, t_ptr, fd, 0, arg, 0);
assert(fd >= 0 && fd < m->fd_limit);
frr_with_mutex(&m->mtx) {
assert(type == THREAD_TIMER);
assert(time_relative);
- tracepoint(frr_libfrr, schedule_timer, m, funcname, schedfrom, fromln,
- t_ptr, 0, 0, arg, (long)time_relative->tv_sec);
+ frrtrace(9, frr_libfrr, schedule_timer, m, funcname, schedfrom, fromln,
+ t_ptr, 0, 0, arg, (long)time_relative->tv_sec);
frr_with_mutex(&m->mtx) {
if (t_ptr && *t_ptr)
{
struct thread *thread = NULL;
- tracepoint(frr_libfrr, schedule_event, m, funcname, schedfrom, fromln,
- t_ptr, 0, val, arg, 0);
+ frrtrace(9, frr_libfrr, schedule_event, m, funcname, schedfrom, fromln,
+ t_ptr, 0, val, arg, 0);
assert(m != NULL);
{
struct thread_master *master = thread->master;
- tracepoint(frr_libfrr, thread_cancel, master, thread->funcname,
- thread->schedfrom, thread->schedfrom_line, NULL,
- thread->u.fd, thread->u.val, thread->arg,
- thread->u.sands.tv_sec);
+ frrtrace(9, frr_libfrr, thread_cancel, master, thread->funcname,
+ thread->schedfrom, thread->schedfrom_line, NULL, thread->u.fd,
+ thread->u.val, thread->arg, thread->u.sands.tv_sec);
assert(master->owner == pthread_self());
assert(!(thread && eventobj) && (thread || eventobj));
if (thread && *thread)
- tracepoint(frr_libfrr, thread_cancel_async, master,
- (*thread)->funcname, (*thread)->schedfrom,
- (*thread)->schedfrom_line, NULL, (*thread)->u.fd,
- (*thread)->u.val, (*thread)->arg,
- (*thread)->u.sands.tv_sec);
+ frrtrace(9, frr_libfrr, thread_cancel_async, master,
+ (*thread)->funcname, (*thread)->schedfrom,
+ (*thread)->schedfrom_line, NULL, (*thread)->u.fd,
+ (*thread)->u.val, (*thread)->arg,
+ (*thread)->u.sands.tv_sec);
else
- tracepoint(frr_libfrr, thread_cancel_async, master, NULL, NULL,
- 0, NULL, 0, 0, eventobj, 0);
+ frrtrace(9, frr_libfrr, thread_cancel_async, master, NULL, NULL,
+ 0, NULL, 0, 0, eventobj, 0);
assert(master->owner != pthread_self());
GETRUSAGE(&before);
thread->real = before.real;
- tracepoint(frr_libfrr, thread_call, thread->master, thread->funcname,
- thread->schedfrom, thread->schedfrom_line, NULL,
- thread->u.fd, thread->u.val, thread->arg,
- thread->u.sands.tv_sec);
+ frrtrace(9, frr_libfrr, thread_call, thread->master, thread->funcname,
+ thread->schedfrom, thread->schedfrom_line, NULL, thread->u.fd,
+ thread->u.val, thread->arg, thread->u.sands.tv_sec);
pthread_setspecific(thread_current, thread);
(*thread->func)(thread);
switch (prio) {
case LOG_ERR:
- tracelog(TRACE_ERR, msg);
+ frrtracelog(TRACE_ERR, msg);
break;
case LOG_WARNING:
- tracelog(TRACE_WARNING, msg);
+ frrtracelog(TRACE_WARNING, msg);
break;
case LOG_DEBUG:
- tracelog(TRACE_DEBUG, msg);
+ frrtracelog(TRACE_DEBUG, msg);
break;
case LOG_NOTICE:
- tracelog(TRACE_DEBUG, msg);
+ frrtracelog(TRACE_DEBUG, msg);
break;
case LOG_INFO:
default:
- tracelog(TRACE_INFO, msg);
+ frrtracelog(TRACE_INFO, msg);
break;
}