Skip to content

Commit

Permalink
Merge pull request #16750 from donaldsharp/table_display_is_not_vrf_b…
Browse files Browse the repository at this point in the history
…ased_in_some_cases

zebra: Don't display the vrf if not using namespace based vrfs
  • Loading branch information
Jafaral authored Nov 5, 2024
2 parents ab2117d + e88cbd6 commit f68d5b3
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 11 deletions.
1 change: 1 addition & 0 deletions zebra/table_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ extern "C" {
#if !defined(GNU_LINUX)
/* BSD systems
*/
#define RT_TABLE_ID_MAIN 0
#else
/* Linux Systems
*/
Expand Down
2 changes: 2 additions & 0 deletions zebra/zebra_vrf.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@ vrf_id_t zebra_vrf_lookup_by_table(uint32_t table_id, ns_id_t ns_id)

RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) {
zvrf = vrf->info;

if (zvrf == NULL)
continue;
/* case vrf with netns : match the netnsid */
Expand All @@ -408,6 +409,7 @@ vrf_id_t zebra_vrf_lookup_by_table(uint32_t table_id, ns_id_t ns_id)
/* VRF is VRF_BACKEND_VRF_LITE */
if (zvrf->table_id != table_id)
continue;

return zvrf_id(zvrf);
}
}
Expand Down
35 changes: 24 additions & 11 deletions zebra/zebra_vty.c
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,27 @@ static void vty_show_ip_route_detail_json(struct vty *vty,
vty_json(vty, json);
}

static void zebra_vty_display_vrf_header(struct vty *vty, struct zebra_vrf *zvrf, uint32_t tableid)
{
if (!tableid)
vty_out(vty, "VRF %s:\n", zvrf_name(zvrf));
else {
if (vrf_is_backend_netns())
vty_out(vty, "VRF %s table %u:\n", zvrf_name(zvrf), tableid);
else {
vrf_id_t vrf = zebra_vrf_lookup_by_table(tableid, zvrf->zns->ns_id);

if (vrf == VRF_DEFAULT && tableid != RT_TABLE_ID_MAIN)
vty_out(vty, "table %u:\n", tableid);
else {
struct zebra_vrf *zvrf2 = zebra_vrf_lookup_by_id(vrf);

vty_out(vty, "VRF %s table %u:\n", zvrf_name(zvrf2), tableid);
}
}
}
}

static void do_show_route_helper(struct vty *vty, struct zebra_vrf *zvrf,
struct route_table *table, afi_t afi,
bool use_fib, route_tag_t tag,
Expand Down Expand Up @@ -937,17 +958,9 @@ static void do_show_route_helper(struct vty *vty, struct zebra_vrf *zvrf,
}
if (ctx->multi && ctx->header_done)
vty_out(vty, "\n");
if (ctx->multi || zvrf_id(zvrf) != VRF_DEFAULT
|| tableid) {
if (!tableid)
vty_out(vty, "VRF %s:\n",
zvrf_name(zvrf));
else
vty_out(vty,
"VRF %s table %u:\n",
zvrf_name(zvrf),
tableid);
}
if (ctx->multi || zvrf_id(zvrf) != VRF_DEFAULT || tableid)
zebra_vty_display_vrf_header(vty, zvrf, tableid);

ctx->header_done = true;
first = 0;
}
Expand Down

0 comments on commit f68d5b3

Please sign in to comment.