mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 10:22:07 +00:00
bgpd: lttng tracepoint for local events received from zebra
TPs - ===== root@ibm-2410a1-01:mgmt:~# lttng list --userspace |grep frr_bgp:evpn.*recv frr_bgp:evpn_local_l3vni_del_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_local_l3vni_add_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_local_macip_del_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_local_macip_add_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_local_vni_del_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_local_vni_add_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_mh_local_es_evi_del_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_mh_local_es_evi_add_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_mh_local_es_del_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) frr_bgp:evpn_mh_local_es_add_zrecv (loglevel: TRACE_INFO (6)) (type: tracepoint) root@ibm-2410a1-01:mgmt:~# Sample output - =============== 1. ES frr_bgp:evpn_mh_local_es_add_zrecv {'esi': '03:44:38:39:ff:ff:01:00:00:01', 'vtep': '27.0.0.15', 'active': 0, 'bypass': 0, 'df_pref': 50000} frr_bgp:evpn_mh_local_es_del_zrecv {'esi': '03:44:38:39:ff:ff:01:00:00:01'} 2. ES-EVI frr_bgp:evpn_mh_local_es_evi_add_zrecv {'esi': '03:44:38:39:ff:ff:01:00:00:01', 'vni': 1004} frr_bgp:evpn_mh_local_es_evi_del_zrecv {'esi': '03:44:38:39:ff:ff:01:00:00:01', 'vni': 1001} 3. L2-VNI frr_bgp:evpn_local_vni_add_zrecv {'vni': 1004, 'vtep': '27.0.0.15', 'mc_grp': '239.1.1.104', 'vrf': 97} 4. L3-VNI frr_bgp:evpn_local_l3vni_add_zrecv {'vni': 4001, 'vrf': 87, 'svi_rmac': '24:8a:07:cc:aa:5f', 'vrr_rmac': '24:8a:07:cc:aa:5f', 'vtep': '27.0.0.15', 'filter': 0, 'svi_ifindex': 95, 'anycast_mac': 'n' frr_bgp:evpn_local_l3vni_del_zrecv {'vni': 4003, 'vrf': 107} 5. MAC-IP frr_bgp:evpn_local_macip_add_zrecv {'vni': 1003, 'mac': '00:02:00:00:00:04', 'ip': 'fe80::202:ff:fe00:4', 'flags': 4, 'seq': 0, 'esi': '03:44:38:39:ff:ff:01:00:00:02'} frr_bgp:evpn_local_macip_del_zrecv {'vni': 1000, 'mac': '00:02:00:00:00:04', 'ip': '2001:fee1::4', 'state': 1} Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
This commit is contained in:
parent
1afa7d5326
commit
a383bfc7c9
141
bgpd/bgp_trace.h
141
bgpd/bgp_trace.h
@ -334,6 +334,147 @@ TRACEPOINT_EVENT(
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_nh_rmac_zsend, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_mh_local_es_add_zrecv,
|
||||
TP_ARGS(esi_t *, esi, struct in_addr, vtep,
|
||||
uint8_t, active, uint8_t, bypass, uint16_t, df_pref),
|
||||
TP_FIELDS(
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
|
||||
ctf_integer(uint8_t, active, active)
|
||||
ctf_integer(uint8_t, bypass, bypass)
|
||||
ctf_integer(uint16_t, df_pref, df_pref)
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_es_add_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_mh_local_es_del_zrecv,
|
||||
TP_ARGS(esi_t *, esi),
|
||||
TP_FIELDS(
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_es_del_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_mh_local_es_evi_add_zrecv,
|
||||
TP_ARGS(esi_t *, esi, vni_t, vni),
|
||||
TP_FIELDS(
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_es_evi_add_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_mh_local_es_evi_del_zrecv,
|
||||
TP_ARGS(esi_t *, esi, vni_t, vni),
|
||||
TP_FIELDS(
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_es_evi_del_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_local_vni_add_zrecv,
|
||||
TP_ARGS(vni_t, vni, struct in_addr, vtep, vrf_id_t, vrf,
|
||||
struct in_addr, mc_grp),
|
||||
TP_FIELDS(
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
|
||||
ctf_integer_network_hex(unsigned int, mc_grp,
|
||||
mc_grp.s_addr)
|
||||
ctf_integer(int, vrf, vrf)
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_vni_add_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_local_vni_del_zrecv,
|
||||
TP_ARGS(vni_t, vni),
|
||||
TP_FIELDS(
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_vni_del_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_local_macip_add_zrecv,
|
||||
TP_ARGS(vni_t, vni, struct ethaddr *, mac,
|
||||
struct ipaddr *, ip, uint32_t, flags,
|
||||
uint32_t, seqnum, esi_t *, esi),
|
||||
TP_FIELDS(
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
ctf_array(unsigned char, mac, mac,
|
||||
sizeof(struct ethaddr))
|
||||
ctf_array(unsigned char, ip, ip,
|
||||
sizeof(struct ipaddr))
|
||||
ctf_integer(uint32_t, flags, flags)
|
||||
ctf_integer(uint32_t, seq, seqnum)
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_macip_add_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_local_macip_del_zrecv,
|
||||
TP_ARGS(vni_t, vni, struct ethaddr *, mac, struct ipaddr *, ip,
|
||||
int, state),
|
||||
TP_FIELDS(
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
ctf_array(unsigned char, mac, mac,
|
||||
sizeof(struct ethaddr))
|
||||
ctf_array(unsigned char, ip, ip,
|
||||
sizeof(struct ipaddr))
|
||||
ctf_integer(int, state, state)
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_macip_del_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_local_l3vni_add_zrecv,
|
||||
TP_ARGS(vni_t, vni, vrf_id_t, vrf,
|
||||
struct ethaddr *, svi_rmac,
|
||||
struct ethaddr *, vrr_rmac, int, filter,
|
||||
struct in_addr, vtep, int, svi_ifindex,
|
||||
bool, anycast_mac),
|
||||
TP_FIELDS(
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
ctf_integer(int, vrf, vrf)
|
||||
ctf_array(unsigned char, svi_rmac, svi_rmac,
|
||||
sizeof(struct ethaddr))
|
||||
ctf_array(unsigned char, vrr_rmac, vrr_rmac,
|
||||
sizeof(struct ethaddr))
|
||||
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
|
||||
ctf_integer(int, filter, filter)
|
||||
ctf_integer(int, svi_ifindex, svi_ifindex)
|
||||
ctf_string(anycast_mac, anycast_mac ? "y" : "n")
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_l3vni_add_zrecv, TRACE_INFO)
|
||||
|
||||
TRACEPOINT_EVENT(
|
||||
frr_bgp,
|
||||
evpn_local_l3vni_del_zrecv,
|
||||
TP_ARGS(vni_t, vni, vrf_id_t, vrf),
|
||||
TP_FIELDS(
|
||||
ctf_integer(vni_t, vni, vni)
|
||||
ctf_integer(int, vrf, vrf)
|
||||
)
|
||||
)
|
||||
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_l3vni_del_zrecv, TRACE_INFO)
|
||||
/* clang-format on */
|
||||
|
||||
#include <lttng/tracepoint-event.h>
|
||||
|
@ -64,6 +64,7 @@
|
||||
#include "bgpd/bgp_evpn_private.h"
|
||||
#include "bgpd/bgp_evpn_mh.h"
|
||||
#include "bgpd/bgp_mac.h"
|
||||
#include "bgpd/bgp_trace.h"
|
||||
|
||||
/* All information about zebra. */
|
||||
struct zclient *zclient = NULL;
|
||||
@ -2773,6 +2774,9 @@ static int bgp_zebra_process_local_es_add(ZAPI_CALLBACK_ARGS)
|
||||
esi_to_str(&esi, buf, sizeof(buf)), &originator_ip,
|
||||
active, df_pref, bypass ? "bypass" : "");
|
||||
|
||||
frrtrace(5, frr_bgp, evpn_mh_local_es_add_zrecv, &esi, originator_ip,
|
||||
active, bypass, df_pref);
|
||||
|
||||
bgp_evpn_local_es_add(bgp, &esi, originator_ip, active, df_pref,
|
||||
!!bypass);
|
||||
|
||||
@ -2798,6 +2802,8 @@ static int bgp_zebra_process_local_es_del(ZAPI_CALLBACK_ARGS)
|
||||
zlog_debug("Rx del ESI %s",
|
||||
esi_to_str(&esi, buf, sizeof(buf)));
|
||||
|
||||
frrtrace(1, frr_bgp, evpn_mh_local_es_del_zrecv, &esi);
|
||||
|
||||
bgp_evpn_local_es_del(bgp, &esi);
|
||||
|
||||
return 0;
|
||||
@ -2824,10 +2830,15 @@ static int bgp_zebra_process_local_es_evi(ZAPI_CALLBACK_ARGS)
|
||||
ZEBRA_VNI_ADD ? "add" : "del",
|
||||
esi_to_str(&esi, buf, sizeof(buf)), vni);
|
||||
|
||||
if (cmd == ZEBRA_LOCAL_ES_EVI_ADD)
|
||||
if (cmd == ZEBRA_LOCAL_ES_EVI_ADD) {
|
||||
frrtrace(2, frr_bgp, evpn_mh_local_es_evi_add_zrecv, &esi, vni);
|
||||
|
||||
bgp_evpn_local_es_evi_add(bgp, &esi, vni);
|
||||
else
|
||||
} else {
|
||||
frrtrace(2, frr_bgp, evpn_mh_local_es_evi_del_zrecv, &esi, vni);
|
||||
|
||||
bgp_evpn_local_es_evi_del(bgp, &esi, vni);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -2862,6 +2873,10 @@ static int bgp_zebra_process_local_l3vni(ZAPI_CALLBACK_ARGS)
|
||||
filter ? "prefix-routes-only" : "none",
|
||||
svi_ifindex);
|
||||
|
||||
frrtrace(8, frr_bgp, evpn_local_l3vni_add_zrecv, l3vni, vrf_id,
|
||||
&svi_rmac, &vrr_rmac, filter, originator_ip,
|
||||
svi_ifindex, is_anycast_mac);
|
||||
|
||||
bgp_evpn_local_l3vni_add(l3vni, vrf_id, &svi_rmac, &vrr_rmac,
|
||||
originator_ip, filter, svi_ifindex,
|
||||
is_anycast_mac);
|
||||
@ -2870,6 +2885,8 @@ static int bgp_zebra_process_local_l3vni(ZAPI_CALLBACK_ARGS)
|
||||
zlog_debug("Rx L3-VNI DEL VRF %s VNI %u",
|
||||
vrf_id_to_name(vrf_id), l3vni);
|
||||
|
||||
frrtrace(2, frr_bgp, evpn_local_l3vni_del_zrecv, l3vni, vrf_id);
|
||||
|
||||
bgp_evpn_local_l3vni_del(l3vni, vrf_id);
|
||||
}
|
||||
|
||||
@ -2906,13 +2923,19 @@ static int bgp_zebra_process_local_vni(ZAPI_CALLBACK_ARGS)
|
||||
vrf_id_to_name(vrf_id), vni,
|
||||
vrf_id_to_name(tenant_vrf_id), svi_ifindex);
|
||||
|
||||
if (cmd == ZEBRA_VNI_ADD)
|
||||
if (cmd == ZEBRA_VNI_ADD) {
|
||||
frrtrace(4, frr_bgp, evpn_local_vni_add_zrecv, vni, vtep_ip,
|
||||
tenant_vrf_id, mcast_grp);
|
||||
|
||||
return bgp_evpn_local_vni_add(
|
||||
bgp, vni,
|
||||
vtep_ip.s_addr != INADDR_ANY ? vtep_ip : bgp->router_id,
|
||||
tenant_vrf_id, mcast_grp, svi_ifindex);
|
||||
else
|
||||
} else {
|
||||
frrtrace(1, frr_bgp, evpn_local_vni_del_zrecv, vni);
|
||||
|
||||
return bgp_evpn_local_vni_del(bgp, vni);
|
||||
}
|
||||
}
|
||||
|
||||
static int bgp_zebra_process_local_macip(ZAPI_CALLBACK_ARGS)
|
||||
@ -2968,11 +2991,18 @@ static int bgp_zebra_process_local_macip(ZAPI_CALLBACK_ARGS)
|
||||
&mac, &ip, vni, seqnum, state,
|
||||
esi_to_str(&esi, buf2, sizeof(buf2)));
|
||||
|
||||
if (cmd == ZEBRA_MACIP_ADD)
|
||||
if (cmd == ZEBRA_MACIP_ADD) {
|
||||
frrtrace(6, frr_bgp, evpn_local_macip_add_zrecv, vni, &mac, &ip,
|
||||
flags, seqnum, &esi);
|
||||
|
||||
return bgp_evpn_local_macip_add(bgp, vni, &mac, &ip,
|
||||
flags, seqnum, &esi);
|
||||
else
|
||||
} else {
|
||||
frrtrace(4, frr_bgp, evpn_local_macip_del_zrecv, vni, &mac, &ip,
|
||||
state);
|
||||
|
||||
return bgp_evpn_local_macip_del(bgp, vni, &mac, &ip, state);
|
||||
}
|
||||
}
|
||||
|
||||
static void bgp_zebra_process_local_ip_prefix(ZAPI_CALLBACK_ARGS)
|
||||
|
@ -132,7 +132,93 @@ def parse_frr_bgp_evpn_mh_nh_rmac_send(event):
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
############################ evpn parsers - end #############################
|
||||
def parse_frr_bgp_evpn_mh_local_es_add_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-es parser; raw format -
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
|
||||
'''
|
||||
field_parsers = {'esi': print_esi,
|
||||
'vtep': print_net_ipv4_addr}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
def parse_frr_bgp_evpn_mh_local_es_del_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-es parser; raw format -
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
'''
|
||||
field_parsers = {'esi': print_esi}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
def parse_frr_bgp_evpn_mh_local_es_evi_add_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-es-evi parser; raw format -
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
'''
|
||||
field_parsers = {'esi': print_esi}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
def parse_frr_bgp_evpn_mh_local_es_evi_del_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-es-evi parser; raw format -
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
'''
|
||||
field_parsers = {'esi': print_esi}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
def parse_frr_bgp_evpn_local_vni_add_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-vni parser; raw format -
|
||||
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
|
||||
ctf_integer_network_hex(unsigned int, mc_grp, mc_grp.s_addr)
|
||||
'''
|
||||
field_parsers = {'vtep': print_net_ipv4_addr,
|
||||
'mc_grp': print_net_ipv4_addr}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
def parse_frr_bgp_evpn_local_l3vni_add_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-l3vni parser; raw format -
|
||||
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
|
||||
ctf_array(unsigned char, svi_rmac, svi_rmac, sizeof(struct ethaddr))
|
||||
ctf_array(unsigned char, vrr_rmac, vrr_rmac, sizeof(struct ethaddr))
|
||||
'''
|
||||
field_parsers = {'vtep': print_net_ipv4_addr,
|
||||
'svi_rmac': print_mac,
|
||||
'vrr_rmac': print_mac}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
def parse_frr_bgp_evpn_local_macip_add_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-mac-ip parser; raw format -
|
||||
ctf_array(unsigned char, ip, ip, sizeof(struct ipaddr))
|
||||
ctf_array(unsigned char, mac, mac, sizeof(struct ethaddr))
|
||||
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
|
||||
'''
|
||||
field_parsers = {'ip': print_ip_addr,
|
||||
'mac': print_mac,
|
||||
'esi': print_esi}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
def parse_frr_bgp_evpn_local_macip_del_zrecv(event):
|
||||
'''
|
||||
bgp evpn local-mac-ip del parser; raw format -
|
||||
ctf_array(unsigned char, ip, ip, sizeof(struct ipaddr))
|
||||
ctf_array(unsigned char, mac, mac, sizeof(struct ethaddr))
|
||||
'''
|
||||
field_parsers = {'ip': print_ip_addr,
|
||||
'mac': print_mac}
|
||||
|
||||
parse_event(event, field_parsers)
|
||||
|
||||
############################ evpn parsers - end *#############################
|
||||
|
||||
def main():
|
||||
'''
|
||||
@ -143,7 +229,24 @@ def main():
|
||||
'frr_bgp:evpn_bum_vtep_zsend':
|
||||
parse_frr_bgp_evpn_bum_vtep_zsend,
|
||||
'frr_bgp:evpn_mh_nh_rmac_zsend':
|
||||
parse_frr_bgp_evpn_mh_nh_rmac_send}
|
||||
parse_frr_bgp_evpn_mh_nh_rmac_send,
|
||||
'frr_bgp:evpn_mh_local_es_add_zrecv':
|
||||
parse_frr_bgp_evpn_mh_local_es_add_zrecv,
|
||||
'frr_bgp:evpn_mh_local_es_del_zrecv':
|
||||
parse_frr_bgp_evpn_mh_local_es_del_zrecv,
|
||||
'frr_bgp:evpn_mh_local_es_evi_add_zrecv':
|
||||
parse_frr_bgp_evpn_mh_local_es_evi_add_zrecv,
|
||||
'frr_bgp:evpn_mh_local_es_evi_del_zrecv':
|
||||
parse_frr_bgp_evpn_mh_local_es_evi_del_zrecv,
|
||||
'frr_bgp:evpn_local_vni_add_zrecv':
|
||||
parse_frr_bgp_evpn_local_vni_add_zrecv,
|
||||
'frr_bgp:evpn_local_l3vni_add_zrecv':
|
||||
parse_frr_bgp_evpn_local_l3vni_add_zrecv,
|
||||
'frr_bgp:evpn_local_macip_add_zrecv':
|
||||
parse_frr_bgp_evpn_local_macip_add_zrecv,
|
||||
'frr_bgp:evpn_local_macip_del_zrecv':
|
||||
parse_frr_bgp_evpn_local_macip_del_zrecv,
|
||||
}
|
||||
|
||||
# get the trace path from the first command line argument
|
||||
trace_path = sys.argv[1]
|
||||
|
Loading…
Reference in New Issue
Block a user