vrf_id_to_name(bgp_vrf->vrf_id), evp, &attr.rmac,
&attr.nexthop);
+ frrtrace(4, frr_bgp, evpn_advertise_type5, bgp_vrf->vrf_id, evp,
+ &attr.rmac, attr.nexthop);
+
attr.mp_nexthop_len = BGP_ATTR_NHLEN_IPV4;
if (src_afi == AFI_IP6 &&
if (!dest)
return 0;
+ frrtrace(2, frr_bgp, evpn_withdraw_type5, bgp_vrf->vrf_id, evp);
+
delete_evpn_route_entry(bgp_evpn, afi, safi, dest, &pi);
if (pi)
bgp_process(bgp_evpn, dest, afi, safi);
? "esr"
: (vpn ? "ead-evi" : "ead-es"),
&attr->mp_nexthop_global_in);
+
+ frrtrace(4, frr_bgp, evpn_mh_local_ead_es_evi_route_upd,
+ &es->esi, (vpn ? vpn->vni : 0), evp->prefix.route_type,
+ attr->mp_nexthop_global_in);
}
/* Return back the route entry. */
: (vpn ? "ead-evi" : "ead-es"),
&es->originator_ip);
+ frrtrace(4, frr_bgp, evpn_mh_local_ead_es_evi_route_del, &es->esi,
+ (vpn ? vpn->vni : 0), p->prefix.route_type, es->originator_ip);
/* Next, locate route node in the global EVPN routing table.
* Note that this table is a 2-level tree (RD-level + Prefix-level)
*/
evi_vtep->es_evi->vpn->vni, &evi_vtep->vtep_ip,
ead_es ? "ead_es" : "ead_evi");
+ frrtrace(4, frr_bgp, evpn_mh_es_evi_vtep_add,
+ &evi_vtep->es_evi->es->esi, evi_vtep->es_evi->vpn->vni,
+ evi_vtep->vtep_ip, ead_es);
+
if (ead_es)
SET_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_EAD_PER_ES);
else
evi_vtep->es_evi->vpn->vni, &evi_vtep->vtep_ip,
ead_es ? "ead_es" : "ead_evi");
+ frrtrace(4, frr_bgp, evpn_mh_es_evi_vtep_del,
+ &evi_vtep->es_evi->es->esi, evi_vtep->es_evi->vpn->vni,
+ evi_vtep->vtep_ip, ead_es);
+
if (ead_es)
UNSET_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_EAD_PER_ES);
else
)
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_es_evi_del_zrecv, TRACE_INFO)
+TRACEPOINT_EVENT(
+ frr_bgp,
+ evpn_mh_es_evi_vtep_add,
+ TP_ARGS(esi_t *, esi, vni_t, vni, struct in_addr, vtep,
+ uint8_t, ead_es),
+ TP_FIELDS(
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ ctf_integer(vni_t, vni, vni)
+ ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
+ ctf_integer(uint8_t, ead_es, ead_es)
+ )
+)
+TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_es_evi_vtep_add, TRACE_INFO)
+
+TRACEPOINT_EVENT(
+ frr_bgp,
+ evpn_mh_es_evi_vtep_del,
+ TP_ARGS(esi_t *, esi, vni_t, vni, struct in_addr, vtep,
+ uint8_t, ead_es),
+ TP_FIELDS(
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ ctf_integer(vni_t, vni, vni)
+ ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
+ ctf_integer(uint8_t, ead_es, ead_es)
+ )
+)
+TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_es_evi_vtep_del, TRACE_INFO)
+
+TRACEPOINT_EVENT(
+ frr_bgp,
+ evpn_mh_local_ead_es_evi_route_upd,
+ TP_ARGS(esi_t *, esi, vni_t, vni,
+ uint8_t, route_type,
+ struct in_addr, vtep),
+ TP_FIELDS(
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ ctf_integer(vni_t, vni, vni)
+ ctf_integer(uint8_t, route_type, route_type)
+ ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
+ )
+)
+TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_ead_es_evi_route_upd, TRACE_INFO)
+
+TRACEPOINT_EVENT(
+ frr_bgp,
+ evpn_mh_local_ead_es_evi_route_del,
+ TP_ARGS(esi_t *, esi, vni_t, vni,
+ uint8_t, route_type,
+ struct in_addr, vtep),
+ TP_FIELDS(
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ ctf_integer(vni_t, vni, vni)
+ ctf_integer(uint8_t, route_type, route_type)
+ ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
+ )
+)
+TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_ead_es_evi_route_del, TRACE_INFO)
+
TRACEPOINT_EVENT(
frr_bgp,
evpn_local_vni_add_zrecv,
)
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_macip_del_zrecv, TRACE_INFO)
+TRACEPOINT_EVENT(
+ frr_bgp,
+ evpn_advertise_type5,
+ TP_ARGS(vrf_id_t, vrf, const struct prefix_evpn *, pfx,
+ struct ethaddr *, rmac, struct in_addr, vtep),
+ TP_FIELDS(
+ ctf_integer(int, vrf_id, vrf)
+ ctf_array(unsigned char, ip, &pfx->prefix.prefix_addr.ip,
+ sizeof(struct ipaddr))
+ ctf_array(unsigned char, rmac, rmac,
+ sizeof(struct ethaddr))
+ ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
+ )
+)
+TRACEPOINT_LOGLEVEL(frr_bgp, evpn_advertise_type5, TRACE_INFO)
+
+TRACEPOINT_EVENT(
+ frr_bgp,
+ evpn_withdraw_type5,
+ TP_ARGS(vrf_id_t, vrf, const struct prefix_evpn *, pfx),
+ TP_FIELDS(
+ ctf_integer(int, vrf_id, vrf)
+ ctf_array(unsigned char, ip, &pfx->prefix.prefix_addr.ip,
+ sizeof(struct ipaddr))
+ )
+)
+TRACEPOINT_LOGLEVEL(frr_bgp, evpn_withdraw_type5, TRACE_INFO)
+
TRACEPOINT_EVENT(
frr_bgp,
evpn_local_l3vni_add_zrecv,
parse_event(event, field_parsers)
+def parse_frr_bgp_evpn_mh_es_evi_vtep_add(event):
+ """
+ bgp evpn remote ead evi remote vtep add; raw format -
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ """
+ field_parsers = {"esi": print_esi,
+ "vtep": print_net_ipv4_addr}
+
+ parse_event(event, field_parsers)
+
+def parse_frr_bgp_evpn_mh_es_evi_vtep_del(event):
+ """
+ bgp evpn remote ead evi remote vtep del; raw format -
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ """
+ field_parsers = {"esi": print_esi,
+ "vtep": print_net_ipv4_addr}
+
+ parse_event(event, field_parsers)
+
+def parse_frr_bgp_evpn_mh_local_ead_es_evi_route_upd(event):
+ """
+ bgp evpn local ead evi vtep; raw format -
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ """
+ field_parsers = {"esi": print_esi,
+ "vtep": print_net_ipv4_addr}
+
+ parse_event(event, field_parsers)
+
+def parse_frr_bgp_evpn_mh_local_ead_es_evi_route_del(event):
+ """
+ bgp evpn local ead evi vtep del; raw format -
+ ctf_array(unsigned char, esi, esi, sizeof(esi_t))
+ """
+ field_parsers = {"esi": print_esi,
+ "vtep": print_net_ipv4_addr}
+
+ parse_event(event, field_parsers)
+
def parse_frr_bgp_evpn_local_vni_add_zrecv(event):
"""
bgp evpn local-vni parser; raw format -
parse_event(event, field_parsers)
+def parse_frr_bgp_evpn_advertise_type5(event):
+ """
+ local originated type-5 route
+ """
+ field_parsers = {"ip": print_ip_addr,
+ "rmac": print_mac,
+ "vtep": print_net_ipv4_addr}
+
+ parse_event(event, field_parsers)
+
+def parse_frr_bgp_evpn_withdraw_type5(event):
+ """
+ local originated type-5 route withdraw
+ """
+ field_parsers = {"ip": print_ip_addr}
+
+ parse_event(event, field_parsers)
+
############################ evpn parsers - end *#############################
def main():
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_mh_es_evi_vtep_add":
+ parse_frr_bgp_evpn_mh_es_evi_vtep_add,
+ "frr_bgp:evpn_mh_es_evi_vtep_del":
+ parse_frr_bgp_evpn_mh_es_evi_vtep_del,
+ "frr_bgp:evpn_mh_local_ead_es_evi_route_upd":
+ parse_frr_bgp_evpn_mh_local_ead_es_evi_route_upd,
+ "frr_bgp:evpn_mh_local_ead_es_evi_route_del":
+ parse_frr_bgp_evpn_mh_local_ead_es_evi_route_del,
"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_macip_add_zrecv,
"frr_bgp:evpn_local_macip_del_zrecv":
parse_frr_bgp_evpn_local_macip_del_zrecv,
+ "frr_bgp:evpn_advertise_type5":
+ parse_frr_bgp_evpn_advertise_type5,
+ "frr_bgp:evpn_withdraw_type5":
+ parse_frr_bgp_evpn_withdraw_type5,
}
# get the trace path from the first command line argument