]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib/bgpd: introduce the iana_safi_t enum
authorRenato Westphal <renato@opensourcerouting.org>
Tue, 1 Aug 2017 00:06:40 +0000 (21:06 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Tue, 1 Aug 2017 02:44:42 +0000 (23:44 -0300)
We had afi_t/iana_afi_t for AFIs but only safi_t for SAFIs. Fix this
inconsistency.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
13 files changed:
bgpd/bgp_attr.c
bgpd/bgp_open.c
bgpd/bgp_open.h
bgpd/bgp_packet.c
bgpd/bgp_route.c
bgpd/bgp_updgrp_packet.c
bgpd/bgp_vty.c
bgpd/bgpd.c
bgpd/bgpd.h
bgpd/rfapi/rfapi_import.c
lib/prefix.c
lib/zebra.h
tests/bgpd/test_mp_attr.c

index ef32b9cf923c0b32190bd72dbf7c53920304f459..ca9a50db55b9cf39316a44944adcf48abd7246be 100644 (file)
@@ -1677,7 +1677,8 @@ int bgp_mp_reach_parse(struct bgp_attr_parser_args *args,
 {
        iana_afi_t pkt_afi;
        afi_t afi;
-       safi_t pkt_safi, safi;
+       iana_safi_t pkt_safi;
+       safi_t safi;
        bgp_size_t nlri_len;
        size_t start;
        struct stream *s;
@@ -1826,7 +1827,8 @@ int bgp_mp_unreach_parse(struct bgp_attr_parser_args *args,
        struct stream *s;
        iana_afi_t pkt_afi;
        afi_t afi;
-       safi_t pkt_safi, safi;
+       iana_safi_t pkt_safi;
+       safi_t safi;
        u_int16_t withdraw_len;
        struct peer *const peer = args->peer;
        struct attr *const attr = args->attr;
@@ -2593,7 +2595,7 @@ size_t bgp_packet_mpattr_start(struct stream *s, struct peer *peer, afi_t afi,
 {
        size_t sizep;
        iana_afi_t pkt_afi;
-       safi_t pkt_safi;
+       iana_safi_t pkt_safi;
        afi_t nh_afi;
 
        /* Set extended bit always to encode the attribute length as 2 bytes */
@@ -3280,7 +3282,7 @@ size_t bgp_packet_mpunreach_start(struct stream *s, afi_t afi, safi_t safi)
 {
        unsigned long attrlen_pnt;
        iana_afi_t pkt_afi;
-       safi_t pkt_safi;
+       iana_safi_t pkt_safi;
 
        /* Set extended bit always to encode the attribute length as 2 bytes */
        stream_putc(s, BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_EXTLEN);
index b18a4b7c46e6237bc63c2349dc5c0191066861ee..2c988f86cc36556ccfdaba2893bf354d45373c1b 100644 (file)
@@ -298,7 +298,8 @@ static int bgp_capability_orf_entry(struct peer *peer,
        u_char num;
        iana_afi_t pkt_afi;
        afi_t afi;
-       safi_t pkt_safi, safi;
+       iana_safi_t pkt_safi;
+       safi_t safi;
        u_char type;
        u_char mode;
        u_int16_t sm_cap = 0; /* capability send-mode receive */
@@ -466,7 +467,7 @@ static int bgp_capability_restart(struct peer *peer,
                afi_t afi;
                safi_t safi;
                iana_afi_t pkt_afi = stream_getw(s);
-               safi_t pkt_safi = stream_getc(s);
+               iana_safi_t pkt_safi = stream_getc(s);
                u_char flag = stream_getc(s);
 
                /* Convert AFI, SAFI to internal values, check. */
@@ -543,7 +544,7 @@ static int bgp_capability_addpath(struct peer *peer,
                afi_t afi;
                safi_t safi;
                iana_afi_t pkt_afi = stream_getw(s);
-               safi_t pkt_safi = stream_getc(s);
+               iana_safi_t pkt_safi = stream_getc(s);
                u_char send_receive = stream_getc(s);
 
                if (bgp_debug_neighbor_events(peer))
@@ -600,7 +601,8 @@ static int bgp_capability_enhe(struct peer *peer, struct capability_header *hdr)
        while (stream_get_getp(s) + 6 <= end) {
                iana_afi_t pkt_afi = stream_getw(s);
                afi_t afi;
-               safi_t safi, pkt_safi = stream_getw(s);
+               iana_safi_t pkt_safi = stream_getw(s);
+               safi_t safi;
                iana_afi_t pkt_nh_afi = stream_getw(s);
                afi_t nh_afi;
 
@@ -1199,7 +1201,7 @@ static void bgp_open_capability_orf(struct stream *s, struct peer *peer,
        unsigned long numberp;
        int number_of_orfs = 0;
        iana_afi_t pkt_afi;
-       safi_t pkt_safi;
+       iana_safi_t pkt_safi;
 
        /* Convert AFI, SAFI to values for packet. */
        bgp_map_afi_safi_int2iana(afi, safi, &pkt_afi, &pkt_safi);
@@ -1264,7 +1266,8 @@ void bgp_open_capability(struct stream *s, struct peer *peer)
        unsigned long cp, capp, rcapp;
        iana_afi_t pkt_afi;
        afi_t afi;
-       safi_t safi, pkt_safi;
+       safi_t safi;
+       iana_safi_t pkt_safi;
        as_t local_as;
        u_int32_t restart_time;
        u_char afi_safi_count = 0;
index cbd32116b4a40e714fe716f066826fcd0fda3e9e..6b92e6e38ce747f445296e100a7917bcdc9f3b97 100644 (file)
@@ -31,7 +31,7 @@ struct capability_header {
 struct capability_mp_data {
        iana_afi_t afi;
        u_char reserved;
-       safi_t safi;
+       iana_safi_t safi;
 };
 
 struct capability_as4 {
index e92f2d69773efa41741e83112e34b9cac3b00e1f..003fbaff632913bdc0d5851da1503277a03e11c6 100644 (file)
@@ -142,7 +142,7 @@ static struct stream *bgp_update_packet_eor(struct peer *peer, afi_t afi,
 {
        struct stream *s;
        iana_afi_t pkt_afi;
-       safi_t pkt_safi;
+       iana_safi_t pkt_safi;
 
        if (DISABLE_BGP_ANNOUNCE)
                return NULL;
@@ -671,7 +671,7 @@ void bgp_route_refresh_send(struct peer *peer, afi_t afi, safi_t safi,
        struct bgp_filter *filter;
        int orf_refresh = 0;
        iana_afi_t pkt_afi;
-       safi_t pkt_safi;
+       iana_safi_t pkt_safi;
 
        if (DISABLE_BGP_ANNOUNCE)
                return;
@@ -761,7 +761,7 @@ void bgp_capability_send(struct peer *peer, afi_t afi, safi_t safi,
 {
        struct stream *s;
        iana_afi_t pkt_afi;
-       safi_t pkt_safi;
+       iana_safi_t pkt_safi;
 
        /* Convert AFI, SAFI to values for packet. */
        bgp_map_afi_safi_int2iana(afi, safi, &pkt_afi, &pkt_safi);
@@ -1338,8 +1338,9 @@ int bgp_nlri_parse(struct peer *peer, struct attr *attr,
                                          packet);
        case SAFI_EVPN:
                return bgp_nlri_parse_evpn(peer, attr, packet, mp_withdraw);
+       default:
+               return -1;
        }
-       return -1;
 }
 
 /* Parse BGP Update packet and make attribute object. */
@@ -1697,7 +1698,8 @@ static void bgp_route_refresh_receive(struct peer *peer, bgp_size_t size)
 {
        iana_afi_t pkt_afi;
        afi_t afi;
-       safi_t pkt_safi, safi;
+       iana_safi_t pkt_safi;
+       safi_t safi;
        struct stream *s;
        struct peer_af *paf;
        struct update_group *updgrp;
@@ -1965,7 +1967,8 @@ static int bgp_capability_msg_parse(struct peer *peer, u_char *pnt,
        u_char action;
        iana_afi_t pkt_afi;
        afi_t afi;
-       safi_t pkt_safi, safi;
+       iana_safi_t pkt_safi;
+       safi_t safi;
 
        end = pnt + length;
 
index b554aeb32b5c2b83d76d141c6ba189946629d57f..8c2278339ffb05216949e36b5bed0e958ab78d1e 100644 (file)
@@ -2288,7 +2288,7 @@ int bgp_maximum_prefix_overflow(struct peer *peer, afi_t afi, safi_t safi,
                                int always)
 {
        iana_afi_t pkt_afi;
-       safi_t pkt_safi;
+       iana_safi_t pkt_safi;
 
        if (!CHECK_FLAG(peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX))
                return 0;
index 1a23a36e91a2bec06557ac1903f27226aa0606cb..692db32fa41463d9ce7989d5d7d7967bdbcdab41 100644 (file)
@@ -845,7 +845,7 @@ struct bpacket *subgroup_update_packet(struct update_subgroup *subgrp)
                                           send_attr_str);
                                if (!stream_empty(snlri)) {
                                        iana_afi_t pkt_afi;
-                                       safi_t pkt_safi;
+                                       iana_safi_t pkt_safi;
 
                                        pkt_afi = afi_int2iana(afi);
                                        pkt_safi = safi_int2iana(safi);
@@ -989,7 +989,7 @@ struct bpacket *subgroup_withdraw_packet(struct update_subgroup *subgrp)
                        /* If first time, format the MP_UNREACH header */
                        if (first_time) {
                                iana_afi_t pkt_afi;
-                               safi_t pkt_safi;
+                               iana_safi_t pkt_safi;
 
                                pkt_afi = afi_int2iana(afi);
                                pkt_safi = safi_int2iana(safi);
index db503516d5502263b619e0899f6341da49e62fe5..0220a7e55de21281169cc73889014e0adcce3c4b 100644 (file)
@@ -78,6 +78,10 @@ static enum node_type bgp_node_type(afi_t afi, safi_t safi)
                case SAFI_MPLS_VPN:
                        return BGP_VPNV4_NODE;
                        break;
+               default:
+                       /* not expected */
+                       return BGP_IPV4_NODE;
+                       break;
                }
                break;
        case AFI_IP6:
@@ -94,6 +98,10 @@ static enum node_type bgp_node_type(afi_t afi, safi_t safi)
                case SAFI_MPLS_VPN:
                        return BGP_VPNV6_NODE;
                        break;
+               default:
+                       /* not expected */
+                       return BGP_IPV4_NODE;
+                       break;
                }
                break;
        case AFI_L2VPN:
index a078bdfd7edcde3c640dd1f147f71301639062af..0729d0a1b3155724036c09248d45901ff036ebc8 100644 (file)
@@ -611,8 +611,8 @@ int bgp_listen_limit_unset(struct bgp *bgp)
        return 0;
 }
 
-int bgp_map_afi_safi_iana2int(iana_afi_t pkt_afi, safi_t pkt_safi, afi_t *afi,
-                             safi_t *safi)
+int bgp_map_afi_safi_iana2int(iana_afi_t pkt_afi, iana_safi_t pkt_safi,
+                             afi_t *afi, safi_t *safi)
 {
        /* Map from IANA values to internal values, return error if
         * values are unrecognized.
@@ -626,7 +626,7 @@ int bgp_map_afi_safi_iana2int(iana_afi_t pkt_afi, safi_t pkt_safi, afi_t *afi,
 }
 
 int bgp_map_afi_safi_int2iana(afi_t afi, safi_t safi, iana_afi_t *pkt_afi,
-                             safi_t *pkt_safi)
+                             iana_safi_t *pkt_safi)
 {
        /* Map from internal values to IANA values, return error if
         * internal values are bad (unexpected).
index 67b8289c70bccbeddb890c88ff21b9cab2de3fc0..ff15115e03a6cd79d16561fa98a975342b16254f 100644 (file)
@@ -1381,10 +1381,10 @@ extern void bgp_route_map_terminate(void);
 
 extern int peer_cmp(struct peer *p1, struct peer *p2);
 
-extern int bgp_map_afi_safi_iana2int(iana_afi_t pkt_afi, safi_t pkt_safi,
+extern int bgp_map_afi_safi_iana2int(iana_afi_t pkt_afi, iana_safi_t pkt_safi,
                                     afi_t *afi, safi_t *safi);
 extern int bgp_map_afi_safi_int2iana(afi_t afi, safi_t safi,
-                                    iana_afi_t *pkt_afi, safi_t *pkt_safi);
+                                    iana_afi_t *pkt_afi, iana_safi_t *pkt_safi);
 
 extern struct peer_af *peer_af_create(struct peer *, afi_t, safi_t);
 extern struct peer_af *peer_af_find(struct peer *, afi_t, safi_t);
index 0bbbe12ccef3c4e302d674b29e030c75435e02ca..61739d38ab79d6787645ea691e9069639b6b2574 100644 (file)
@@ -3872,6 +3872,10 @@ rfapiBgpInfoFilteredImportFunction(safi_t safi)
 
        case SAFI_ENCAP:
                return rfapiBgpInfoFilteredImportEncap;
+
+       default:
+               /* not expected */
+               return NULL;
        }
        zlog_err("%s: bad safi %d", __func__, safi);
        return NULL;
index 88b13cd99f209c506ee969cd67c02610b214f09f..0ba0025c6826e728687e50e760ae3bbb3d30bf17 100644 (file)
@@ -507,8 +507,9 @@ const char *safi2str(safi_t safi)
                return "evpn";
        case SAFI_LABELED_UNICAST:
                return "labeled-unicast";
+       default:
+               return "unknown";
        }
-       return NULL;
 }
 
 /* If n includes p prefix then return 1 else return 0. */
index 7b705bb83f30ccefe2a41203a70151486790e40a..1924675a1416822f84f234d817016f40578a6584 100644 (file)
@@ -416,13 +416,15 @@ extern const char *zserv_command_string(unsigned int command);
 typedef enum { AFI_IP = 1, AFI_IP6 = 2, AFI_L2VPN = 3, AFI_MAX = 4 } afi_t;
 
 /* Subsequent Address Family Identifier. */
-#define SAFI_UNICAST              1
-#define SAFI_MULTICAST            2
-#define SAFI_MPLS_VPN             3
-#define SAFI_ENCAP               4
-#define SAFI_EVPN                 5
-#define SAFI_LABELED_UNICAST      6
-#define SAFI_MAX                  7
+typedef enum {
+       SAFI_UNICAST = 1,
+       SAFI_MULTICAST = 2,
+       SAFI_MPLS_VPN = 3,
+       SAFI_ENCAP = 4,
+       SAFI_EVPN = 5,
+       SAFI_LABELED_UNICAST = 6,
+       SAFI_MAX = 7
+} safi_t;
 
 /*
  * The above AFI and SAFI definitions are for internal use. The protocol
@@ -442,13 +444,15 @@ typedef enum {
        IANA_AFI_IP6MR = 129
 } iana_afi_t;
 
-#define IANA_SAFI_RESERVED            0
-#define IANA_SAFI_UNICAST             1
-#define IANA_SAFI_MULTICAST           2
-#define IANA_SAFI_LABELED_UNICAST     4
-#define IANA_SAFI_ENCAP               7
-#define IANA_SAFI_EVPN                70
-#define IANA_SAFI_MPLS_VPN            128
+typedef enum {
+       IANA_SAFI_RESERVED = 0,
+       IANA_SAFI_UNICAST = 1,
+       IANA_SAFI_MULTICAST = 2,
+       IANA_SAFI_LABELED_UNICAST = 4,
+       IANA_SAFI_ENCAP = 7,
+       IANA_SAFI_EVPN = 70,
+       IANA_SAFI_MPLS_VPN = 128
+} iana_safi_t;
 
 /* Default Administrative Distance of each protocol. */
 #define ZEBRA_KERNEL_DISTANCE_DEFAULT      0
@@ -469,8 +473,6 @@ typedef enum {
 #define UNSET_FLAG(V,F)      (V) &= ~(F)
 #define RESET_FLAG(V)        (V) = 0
 
-typedef u_int8_t safi_t;
-
 /* Zebra types. Used in Zserv message header. */
 typedef u_int16_t zebra_size_t;
 typedef u_int16_t zebra_command_t;
@@ -504,7 +506,7 @@ static inline iana_afi_t afi_int2iana(afi_t afi)
        return IANA_AFI_RESERVED;
 }
 
-static inline safi_t safi_iana2int(safi_t safi)
+static inline safi_t safi_iana2int(iana_safi_t safi)
 {
        if (safi == IANA_SAFI_UNICAST)
                return SAFI_UNICAST;
@@ -521,7 +523,7 @@ static inline safi_t safi_iana2int(safi_t safi)
        return SAFI_MAX;
 }
 
-static inline safi_t safi_int2iana(safi_t safi)
+static inline iana_safi_t safi_int2iana(safi_t safi)
 {
        if (safi == SAFI_UNICAST)
                return IANA_SAFI_UNICAST;
index 7c0afa1b92a5849b25c8a81a9347a281359eff4e..30d5fdd6cdbea6e5df0a0066180c6fa03597195d 100644 (file)
@@ -1059,7 +1059,7 @@ static void parse_test(struct peer *peer, struct test_segment *t, int type)
                parse_ret = bgp_mp_unreach_parse(&attr_args, &nlri);
        if (!parse_ret) {
                iana_afi_t pkt_afi;
-               safi_t pkt_safi;
+               iana_safi_t pkt_safi;
 
                /* Convert AFI, SAFI to internal values, check. */
                if (bgp_map_afi_safi_int2iana(nlri.afi, nlri.safi, &pkt_afi,