summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLouis Scalbert <louis.scalbert@6wind.com>2022-12-27 15:13:18 +0100
committerLouis Scalbert <louis.scalbert@6wind.com>2023-09-18 14:22:51 +0200
commit1642a68d60cfade4b2fce72aaef58dea700c65c3 (patch)
tree791b2bbd45d9820e1121c8aa80a795dd04a9c0bf /lib
parent41fa35a8f4156b541c4b6d962e637b6f7f2a17cf (diff)
lib: register bgp link-state afi/safi
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>
Diffstat (limited to 'lib')
-rw-r--r--lib/iana_afi.h15
-rw-r--r--lib/prefix.c8
-rw-r--r--lib/zebra.h9
3 files changed, 29 insertions, 3 deletions
diff --git a/lib/iana_afi.h b/lib/iana_afi.h
index b9c19cc3d5..9b4d33fa4d 100644
--- a/lib/iana_afi.h
+++ b/lib/iana_afi.h
@@ -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;
diff --git a/lib/prefix.c b/lib/prefix.c
index 0b8664411d..5f24b0f780 100644
--- a/lib/prefix.c
+++ b/lib/prefix.c
@@ -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";
diff --git a/lib/zebra.h b/lib/zebra.h
index ecc87f58f1..cd0b72834c 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -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) \