Skip to content

Commit ac30911

Browse files
committed
bgpd: lttng tp add evpn route events
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 <[email protected]>
1 parent 71d08ec commit ac30911

File tree

4 files changed

+175
-0
lines changed

4 files changed

+175
-0
lines changed

bgpd/bgp_evpn.c

+5
Original file line numberDiff line numberDiff line change
@@ -1671,6 +1671,9 @@ static int update_evpn_type5_route(struct bgp *bgp_vrf, struct prefix_evpn *evp,
16711671
vrf_id_to_name(bgp_vrf->vrf_id), evp, &attr.rmac,
16721672
&attr.nexthop);
16731673

1674+
frrtrace(4, frr_bgp, evpn_advertise_type5, bgp_vrf->vrf_id, evp,
1675+
&attr.rmac, attr.nexthop);
1676+
16741677
attr.mp_nexthop_len = BGP_ATTR_NHLEN_IPV4;
16751678

16761679
if (src_afi == AFI_IP6 &&
@@ -2313,6 +2316,8 @@ static int delete_evpn_type5_route(struct bgp *bgp_vrf, struct prefix_evpn *evp)
23132316
if (!dest)
23142317
return 0;
23152318

2319+
frrtrace(2, frr_bgp, evpn_withdraw_type5, bgp_vrf->vrf_id, evp);
2320+
23162321
delete_evpn_route_entry(bgp_evpn, afi, safi, dest, &pi);
23172322
if (pi)
23182323
bgp_process(bgp_evpn, dest, afi, safi);

bgpd/bgp_evpn_mh.c

+14
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,10 @@ int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
441441
? "esr"
442442
: (vpn ? "ead-evi" : "ead-es"),
443443
&attr->mp_nexthop_global_in);
444+
445+
frrtrace(4, frr_bgp, evpn_mh_local_ead_es_evi_route_upd,
446+
&es->esi, (vpn ? vpn->vni : 0), evp->prefix.route_type,
447+
attr->mp_nexthop_global_in);
444448
}
445449

446450
/* Return back the route entry. */
@@ -491,6 +495,8 @@ static int bgp_evpn_mh_route_delete(struct bgp *bgp, struct bgp_evpn_es *es,
491495
: (vpn ? "ead-evi" : "ead-es"),
492496
&es->originator_ip);
493497

498+
frrtrace(4, frr_bgp, evpn_mh_local_ead_es_evi_route_del, &es->esi,
499+
(vpn ? vpn->vni : 0), p->prefix.route_type, es->originator_ip);
494500
/* Next, locate route node in the global EVPN routing table.
495501
* Note that this table is a 2-level tree (RD-level + Prefix-level)
496502
*/
@@ -3460,6 +3466,10 @@ static void bgp_evpn_es_evi_vtep_add(struct bgp *bgp,
34603466
evi_vtep->es_evi->vpn->vni, &evi_vtep->vtep_ip,
34613467
ead_es ? "ead_es" : "ead_evi");
34623468

3469+
frrtrace(4, frr_bgp, evpn_mh_es_evi_vtep_add,
3470+
&evi_vtep->es_evi->es->esi, evi_vtep->es_evi->vpn->vni,
3471+
evi_vtep->vtep_ip, ead_es);
3472+
34633473
if (ead_es)
34643474
SET_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_EAD_PER_ES);
34653475
else
@@ -3484,6 +3494,10 @@ static void bgp_evpn_es_evi_vtep_del(struct bgp *bgp,
34843494
evi_vtep->es_evi->vpn->vni, &evi_vtep->vtep_ip,
34853495
ead_es ? "ead_es" : "ead_evi");
34863496

3497+
frrtrace(4, frr_bgp, evpn_mh_es_evi_vtep_del,
3498+
&evi_vtep->es_evi->es->esi, evi_vtep->es_evi->vpn->vni,
3499+
evi_vtep->vtep_ip, ead_es);
3500+
34873501
if (ead_es)
34883502
UNSET_FLAG(evi_vtep->flags, BGP_EVPN_EVI_VTEP_EAD_PER_ES);
34893503
else

bgpd/bgp_trace.h

+86
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,64 @@ TRACEPOINT_EVENT(
435435
)
436436
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_es_evi_del_zrecv, TRACE_INFO)
437437

438+
TRACEPOINT_EVENT(
439+
frr_bgp,
440+
evpn_mh_es_evi_vtep_add,
441+
TP_ARGS(esi_t *, esi, vni_t, vni, struct in_addr, vtep,
442+
uint8_t, ead_es),
443+
TP_FIELDS(
444+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
445+
ctf_integer(vni_t, vni, vni)
446+
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
447+
ctf_integer(uint8_t, ead_es, ead_es)
448+
)
449+
)
450+
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_es_evi_vtep_add, TRACE_INFO)
451+
452+
TRACEPOINT_EVENT(
453+
frr_bgp,
454+
evpn_mh_es_evi_vtep_del,
455+
TP_ARGS(esi_t *, esi, vni_t, vni, struct in_addr, vtep,
456+
uint8_t, ead_es),
457+
TP_FIELDS(
458+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
459+
ctf_integer(vni_t, vni, vni)
460+
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
461+
ctf_integer(uint8_t, ead_es, ead_es)
462+
)
463+
)
464+
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_es_evi_vtep_del, TRACE_INFO)
465+
466+
TRACEPOINT_EVENT(
467+
frr_bgp,
468+
evpn_mh_local_ead_es_evi_route_upd,
469+
TP_ARGS(esi_t *, esi, vni_t, vni,
470+
uint8_t, route_type,
471+
struct in_addr, vtep),
472+
TP_FIELDS(
473+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
474+
ctf_integer(vni_t, vni, vni)
475+
ctf_integer(uint8_t, route_type, route_type)
476+
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
477+
)
478+
)
479+
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_ead_es_evi_route_upd, TRACE_INFO)
480+
481+
TRACEPOINT_EVENT(
482+
frr_bgp,
483+
evpn_mh_local_ead_es_evi_route_del,
484+
TP_ARGS(esi_t *, esi, vni_t, vni,
485+
uint8_t, route_type,
486+
struct in_addr, vtep),
487+
TP_FIELDS(
488+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
489+
ctf_integer(vni_t, vni, vni)
490+
ctf_integer(uint8_t, route_type, route_type)
491+
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
492+
)
493+
)
494+
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_local_ead_es_evi_route_del, TRACE_INFO)
495+
438496
TRACEPOINT_EVENT(
439497
frr_bgp,
440498
evpn_local_vni_add_zrecv,
@@ -495,6 +553,34 @@ TRACEPOINT_EVENT(
495553
)
496554
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_local_macip_del_zrecv, TRACE_INFO)
497555

556+
TRACEPOINT_EVENT(
557+
frr_bgp,
558+
evpn_advertise_type5,
559+
TP_ARGS(vrf_id_t, vrf, const struct prefix_evpn *, pfx,
560+
struct ethaddr *, rmac, struct in_addr, vtep),
561+
TP_FIELDS(
562+
ctf_integer(int, vrf_id, vrf)
563+
ctf_array(unsigned char, ip, &pfx->prefix.prefix_addr.ip,
564+
sizeof(struct ipaddr))
565+
ctf_array(unsigned char, rmac, rmac,
566+
sizeof(struct ethaddr))
567+
ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr)
568+
)
569+
)
570+
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_advertise_type5, TRACE_INFO)
571+
572+
TRACEPOINT_EVENT(
573+
frr_bgp,
574+
evpn_withdraw_type5,
575+
TP_ARGS(vrf_id_t, vrf, const struct prefix_evpn *, pfx),
576+
TP_FIELDS(
577+
ctf_integer(int, vrf_id, vrf)
578+
ctf_array(unsigned char, ip, &pfx->prefix.prefix_addr.ip,
579+
sizeof(struct ipaddr))
580+
)
581+
)
582+
TRACEPOINT_LOGLEVEL(frr_bgp, evpn_withdraw_type5, TRACE_INFO)
583+
498584
TRACEPOINT_EVENT(
499585
frr_bgp,
500586
evpn_local_l3vni_add_zrecv,

tools/frr_babeltrace.py

+70
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,46 @@ def parse_frr_bgp_evpn_mh_local_es_evi_del_zrecv(event):
157157

158158
parse_event(event, field_parsers)
159159

160+
def parse_frr_bgp_evpn_mh_es_evi_vtep_add(event):
161+
"""
162+
bgp evpn remote ead evi remote vtep add; raw format -
163+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
164+
"""
165+
field_parsers = {"esi": print_esi,
166+
"vtep": print_net_ipv4_addr}
167+
168+
parse_event(event, field_parsers)
169+
170+
def parse_frr_bgp_evpn_mh_es_evi_vtep_del(event):
171+
"""
172+
bgp evpn remote ead evi remote vtep del; raw format -
173+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
174+
"""
175+
field_parsers = {"esi": print_esi,
176+
"vtep": print_net_ipv4_addr}
177+
178+
parse_event(event, field_parsers)
179+
180+
def parse_frr_bgp_evpn_mh_local_ead_es_evi_route_upd(event):
181+
"""
182+
bgp evpn local ead evi vtep; raw format -
183+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
184+
"""
185+
field_parsers = {"esi": print_esi,
186+
"vtep": print_net_ipv4_addr}
187+
188+
parse_event(event, field_parsers)
189+
190+
def parse_frr_bgp_evpn_mh_local_ead_es_evi_route_del(event):
191+
"""
192+
bgp evpn local ead evi vtep del; raw format -
193+
ctf_array(unsigned char, esi, esi, sizeof(esi_t))
194+
"""
195+
field_parsers = {"esi": print_esi,
196+
"vtep": print_net_ipv4_addr}
197+
198+
parse_event(event, field_parsers)
199+
160200
def parse_frr_bgp_evpn_local_vni_add_zrecv(event):
161201
"""
162202
bgp evpn local-vni parser; raw format -
@@ -205,6 +245,24 @@ def parse_frr_bgp_evpn_local_macip_del_zrecv(event):
205245

206246
parse_event(event, field_parsers)
207247

248+
def parse_frr_bgp_evpn_advertise_type5(event):
249+
"""
250+
local originated type-5 route
251+
"""
252+
field_parsers = {"ip": print_ip_addr,
253+
"rmac": print_mac,
254+
"vtep": print_net_ipv4_addr}
255+
256+
parse_event(event, field_parsers)
257+
258+
def parse_frr_bgp_evpn_withdraw_type5(event):
259+
"""
260+
local originated type-5 route withdraw
261+
"""
262+
field_parsers = {"ip": print_ip_addr}
263+
264+
parse_event(event, field_parsers)
265+
208266
############################ evpn parsers - end *#############################
209267

210268
def main():
@@ -225,6 +283,14 @@ def main():
225283
parse_frr_bgp_evpn_mh_local_es_evi_add_zrecv,
226284
"frr_bgp:evpn_mh_local_es_evi_del_zrecv":
227285
parse_frr_bgp_evpn_mh_local_es_evi_del_zrecv,
286+
"frr_bgp:evpn_mh_es_evi_vtep_add":
287+
parse_frr_bgp_evpn_mh_es_evi_vtep_add,
288+
"frr_bgp:evpn_mh_es_evi_vtep_del":
289+
parse_frr_bgp_evpn_mh_es_evi_vtep_del,
290+
"frr_bgp:evpn_mh_local_ead_es_evi_route_upd":
291+
parse_frr_bgp_evpn_mh_local_ead_es_evi_route_upd,
292+
"frr_bgp:evpn_mh_local_ead_es_evi_route_del":
293+
parse_frr_bgp_evpn_mh_local_ead_es_evi_route_del,
228294
"frr_bgp:evpn_local_vni_add_zrecv":
229295
parse_frr_bgp_evpn_local_vni_add_zrecv,
230296
"frr_bgp:evpn_local_l3vni_add_zrecv":
@@ -233,6 +299,10 @@ def main():
233299
parse_frr_bgp_evpn_local_macip_add_zrecv,
234300
"frr_bgp:evpn_local_macip_del_zrecv":
235301
parse_frr_bgp_evpn_local_macip_del_zrecv,
302+
"frr_bgp:evpn_advertise_type5":
303+
parse_frr_bgp_evpn_advertise_type5,
304+
"frr_bgp:evpn_withdraw_type5":
305+
parse_frr_bgp_evpn_withdraw_type5,
236306
}
237307

238308
# get the trace path from the first command line argument

0 commit comments

Comments
 (0)