]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: lttng tp add evpn route events 14917/head
authorChirag Shah <chirag@nvidia.com>
Thu, 7 Sep 2023 22:51:32 +0000 (15:51 -0700)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Thu, 30 Nov 2023 09:26:50 +0000 (09:26 +0000)
Ticket:#3597393
Testing Done:

2023-09-08T22:53:03.532 frr_bgp:evpn_withdraw_type5 {'vrf_id': 42, 'ip':
'53.1.1.0'}
2023-09-08T22:53:06.207 frr_bgp:evpn_advertise_type5 {'vrf_id': 42,
'ip': '53.1.1.0', 'rmac': '00:02:00:00:00:38', 'vtep': '27.0.0.15'}

2023-09-08T21:51:15.637 frr_bgp:evpn_mh_local_ead_es_evi_route_upd
{'esi': '03:44:38:39:ff:ff:01:00:00:03', 'vni': 1000, 'route_type': 1,
'vtep': '27.0.0.15'}

2023-09-08T20:45:17.059 frr_bgp:evpn_mh_local_ead_es_evi_route_del
{'esi': '03:44:38:39:ff:ff:01:00:00:01', 'vni': 0, 'route_type': 4,
'vtep': '27.0.0.15'}

2023-09-08T21:51:18.363 frr_bgp:evpn_mh_es_evi_vtep_add {'esi':
'03:44:38:39:ff:ff:01:00:00:02', 'vni': 1000, 'vtep': '27.0.0.16',
'ead_es': 1}

2023-09-08T20:43:50.206 frr_bgp:evpn_mh_es_evi_vtep_del {'esi':
'03:44:38:39:ff:ff:01:00:00:01', 'vni': 1002, 'vtep': '27.0.0.16',
'ead_es': 0}

Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit ac30911160c6dd5556dd42133760a0c60b897569)

bgpd/bgp_evpn.c
bgpd/bgp_evpn_mh.c
bgpd/bgp_trace.h
tools/frr_babeltrace.py

index 2193d4905b0e9f1682d646341ea2703df1a0b089..ce044de8e5d65e6ade5e7422fa1e9ed52fb59695 100644 (file)
@@ -1671,6 +1671,9 @@ static int update_evpn_type5_route(struct bgp *bgp_vrf, struct prefix_evpn *evp,
                        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 &&
@@ -2313,6 +2316,8 @@ static int delete_evpn_type5_route(struct bgp *bgp_vrf, struct prefix_evpn *evp)
        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);
index ffb1b17ec7f7c0bb242b3c79a32d5bd4626db7ec..a71231090509d199ac8e425e63445698294ffde1 100644 (file)
@@ -441,6 +441,10 @@ int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
                                        ? "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. */
@@ -491,6 +495,8 @@ static int bgp_evpn_mh_route_delete(struct bgp *bgp, struct bgp_evpn_es *es,
                                : (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)
         */
@@ -3460,6 +3466,10 @@ static void bgp_evpn_es_evi_vtep_add(struct bgp *bgp,
                           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
@@ -3484,6 +3494,10 @@ static void bgp_evpn_es_evi_vtep_del(struct bgp *bgp,
                           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
index 964393a9f5d1d36eabb722f29bfe063a1ce4bdab..48f021c1a124ea196a23dacdacfcb8056736ab95 100644 (file)
@@ -434,6 +434,64 @@ TRACEPOINT_EVENT(
 )
 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,
@@ -494,6 +552,34 @@ TRACEPOINT_EVENT(
 )
 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,
index 4d974ad356f8c6eaf1153566190d40a72776a5ff..9832568b37369b97639767165835b134a9cc30ae 100755 (executable)
@@ -157,6 +157,46 @@ def parse_frr_bgp_evpn_mh_local_es_evi_del_zrecv(event):
 
     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 -
@@ -205,6 +245,24 @@ def parse_frr_bgp_evpn_local_macip_del_zrecv(event):
 
     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():
@@ -225,6 +283,14 @@ 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":
@@ -233,6 +299,10 @@ def main():
                      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