summaryrefslogtreecommitdiffstats
path: root/isisd/isis_tlvs.h
diff options
context:
space:
mode:
authorChristian Franke <chris@opensourcerouting.org>2018-04-06 13:49:38 +0200
committerChristian Franke <chris@opensourcerouting.org>2018-09-05 11:38:13 +0200
commit41a145f18d621e24a1c4b8ab17683d14d9190fd3 (patch)
tree904408654a5d6020d4684a82d8db1e8d5e1dc535 /isisd/isis_tlvs.h
parentisisd: move spf datastructures to a header, to share with fabricd (diff)
downloadfrr-41a145f18d621e24a1c4b8ab17683d14d9190fd3.tar.xz
frr-41a145f18d621e24a1c4b8ab17683d14d9190fd3.zip
fabricd: Add support for TLV 150 (Spine-Leaf-Extension)
To flood the tier calculated by the fabric locality detection, OpenFabric makes use of TLV 150, defined in draft-shen-isis-spine-leaf-ext-06, so add support for that TLV. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Diffstat (limited to 'isisd/isis_tlvs.h')
-rw-r--r--isisd/isis_tlvs.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/isisd/isis_tlvs.h b/isisd/isis_tlvs.h
index bd1fa3e67..451321ea9 100644
--- a/isisd/isis_tlvs.h
+++ b/isisd/isis_tlvs.h
@@ -103,6 +103,17 @@ struct isis_protocols_supported {
uint8_t *protocols;
};
+#define ISIS_TIER_UNDEFINED 15
+
+struct isis_spine_leaf {
+ uint8_t tier;
+
+ bool has_tier;
+ bool is_leaf;
+ bool is_spine;
+ bool is_backup;
+};
+
enum isis_threeway_state {
ISIS_THREEWAY_DOWN = 2,
ISIS_THREEWAY_INITIALIZING = 1,
@@ -205,6 +216,7 @@ struct isis_tlvs {
struct isis_item_list ipv6_reach;
struct isis_mt_item_list mt_ipv6_reach;
struct isis_threeway_adj *threeway_adj;
+ struct isis_spine_leaf *spine_leaf;
};
struct isis_subtlvs {
@@ -236,6 +248,7 @@ enum isis_tlv_type {
ISIS_TLV_TE_ROUTER_ID = 134,
ISIS_TLV_EXTENDED_IP_REACH = 135,
ISIS_TLV_DYNAMIC_HOSTNAME = 137,
+ ISIS_TLV_SPINE_LEAF_EXT = 150,
ISIS_TLV_MT_REACH = 222,
ISIS_TLV_MT_ROUTER_INFO = 229,
ISIS_TLV_IPV6_ADDRESS = 232,
@@ -331,6 +344,10 @@ void isis_tlvs_add_threeway_adj(struct isis_tlvs *tlvs,
const uint8_t *neighbor_id,
uint32_t neighbor_circuit_id);
+void isis_tlvs_add_spine_leaf(struct isis_tlvs *tlvs, uint8_t tier,
+ bool has_tier, bool is_leaf, bool is_spine,
+ bool is_backup);
+
struct isis_mt_router_info *
isis_tlvs_lookup_mt_router_info(struct isis_tlvs *tlvs, uint16_t mtid);
#endif