1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * iana_afi and safi definitions.
4 * Copyright (C) 2018-2019 Cumulus Networks, Inc.
16 * The above AFI and SAFI definitions are for internal use. The protocol
17 * definitions (IANA values) as for example used in BGP protocol packets
18 * are defined below and these will get mapped to/from the internal values
19 * in the appropriate places.
20 * The rationale is that the protocol (IANA) values may be sparse and are
21 * not optimal for use in data-structure sizing.
22 * Note: Only useful (i.e., supported) values are defined below.
25 IANA_AFI_RESERVED
= 0,
32 IANA_SAFI_RESERVED
= 0,
33 IANA_SAFI_UNICAST
= 1,
34 IANA_SAFI_MULTICAST
= 2,
35 IANA_SAFI_LABELED_UNICAST
= 4,
38 IANA_SAFI_MPLS_VPN
= 128,
39 IANA_SAFI_FLOWSPEC
= 133
42 static inline afi_t
afi_iana2int(iana_afi_t afi
)
51 case IANA_AFI_RESERVED
:
58 static inline iana_afi_t
afi_int2iana(afi_t afi
)
66 return IANA_AFI_L2VPN
;
69 return IANA_AFI_RESERVED
;
72 return IANA_AFI_RESERVED
;
75 static inline const char *iana_afi2str(iana_afi_t afi
)
77 return afi2str(afi_iana2int(afi
));
80 static inline safi_t
safi_iana2int(iana_safi_t safi
)
83 case IANA_SAFI_UNICAST
:
85 case IANA_SAFI_MULTICAST
:
86 return SAFI_MULTICAST
;
87 case IANA_SAFI_MPLS_VPN
:
93 case IANA_SAFI_LABELED_UNICAST
:
94 return SAFI_LABELED_UNICAST
;
95 case IANA_SAFI_FLOWSPEC
:
97 case IANA_SAFI_RESERVED
:
104 static inline iana_safi_t
safi_int2iana(safi_t safi
)
108 return IANA_SAFI_UNICAST
;
110 return IANA_SAFI_MULTICAST
;
112 return IANA_SAFI_MPLS_VPN
;
114 return IANA_SAFI_ENCAP
;
116 return IANA_SAFI_EVPN
;
117 case SAFI_LABELED_UNICAST
:
118 return IANA_SAFI_LABELED_UNICAST
;
120 return IANA_SAFI_FLOWSPEC
;
123 return IANA_SAFI_RESERVED
;
126 return IANA_SAFI_RESERVED
;
129 static inline const char *iana_safi2str(iana_safi_t safi
)
131 return safi2str(safi_iana2int(safi
));