]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: register bgp link-state afi/safi
authorLouis Scalbert <louis.scalbert@6wind.com>
Tue, 27 Dec 2022 14:13:18 +0000 (15:13 +0100)
committerLouis Scalbert <louis.scalbert@6wind.com>
Mon, 18 Sep 2023 12:22:51 +0000 (14:22 +0200)
Register BGP Link-State AFI/SAFI values from RFC7752.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
18 files changed:
bgpd/bgp_attr.c
bgpd/bgp_btoa.c
bgpd/bgp_open.c
bgpd/bgp_route.c
bgpd/bgp_vty.c
bgpd/bgpd.h
bgpd/rfapi/rfapi_import.c
bgpd/rfapi/rfapi_monitor.c
lib/iana_afi.h
lib/prefix.c
lib/zebra.h
pbrd/pbr_zebra.c
staticd/static_vty.c
tests/bgpd/test_peer_attr.c
zebra/connected.c
zebra/router-id.c
zebra/zapi_msg.c
zebra/zebra_nhg.c

index 7916233444ec3ca66da9615b23062668e6bde8e3..8427b1b604a21910918196282ad35988f9018dc2 100644 (file)
@@ -4003,6 +4003,10 @@ size_t bgp_packet_mpattr_start(struct stream *s, struct peer *peer, afi_t afi,
        switch (nh_afi) {
        case AFI_IP:
                switch (safi) {
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
+                       /* TODO */
+                       break;
                case SAFI_UNICAST:
                case SAFI_MULTICAST:
                case SAFI_LABELED_UNICAST:
@@ -4036,6 +4040,10 @@ size_t bgp_packet_mpattr_start(struct stream *s, struct peer *peer, afi_t afi,
                break;
        case AFI_IP6:
                switch (safi) {
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
+                       /* TODO */
+                       break;
                case SAFI_UNICAST:
                case SAFI_MULTICAST:
                case SAFI_LABELED_UNICAST:
@@ -4086,6 +4094,9 @@ size_t bgp_packet_mpattr_start(struct stream *s, struct peer *peer, afi_t afi,
                        break;
                }
                break;
+       case AFI_LINKSTATE:
+               /* TODO */
+               break;
        case AFI_L2VPN:
                if (safi != SAFI_FLOWSPEC)
                        flog_err(
@@ -4138,6 +4149,10 @@ void bgp_packet_mpattr_prefix(struct stream *s, afi_t afi, safi_t safi,
                stream_put_labeled_prefix(s, p, label, addpath_capable,
                                          addpath_tx_id);
                break;
+       case SAFI_LINKSTATE:
+       case SAFI_LINKSTATE_VPN:
+               /* TODO */
+               break;
        case SAFI_FLOWSPEC:
                stream_putc(s, p->u.prefix_flowspec.prefixlen);
                stream_put(s, (const void *)p->u.prefix_flowspec.ptr,
@@ -4164,6 +4179,10 @@ size_t bgp_packet_mpattr_prefix_size(afi_t afi, safi_t safi,
        case SAFI_MAX:
                assert(!"Attempting to figure size for a SAFI_UNSPEC/SAFI_MAX this is a DEV ESCAPE");
                break;
+       case SAFI_LINKSTATE:
+       case SAFI_LINKSTATE_VPN:
+               /* TODO */
+               break;
        case SAFI_UNICAST:
        case SAFI_MULTICAST:
                break;
index fc3363b098e705402a2060134b8413d6dcd1a7ca..a7553a6b8903fda68d6d8287dc7c865813ce1d1d 100644 (file)
@@ -176,6 +176,9 @@ int main(int argc, char **argv)
                        case AFI_IP6:
                                printf("/AFI_IP6\n");
                                break;
+                       case AFI_LINKSTATE:
+                               printf("/AFI_LINKSTATE\n");
+                               break;
                        default:
                                printf("/UNKNOWN %d", subtype);
                                break;
index da70f67c188627f9ea00cdb7c1558650cd39f005..19daeb9fdceb2d49369841574d054664fb9c7fa0 100644 (file)
@@ -147,6 +147,12 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json,
                                                "capabilityErrorMultiProtocolAfi",
                                                "L2VPN");
                                        break;
+                               case AFI_LINKSTATE:
+                                       json_object_string_add(
+                                               json_cap,
+                                               "capabilityErrorMultiProtocolAfi",
+                                               "Link State");
+                                       break;
                                case AFI_UNSPEC:
                                case AFI_MAX:
                                        json_object_int_add(
@@ -198,6 +204,18 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json,
                                                "capabilityErrorMultiProtocolSafi",
                                                "flowspec");
                                        break;
+                               case SAFI_LINKSTATE:
+                                       json_object_string_add(
+                                               json_cap,
+                                               "capabilityErrorMultiProtocolSafi",
+                                               "Link State");
+                                       break;
+                               case SAFI_LINKSTATE_VPN:
+                                       json_object_string_add(
+                                               json_cap,
+                                               "capabilityErrorMultiProtocolSafi",
+                                               "Link State VPN");
+                                       break;
                                case SAFI_UNSPEC:
                                case SAFI_MAX:
                                        json_object_int_add(
@@ -219,6 +237,9 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json,
                                case AFI_L2VPN:
                                        vty_out(vty, "AFI L2VPN, ");
                                        break;
+                               case AFI_LINKSTATE:
+                                       vty_out(vty, "AFI Link State, ");
+                                       break;
                                case AFI_UNSPEC:
                                case AFI_MAX:
                                        vty_out(vty, "AFI Unknown %d, ",
@@ -247,6 +268,12 @@ void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool use_json,
                                case SAFI_EVPN:
                                        vty_out(vty, "SAFI EVPN");
                                        break;
+                               case SAFI_LINKSTATE:
+                                       vty_out(vty, "SAFI LINK STATE");
+                                       break;
+                               case SAFI_LINKSTATE_VPN:
+                                       vty_out(vty, "SAFI LINK STATE VPN");
+                                       break;
                                case SAFI_UNSPEC:
                                case SAFI_MAX:
                                        vty_out(vty, "SAFI Unknown %d ",
index 227a68ee55915612c3311a69d57140ea85f55f43..70c8238a74ff7ffbfa65f2db48627d4018ad9e36 100644 (file)
@@ -12052,6 +12052,8 @@ const struct prefix_rd *bgp_rd_from_dest(const struct bgp_dest *dest,
        case SAFI_UNICAST:
        case SAFI_MULTICAST:
        case SAFI_LABELED_UNICAST:
+       case SAFI_LINKSTATE:
+       case SAFI_LINKSTATE_VPN:
        case SAFI_FLOWSPEC:
        case SAFI_MAX:
                return NULL;
@@ -13301,6 +13303,8 @@ static void bgp_table_stats_walker(struct event *t)
        case AFI_L2VPN:
                space = EVPN_ROUTE_PREFIXLEN;
                break;
+       case AFI_LINKSTATE:
+               /* TODO */
        case AFI_UNSPEC:
        case AFI_MAX:
                return;
@@ -13557,6 +13561,8 @@ static int bgp_table_stats_single(struct vty *vty, struct bgp *bgp, afi_t afi,
        case AFI_L2VPN:
                bitlen = EVPN_ROUTE_PREFIXLEN;
                break;
+       case AFI_LINKSTATE:
+               /* TODO */
        case AFI_UNSPEC:
        case AFI_MAX:
                break;
index e76968cdb0201e89f159ead3253f81db02956c94..67e2b467e8fbe5d9a4e0d93b27ceb0e7b8926d04 100644 (file)
@@ -168,6 +168,8 @@ static enum node_type bgp_node_type(afi_t afi, safi_t safi)
                        return BGP_VPNV4_NODE;
                case SAFI_FLOWSPEC:
                        return BGP_FLOWSPECV4_NODE;
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_UNSPEC:
                case SAFI_ENCAP:
                case SAFI_EVPN:
@@ -188,6 +190,8 @@ static enum node_type bgp_node_type(afi_t afi, safi_t safi)
                        return BGP_VPNV6_NODE;
                case SAFI_FLOWSPEC:
                        return BGP_FLOWSPECV6_NODE;
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_UNSPEC:
                case SAFI_ENCAP:
                case SAFI_EVPN:
@@ -198,6 +202,8 @@ static enum node_type bgp_node_type(afi_t afi, safi_t safi)
                break;
        case AFI_L2VPN:
                return BGP_EVPN_NODE;
+       case AFI_LINKSTATE:
+               /* TODO */
        case AFI_UNSPEC:
        case AFI_MAX:
                // We should never be here but to clarify the switch statement..
@@ -534,6 +540,8 @@ static const char *get_bgp_default_af_flag(afi_t afi, safi_t safi)
                case SAFI_FLOWSPEC:
                        return "ipv4-flowspec";
                case SAFI_UNSPEC:
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_EVPN:
                case SAFI_MAX:
                        return "unknown-afi/safi";
@@ -553,6 +561,8 @@ static const char *get_bgp_default_af_flag(afi_t afi, safi_t safi)
                        return "ipv6-labeled-unicast";
                case SAFI_FLOWSPEC:
                        return "ipv6-flowspec";
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_UNSPEC:
                case SAFI_EVPN:
                case SAFI_MAX:
@@ -568,12 +578,16 @@ static const char *get_bgp_default_af_flag(afi_t afi, safi_t safi)
                case SAFI_MPLS_VPN:
                case SAFI_ENCAP:
                case SAFI_LABELED_UNICAST:
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_FLOWSPEC:
                case SAFI_UNSPEC:
                case SAFI_MAX:
                        return "unknown-afi/safi";
                }
                break;
+       case AFI_LINKSTATE:
+               /* TODO */
        case AFI_UNSPEC:
        case AFI_MAX:
                return "unknown-afi/safi";
index c3e55b711e824467d9f3ced74d54bb507d5dddb8..1319607a3f3fd3a634be396061544b057183a6ba 100644 (file)
@@ -2504,6 +2504,8 @@ static inline int afindex(afi_t afi, safi_t safi)
                        return BGP_AF_IPV4_ENCAP;
                case SAFI_FLOWSPEC:
                        return BGP_AF_IPV4_FLOWSPEC;
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_EVPN:
                case SAFI_UNSPEC:
                case SAFI_MAX:
@@ -2524,6 +2526,8 @@ static inline int afindex(afi_t afi, safi_t safi)
                        return BGP_AF_IPV6_ENCAP;
                case SAFI_FLOWSPEC:
                        return BGP_AF_IPV6_FLOWSPEC;
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_EVPN:
                case SAFI_UNSPEC:
                case SAFI_MAX:
@@ -2541,10 +2545,14 @@ static inline int afindex(afi_t afi, safi_t safi)
                case SAFI_ENCAP:
                case SAFI_FLOWSPEC:
                case SAFI_UNSPEC:
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_MAX:
                        return BGP_AF_MAX;
                }
                break;
+       case AFI_LINKSTATE:
+               /* TODO */
        case AFI_UNSPEC:
        case AFI_MAX:
                return BGP_AF_MAX;
index a93e186f8d82e26470bea119b9fcb5b07eb4314d..126ba225cb660b5487bf39fc2907129b77c82990 100644 (file)
@@ -248,6 +248,8 @@ void rfapiCheckRefcount(struct agg_node *rn, safi_t safi, int lockoffset)
                case SAFI_EVPN:
                case SAFI_LABELED_UNICAST:
                case SAFI_FLOWSPEC:
+               case SAFI_LINKSTATE:
+               case SAFI_LINKSTATE_VPN:
                case SAFI_MAX:
                        assert(!"Passed in safi should be impossible");
                }
@@ -2972,6 +2974,7 @@ static void rfapiBgpInfoFilteredImportEncap(
 
        case AFI_UNSPEC:
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_MAX:
                flog_err(EC_LIB_DEVELOPMENT, "%s: bad afi %d", __func__, afi);
                return;
@@ -3420,6 +3423,7 @@ void rfapiBgpInfoFilteredImportVPN(
                rt = import_table->imported_vpn[afi];
                break;
 
+       case AFI_LINKSTATE:
        case AFI_UNSPEC:
        case AFI_MAX:
                flog_err(EC_LIB_DEVELOPMENT, "%s: bad afi %d", __func__, afi);
@@ -3819,6 +3823,8 @@ rfapiBgpInfoFilteredImportFunction(safi_t safi)
        case SAFI_EVPN:
        case SAFI_LABELED_UNICAST:
        case SAFI_FLOWSPEC:
+       case SAFI_LINKSTATE:
+       case SAFI_LINKSTATE_VPN:
        case SAFI_MAX:
                /* not expected */
                flog_err(EC_LIB_DEVELOPMENT, "%s: bad safi %d", __func__, safi);
@@ -4063,6 +4069,8 @@ static void rfapiProcessPeerDownRt(struct peer *peer,
        case SAFI_EVPN:
        case SAFI_LABELED_UNICAST:
        case SAFI_FLOWSPEC:
+       case SAFI_LINKSTATE:
+       case SAFI_LINKSTATE_VPN:
        case SAFI_MAX:
                /* Suppress uninitialized variable warning */
                rt = NULL;
index 3fe957ba4de742f735e79096a7b955882ea78203..766b5d5360d9c34f490fe5b32fcafbc876ed2265 100644 (file)
@@ -237,6 +237,8 @@ void rfapiMonitorExtraFlush(safi_t safi, struct agg_node *rn)
        case SAFI_EVPN:
        case SAFI_LABELED_UNICAST:
        case SAFI_FLOWSPEC:
+       case SAFI_LINKSTATE:
+       case SAFI_LINKSTATE_VPN:
        case SAFI_MAX:
                assert(0);
        }
@@ -305,6 +307,8 @@ void rfapiMonitorExtraPrune(safi_t safi, struct agg_node *rn)
        case SAFI_EVPN:
        case SAFI_LABELED_UNICAST:
        case SAFI_FLOWSPEC:
+       case SAFI_LINKSTATE:
+       case SAFI_LINKSTATE_VPN:
        case SAFI_MAX:
                assert(0);
        }
index b9c19cc3d5496700e72c81776812fd5a00d03e7e..9b4d33fa4d62f177949a1ab34c17febbef1a79b4 100644 (file)
@@ -26,6 +26,7 @@ typedef enum {
        IANA_AFI_IPV4 = 1,
        IANA_AFI_IPV6 = 2,
        IANA_AFI_L2VPN = 25,
+       IANA_AFI_LINKSTATE = 16388, /* BGP-LS RFC 7752 */
 } iana_afi_t;
 
 typedef enum {
@@ -35,6 +36,8 @@ typedef enum {
        IANA_SAFI_LABELED_UNICAST = 4,
        IANA_SAFI_ENCAP = 7,
        IANA_SAFI_EVPN = 70,
+       IANA_SAFI_LINKSTATE = 71,     /* BGP-LS RFC 7752 */
+       IANA_SAFI_LINKSTATE_VPN = 72, /* BGP-LS RFC 7752 */
        IANA_SAFI_MPLS_VPN = 128,
        IANA_SAFI_FLOWSPEC = 133
 } iana_safi_t;
@@ -48,6 +51,8 @@ static inline afi_t afi_iana2int(iana_afi_t afi)
                return AFI_IP6;
        case IANA_AFI_L2VPN:
                return AFI_L2VPN;
+       case IANA_AFI_LINKSTATE:
+               return AFI_LINKSTATE;
        case IANA_AFI_RESERVED:
                return AFI_MAX;
        }
@@ -64,6 +69,8 @@ static inline iana_afi_t afi_int2iana(afi_t afi)
                return IANA_AFI_IPV6;
        case AFI_L2VPN:
                return IANA_AFI_L2VPN;
+       case AFI_LINKSTATE:
+               return IANA_AFI_LINKSTATE;
        case AFI_UNSPEC:
        case AFI_MAX:
                return IANA_AFI_RESERVED;
@@ -94,6 +101,10 @@ static inline safi_t safi_iana2int(iana_safi_t safi)
                return SAFI_LABELED_UNICAST;
        case IANA_SAFI_FLOWSPEC:
                return SAFI_FLOWSPEC;
+       case IANA_SAFI_LINKSTATE:
+               return SAFI_LINKSTATE;
+       case IANA_SAFI_LINKSTATE_VPN:
+               return SAFI_LINKSTATE_VPN;
        case IANA_SAFI_RESERVED:
                return SAFI_MAX;
        }
@@ -118,6 +129,10 @@ static inline iana_safi_t safi_int2iana(safi_t safi)
                return IANA_SAFI_LABELED_UNICAST;
        case SAFI_FLOWSPEC:
                return IANA_SAFI_FLOWSPEC;
+       case SAFI_LINKSTATE:
+               return IANA_SAFI_LINKSTATE;
+       case SAFI_LINKSTATE_VPN:
+               return IANA_SAFI_LINKSTATE_VPN;
        case SAFI_UNSPEC:
        case SAFI_MAX:
                return IANA_SAFI_RESERVED;
index 0b8664411d3399e6a2bdb33393f15b969ee601bf..5f24b0f780c88b09a10ddb471df55b028753e368 100644 (file)
@@ -132,6 +132,8 @@ const char *afi2str_lower(afi_t afi)
                return "ipv6";
        case AFI_L2VPN:
                return "l2vpn";
+       case AFI_LINKSTATE:
+               return "link-state";
        case AFI_MAX:
        case AFI_UNSPEC:
                return "bad-value";
@@ -149,6 +151,8 @@ const char *afi2str(afi_t afi)
                return "IPv6";
        case AFI_L2VPN:
                return "l2vpn";
+       case AFI_LINKSTATE:
+               return "link-state";
        case AFI_MAX:
        case AFI_UNSPEC:
                return "bad-value";
@@ -174,6 +178,10 @@ const char *safi2str(safi_t safi)
                return "labeled-unicast";
        case SAFI_FLOWSPEC:
                return "flowspec";
+       case SAFI_LINKSTATE:
+               return "link-state";
+       case SAFI_LINKSTATE_VPN:
+               return "link-state-vpn";
        case SAFI_UNSPEC:
        case SAFI_MAX:
                return "unknown";
index ecc87f58f10fab7214721c3c366f13794a41c91a..cd0b72834cfc57b1c776692367f5b0b5d3d8ed68 100644 (file)
@@ -326,13 +326,14 @@ struct in_pktinfo {
 #define        INADDR_LOOPBACK 0x7f000001      /* Internet address 127.0.0.1.  */
 #endif
 
-/* Address family numbers from RFC1700. */
+/* Address family numbers. */
 typedef enum {
        AFI_UNSPEC = 0,
        AFI_IP = 1,
        AFI_IP6 = 2,
        AFI_L2VPN = 3,
-       AFI_MAX = 4
+       AFI_LINKSTATE = 4, /* BGP-LS RFC 7752 */
+       AFI_MAX = 5,
 } afi_t;
 
 #define IS_VALID_AFI(a) ((a) > AFI_UNSPEC && (a) < AFI_MAX)
@@ -347,7 +348,9 @@ typedef enum {
        SAFI_EVPN = 5,
        SAFI_LABELED_UNICAST = 6,
        SAFI_FLOWSPEC = 7,
-       SAFI_MAX = 8
+       SAFI_LINKSTATE = 8,     /* BGP-LS RFC 7752 */
+       SAFI_LINKSTATE_VPN = 9, /* BGP-LS RFC 7752 */
+       SAFI_MAX = 10,
 } safi_t;
 
 #define FOREACH_AFI_SAFI(afi, safi)                                            \
index ee17a193f46f8dfe968848b20b6e799f38cb07ee..e8a49b3176fe7a423bcb489306fbdb136e150045 100644 (file)
@@ -335,6 +335,11 @@ void route_add(struct pbr_nexthop_group_cache *pnhgc, struct nexthop_group nhg,
                       "%s: Asked to install unsupported route type: L2VPN",
                       __func__);
                break;
+       case AFI_LINKSTATE:
+               DEBUGD(&pbr_dbg_zebra,
+                      "%s: Asked to install unsupported route type: Link-State",
+                      __func__);
+               break;
        case AFI_UNSPEC:
                DEBUGD(&pbr_dbg_zebra,
                       "%s: Asked to install unspecified route type", __func__);
@@ -380,6 +385,11 @@ void route_delete(struct pbr_nexthop_group_cache *pnhgc, afi_t afi)
                       "%s: Asked to delete unsupported route type: L2VPN",
                       __func__);
                break;
+       case AFI_LINKSTATE:
+               DEBUGD(&pbr_dbg_zebra,
+                      "%s: Asked to delete unsupported route type: Link-State",
+                      __func__);
+               break;
        case AFI_UNSPEC:
                DEBUGD(&pbr_dbg_zebra,
                       "%s: Asked to delete unspecified route type", __func__);
index 16e4cb7d83bcc6bb3f1fee458b884ce15fa3f8be..ca231b6d3321cfc05011ba1caac5f4c1ee2552f3 100644 (file)
@@ -126,6 +126,7 @@ static int static_route_nb_run(struct vty *vty, struct static_route_args *args)
                        assert(!!str2prefix(args->source, &src));
                break;
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_UNSPEC:
        case AFI_MAX:
                break;
index bc6eba9069055bc44ae24a20d0bf6169470ee41a..761b23bf978f5870e0422ffc49c4b6f0ba5193f1 100644 (file)
@@ -660,6 +660,8 @@ static const char *str_from_afi(afi_t afi)
                return "ipv6";
        case AFI_L2VPN:
                return "l2vpn";
+       case AFI_LINKSTATE:
+               return "link-state";
        case AFI_MAX:
        case AFI_UNSPEC:
                return "bad-value";
index ee0823f56f458ac8ebbf7427c2ace23878af5baa..46f2a83a3cdb22306f7c3585013b749958f0e49f 100644 (file)
@@ -234,6 +234,7 @@ void connected_up(struct interface *ifp, struct connected *ifc)
                break;
        case AFI_UNSPEC:
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_MAX:
                flog_warn(EC_ZEBRA_CONNECTED_AFI_UNKNOWN,
                          "Received unknown AFI: %s", afi2str(afi));
@@ -424,6 +425,7 @@ void connected_down(struct interface *ifp, struct connected *ifc)
                break;
        case AFI_UNSPEC:
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_MAX:
                zlog_warn("Unknown AFI: %s", afi2str(afi));
                break;
index ef87d924fe54eb58ae7f971516ff77f1a65630f2..45edf45336a2bef014e9a59d2c72805f16999924 100644 (file)
@@ -102,6 +102,7 @@ int router_id_get(afi_t afi, struct prefix *p, struct zebra_vrf *zvrf)
                return 0;
        case AFI_UNSPEC:
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_MAX:
                return -1;
        }
@@ -126,6 +127,7 @@ static int router_id_set(afi_t afi, struct prefix *p, struct zebra_vrf *zvrf)
                break;
        case AFI_UNSPEC:
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_MAX:
                return -1;
        }
index 6bed6d87272cb3f4ab897a26390672d8e340b04f..acad599b8a5d165e0f092fc28c333b21ae63afcc 100644 (file)
@@ -565,6 +565,7 @@ int zsend_redistribute_route(int cmd, struct zserv *client,
                        client->redist_v6_del_cnt++;
                break;
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_MAX:
        case AFI_UNSPEC:
                break;
index 3a56bf2a507505a104fbf64bafb49b4e7354edd3..b1eededaae772b19e622efeeb4505938fdf696ea 100644 (file)
@@ -2281,6 +2281,7 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
                        break;
                case AFI_UNSPEC:
                case AFI_L2VPN:
+               case AFI_LINKSTATE:
                case AFI_MAX:
                        flog_err(EC_LIB_DEVELOPMENT,
                                 "%s: unknown address-family: %u", __func__,
@@ -2324,6 +2325,7 @@ static int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry *nhe,
                break;
        case AFI_UNSPEC:
        case AFI_L2VPN:
+       case AFI_LINKSTATE:
        case AFI_MAX:
                assert(afi != AFI_IP && afi != AFI_IP6);
                break;