)
)
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>
#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;
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);
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;
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;
}
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);
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);
}
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)
&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)
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():
'''
'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]