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:
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:
break;
}
break;
- case AFI_LINKSTATE:
- /* TODO */
- break;
case AFI_L2VPN:
if (safi != SAFI_FLOWSPEC)
flog_err(
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,
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;
case AFI_IP6:
printf("/AFI_IP6\n");
break;
- case AFI_LINKSTATE:
- printf("/AFI_LINKSTATE\n");
- break;
default:
printf("/UNKNOWN %d", subtype);
break;
"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(
"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(
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, ",
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 ",
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;
case AFI_L2VPN:
space = EVPN_ROUTE_PREFIXLEN;
break;
- case AFI_LINKSTATE:
- /* TODO */
case AFI_UNSPEC:
case AFI_MAX:
return;
case AFI_L2VPN:
bitlen = EVPN_ROUTE_PREFIXLEN;
break;
- case AFI_LINKSTATE:
- /* TODO */
case AFI_UNSPEC:
case AFI_MAX:
break;
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:
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:
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..
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";
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:
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";
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:
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:
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;
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");
}
case AFI_UNSPEC:
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_MAX:
flog_err(EC_LIB_DEVELOPMENT, "%s: bad afi %d", __func__, afi);
return;
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);
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);
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;
case SAFI_EVPN:
case SAFI_LABELED_UNICAST:
case SAFI_FLOWSPEC:
- case SAFI_LINKSTATE:
- case SAFI_LINKSTATE_VPN:
case SAFI_MAX:
assert(0);
}
case SAFI_EVPN:
case SAFI_LABELED_UNICAST:
case SAFI_FLOWSPEC:
- case SAFI_LINKSTATE:
- case SAFI_LINKSTATE_VPN:
case SAFI_MAX:
assert(0);
}
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 {
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;
return AFI_IP6;
case IANA_AFI_L2VPN:
return AFI_L2VPN;
- case IANA_AFI_LINKSTATE:
- return AFI_LINKSTATE;
case IANA_AFI_RESERVED:
return AFI_MAX;
}
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;
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;
}
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;
return "ipv6";
case AFI_L2VPN:
return "l2vpn";
- case AFI_LINKSTATE:
- return "link-state";
case AFI_MAX:
case AFI_UNSPEC:
return "bad-value";
return "IPv6";
case AFI_L2VPN:
return "l2vpn";
- case AFI_LINKSTATE:
- return "link-state";
case AFI_MAX:
case AFI_UNSPEC:
return "bad-value";
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";
#define INADDR_LOOPBACK 0x7f000001 /* Internet address 127.0.0.1. */
#endif
-/* Address family numbers. */
+/* Address family numbers from RFC1700. */
typedef enum {
AFI_UNSPEC = 0,
AFI_IP = 1,
AFI_IP6 = 2,
AFI_L2VPN = 3,
- AFI_LINKSTATE = 4, /* BGP-LS RFC 7752 */
- AFI_MAX = 5,
+ AFI_MAX = 4
} afi_t;
#define IS_VALID_AFI(a) ((a) > AFI_UNSPEC && (a) < AFI_MAX)
SAFI_EVPN = 5,
SAFI_LABELED_UNICAST = 6,
SAFI_FLOWSPEC = 7,
- SAFI_LINKSTATE = 8, /* BGP-LS RFC 7752 */
- SAFI_LINKSTATE_VPN = 9, /* BGP-LS RFC 7752 */
- SAFI_MAX = 10,
+ SAFI_MAX = 8
} safi_t;
#define FOREACH_AFI_SAFI(afi, safi) \
"%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__);
"%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__);
assert(!!str2prefix(args->source, &src));
break;
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_UNSPEC:
case AFI_MAX:
break;
return "ipv6";
case AFI_L2VPN:
return "l2vpn";
- case AFI_LINKSTATE:
- return "link-state";
case AFI_MAX:
case AFI_UNSPEC:
return "bad-value";
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));
break;
case AFI_UNSPEC:
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_MAX:
zlog_warn("Unknown AFI: %s", afi2str(afi));
break;
return 0;
case AFI_UNSPEC:
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_MAX:
return -1;
}
break;
case AFI_UNSPEC:
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_MAX:
return -1;
}
client->redist_v6_del_cnt++;
break;
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_MAX:
case AFI_UNSPEC:
break;
break;
case AFI_UNSPEC:
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_MAX:
flog_err(EC_LIB_DEVELOPMENT,
"%s: unknown address-family: %u", __func__,
break;
case AFI_UNSPEC:
case AFI_L2VPN:
- case AFI_LINKSTATE:
case AFI_MAX:
assert(afi != AFI_IP && afi != AFI_IP6);
break;