summaryrefslogtreecommitdiffstats
path: root/isisd/isis_tlvs.h
diff options
context:
space:
mode:
authorChristian Franke <chris@opensourcerouting.org>2018-03-05 18:51:17 +0100
committerChristian Franke <chris@opensourcerouting.org>2018-03-10 18:38:03 +0100
commit9fe21208143e9a1ab2fcdc8e782c0de57b4891db (patch)
tree691ad466e85ed2d58b17fc140249b7d238ea9800 /isisd/isis_tlvs.h
parentisisd: remove unused debug code (diff)
downloadfrr-9fe21208143e9a1ab2fcdc8e782c0de57b4891db.tar.xz
frr-9fe21208143e9a1ab2fcdc8e782c0de57b4891db.zip
isisd: add support for TLV 240 P2P Three-Way Adjacency
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Diffstat (limited to 'isisd/isis_tlvs.h')
-rw-r--r--isisd/isis_tlvs.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/isisd/isis_tlvs.h b/isisd/isis_tlvs.h
index 6ade0af28..98edbf14e 100644
--- a/isisd/isis_tlvs.h
+++ b/isisd/isis_tlvs.h
@@ -103,6 +103,20 @@ struct isis_protocols_supported {
uint8_t *protocols;
};
+enum isis_threeway_state {
+ ISIS_THREEWAY_DOWN = 2,
+ ISIS_THREEWAY_INITIALIZING = 1,
+ ISIS_THREEWAY_UP = 0
+};
+
+struct isis_threeway_adj {
+ enum isis_threeway_state state;
+ uint32_t local_circuit_id;
+ bool neighbor_set;
+ uint8_t neighbor_id[6];
+ uint32_t neighbor_circuit_id;
+};
+
struct isis_item;
struct isis_item {
struct isis_item *next;
@@ -190,6 +204,7 @@ struct isis_tlvs {
char *hostname;
struct isis_item_list ipv6_reach;
struct isis_mt_item_list mt_ipv6_reach;
+ struct isis_threeway_adj *threeway_adj;
};
struct isis_subtlvs {
@@ -227,6 +242,7 @@ enum isis_tlv_type {
ISIS_TLV_MT_IP_REACH = 235,
ISIS_TLV_IPV6_REACH = 236,
ISIS_TLV_MT_IPV6_REACH = 237,
+ ISIS_TLV_THREE_WAY_ADJ = 240,
ISIS_TLV_MAX = 256,
ISIS_SUBTLV_IPV6_SOURCE_PREFIX = 22
@@ -303,6 +319,14 @@ void isis_tlvs_add_extended_reach(struct isis_tlvs *tlvs, uint16_t mtid,
uint8_t *id, uint32_t metric,
uint8_t *subtlvs, uint8_t subtlv_len);
+const char *isis_threeway_state_name(enum isis_threeway_state state);
+
+void isis_tlvs_add_threeway_adj(struct isis_tlvs *tlvs,
+ enum isis_threeway_state state,
+ uint32_t local_circuit_id,
+ const uint8_t *neighbor_id,
+ uint32_t neighbor_circuit_id);
+
struct isis_mt_router_info *
isis_tlvs_lookup_mt_router_info(struct isis_tlvs *tlvs, uint16_t mtid);
#endif