diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2022-11-18 13:49:53 +0100 |
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2023-02-10 10:27:23 +0100 |
| commit | e84c7c12f224f27ae430f2929a9fd121b133c2b3 (patch) | |
| tree | 4957646b5b93635e3b9cab8281f591cda750a89d /lib/asn.c | |
| parent | 17571c4ae7fa294e031b3e614a4fa62f834d0b3d (diff) | |
bgpd: modify bgp as number output
A json AS number API is created in order to output a
given AS number. In order to keep backward compatibility,
if the as-notation uses a number, then the json is encoded
as an integer, otherwise the encoding will be a string.
For what is not relevant to running-configuration, the
as-notation mode is the one used for the BGP instance.
Also, the vty completion gets the configured 'as_pretty'
string value, when an user wants to get the available
BGP instances.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'lib/asn.c')
| -rw-r--r-- | lib/asn.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -183,6 +183,20 @@ const char *asn_mode2str(enum asnotation_mode asnotation) "Unrecognized AS notation mode"); } +void asn_asn2json(json_object *json, const char *attr, + as_t asn, enum asnotation_mode asnotation) +{ + static char as_str[ASN_STRING_MAX_SIZE]; + + if ((asnotation == ASNOTATION_PLAIN) || + ((asnotation == ASNOTATION_DOT) && asn < UINT16_MAX)) + json_object_int_add(json, attr, asn); + else { + asn_asn2asdot(asn, as_str, sizeof(as_str)); + json_object_string_add(json, attr, as_str); + } +} + void asn_asn2json_array(json_object *jseg_list, as_t asn, enum asnotation_mode asnotation) { |
