Skip to content

Commit

Permalink
zebra: Fix ip protocol route-map issue.
Browse files Browse the repository at this point in the history
"ip/ipv6 protocol any route-map <route map>" cli is setting
wrong route type (ZEBRA_ROUTE_MAX), It should set route type
ZEBRA_ROUTE_ALL.

Ticket: #4101560

Signed-off-by: Sougata Barik <[email protected]>
  • Loading branch information
sougata-github-nvidia committed Nov 20, 2024
1 parent 172a2aa commit 7881bf5
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 20 deletions.
2 changes: 1 addition & 1 deletion lib/route_types.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ ZEBRA_ROUTE_VRRP, vrrp, vrrpd, '-', 0, 0, 0, "VRRP", vr
ZEBRA_ROUTE_NHG, zebra, none, '-', 0, 0, 0, "Nexthop Group", none
ZEBRA_ROUTE_SRTE, srte, none, '-', 0, 0, 0, "SR-TE", none
ZEBRA_ROUTE_TABLE_DIRECT, table-direct, zebra, 't', 1, 1, 1, "Table-Direct", zebra
ZEBRA_ROUTE_ALL, wildcard, none, '-', 0, 0, 0, "-", none
ZEBRA_ROUTE_ALL, any, none, '-', 0, 0, 0, "-", none


## help strings
Expand Down
15 changes: 3 additions & 12 deletions zebra/zebra_nb_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -3375,10 +3375,7 @@ int lib_vrf_zebra_filter_protocol_create(struct nb_cb_create_args *args)
const char *proto = yang_dnode_get_string(args->dnode, "protocol");
int rtype;

if (strcasecmp(proto, "any") == 0)
rtype = ZEBRA_ROUTE_MAX;
else
rtype = proto_name2num(proto);
rtype = proto_name2num(proto);

if (args->event == NB_EV_VALIDATE)
if (rtype < 0) {
Expand All @@ -3404,10 +3401,7 @@ int lib_vrf_zebra_filter_protocol_destroy(struct nb_cb_destroy_args *args)

yang_afi_safi_identity2value(afi_safi, &afi, &safi);

if (strcasecmp(proto, "any") == 0)
rtype = ZEBRA_ROUTE_MAX;
else
rtype = proto_name2num(proto);
rtype = proto_name2num(proto);

/* deleting an existing entry, it can't be invalid */
assert(rtype >= 0);
Expand Down Expand Up @@ -3435,10 +3429,7 @@ void lib_vrf_zebra_filter_protocol_apply_finish(

yang_afi_safi_identity2value(afi_safi, &afi, &safi);

if (strcasecmp(proto, "any") == 0)
rtype = ZEBRA_ROUTE_MAX;
else
rtype = proto_name2num(proto);
rtype = proto_name2num(proto);

/* finishing apply for a validated entry, it can't be invalid */
assert(rtype >= 0);
Expand Down
9 changes: 2 additions & 7 deletions zebra/zebra_routemap.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,6 @@ static void show_vrf_proto_rm(struct vty *vty, struct zebra_vrf *zvrf,
vty_out(vty, "%-24s : none\n", zebra_route_string(i));
}

if (PROTO_RM_NAME(zvrf, af_type, i))
vty_out(vty, "%-24s : %-10s\n", "any",
PROTO_RM_NAME(zvrf, af_type, i));
else
vty_out(vty, "%-24s : none\n", "any");
}

static void show_vrf_nht_rm(struct vty *vty, struct zebra_vrf *zvrf,
Expand Down Expand Up @@ -1222,8 +1217,8 @@ route_map_result_t zebra_route_map_check(afi_t family, struct route_entry *re,
return RMAP_DENYMATCH;
}
if (!rmap) {
rm_name = PROTO_RM_NAME(zvrf, family, ZEBRA_ROUTE_MAX);
rmap = PROTO_RM_MAP(zvrf, family, ZEBRA_ROUTE_MAX);
rm_name = PROTO_RM_NAME(zvrf, family, ZEBRA_ROUTE_ALL);
rmap = PROTO_RM_MAP(zvrf, family, ZEBRA_ROUTE_ALL);

if (rm_name && !rmap)
return RMAP_DENYMATCH;
Expand Down

0 comments on commit 7881bf5

Please sign in to comment.