]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd, lib: Add iana_afi2str and iana_safi2str for eye pleasing strings
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 1 Jun 2019 23:11:28 +0000 (19:11 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 2 Jun 2019 18:51:52 +0000 (14:51 -0400)
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>
bgpd/bgp_attr.c
bgpd/bgp_open.c
bgpd/bgp_packet.c
lib/zebra.h

index 5a4105b4004f1ad2b4b019c878580ec897eb09ba..d46623c9d2962174ebf7074964ff6455eb0d1d4f 100644 (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;
        }
 
index 7af5827d0025cdd081ef12ed0eda258237f44ffe..64529f6ef384efaca43e51766c5bcc55c340767a 100644 (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;
                }
 
index 655a4745cba045681bc37cd6cbfb882bfe0fb315..bb9c3940474f2fb42b91cc467f7591ec510ab29d 100644 (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;
                        }
 
index a0337dc3cfc33fc77245d7b83c6692a1ed1ad10c..336ecb38f3dcd81fa22c48b63658d3132300f2cb 100644 (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) {