bgpd, lib: Add iana_afi2str and iana_safi2str for eye pleasing strings

Modify the code such that we can auto turn the iana values of afi
and safi to pleasant to read strings.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2019-06-01 19:11:28 -04:00
parent d92050a607
commit 748a041f09
4 changed files with 99 additions and 41 deletions

View File

@ -1664,8 +1664,9 @@ int bgp_mp_reach_parse(struct bgp_attr_parser_args *args,
*/
if (bgp_debug_update(peer, NULL, NULL, 0))
zlog_debug(
"%s: MP_REACH received AFI %u or SAFI %u is unrecognized",
peer->host, pkt_afi, pkt_safi);
"%s: MP_REACH received AFI %s or SAFI %s is unrecognized",
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
return BGP_ATTR_PARSE_ERROR;
}
@ -1849,8 +1850,9 @@ int bgp_mp_unreach_parse(struct bgp_attr_parser_args *args,
*/
if (bgp_debug_update(peer, NULL, NULL, 0))
zlog_debug(
"%s: MP_UNREACH received AFI %u or SAFI %u is unrecognized",
peer->host, pkt_afi, pkt_safi);
"%s: MP_UNREACH received AFI %s or SAFI %s is unrecognized",
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
return BGP_ATTR_PARSE_ERROR;
}

View File

@ -264,8 +264,9 @@ static int bgp_capability_mp(struct peer *peer, struct capability_header *hdr)
bgp_capability_mp_data(s, &mpc);
if (bgp_debug_neighbor_events(peer))
zlog_debug("%s OPEN has MP_EXT CAP for afi/safi: %u/%u",
peer->host, mpc.afi, mpc.safi);
zlog_debug("%s OPEN has MP_EXT CAP for afi/safi: %s/%s",
peer->host, iana_afi2str(mpc.afi),
iana_safi2str(mpc.safi));
/* Convert AFI, SAFI to internal values, check. */
if (bgp_map_afi_safi_iana2int(mpc.afi, mpc.safi, &afi, &safi))
@ -325,8 +326,8 @@ static int bgp_capability_orf_entry(struct peer *peer,
pkt_safi = mpc.safi;
if (bgp_debug_neighbor_events(peer))
zlog_debug("%s ORF Cap entry for afi/safi: %u/%u", peer->host,
mpc.afi, mpc.safi);
zlog_debug("%s ORF Cap entry for afi/safi: %s/%s", peer->host,
iana_afi2str(mpc.afi), iana_safi2str(mpc.safi));
/* Convert AFI, SAFI to internal values, check. */
if (bgp_map_afi_safi_iana2int(pkt_afi, pkt_safi, &afi, &safi)) {
@ -407,11 +408,11 @@ static int bgp_capability_orf_entry(struct peer *peer,
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s OPEN has %s ORF capability"
" as %s for afi/safi: %d/%d",
" as %s for afi/safi: %s/%s",
peer->host,
lookup_msg(orf_type_str, type, NULL),
lookup_msg(orf_mode_str, mode, NULL), pkt_afi,
pkt_safi);
lookup_msg(orf_mode_str, mode, NULL),
iana_afi2str(pkt_afi), iana_safi2str(pkt_safi));
if (hdr->code == CAPABILITY_CODE_ORF) {
sm_cap = PEER_CAP_ORF_PREFIX_SM_RCV;
@ -487,15 +488,17 @@ static int bgp_capability_restart(struct peer *peer,
if (bgp_map_afi_safi_iana2int(pkt_afi, pkt_safi, &afi, &safi)) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s Addr-family %d/%d(afi/safi) not supported."
"%s Addr-family %s/%s(afi/safi) not supported."
" Ignore the Graceful Restart capability for this AFI/SAFI",
peer->host, pkt_afi, pkt_safi);
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
} else if (!peer->afc[afi][safi]) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s Addr-family %d/%d(afi/safi) not enabled."
"%s Addr-family %s/%s(afi/safi) not enabled."
" Ignore the Graceful Restart capability",
peer->host, pkt_afi, pkt_safi);
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
} else {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
@ -564,8 +567,9 @@ static int bgp_capability_addpath(struct peer *peer,
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s OPEN has AddPath CAP for afi/safi: %u/%u%s%s",
peer->host, pkt_afi, pkt_safi,
"%s OPEN has AddPath CAP for afi/safi: %s/%s%s%s",
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi),
(send_receive & BGP_ADDPATH_RX) ? ", receive"
: "",
(send_receive & BGP_ADDPATH_TX) ? ", transmit"
@ -575,16 +579,18 @@ static int bgp_capability_addpath(struct peer *peer,
if (bgp_map_afi_safi_iana2int(pkt_afi, pkt_safi, &afi, &safi)) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s Addr-family %d/%d(afi/safi) not supported."
"%s Addr-family %s/%s(afi/safi) not supported."
" Ignore the Addpath Attribute for this AFI/SAFI",
peer->host, pkt_afi, pkt_safi);
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
continue;
} else if (!peer->afc[afi][safi]) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s Addr-family %d/%d(afi/safi) not enabled."
"%s Addr-family %s/%s(afi/safi) not enabled."
" Ignore the AddPath capability for this AFI/SAFI",
peer->host, pkt_afi, pkt_safi);
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
continue;
}
@ -624,16 +630,18 @@ static int bgp_capability_enhe(struct peer *peer, struct capability_header *hdr)
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s Received with afi/safi/next-hop afi: %u/%u/%u",
peer->host, pkt_afi, pkt_safi, pkt_nh_afi);
"%s Received with afi/safi/next-hop afi: %s/%s/%u",
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi), pkt_nh_afi);
/* Convert AFI, SAFI to internal values, check. */
if (bgp_map_afi_safi_iana2int(pkt_afi, pkt_safi, &afi, &safi)) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s Addr-family %d/%d(afi/safi) not supported."
"%s Addr-family %s/%s(afi/safi) not supported."
" Ignore the ENHE Attribute for this AFI/SAFI",
peer->host, pkt_afi, pkt_safi);
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
continue;
}
@ -652,9 +660,10 @@ static int bgp_capability_enhe(struct peer *peer, struct capability_header *hdr)
|| safi == SAFI_LABELED_UNICAST)) {
flog_warn(
EC_BGP_CAPABILITY_INVALID_DATA,
"%s Unexpected afi/safi/next-hop afi: %u/%u/%u "
"%s Unexpected afi/safi/next-hop afi: %s/%s/%u "
"in Extended Next-hop capability, ignoring",
peer->host, pkt_afi, pkt_safi, pkt_nh_afi);
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi), pkt_nh_afi);
continue;
}

View File

@ -822,12 +822,13 @@ void bgp_route_refresh_send(struct peer *peer, afi_t afi, safi_t safi,
stream_putc(s, ORF_COMMON_PART_REMOVE_ALL);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s sending REFRESH_REQ to remove ORF(%d) (%s) for afi/safi: %d/%d",
"%s sending REFRESH_REQ to remove ORF(%d) (%s) for afi/safi: %s/%s",
peer->host, orf_type,
(when_to_refresh == REFRESH_DEFER
? "defer"
: "immediate"),
pkt_afi, pkt_safi);
iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
} else {
SET_FLAG(peer->af_sflags[afi][safi],
PEER_STATUS_ORF_PREFIX_SEND);
@ -838,12 +839,13 @@ void bgp_route_refresh_send(struct peer *peer, afi_t afi, safi_t safi,
ORF_COMMON_PART_DENY);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s sending REFRESH_REQ with pfxlist ORF(%d) (%s) for afi/safi: %d/%d",
"%s sending REFRESH_REQ with pfxlist ORF(%d) (%s) for afi/safi: %s/%s",
peer->host, orf_type,
(when_to_refresh == REFRESH_DEFER
? "defer"
: "immediate"),
pkt_afi, pkt_safi);
iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
}
/* Total ORF Entry Len. */
@ -856,8 +858,9 @@ void bgp_route_refresh_send(struct peer *peer, afi_t afi, safi_t safi,
if (bgp_debug_neighbor_events(peer)) {
if (!orf_refresh)
zlog_debug("%s sending REFRESH_REQ for afi/safi: %d/%d",
peer->host, pkt_afi, pkt_safi);
zlog_debug("%s sending REFRESH_REQ for afi/safi: %s/%s",
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
}
/* Add packet to the peer. */
@ -901,11 +904,11 @@ void bgp_capability_send(struct peer *peer, afi_t afi, safi_t safi,
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s sending CAPABILITY has %s MP_EXT CAP for afi/safi: %d/%d",
"%s sending CAPABILITY has %s MP_EXT CAP for afi/safi: %s/%s",
peer->host,
action == CAPABILITY_ACTION_SET ? "Advertising"
: "Removing",
pkt_afi, pkt_safi);
iana_afi2str(pkt_afi), iana_safi2str(pkt_safi));
}
/* Set packet size. */
@ -1788,14 +1791,16 @@ static int bgp_route_refresh_receive(struct peer *peer, bgp_size_t size)
pkt_safi = stream_getc(s);
if (bgp_debug_update(peer, NULL, NULL, 0))
zlog_debug("%s rcvd REFRESH_REQ for afi/safi: %d/%d",
peer->host, pkt_afi, pkt_safi);
zlog_debug("%s rcvd REFRESH_REQ for afi/safi: %s/%s",
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
/* Convert AFI, SAFI to internal values and check. */
if (bgp_map_afi_safi_iana2int(pkt_afi, pkt_safi, &afi, &safi)) {
zlog_info(
"%s REFRESH_REQ for unrecognized afi/safi: %d/%d - ignored",
peer->host, pkt_afi, pkt_safi);
"%s REFRESH_REQ for unrecognized afi/safi: %s/%s - ignored",
peer->host, iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
return BGP_PACKET_NOOP;
}
@ -2090,8 +2095,10 @@ static int bgp_capability_msg_parse(struct peer *peer, uint8_t *pnt,
if (bgp_debug_neighbor_events(peer))
zlog_debug(
"%s Dynamic Capability MP_EXT afi/safi invalid "
"(%u/%u)",
peer->host, pkt_afi, pkt_safi);
"(%s/%s)",
peer->host,
iana_afi2str(pkt_afi),
iana_safi2str(pkt_safi));
continue;
}

View File

@ -510,6 +510,22 @@ typedef uint32_t route_tag_t;
#define ROUTE_TAG_MAX UINT32_MAX
#define ROUTE_TAG_PRI PRIu32
static inline const char *iana_afi2str(iana_afi_t afi)
{
switch (afi) {
case IANA_AFI_RESERVED:
return "Reserved";
case IANA_AFI_IPV4:
return "IPv4";
case IANA_AFI_IPV6:
return "IPv6";
case IANA_AFI_L2VPN:
return "L2VPN";
}
return "Unknown";
}
static inline afi_t afi_iana2int(iana_afi_t afi)
{
switch (afi) {
@ -538,6 +554,30 @@ static inline iana_afi_t afi_int2iana(afi_t afi)
}
}
static inline const char *iana_safi2str(iana_safi_t safi)
{
switch (safi) {
case IANA_SAFI_RESERVED:
return "Reserved";
case IANA_SAFI_UNICAST:
return "Unicast";
case IANA_SAFI_MULTICAST:
return "Multicast";
case IANA_SAFI_LABELED_UNICAST:
return "Labeled Unicast";
case IANA_SAFI_ENCAP:
return "Encap";
case IANA_SAFI_EVPN:
return "EVPN";
case IANA_SAFI_MPLS_VPN:
return "MPLS VPN";
case IANA_SAFI_FLOWSPEC:
return "FlowSpec";
}
return "Unknown";
}
static inline safi_t safi_iana2int(iana_safi_t safi)
{
switch (safi) {