diff options
author | Louis Scalbert <louis.scalbert@6wind.com> | 2023-05-05 16:05:42 +0200 |
---|---|---|
committer | Louis Scalbert <louis.scalbert@6wind.com> | 2023-05-05 17:50:36 +0200 |
commit | 586861a141d09550e1fb3c4a65108c57506caf71 (patch) | |
tree | ac9fad283abb614f02ff9695e897ffae41f6f9f6 /bgpd | |
parent | Merge pull request #13436 from donaldsharp/ospf_json_mem_leak (diff) | |
download | frr-586861a141d09550e1fb3c4a65108c57506caf71.tar.xz frr-586861a141d09550e1fb3c4a65108c57506caf71.zip |
bgpd: fix show running of nt extcommunity
Setting
> bgp extcommunity-list standard EXT seq 5 permit nt 192.168.1.3:0
results in:
> bgp extcommunity-list standard EXT seq 5 permit NT:192.168.1.3
Fix the display
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Diffstat (limited to 'bgpd')
-rw-r--r-- | bgpd/bgp_ecommunity.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/bgpd/bgp_ecommunity.c b/bgpd/bgp_ecommunity.c index 7bf260901..a55593013 100644 --- a/bgpd/bgp_ecommunity.c +++ b/bgpd/bgp_ecommunity.c @@ -445,7 +445,8 @@ bool ecommunity_node_target_match(struct ecommunity *ecom, return match; } -static void ecommunity_node_target_str(char *buf, size_t bufsz, uint8_t *ptr) +static void ecommunity_node_target_str(char *buf, size_t bufsz, uint8_t *ptr, + int format) { /* * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ @@ -458,7 +459,11 @@ static void ecommunity_node_target_str(char *buf, size_t bufsz, uint8_t *ptr) IPV4_ADDR_COPY(&node_id, (struct in_addr *)ptr); - snprintfrr(buf, bufsz, "NT:%pI4", &node_id); + + snprintfrr(buf, bufsz, "%s%pI4%s", + format == ECOMMUNITY_FORMAT_COMMUNITY_LIST ? "nt " : "NT:", + &node_id, + format == ECOMMUNITY_FORMAT_COMMUNITY_LIST ? ":0" : ""); (void)ptr; /* consume value */ } @@ -1059,7 +1064,8 @@ char *ecommunity_ecom2str(struct ecommunity *ecom, int format, int filter) } else if (sub_type == ECOMMUNITY_NODE_TARGET && type == ECOMMUNITY_ENCODE_IP) { ecommunity_node_target_str( - encbuf, sizeof(encbuf), pnt); + encbuf, sizeof(encbuf), pnt, + format); } else unk_ecom = 1; } else { @@ -1272,8 +1278,8 @@ char *ecommunity_ecom2str(struct ecommunity *ecom, int format, int filter) } else if (type == ECOMMUNITY_ENCODE_IP_NON_TRANS) { sub_type = *pnt++; if (sub_type == ECOMMUNITY_NODE_TARGET) - ecommunity_node_target_str(encbuf, - sizeof(encbuf), pnt); + ecommunity_node_target_str( + encbuf, sizeof(encbuf), pnt, format); else unk_ecom = 1; } else if (type == ECOMMUNITY_ENCODE_OPAQUE_NON_TRANS) { |