Skip to content

Commit

Permalink
Merge pull request #15780 from donaldsharp/rpki_as_0
Browse files Browse the repository at this point in the history
bgpd: Allow specification of AS 0 for rpki commands
  • Loading branch information
ton31337 authored Apr 18, 2024
2 parents b2263bc + cfee4e3 commit 8ea0284
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 8 deletions.
24 changes: 19 additions & 5 deletions bgpd/bgp_rpki.c
Original file line number Diff line number Diff line change
Expand Up @@ -2088,16 +2088,18 @@ DEFPY (show_rpki_prefix_table,

DEFPY (show_rpki_as_number,
show_rpki_as_number_cmd,
"show rpki as-number ASNUM$by_asn [vrf NAME$vrfname] [json$uj]",
"show rpki as-number <0$zero|ASNUM$by_asn> [vrf NAME$vrfname] [json$uj]",
SHOW_STR
RPKI_OUTPUT_STRING
"Lookup by ASN in prefix table\n"
"AS Number of 0, see RFC-7607\n"
"AS Number\n"
VRF_CMD_HELP_STR
JSON_STR)
{
struct json_object *json = NULL;
struct rpki_vrf *rpki_vrf;
as_t as;

if (uj)
json = json_object_new_object();
Expand All @@ -2118,18 +2120,24 @@ DEFPY (show_rpki_as_number,
return CMD_WARNING;
}

print_prefix_table_by_asn(vty, by_asn, rpki_vrf, json);
if (zero)
as = 0;
else
as = by_asn;

print_prefix_table_by_asn(vty, as, rpki_vrf, json);
return CMD_SUCCESS;
}

DEFPY (show_rpki_prefix,
show_rpki_prefix_cmd,
"show rpki prefix <A.B.C.D/M|X:X::X:X/M> [ASNUM$asn] [vrf NAME$vrfname] [json$uj]",
"show rpki prefix <A.B.C.D/M|X:X::X:X/M> [0$zero|ASNUM$asn] [vrf NAME$vrfname] [json$uj]",
SHOW_STR
RPKI_OUTPUT_STRING
"Lookup IP prefix and optionally ASN in prefix table\n"
"IPv4 prefix\n"
"IPv6 prefix\n"
"AS Number of 0, see RFC-7607\n"
"AS Number\n"
VRF_CMD_HELP_STR
JSON_STR)
Expand All @@ -2138,6 +2146,7 @@ DEFPY (show_rpki_prefix,
json_object *json_records = NULL;
enum asnotation_mode asnotation;
struct rpki_vrf *rpki_vrf;
as_t as;

if (uj)
json = json_object_new_object();
Expand All @@ -2153,6 +2162,11 @@ DEFPY (show_rpki_prefix,
return CMD_WARNING;
}

if (zero)
as = 0;
else
as = asn;

struct lrtr_ip_addr addr;
char addr_str[INET6_ADDRSTRLEN];
size_t addr_len = strchr(prefix_str, '/') - prefix_str;
Expand All @@ -2174,7 +2188,7 @@ DEFPY (show_rpki_prefix,
enum pfxv_state result;

if (pfx_table_validate_r(rpki_vrf->rtr_config->pfx_table, &matches,
&match_count, asn, &addr, prefix->prefixlen,
&match_count, as, &addr, prefix->prefixlen,
&result) != PFX_SUCCESS) {
if (json) {
json_object_string_add(json, "error", "Prefix lookup failed.");
Expand All @@ -2198,7 +2212,7 @@ DEFPY (show_rpki_prefix,
const struct pfx_record *record = &matches[i];

if (record->max_len >= prefix->prefixlen &&
((asn != 0 && (uint32_t)asn == record->asn) || asn == 0)) {
((as != 0 && (uint32_t)as == record->asn) || asn == 0)) {
print_record(&matches[i], vty, json_records,
asnotation);
}
Expand Down
9 changes: 6 additions & 3 deletions doc/user/rpki.rst
Original file line number Diff line number Diff line change
Expand Up @@ -215,15 +215,18 @@ Displaying RPKI

Display RPKI configuration state including timers values.

.. clicmd:: show rpki prefix <A.B.C.D/M|X:X::X:X/M> [(1-4294967295)] [vrf NAME] [json]
.. clicmd:: show rpki prefix <A.B.C.D/M|X:X::X:X/M> [ASN] [vrf NAME] [json]

Display validated prefixes received from the cache servers filtered
by the specified prefix.
by the specified prefix. The AS number space has been increased
to allow the choice of using AS 0 because RFC-7607 specifically
calls out the usage of 0 in a special case.

.. clicmd:: show rpki as-number ASN [vrf NAME] [json]

Display validated prefixes received from the cache servers filtered
by ASN.
by ASN. The usage of AS 0 is allowed because RFC-76067 specifically
calls out the usage of 0 in a special case.

.. clicmd:: show rpki prefix-table [vrf NAME] [json]

Expand Down

0 comments on commit 8ea0284

Please sign in to comment.