summaryrefslogtreecommitdiffstats
path: root/tests/isisd
diff options
context:
space:
mode:
Diffstat (limited to 'tests/isisd')
-rw-r--r--tests/isisd/.gitignore1
-rw-r--r--tests/isisd/subdir.am66
-rw-r--r--tests/isisd/test_common.c351
-rw-r--r--tests/isisd/test_common.h85
-rw-r--r--tests/isisd/test_fuzz_isis_tlv.c191
-rw-r--r--tests/isisd/test_fuzz_isis_tlv.py32
-rw-r--r--tests/isisd/test_fuzz_isis_tlv_tests.h.gzbin0 -> 222652 bytes
-rw-r--r--tests/isisd/test_isis_lspdb.c81
-rw-r--r--tests/isisd/test_isis_lspdb.py8
-rw-r--r--tests/isisd/test_isis_spf.c570
-rw-r--r--tests/isisd/test_isis_spf.in68
-rw-r--r--tests/isisd/test_isis_spf.py5
-rw-r--r--tests/isisd/test_isis_spf.refout4800
-rw-r--r--tests/isisd/test_isis_vertex_queue.c106
-rw-r--r--tests/isisd/test_isis_vertex_queue.py8
-rw-r--r--tests/isisd/test_topologies.c3487
16 files changed, 9859 insertions, 0 deletions
diff --git a/tests/isisd/.gitignore b/tests/isisd/.gitignore
new file mode 100644
index 0000000..e124221
--- /dev/null
+++ b/tests/isisd/.gitignore
@@ -0,0 +1 @@
+/*_afl/*
diff --git a/tests/isisd/subdir.am b/tests/isisd/subdir.am
new file mode 100644
index 0000000..2f9ce81
--- /dev/null
+++ b/tests/isisd/subdir.am
@@ -0,0 +1,66 @@
+if !ISISD
+PYTEST_IGNORE += --ignore=isisd/
+endif
+ISISD_TEST_LDADD = isisd/libisis.a $(ALL_TESTS_LDADD)
+noinst_HEADERS += \
+ tests/isisd/test_common.h \
+ # end
+
+
+if ISISD
+check_PROGRAMS += tests/isisd/test_fuzz_isis_tlv
+endif
+tests_isisd_test_fuzz_isis_tlv_CFLAGS = $(TESTS_CFLAGS) -I$(top_builddir)/tests/isisd
+tests_isisd_test_fuzz_isis_tlv_CPPFLAGS = $(TESTS_CPPFLAGS) -I$(top_builddir)/tests/isisd
+tests_isisd_test_fuzz_isis_tlv_LDADD = $(ISISD_TEST_LDADD)
+tests_isisd_test_fuzz_isis_tlv_SOURCES = tests/isisd/test_fuzz_isis_tlv.c tests/isisd/test_common.c
+nodist_tests_isisd_test_fuzz_isis_tlv_SOURCES = tests/isisd/test_fuzz_isis_tlv_tests.h
+EXTRA_DIST += \
+ tests/isisd/test_fuzz_isis_tlv.py \
+ tests/isisd/test_fuzz_isis_tlv_tests.h.gz \
+ # end
+
+tests/isisd/test_fuzz_isis_tlv_tests.h: $(top_srcdir)/tests/isisd/test_fuzz_isis_tlv_tests.h.gz
+ @mkdir -p tests/isisd
+ $(AM_V_GEN)gzip -d < $(top_srcdir)/tests/isisd/test_fuzz_isis_tlv_tests.h.gz > "$@"
+CLEANFILES += tests/isisd/test_fuzz_isis_tlv_tests.h
+
+tests/isisd/tests_isisd_test_fuzz_isis_tlv-test_fuzz_isis_tlv.$(OBJEXT): \
+ tests/isisd/test_fuzz_isis_tlv_tests.h
+tests/isisd/test_fuzz_isis_tlv-test_fuzz_isis_tlv.$(OBJEXT): \
+ tests/isisd/test_fuzz_isis_tlv_tests.h
+
+
+if ISISD
+check_PROGRAMS += tests/isisd/test_isis_lspdb
+endif
+tests_isisd_test_isis_lspdb_CFLAGS = $(TESTS_CFLAGS)
+tests_isisd_test_isis_lspdb_CPPFLAGS = $(TESTS_CPPFLAGS)
+tests_isisd_test_isis_lspdb_LDADD = $(ISISD_TEST_LDADD)
+tests_isisd_test_isis_lspdb_SOURCES = tests/isisd/test_isis_lspdb.c tests/isisd/test_common.c
+EXTRA_DIST += tests/isisd/test_isis_lspdb.py
+
+
+if ISISD
+check_PROGRAMS += tests/isisd/test_isis_spf
+endif
+tests_isisd_test_isis_spf_CFLAGS = $(TESTS_CFLAGS)
+tests_isisd_test_isis_spf_CPPFLAGS = $(TESTS_CPPFLAGS)
+tests_isisd_test_isis_spf_LDADD = $(ISISD_TEST_LDADD)
+tests_isisd_test_isis_spf_SOURCES = tests/isisd/test_isis_spf.c tests/isisd/test_common.c tests/isisd/test_topologies.c
+nodist_tests_isisd_test_isis_spf_SOURCES = yang/frr-isisd.yang.c
+EXTRA_DIST += \
+ tests/isisd/test_isis_spf.py \
+ tests/isisd/test_isis_spf.in \
+ tests/isisd/test_isis_spf.refout \
+ # end
+
+
+if ISISD
+check_PROGRAMS += tests/isisd/test_isis_vertex_queue
+endif
+tests_isisd_test_isis_vertex_queue_CFLAGS = $(TESTS_CFLAGS)
+tests_isisd_test_isis_vertex_queue_CPPFLAGS = $(TESTS_CPPFLAGS)
+tests_isisd_test_isis_vertex_queue_LDADD = $(ISISD_TEST_LDADD)
+tests_isisd_test_isis_vertex_queue_SOURCES = tests/isisd/test_isis_vertex_queue.c tests/isisd/test_common.c
+EXTRA_DIST += tests/isisd/test_isis_vertex_queue.py
diff --git a/tests/isisd/test_common.c b/tests/isisd/test_common.c
new file mode 100644
index 0000000..ade3573
--- /dev/null
+++ b/tests/isisd/test_common.c
@@ -0,0 +1,351 @@
+/*
+ * Copyright (C) 2020 NetDEF, Inc.
+ * Renato Westphal
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <zebra.h>
+
+#include "isisd/isisd.h"
+#include "isisd/isis_dynhn.h"
+#include "isisd/isis_mt.h"
+
+#include "test_common.h"
+
+struct thread_master *master;
+struct zebra_privs_t isisd_privs;
+
+int isis_sock_init(struct isis_circuit *circuit)
+{
+ return 0;
+}
+
+const struct isis_test_node *
+test_topology_find_node(const struct isis_topology *topology,
+ const char *hostname, uint8_t pseudonode_id)
+{
+ for (size_t i = 0; topology->nodes[i].hostname[0]; i++)
+ if (strmatch(hostname, topology->nodes[i].hostname)
+ && pseudonode_id == topology->nodes[i].pseudonode_id)
+ return &topology->nodes[i];
+
+ return NULL;
+}
+
+const struct isis_topology *
+test_topology_find(struct isis_topology *test_topologies, uint16_t number)
+{
+ for (size_t i = 0; test_topologies[i].number; i++)
+ if (test_topologies[i].number == number)
+ return &test_topologies[i];
+
+ return NULL;
+}
+
+static const struct isis_test_node *
+test_find_adjacency(const struct isis_test_node *tnode, const char *hostname)
+{
+ for (size_t i = 0; tnode->adjacencies[i].hostname[0]; i++) {
+ const struct isis_test_adj *tadj;
+
+ tadj = &tnode->adjacencies[i];
+ if (strmatch(hostname, tadj->hostname))
+ return tnode;
+ }
+
+ return NULL;
+}
+
+mpls_label_t test_topology_node_ldp_label(const struct isis_topology *topology,
+ struct in_addr router_id)
+{
+ for (size_t i = 0; topology->nodes[i].hostname[0]; i++) {
+ const struct isis_test_node *tnode = &topology->nodes[i];
+ struct in_addr node_router_id;
+
+ if (!tnode->router_id)
+ continue;
+
+ (void)inet_pton(AF_INET, tnode->router_id, &node_router_id);
+ if (IPV4_ADDR_SAME(&router_id, &node_router_id))
+ return (50000 + (i + 1) * 100);
+ }
+
+ return MPLS_INVALID_LABEL;
+}
+
+static struct isis_lsp *lsp_add(struct lspdb_head *lspdb,
+ struct isis_area *area, int level,
+ const uint8_t *sysid, uint8_t pseudonode_id)
+{
+ struct isis_lsp *lsp;
+ uint8_t lspid[ISIS_SYS_ID_LEN + 2];
+
+ memcpy(lspid, sysid, ISIS_SYS_ID_LEN);
+ LSP_PSEUDO_ID(lspid) = pseudonode_id;
+ LSP_FRAGMENT(lspid) = 0;
+
+ lsp = lsp_new(area, lspid, 6000, 1, 0, 0, NULL, level);
+ lsp->tlvs = isis_alloc_tlvs();
+ lspdb_add(lspdb, lsp);
+
+ return lsp;
+}
+
+static void lsp_add_ip_reach(struct isis_lsp *lsp,
+ const struct isis_test_node *tnode,
+ const char *prefix_str, uint32_t *next_sid_index)
+{
+ struct prefix prefix;
+ struct sr_prefix_cfg pcfg = {};
+ struct sr_prefix_cfg *pcfg_p = NULL;
+
+ if (str2prefix(prefix_str, &prefix) != 1) {
+ zlog_debug("%s: invalid network: %s", __func__, prefix_str);
+ return;
+ }
+
+ if (CHECK_FLAG(tnode->flags, F_ISIS_TEST_NODE_SR)) {
+ pcfg_p = &pcfg;
+
+ pcfg.sid = *next_sid_index;
+ *next_sid_index = *next_sid_index + 1;
+ pcfg.sid_type = SR_SID_VALUE_TYPE_INDEX;
+ pcfg.node_sid = true;
+ pcfg.last_hop_behavior = SR_LAST_HOP_BEHAVIOR_PHP;
+ }
+
+ if (prefix.family == AF_INET)
+ isis_tlvs_add_extended_ip_reach(lsp->tlvs,
+ (struct prefix_ipv4 *)&prefix,
+ 10, false, pcfg_p);
+ else
+ isis_tlvs_add_ipv6_reach(lsp->tlvs, ISIS_MT_IPV6_UNICAST,
+ (struct prefix_ipv6 *)&prefix, 10,
+ false, pcfg_p);
+}
+
+static void lsp_add_reach(struct isis_lsp *lsp,
+ const struct isis_test_node *tnode,
+ const uint8_t *ne_id, uint8_t pseudonode_id,
+ uint32_t metric, int family, mpls_label_t *next_label)
+{
+ uint8_t nodeid[ISIS_SYS_ID_LEN + 1];
+ uint16_t mtid;
+ struct isis_ext_subtlvs *ext = NULL;
+
+ memcpy(nodeid, ne_id, ISIS_SYS_ID_LEN);
+ LSP_PSEUDO_ID(nodeid) = pseudonode_id;
+
+ if (CHECK_FLAG(tnode->flags, F_ISIS_TEST_NODE_SR)) {
+ struct isis_adj_sid *adj_sid;
+
+ adj_sid = XCALLOC(MTYPE_ISIS_SUBTLV, sizeof(*adj_sid));
+ adj_sid->family = family;
+ SET_FLAG(adj_sid->flags, EXT_SUBTLV_LINK_ADJ_SID_VFLG);
+ SET_FLAG(adj_sid->flags, EXT_SUBTLV_LINK_ADJ_SID_LFLG);
+ if (family == AF_INET6)
+ SET_FLAG(adj_sid->flags, EXT_SUBTLV_LINK_ADJ_SID_FFLG);
+ adj_sid->weight = 0;
+ adj_sid->sid = *next_label;
+ *next_label = *next_label + 1;
+
+ ext = isis_alloc_ext_subtlvs();
+ isis_tlvs_add_adj_sid(ext, adj_sid);
+ }
+
+ mtid = (family == AF_INET) ? ISIS_MT_IPV4_UNICAST
+ : ISIS_MT_IPV6_UNICAST;
+
+ isis_tlvs_add_extended_reach(lsp->tlvs, mtid, nodeid, metric, ext);
+}
+
+static void lsp_add_router_capability(struct isis_lsp *lsp,
+ const struct isis_test_node *tnode)
+{
+ struct isis_router_cap cap = {};
+
+ if (!tnode->router_id)
+ return;
+
+ if (inet_pton(AF_INET, tnode->router_id, &cap.router_id) != 1) {
+ zlog_debug("%s: invalid router-id: %s", __func__,
+ tnode->router_id);
+ return;
+ }
+
+ if (CHECK_FLAG(tnode->flags, F_ISIS_TEST_NODE_SR)) {
+ cap.srgb.flags =
+ ISIS_SUBTLV_SRGB_FLAG_I | ISIS_SUBTLV_SRGB_FLAG_V;
+ cap.srgb.lower_bound = tnode->srgb.lower_bound
+ ? tnode->srgb.lower_bound
+ : SRGB_DFTL_LOWER_BOUND;
+ cap.srgb.range_size = tnode->srgb.range_size
+ ? tnode->srgb.range_size
+ : SRGB_DFTL_RANGE_SIZE;
+ cap.algo[0] = SR_ALGORITHM_SPF;
+ cap.algo[1] = SR_ALGORITHM_UNSET;
+ }
+
+ isis_tlvs_set_router_capability(lsp->tlvs, &cap);
+}
+
+static void lsp_add_mt_router_info(struct isis_lsp *lsp,
+ const struct isis_test_node *tnode)
+{
+ if (tnode->protocols.ipv4)
+ isis_tlvs_add_mt_router_info(lsp->tlvs, ISIS_MT_IPV4_UNICAST, 0,
+ false);
+ if (tnode->protocols.ipv6)
+ isis_tlvs_add_mt_router_info(lsp->tlvs, ISIS_MT_IPV6_UNICAST, 0,
+ false);
+}
+
+static void lsp_add_protocols_supported(struct isis_lsp *lsp,
+ const struct isis_test_node *tnode)
+{
+ struct nlpids nlpids = {};
+
+ if (!tnode->protocols.ipv4 && !tnode->protocols.ipv6)
+ return;
+
+ if (tnode->protocols.ipv4) {
+ nlpids.nlpids[nlpids.count] = NLPID_IP;
+ nlpids.count++;
+ }
+ if (tnode->protocols.ipv6) {
+ nlpids.nlpids[nlpids.count] = NLPID_IPV6;
+ nlpids.count++;
+ }
+ isis_tlvs_set_protocols_supported(lsp->tlvs, &nlpids);
+}
+
+static int topology_load_node_level(const struct isis_topology *topology,
+ const struct isis_test_node *tnode,
+ size_t tnode_index, struct isis_area *area,
+ struct lspdb_head *lspdb, int level)
+{
+ struct isis_lsp *lsp;
+ uint32_t next_sid_index = (tnode_index + 1) * 10;
+ mpls_label_t next_label = 16;
+
+ lsp = lsp_add(lspdb, area, level, tnode->sysid, tnode->pseudonode_id);
+ lsp_add_mt_router_info(lsp, tnode);
+ lsp_add_protocols_supported(lsp, tnode);
+ lsp_add_router_capability(lsp, tnode);
+
+ /* Add IP Reachability Information. */
+ for (size_t i = 0; tnode->networks[i]; i++) {
+ if (i > MAX_NETWORKS) {
+ zlog_debug(
+ "%s: node has too many networks (maximum is %u)",
+ __func__, MAX_NETWORKS);
+ return -1;
+ }
+ lsp_add_ip_reach(lsp, tnode, tnode->networks[i],
+ &next_sid_index);
+ }
+
+ /* Add IS Reachability Information. */
+ for (size_t i = 0; tnode->adjacencies[i].hostname[0]; i++) {
+ const struct isis_test_adj *tadj;
+ const struct isis_test_node *tadj_node;
+
+ if (i > MAX_ADJACENCIES) {
+ zlog_debug(
+ "%s: node has too many adjacencies (maximum is %u)",
+ __func__, MAX_ADJACENCIES);
+ return -1;
+ }
+
+ tadj = &tnode->adjacencies[i];
+ tadj_node = test_topology_find_node(topology, tadj->hostname,
+ tadj->pseudonode_id);
+ if (!tadj_node) {
+ zlog_debug(
+ "%s: node \"%s\" has an adjacency with non-existing node \"%s\"",
+ __func__, tnode->hostname, tadj->hostname);
+ return -1;
+ }
+ if (!test_find_adjacency(tadj_node, tnode->hostname)) {
+ zlog_debug(
+ "%s: node \"%s\" has an one-way adjacency with node \"%s\"",
+ __func__, tnode->hostname, tadj->hostname);
+ return -1;
+ }
+
+ if (tnode->pseudonode_id || tadj_node->pseudonode_id
+ || (tnode->protocols.ipv4 && tadj_node->protocols.ipv4))
+ lsp_add_reach(lsp, tnode, tadj_node->sysid,
+ tadj_node->pseudonode_id, tadj->metric,
+ AF_INET, &next_label);
+ if (tadj_node->pseudonode_id
+ || (tnode->protocols.ipv6 && tadj_node->protocols.ipv6))
+ lsp_add_reach(lsp, tnode, tadj_node->sysid,
+ tadj_node->pseudonode_id, tadj->metric,
+ AF_INET6, &next_label);
+ }
+
+ return 0;
+}
+
+static int topology_load_node(const struct isis_topology *topology,
+ const struct isis_test_node *tnode,
+ size_t tnode_index, struct isis_area *area,
+ struct lspdb_head lspdb[])
+{
+ int ret;
+
+ isis_dynhn_insert(area->isis, tnode->sysid, tnode->hostname,
+ tnode->level);
+
+ for (int level = IS_LEVEL_1; level <= IS_LEVEL_2; level++) {
+ if ((tnode->level & level) == 0)
+ continue;
+
+ ret = topology_load_node_level(topology, tnode, tnode_index,
+ area, &lspdb[level - 1], level);
+ if (ret != 0)
+ return ret;
+ }
+
+ return 0;
+}
+
+int test_topology_load(const struct isis_topology *topology,
+ struct isis_area *area, struct lspdb_head lspdb[])
+{
+ for (int level = IS_LEVEL_1; level <= IS_LEVEL_2; level++)
+ lsp_db_init(&lspdb[level - 1]);
+
+ for (size_t i = 0; topology->nodes[i].hostname[0]; i++) {
+ const struct isis_test_node *tnode = &topology->nodes[i];
+ int ret;
+
+ if (i > MAX_NODES) {
+ zlog_debug(
+ "%s: topology has too many nodes (maximum is %u)",
+ __func__, MAX_NODES);
+ return -1;
+ }
+
+ ret = topology_load_node(topology, tnode, i, area, lspdb);
+ if (ret != 0)
+ return ret;
+ }
+
+ return 0;
+}
diff --git a/tests/isisd/test_common.h b/tests/isisd/test_common.h
new file mode 100644
index 0000000..3359a89
--- /dev/null
+++ b/tests/isisd/test_common.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2020 NetDEF, Inc.
+ * Renato Westphal
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _COMMON_ISIS_H
+#define _COMMON_ISIS_H
+
+#include "isisd/isisd.h"
+#include "isisd/isis_spf.h"
+#include "isisd/isis_spf_private.h"
+
+#define MAX_HOSTNAME 16
+#define MAX_NETWORKS 8
+#define MAX_ADJACENCIES 8
+#define MAX_NODES 12
+
+#define SRGB_DFTL_LOWER_BOUND 16000
+#define SRGB_DFTL_RANGE_SIZE 8000
+
+struct isis_test_adj {
+ char hostname[MAX_HOSTNAME];
+ uint8_t pseudonode_id;
+ uint32_t metric;
+};
+
+struct isis_test_node {
+ char hostname[MAX_HOSTNAME];
+ uint8_t sysid[ISIS_SYS_ID_LEN];
+ uint8_t pseudonode_id;
+ int level;
+ struct {
+ bool ipv4;
+ bool ipv6;
+ } protocols;
+ const char *router_id;
+ struct {
+ uint32_t lower_bound;
+ uint32_t range_size;
+ } srgb;
+ const char *networks[MAX_NETWORKS + 1];
+ struct isis_test_adj adjacencies[MAX_ADJACENCIES + 1];
+ uint8_t flags;
+};
+#define F_ISIS_TEST_NODE_SR 0x01
+
+struct isis_topology {
+ uint16_t number;
+ struct isis_test_node nodes[MAX_NODES + 1];
+};
+
+/* Prototypes. */
+extern int isis_sock_init(struct isis_circuit *circuit);
+extern const struct isis_test_node *
+test_topology_find_node(const struct isis_topology *topology,
+ const char *hostname, uint8_t pseudonode_id);
+extern const struct isis_topology *
+test_topology_find(struct isis_topology *test_topologies, uint16_t number);
+extern mpls_label_t
+test_topology_node_ldp_label(const struct isis_topology *topology,
+ struct in_addr router_id);
+extern int test_topology_load(const struct isis_topology *topology,
+ struct isis_area *area,
+ struct lspdb_head lspdb[]);
+
+/* Global variables. */
+extern struct thread_master *master;
+extern struct zebra_privs_t isisd_privs;
+extern struct isis_topology test_topologies[];
+
+#endif /* _COMMON_ISIS_H */
diff --git a/tests/isisd/test_fuzz_isis_tlv.c b/tests/isisd/test_fuzz_isis_tlv.c
new file mode 100644
index 0000000..8f0b92d
--- /dev/null
+++ b/tests/isisd/test_fuzz_isis_tlv.c
@@ -0,0 +1,191 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "test_fuzz_isis_tlv_tests.h"
+
+#include <zebra.h>
+
+#include "memory.h"
+#include "sbuf.h"
+#include "stream.h"
+#include "thread.h"
+
+#include "isisd/isis_circuit.h"
+#include "isisd/isis_tlvs.h"
+
+#include "test_common.h"
+
+#define TEST_STREAM_SIZE 1500
+
+static bool atexit_registered;
+
+static void show_meminfo_at_exit(void)
+{
+ log_memstats(stderr, "isis fuzztest");
+}
+
+static int comp_line(const void *p1, const void *p2)
+{
+ return strcmp(*(char * const *)p1, *(char * const *)p2);
+}
+
+static char *sortlines(char *in)
+{
+ size_t line_count = 1;
+ size_t rv_len = strlen(in) + 1;
+ size_t rv_pos = 0;
+ char *rv = XMALLOC(MTYPE_TMP, rv_len);
+
+ for (char *c = in; *c; c++) {
+ if (*c == '\n')
+ line_count++;
+ }
+
+ if (line_count == 1) {
+ strncpy(rv, in, rv_len);
+ return rv;
+ }
+
+ char **lines = XCALLOC(MTYPE_TMP, sizeof(char *)*line_count);
+ char *saveptr = NULL;
+ size_t i = 0;
+
+ for (char *line = strtok_r(in, "\n", &saveptr); line;
+ line = strtok_r(NULL, "\n", &saveptr)) {
+ lines[i++] = line;
+ assert(i <= line_count);
+ }
+
+ line_count = i;
+
+ qsort(lines, line_count, sizeof(char *), comp_line);
+
+ for (i = 0; i < line_count; i++) {
+ int printf_rv = snprintf(rv + rv_pos, rv_len - rv_pos, "%s\n", lines[i]);
+ assert(printf_rv >= 0);
+ rv_pos += printf_rv;
+ }
+
+ XFREE(MTYPE_TMP, lines);
+ return rv;
+}
+
+static int test(FILE *input, FILE *output)
+{
+ struct stream *s = stream_new(TEST_STREAM_SIZE);
+ char buf[TEST_STREAM_SIZE];
+ size_t bytes_read = 0;
+
+ if (!atexit_registered) {
+ atexit(show_meminfo_at_exit);
+ atexit_registered = true;
+ }
+
+ while (STREAM_WRITEABLE(s) && !feof(input)) {
+ bytes_read = fread(buf, 1, STREAM_WRITEABLE(s), input);
+ if (bytes_read == 0)
+ break;
+ stream_put(s, buf, bytes_read);
+ }
+
+ if (bytes_read && !feof(input)) {
+ fprintf(output, "Too much input data.\n");
+ stream_free(s);
+ return 1;
+ }
+
+ stream_set_getp(s, 0);
+ struct isis_tlvs *tlvs;
+ const char *log;
+ int rv = isis_unpack_tlvs(STREAM_READABLE(s), s, &tlvs, &log);
+
+ if (rv) {
+ fprintf(output, "Could not unpack TLVs:\n%s\n", log);
+ isis_free_tlvs(tlvs);
+ stream_free(s);
+ return 2;
+ }
+
+ fprintf(output, "Unpack log:\n%s", log);
+ const char *s_tlvs = isis_format_tlvs(tlvs, NULL);
+ fprintf(output, "Unpacked TLVs:\n%s", s_tlvs);
+
+ struct isis_item *orig_auth = tlvs->isis_auth.head;
+ tlvs->isis_auth.head = NULL;
+ s_tlvs = isis_format_tlvs(tlvs, NULL);
+ struct isis_tlvs *tlv_copy = isis_copy_tlvs(tlvs);
+ tlvs->isis_auth.head = orig_auth;
+ isis_free_tlvs(tlvs);
+
+ struct stream *s2 = stream_new(TEST_STREAM_SIZE);
+
+ if (isis_pack_tlvs(tlv_copy, s2, (size_t)-1, false, false)) {
+ fprintf(output, "Could not pack TLVs.\n");
+ assert(0);
+ }
+
+ stream_set_getp(s2, 0);
+ rv = isis_unpack_tlvs(STREAM_READABLE(s2), s2, &tlvs, &log);
+ if (rv) {
+ fprintf(output, "Could not unpack own TLVs:\n%s\n", log);
+ assert(0);
+ }
+
+ char *orig_tlvs = XSTRDUP(MTYPE_TMP, s_tlvs);
+ s_tlvs = isis_format_tlvs(tlvs, NULL);
+
+ if (strcmp(orig_tlvs, s_tlvs)) {
+ fprintf(output,
+ "Deserialized and Serialized LSP seem to differ.\n");
+ fprintf(output, "Re-Unpacked TLVs:\n%s", s_tlvs);
+ assert(0);
+ }
+
+ isis_free_tlvs(tlv_copy);
+ stream_free(s);
+ stream_free(s2);
+
+ struct list *fragments = isis_fragment_tlvs(tlvs, 550);
+ isis_free_tlvs(tlvs);
+ if (!fragments) {
+ XFREE(MTYPE_TMP, orig_tlvs);
+ return 0;
+ }
+
+ s = stream_new(550);
+
+ struct sbuf fragment_format;
+ sbuf_init(&fragment_format, NULL, 0);
+
+ struct listnode *node;
+ for (ALL_LIST_ELEMENTS_RO(fragments, node, tlvs)) {
+ stream_reset(s);
+ int rv = isis_pack_tlvs(tlvs, s, (size_t)-1, false, false);
+ if (rv) {
+ fprintf(output, "Could not pack fragment, too large.\n");
+ assert(0);
+ }
+ sbuf_push(&fragment_format, 0, "%s", isis_format_tlvs(tlvs, NULL));
+ isis_free_tlvs(tlvs);
+ }
+ list_delete(&fragments);
+ stream_free(s);
+
+ char *fragment_content = sortlines((char *)sbuf_buf(&fragment_format));
+ sbuf_free(&fragment_format);
+ char *orig_tlv_content = sortlines(orig_tlvs);
+ XFREE(MTYPE_TMP, orig_tlvs);
+
+ if (strcmp(fragment_content, orig_tlv_content)) {
+ fprintf(output, "Fragmented and unfragmented LSP seem to differ.\n");
+ fprintf(output, "Original:\n%s\nFragmented:\n%s\n",
+ orig_tlv_content, fragment_content);
+ assert(0);
+ }
+
+ XFREE(MTYPE_TMP, fragment_content);
+ XFREE(MTYPE_TMP, orig_tlv_content);
+
+ return 0;
+}
diff --git a/tests/isisd/test_fuzz_isis_tlv.py b/tests/isisd/test_fuzz_isis_tlv.py
new file mode 100644
index 0000000..8fd20aa
--- /dev/null
+++ b/tests/isisd/test_fuzz_isis_tlv.py
@@ -0,0 +1,32 @@
+import frrtest
+
+import pytest
+import platform
+import socket
+
+
+##
+# on musl, ntop compresses a single :0: -> :: which is against RFC
+##
+def inet_ntop_broken():
+ addr = "1:2:3:4:0:6:7:8"
+ return (
+ socket.inet_ntop(socket.AF_INET6, socket.inet_pton(socket.AF_INET6, addr))
+ != addr
+ )
+
+
+if platform.uname()[0] == "SunOS" or inet_ntop_broken():
+
+ class TestFuzzIsisTLV:
+ @pytest.mark.skipif(True, reason="Test unsupported")
+ def test_exit_cleanly(self):
+ pass
+
+
+else:
+
+ class TestFuzzIsisTLV(frrtest.TestMultiOut):
+ program = "./test_fuzz_isis_tlv"
+
+ TestFuzzIsisTLV.exit_cleanly()
diff --git a/tests/isisd/test_fuzz_isis_tlv_tests.h.gz b/tests/isisd/test_fuzz_isis_tlv_tests.h.gz
new file mode 100644
index 0000000..20b1dc3
--- /dev/null
+++ b/tests/isisd/test_fuzz_isis_tlv_tests.h.gz
Binary files differ
diff --git a/tests/isisd/test_isis_lspdb.c b/tests/isisd/test_isis_lspdb.c
new file mode 100644
index 0000000..cc95c4a
--- /dev/null
+++ b/tests/isisd/test_isis_lspdb.c
@@ -0,0 +1,81 @@
+#include <zebra.h>
+
+#include "isisd/isis_lsp.c"
+
+#include "test_common.h"
+
+static void test_lsp_build_list_nonzero_ht(void)
+{
+ uint8_t lsp_id1[8] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
+ };
+ uint8_t lsp_id_end[8] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x5f, 0x00
+ };
+ uint8_t lsp_id2[8] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+ };
+
+ struct isis_area *area = calloc(sizeof(*area), 1);
+
+ area->lsp_mtu = 1500;
+
+ struct lspdb_head _lspdb, *lspdb = &_lspdb;
+ lsp_db_init(&_lspdb);
+
+ struct isis_lsp *lsp1 =
+ lsp_new(area, lsp_id1, 6000, 1, 0, 0, NULL, ISIS_LEVEL2);
+
+ lspdb_add(lspdb, lsp1);
+
+ struct isis_lsp *lsp2 =
+ lsp_new(area, lsp_id2, 6000, 1, 0, 0, NULL, ISIS_LEVEL2);
+
+ lspdb_add(lspdb, lsp2);
+
+ struct list *list = list_new();
+
+ lsp_build_list_nonzero_ht(lspdb, lsp_id1, lsp_id_end, list);
+ assert(list->count == 1);
+ assert(listgetdata(listhead(list)) == lsp1);
+ list_delete_all_node(list);
+
+ lsp_id_end[5] = 0x03;
+ lsp_id_end[6] = 0x00;
+
+ lsp_build_list_nonzero_ht(lspdb, lsp_id1, lsp_id_end, list);
+ assert(list->count == 2);
+ assert(listgetdata(listhead(list)) == lsp1);
+ assert(listgetdata(listtail(list)) == lsp2);
+ list_delete_all_node(list);
+
+ memcpy(lsp_id1, lsp_id2, sizeof(lsp_id1));
+
+ lsp_build_list_nonzero_ht(lspdb, lsp_id1, lsp_id_end, list);
+ assert(list->count == 1);
+ assert(listgetdata(listhead(list)) == lsp2);
+ list_delete_all_node(list);
+
+ lsp_id1[5] = 0x03;
+ lsp_id_end[5] = 0x04;
+
+ lsp_build_list_nonzero_ht(lspdb, lsp_id1, lsp_id_end, list);
+ assert(list->count == 0);
+ list_delete_all_node(list);
+
+ lsp_id1[5] = 0x00;
+
+ lsp_build_list_nonzero_ht(lspdb, lsp_id1, lsp_id_end, list);
+ assert(list->count == 2);
+ assert(listgetdata(listhead(list)) == lsp1);
+ assert(listgetdata(listtail(list)) == lsp2);
+ list_delete_all_node(list);
+}
+
+int main(int argc, char **argv)
+{
+ struct isis *isis = NULL;
+ isis = calloc(sizeof(*isis), 1);
+ test_lsp_build_list_nonzero_ht();
+ return 0;
+}
diff --git a/tests/isisd/test_isis_lspdb.py b/tests/isisd/test_isis_lspdb.py
new file mode 100644
index 0000000..280ed1c
--- /dev/null
+++ b/tests/isisd/test_isis_lspdb.py
@@ -0,0 +1,8 @@
+import frrtest
+
+
+class TestIsisLSPDB(frrtest.TestMultiOut):
+ program = "./test_isis_lspdb"
+
+
+TestIsisLSPDB.exit_cleanly()
diff --git a/tests/isisd/test_isis_spf.c b/tests/isisd/test_isis_spf.c
new file mode 100644
index 0000000..971aba4
--- /dev/null
+++ b/tests/isisd/test_isis_spf.c
@@ -0,0 +1,570 @@
+/*
+ * Copyright (C) 2020 NetDEF, Inc.
+ * Renato Westphal
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <zebra.h>
+
+#include <lib/version.h>
+#include "getopt.h"
+#include "thread.h"
+#include "vty.h"
+#include "command.h"
+#include "log.h"
+#include "vrf.h"
+#include "yang.h"
+
+#include "isisd/isisd.h"
+#include "isisd/isis_dynhn.h"
+#include "isisd/isis_misc.h"
+#include "isisd/isis_route.h"
+#include "isisd/isis_spf.h"
+#include "isisd/isis_spf_private.h"
+
+#include "test_common.h"
+
+enum test_type {
+ TEST_SPF = 1,
+ TEST_REVERSE_SPF,
+ TEST_LFA,
+ TEST_RLFA,
+ TEST_TI_LFA,
+};
+
+#define F_DISPLAY_LSPDB 0x01
+#define F_IPV4_ONLY 0x02
+#define F_IPV6_ONLY 0x04
+#define F_LEVEL1_ONLY 0x08
+#define F_LEVEL2_ONLY 0x10
+
+static void test_run_spf(struct vty *vty, const struct isis_topology *topology,
+ const struct isis_test_node *root,
+ struct isis_area *area, struct lspdb_head *lspdb,
+ int level, int tree, bool reverse)
+{
+ struct isis_spftree *spftree;
+ enum spf_type spf_type;
+
+ /* Run SPF. */
+ spf_type = reverse ? SPF_TYPE_REVERSE : SPF_TYPE_FORWARD;
+ spftree = isis_spftree_new(area, lspdb, root->sysid, level, tree,
+ spf_type, F_SPFTREE_NO_ADJACENCIES);
+ isis_run_spf(spftree);
+
+ /* Print the SPT and the corresponding routing table. */
+ isis_print_spftree(vty, spftree);
+ isis_print_routes(vty, spftree, false, false);
+
+ /* Cleanup SPF tree. */
+ isis_spftree_del(spftree);
+}
+
+static void test_run_lfa(struct vty *vty, const struct isis_topology *topology,
+ const struct isis_test_node *root,
+ struct isis_area *area, struct lspdb_head *lspdb,
+ int level, int tree,
+ struct lfa_protected_resource *protected_resource)
+{
+ struct isis_spftree *spftree_self;
+ uint8_t flags;
+
+ /* Run forward SPF in the root node. */
+ flags = F_SPFTREE_NO_ADJACENCIES;
+ spftree_self = isis_spftree_new(area, lspdb, root->sysid, level, tree,
+ SPF_TYPE_FORWARD, flags);
+ isis_run_spf(spftree_self);
+
+ /* Run forward SPF on all adjacent routers. */
+ isis_spf_run_neighbors(spftree_self);
+
+ /* Compute the LFA repair paths. */
+ isis_lfa_compute(area, NULL, spftree_self, protected_resource);
+
+ /* Print the SPT and the corresponding main/backup routing tables. */
+ isis_print_spftree(vty, spftree_self);
+ vty_out(vty, "Main:\n");
+ isis_print_routes(vty, spftree_self, false, false);
+ vty_out(vty, "Backup:\n");
+ isis_print_routes(vty, spftree_self, false, true);
+
+ /* Cleanup everything. */
+ isis_spftree_del(spftree_self);
+}
+
+static void test_run_rlfa(struct vty *vty, const struct isis_topology *topology,
+ const struct isis_test_node *root,
+ struct isis_area *area, struct lspdb_head *lspdb,
+ int level, int tree,
+ struct lfa_protected_resource *protected_resource)
+{
+ struct isis_spftree *spftree_self;
+ struct isis_spftree *spftree_reverse;
+ struct isis_spftree *spftree_pc;
+ struct isis_spf_node *spf_node, *node;
+ struct rlfa *rlfa;
+ uint8_t flags;
+
+ /* Run forward SPF in the root node. */
+ flags = F_SPFTREE_NO_ADJACENCIES;
+ spftree_self = isis_spftree_new(area, lspdb, root->sysid, level, tree,
+ SPF_TYPE_FORWARD, flags);
+ isis_run_spf(spftree_self);
+
+ /* Run reverse SPF in the root node. */
+ spftree_reverse = isis_spf_reverse_run(spftree_self);
+
+ /* Run forward SPF on all adjacent routers. */
+ isis_spf_run_neighbors(spftree_self);
+
+ /* Compute the local LFA repair paths. */
+ isis_lfa_compute(area, NULL, spftree_self, protected_resource);
+
+ /* Compute the remote LFA repair paths. */
+ spftree_pc = isis_rlfa_compute(area, spftree_self, spftree_reverse, 0,
+ protected_resource);
+
+ /* Print the extended P-space and Q-space. */
+ vty_out(vty, "P-space (self):\n");
+ RB_FOREACH (node, isis_spf_nodes, &spftree_pc->lfa.p_space)
+ vty_out(vty, " %s\n", print_sys_hostname(node->sysid));
+ vty_out(vty, "\n");
+ RB_FOREACH (spf_node, isis_spf_nodes, &spftree_self->adj_nodes) {
+ if (RB_EMPTY(isis_spf_nodes, &spf_node->lfa.p_space))
+ continue;
+ vty_out(vty, "P-space (%s):\n",
+ print_sys_hostname(spf_node->sysid));
+ RB_FOREACH (node, isis_spf_nodes, &spf_node->lfa.p_space)
+ vty_out(vty, " %s\n", print_sys_hostname(node->sysid));
+ vty_out(vty, "\n");
+ }
+ vty_out(vty, "Q-space:\n");
+ RB_FOREACH (node, isis_spf_nodes, &spftree_pc->lfa.q_space)
+ vty_out(vty, " %s\n", print_sys_hostname(node->sysid));
+ vty_out(vty, "\n");
+
+ /* Print the post-convergence SPT. */
+ isis_print_spftree(vty, spftree_pc);
+
+ /*
+ * Activate the computed RLFAs (if any) using artificial LDP labels for
+ * the PQ nodes.
+ */
+ frr_each_safe (rlfa_tree, &spftree_self->lfa.remote.rlfas, rlfa) {
+ struct zapi_rlfa_response response = {};
+
+ response.pq_label = test_topology_node_ldp_label(
+ topology, rlfa->pq_address);
+ assert(response.pq_label != MPLS_INVALID_LABEL);
+ isis_rlfa_activate(spftree_self, rlfa, &response);
+ }
+
+ /* Print the SPT and the corresponding main/backup routing tables. */
+ isis_print_spftree(vty, spftree_self);
+ vty_out(vty, "Main:\n");
+ isis_print_routes(vty, spftree_self, false, false);
+ vty_out(vty, "Backup:\n");
+ isis_print_routes(vty, spftree_self, false, true);
+
+ /* Cleanup everything. */
+ isis_spftree_del(spftree_self);
+ isis_spftree_del(spftree_reverse);
+ isis_spftree_del(spftree_pc);
+}
+
+static void test_run_ti_lfa(struct vty *vty,
+ const struct isis_topology *topology,
+ const struct isis_test_node *root,
+ struct isis_area *area, struct lspdb_head *lspdb,
+ int level, int tree,
+ struct lfa_protected_resource *protected_resource)
+{
+ struct isis_spftree *spftree_self;
+ struct isis_spftree *spftree_reverse;
+ struct isis_spftree *spftree_pc;
+ struct isis_spf_node *spf_node, *node;
+ uint8_t flags;
+
+ /* Run forward SPF in the root node. */
+ flags = F_SPFTREE_NO_ADJACENCIES;
+ spftree_self = isis_spftree_new(area, lspdb, root->sysid, level, tree,
+ SPF_TYPE_FORWARD, flags);
+ isis_run_spf(spftree_self);
+
+ /* Run reverse SPF in the root node. */
+ spftree_reverse = isis_spf_reverse_run(spftree_self);
+
+ /* Run forward SPF on all adjacent routers. */
+ isis_spf_run_neighbors(spftree_self);
+
+ /* Compute the TI-LFA repair paths. */
+ spftree_pc = isis_tilfa_compute(area, spftree_self, spftree_reverse,
+ protected_resource);
+
+ /* Print the extended P-space and Q-space. */
+ vty_out(vty, "P-space (self):\n");
+ RB_FOREACH (node, isis_spf_nodes, &spftree_pc->lfa.p_space)
+ vty_out(vty, " %s\n", print_sys_hostname(node->sysid));
+ vty_out(vty, "\n");
+ RB_FOREACH (spf_node, isis_spf_nodes, &spftree_self->adj_nodes) {
+ if (RB_EMPTY(isis_spf_nodes, &spf_node->lfa.p_space))
+ continue;
+ vty_out(vty, "P-space (%s):\n",
+ print_sys_hostname(spf_node->sysid));
+ RB_FOREACH (node, isis_spf_nodes, &spf_node->lfa.p_space)
+ vty_out(vty, " %s\n", print_sys_hostname(node->sysid));
+ vty_out(vty, "\n");
+ }
+ vty_out(vty, "Q-space:\n");
+ RB_FOREACH (node, isis_spf_nodes, &spftree_pc->lfa.q_space)
+ vty_out(vty, " %s\n", print_sys_hostname(node->sysid));
+ vty_out(vty, "\n");
+
+ /*
+ * Print the post-convergence SPT and the corresponding routing table.
+ */
+ isis_print_spftree(vty, spftree_pc);
+ isis_print_routes(vty, spftree_self, false, true);
+
+ /* Cleanup everything. */
+ isis_spftree_del(spftree_self);
+ isis_spftree_del(spftree_reverse);
+ isis_spftree_del(spftree_pc);
+}
+
+static int test_run(struct vty *vty, const struct isis_topology *topology,
+ const struct isis_test_node *root, enum test_type test_type,
+ uint8_t flags, enum lfa_protection_type protection_type,
+ const char *fail_sysid_str, uint8_t fail_pseudonode_id)
+{
+ struct isis_area *area;
+ struct lfa_protected_resource protected_resource = {};
+ uint8_t fail_id[ISIS_SYS_ID_LEN] = {};
+
+ /* Init topology. */
+ area = isis_area_create("1", NULL);
+ memcpy(area->isis->sysid, root->sysid, sizeof(area->isis->sysid));
+ area->is_type = IS_LEVEL_1_AND_2;
+ area->srdb.enabled = true;
+ if (test_topology_load(topology, area, area->lspdb) != 0) {
+ vty_out(vty, "%% Failed to load topology\n");
+ return CMD_WARNING;
+ }
+
+ /* Parse failed link/node. */
+ if (fail_sysid_str) {
+ if (sysid2buff(fail_id, fail_sysid_str) == 0) {
+ struct isis_dynhn *dynhn;
+
+ dynhn = dynhn_find_by_name(area->isis, fail_sysid_str);
+ if (dynhn == NULL) {
+ vty_out(vty, "Invalid system id %s\n",
+ fail_sysid_str);
+ return CMD_WARNING;
+ }
+ memcpy(fail_id, dynhn->id, ISIS_SYS_ID_LEN);
+ }
+
+ protected_resource.type = protection_type;
+ memcpy(protected_resource.adjacency, fail_id, ISIS_SYS_ID_LEN);
+ LSP_PSEUDO_ID(protected_resource.adjacency) =
+ fail_pseudonode_id;
+ }
+
+ for (int level = IS_LEVEL_1; level <= IS_LEVEL_2; level++) {
+ if (level == IS_LEVEL_1 && CHECK_FLAG(flags, F_LEVEL2_ONLY))
+ continue;
+ if (level == IS_LEVEL_2 && CHECK_FLAG(flags, F_LEVEL1_ONLY))
+ continue;
+ if ((root->level & level) == 0)
+ continue;
+
+ /* Print the LDPDB. */
+ if (CHECK_FLAG(flags, F_DISPLAY_LSPDB))
+ show_isis_database_lspdb_vty(vty, area, level - 1,
+ &area->lspdb[level - 1], NULL,
+ ISIS_UI_LEVEL_DETAIL);
+
+ for (int tree = SPFTREE_IPV4; tree <= SPFTREE_IPV6; tree++) {
+ if (tree == SPFTREE_IPV4
+ && CHECK_FLAG(flags, F_IPV6_ONLY))
+ continue;
+ if (tree == SPFTREE_IPV6
+ && CHECK_FLAG(flags, F_IPV4_ONLY))
+ continue;
+
+ switch (test_type) {
+ case TEST_SPF:
+ test_run_spf(vty, topology, root, area,
+ &area->lspdb[level - 1], level,
+ tree, false);
+ break;
+ case TEST_REVERSE_SPF:
+ test_run_spf(vty, topology, root, area,
+ &area->lspdb[level - 1], level,
+ tree, true);
+ break;
+ case TEST_LFA:
+ test_run_lfa(vty, topology, root, area,
+ &area->lspdb[level - 1], level,
+ tree, &protected_resource);
+ break;
+ case TEST_RLFA:
+ test_run_rlfa(vty, topology, root, area,
+ &area->lspdb[level - 1], level,
+ tree, &protected_resource);
+ break;
+ case TEST_TI_LFA:
+ test_run_ti_lfa(vty, topology, root, area,
+ &area->lspdb[level - 1], level,
+ tree, &protected_resource);
+ break;
+ }
+ }
+ }
+
+ /* Cleanup IS-IS area. */
+ isis_area_destroy(area);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(test_isis, test_isis_cmd,
+ "test isis topology (1-14) root HOSTNAME\
+ <\
+ spf\
+ |reverse-spf\
+ |lfa system-id WORD [pseudonode-id <1-255>]\
+ |remote-lfa system-id WORD [pseudonode-id <1-255>]\
+ |ti-lfa system-id WORD [pseudonode-id <1-255>] [node-protection]\
+ >\
+ [display-lspdb] [<ipv4-only|ipv6-only>] [<level-1-only|level-2-only>]",
+ "Test command\n"
+ "IS-IS routing protocol\n"
+ "Test topology\n"
+ "Test topology number\n"
+ "SPF root\n"
+ "SPF root hostname\n"
+ "Normal Shortest Path First\n"
+ "Reverse Shortest Path First\n"
+ "Classic LFA\n"
+ "System ID\n"
+ "System ID\n"
+ "Pseudonode-ID\n"
+ "Pseudonode-ID\n"
+ "Remote LFA\n"
+ "System ID\n"
+ "System ID\n"
+ "Pseudonode-ID\n"
+ "Pseudonode-ID\n"
+ "Topology Independent LFA\n"
+ "System ID\n"
+ "System ID\n"
+ "Pseudonode-ID\n"
+ "Pseudonode-ID\n"
+ "Node protection\n"
+ "Display the LSPDB\n"
+ "Do IPv4 processing only\n"
+ "Do IPv6 processing only\n"
+ "Skip L2 LSPs\n"
+ "Skip L1 LSPs\n")
+{
+ uint16_t topology_number;
+ const struct isis_topology *topology;
+ const struct isis_test_node *root;
+ enum test_type test_type;
+ enum lfa_protection_type protection_type = 0;
+ const char *fail_sysid_str = NULL;
+ uint8_t fail_pseudonode_id = 0;
+ uint8_t flags = 0;
+ int idx = 0;
+
+ /* Load topology. */
+ argv_find(argv, argc, "topology", &idx);
+ topology_number = atoi(argv[idx + 1]->arg);
+ topology = test_topology_find(test_topologies, topology_number);
+ if (!topology) {
+ vty_out(vty, "%% Topology \"%s\" not found\n",
+ argv[idx + 1]->arg);
+ return CMD_WARNING;
+ }
+
+ /* Find root node. */
+ argv_find(argv, argc, "root", &idx);
+ root = test_topology_find_node(topology, argv[idx + 1]->arg, 0);
+ if (!root) {
+ vty_out(vty, "%% Node \"%s\" not found\n", argv[idx + 1]->arg);
+ return CMD_WARNING;
+ }
+
+ /* Parse test information. */
+ if (argv_find(argv, argc, "spf", &idx))
+ test_type = TEST_SPF;
+ else if (argv_find(argv, argc, "reverse-spf", &idx))
+ test_type = TEST_REVERSE_SPF;
+ else if (argv_find(argv, argc, "lfa", &idx)) {
+ test_type = TEST_LFA;
+
+ fail_sysid_str = argv[idx + 2]->arg;
+ if (argv_find(argv, argc, "pseudonode-id", &idx))
+ fail_pseudonode_id =
+ strtoul(argv[idx + 1]->arg, NULL, 10);
+ protection_type = LFA_LINK_PROTECTION;
+ } else if (argv_find(argv, argc, "remote-lfa", &idx)) {
+ test_type = TEST_RLFA;
+
+ fail_sysid_str = argv[idx + 2]->arg;
+ if (argv_find(argv, argc, "pseudonode-id", &idx))
+ fail_pseudonode_id =
+ strtoul(argv[idx + 1]->arg, NULL, 10);
+ protection_type = LFA_LINK_PROTECTION;
+ } else if (argv_find(argv, argc, "ti-lfa", &idx)) {
+ test_type = TEST_TI_LFA;
+
+ fail_sysid_str = argv[idx + 2]->arg;
+ if (argv_find(argv, argc, "pseudonode-id", &idx))
+ fail_pseudonode_id =
+ strtoul(argv[idx + 1]->arg, NULL, 10);
+ if (argv_find(argv, argc, "node-protection", &idx))
+ protection_type = LFA_NODE_PROTECTION;
+ else
+ protection_type = LFA_LINK_PROTECTION;
+ } else
+ return CMD_WARNING;
+
+ /* Parse control flags. */
+ if (argv_find(argv, argc, "display-lspdb", &idx))
+ SET_FLAG(flags, F_DISPLAY_LSPDB);
+ if (argv_find(argv, argc, "ipv4-only", &idx))
+ SET_FLAG(flags, F_IPV4_ONLY);
+ else if (argv_find(argv, argc, "ipv6-only", &idx))
+ SET_FLAG(flags, F_IPV6_ONLY);
+ if (argv_find(argv, argc, "level-1-only", &idx))
+ SET_FLAG(flags, F_LEVEL1_ONLY);
+ else if (argv_find(argv, argc, "level-2-only", &idx))
+ SET_FLAG(flags, F_LEVEL2_ONLY);
+
+ return test_run(vty, topology, root, test_type, flags, protection_type,
+ fail_sysid_str, fail_pseudonode_id);
+}
+
+static void vty_do_exit(int isexit)
+{
+ printf("\nend.\n");
+
+ cmd_terminate();
+ vty_terminate();
+ yang_terminate();
+ thread_master_free(master);
+
+ log_memstats(stderr, "test-isis-spf");
+ if (!isexit)
+ exit(0);
+}
+
+struct option longopts[] = {{"help", no_argument, NULL, 'h'},
+ {"debug", no_argument, NULL, 'd'},
+ {0}};
+
+/* Help information display. */
+static void usage(char *progname, int status)
+{
+ if (status != 0)
+ fprintf(stderr, "Try `%s --help' for more information.\n",
+ progname);
+ else {
+ printf("Usage : %s [OPTION...]\n\
+isisd SPF test program.\n\n\
+-u, --debug Enable debugging\n\
+-h, --help Display this help and exit\n\
+\n\
+Report bugs to %s\n",
+ progname, FRR_BUG_ADDRESS);
+ }
+ exit(status);
+}
+
+int main(int argc, char **argv)
+{
+ char *p;
+ char *progname;
+ struct thread thread;
+ bool debug = false;
+
+ /* Set umask before anything for security */
+ umask(0027);
+
+ /* get program name */
+ progname = ((p = strrchr(argv[0], '/')) ? ++p : argv[0]);
+
+ while (1) {
+ int opt;
+
+ opt = getopt_long(argc, argv, "hd", longopts, 0);
+
+ if (opt == EOF)
+ break;
+
+ switch (opt) {
+ case 0:
+ break;
+ case 'd':
+ debug = true;
+ break;
+ case 'h':
+ usage(progname, 0);
+ break;
+ default:
+ usage(progname, 1);
+ break;
+ }
+ }
+
+ /* master init. */
+ master = thread_master_create(NULL);
+ isis_master_init(master);
+
+ /* Library inits. */
+ cmd_init(1);
+ cmd_hostname_set("test");
+ vty_init(master, false);
+ yang_init(true, false);
+ if (debug)
+ zlog_aux_init("NONE: ", LOG_DEBUG);
+ else
+ zlog_aux_init("NONE: ", ZLOG_DISABLED);
+
+ /* IS-IS inits. */
+ yang_module_load("frr-isisd");
+ SET_FLAG(im->options, F_ISIS_UNIT_TEST);
+ debug_spf_events |= DEBUG_SPF_EVENTS;
+ debug_lfa |= DEBUG_LFA;
+ debug_events |= DEBUG_EVENTS;
+ debug_rte_events |= DEBUG_RTE_EVENTS;
+
+ /* Install test command. */
+ install_element(VIEW_NODE, &test_isis_cmd);
+
+ /* Read input from .in file. */
+ vty_stdio(vty_do_exit);
+
+ /* Fetch next active thread. */
+ while (thread_fetch(master, &thread))
+ thread_call(&thread);
+
+ /* Not reached. */
+ exit(0);
+}
diff --git a/tests/isisd/test_isis_spf.in b/tests/isisd/test_isis_spf.in
new file mode 100644
index 0000000..f8f65ff
--- /dev/null
+++ b/tests/isisd/test_isis_spf.in
@@ -0,0 +1,68 @@
+test isis topology 1 root rt1 spf
+test isis topology 2 root rt1 spf
+test isis topology 3 root rt1 spf ipv4-only
+test isis topology 4 root rt1 spf ipv4-only
+test isis topology 5 root rt1 spf ipv4-only
+test isis topology 6 root rt1 spf ipv4-only
+test isis topology 7 root rt1 spf ipv4-only
+test isis topology 8 root rt1 spf ipv4-only
+test isis topology 9 root rt1 spf
+test isis topology 10 root rt1 spf
+test isis topology 11 root rt1 spf
+test isis topology 12 root rt1 spf ipv4-only
+test isis topology 13 root rt1 spf ipv4-only
+
+test isis topology 4 root rt1 reverse-spf ipv4-only
+test isis topology 11 root rt1 reverse-spf
+
+test isis topology 1 root rt1 lfa system-id rt2
+test isis topology 2 root rt4 lfa system-id rt1 pseudonode-id 1
+test isis topology 2 root rt4 lfa system-id rt6
+test isis topology 3 root rt1 lfa system-id rt2
+test isis topology 3 root rt1 lfa system-id rt3
+test isis topology 7 root rt1 lfa system-id rt4
+test isis topology 7 root rt7 lfa system-id rt8
+test isis topology 7 root rt8 lfa system-id rt11
+test isis topology 9 root rt3 lfa system-id rt1
+test isis topology 10 root rt8 lfa system-id rt5
+test isis topology 11 root rt3 lfa system-id rt5
+test isis topology 13 root rt4 lfa system-id rt3
+test isis topology 14 root rt1 lfa system-id rt1 pseudonode-id 1
+test isis topology 14 root rt1 lfa system-id rt2
+test isis topology 14 root rt5 lfa system-id rt4
+
+test isis topology 1 root rt1 remote-lfa system-id rt2
+test isis topology 2 root rt5 remote-lfa system-id rt1 pseudonode-id 1
+test isis topology 3 root rt5 remote-lfa system-id rt4 ipv4-only
+test isis topology 3 root rt5 remote-lfa system-id rt3 ipv4-only
+test isis topology 5 root rt1 remote-lfa system-id rt2 ipv4-only
+test isis topology 6 root rt4 remote-lfa system-id rt3 ipv4-only
+test isis topology 7 root rt11 remote-lfa system-id rt8 ipv4-only
+test isis topology 7 root rt6 remote-lfa system-id rt5 ipv4-only
+test isis topology 8 root rt2 remote-lfa system-id rt5 ipv4-only
+test isis topology 11 root rt2 remote-lfa system-id rt4
+test isis topology 13 root rt1 remote-lfa system-id rt3 ipv4-only
+
+test isis topology 1 root rt1 ti-lfa system-id rt2
+test isis topology 2 root rt1 ti-lfa system-id rt3
+test isis topology 2 root rt1 ti-lfa system-id rt1 pseudonode-id 1
+test isis topology 2 root rt5 ti-lfa system-id rt1 pseudonode-id 1
+test isis topology 3 root rt5 ti-lfa system-id rt4 ipv4-only
+test isis topology 3 root rt5 ti-lfa system-id rt3 ipv4-only
+test isis topology 4 root rt1 ti-lfa system-id rt2 ipv4-only
+test isis topology 4 root rt4 ti-lfa system-id rt6 ipv4-only
+test isis topology 5 root rt1 ti-lfa system-id rt2 ipv4-only
+test isis topology 6 root rt4 ti-lfa system-id rt3 ipv4-only
+test isis topology 7 root rt11 ti-lfa system-id rt8 ipv4-only
+test isis topology 7 root rt6 ti-lfa system-id rt5 ipv4-only
+test isis topology 8 root rt2 ti-lfa system-id rt1 ipv4-only
+test isis topology 8 root rt2 ti-lfa system-id rt5 ipv4-only
+test isis topology 9 root rt1 ti-lfa system-id rt3
+test isis topology 9 root rt1 ti-lfa system-id rt2
+test isis topology 9 root rt9 ti-lfa system-id rt5
+test isis topology 9 root rt9 ti-lfa system-id rt8
+test isis topology 10 root rt1 ti-lfa system-id rt2
+test isis topology 10 root rt1 ti-lfa system-id rt4
+test isis topology 11 root rt2 ti-lfa system-id rt4
+test isis topology 12 root rt1 ti-lfa system-id rt3 ipv4-only
+test isis topology 13 root rt1 ti-lfa system-id rt3 ipv4-only
diff --git a/tests/isisd/test_isis_spf.py b/tests/isisd/test_isis_spf.py
new file mode 100644
index 0000000..f44fa70
--- /dev/null
+++ b/tests/isisd/test_isis_spf.py
@@ -0,0 +1,5 @@
+import frrtest
+
+
+class TestIsisSPF(frrtest.TestRefOut):
+ program = "./test_isis_spf"
diff --git a/tests/isisd/test_isis_spf.refout b/tests/isisd/test_isis_spf.refout
new file mode 100644
index 0000000..bdd5b2e
--- /dev/null
+++ b/tests/isisd/test_isis_spf.refout
@@ -0,0 +1,4800 @@
+test# test isis topology 1 root rt1 spf
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+ rt3 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ - rt3 16060
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+2001:db8::4/128 IP6 internal 30 rt2 - rt4(4)
+2001:db8::5/128 IP6 internal 30 rt3 - rt5(4)
+2001:db8::6/128 IP6 internal 40 rt2 - rt6(4)
+ rt3 -
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 implicit-null
+ 2001:db8::3/128 20 - rt3 implicit-null
+ 2001:db8::4/128 30 - rt2 16041
+ 2001:db8::5/128 30 - rt3 16051
+ 2001:db8::6/128 40 - rt2 16061
+ - rt3 16061
+
+test# test isis topology 2 root rt1 spf
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt5 TE-IS 10 rt5 - rt1(4)
+rt2 TE-IS 15 rt2 - rt1(4)
+rt1
+rt6 TE-IS 20 rt4 - rt4(4)
+ rt5 - rt5(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+10.0.255.2/32 IP TE 25 rt2 - rt2(4)
+rt3 TE-IS 30 rt3 - rt1(4)
+10.0.255.6/32 IP TE 30 rt4 - rt6(4)
+ rt5 -
+10.0.255.3/32 IP TE 40 rt3 - rt3(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 25 - rt2 implicit-null
+ 10.0.255.3/32 40 - rt3 implicit-null
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 30 - rt4 16060
+ - rt5 16060
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt5 TE-IS 10 rt5 - rt1(4)
+rt2 TE-IS 15 rt2 - rt1(4)
+rt1
+rt6 TE-IS 20 rt4 - rt4(4)
+ rt5 - rt5(4)
+2001:db8::4/128 IP6 internal 20 rt4 - rt4(4)
+2001:db8::5/128 IP6 internal 20 rt5 - rt5(4)
+2001:db8::2/128 IP6 internal 25 rt2 - rt2(4)
+rt3 TE-IS 30 rt3 - rt1(4)
+2001:db8::6/128 IP6 internal 30 rt4 - rt6(4)
+ rt5 -
+2001:db8::3/128 IP6 internal 40 rt3 - rt3(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 25 - rt2 implicit-null
+ 2001:db8::3/128 40 - rt3 implicit-null
+ 2001:db8::4/128 20 - rt4 implicit-null
+ 2001:db8::5/128 20 - rt5 implicit-null
+ 2001:db8::6/128 30 - rt4 16061
+ - rt5 16061
+
+test# test isis topology 3 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt5 TE-IS 30 rt2 - rt4(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 40 rt2 - rt5(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 40 - rt2 16050
+ 10.0.255.6/32 40 - rt2 16060
+
+test# test isis topology 4 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt8 TE-IS 40 rt2 - rt6(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+10.0.255.8/32 IP TE 50 rt2 - rt8(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ 10.0.255.7/32 40 - rt3 16070
+ 10.0.255.8/32 50 - rt2 16080
+
+test# test isis topology 5 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt8 TE-IS 40 rt2 - rt6(4)
+ rt3 - rt7(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+10.0.255.8/32 IP TE 50 rt2 - rt8(4)
+ rt3 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ 10.0.255.7/32 40 - rt3 16070
+ 10.0.255.8/32 50 - rt2 16080
+ - rt3 16080
+
+test# test isis topology 6 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+ rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 -
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+ rt3 -
+rt5 TE-IS 40 rt2 - rt6(4)
+ rt3 -
+rt8 TE-IS 40 rt2 - rt6(4)
+ rt3 -
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+ rt3 -
+rt7 TE-IS 50 rt2 - rt5(4)
+ rt3 - rt8(4)
+10.0.255.5/32 IP TE 50 rt2 - rt5(4)
+ rt3 -
+10.0.255.8/32 IP TE 50 rt2 - rt8(4)
+ rt3 -
+10.0.255.7/32 IP TE 60 rt2 - rt7(4)
+ rt3 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ - rt3 16040
+ 10.0.255.5/32 50 - rt2 16050
+ - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ - rt3 16060
+ 10.0.255.7/32 60 - rt2 16070
+ - rt3 16070
+ 10.0.255.8/32 50 - rt2 16080
+ - rt3 16080
+
+test# test isis topology 7 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt5 TE-IS 20 rt4 - rt4(4)
+rt7 TE-IS 20 rt4 - rt4(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+rt2 TE-IS 30 rt4 - rt5(4)
+rt6 TE-IS 30 rt4 - rt5(4)
+rt8 TE-IS 30 rt4 - rt5(4)
+ rt7(4)
+10.0.255.5/32 IP TE 30 rt4 - rt5(4)
+10.0.255.7/32 IP TE 30 rt4 - rt7(4)
+rt10 TE-IS 40 rt4 - rt7(4)
+rt3 TE-IS 40 rt4 - rt2(4)
+ rt6(4)
+rt9 TE-IS 40 rt4 - rt8(4)
+rt11 TE-IS 40 rt4 - rt8(4)
+10.0.255.2/32 IP TE 40 rt4 - rt2(4)
+10.0.255.6/32 IP TE 40 rt4 - rt6(4)
+10.0.255.8/32 IP TE 40 rt4 - rt8(4)
+rt12 TE-IS 50 rt4 - rt9(4)
+ rt11(4)
+10.0.255.10/32 IP TE 50 rt4 - rt10(4)
+10.0.255.3/32 IP TE 50 rt4 - rt3(4)
+10.0.255.9/32 IP TE 50 rt4 - rt9(4)
+10.0.255.11/32 IP TE 50 rt4 - rt11(4)
+10.0.255.12/32 IP TE 60 rt4 - rt12(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 40 - rt4 16020
+ 10.0.255.3/32 50 - rt4 16030
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 30 - rt4 16050
+ 10.0.255.6/32 40 - rt4 16060
+ 10.0.255.7/32 30 - rt4 16070
+ 10.0.255.8/32 40 - rt4 16080
+ 10.0.255.9/32 50 - rt4 16090
+ 10.0.255.10/32 50 - rt4 16100
+ 10.0.255.11/32 50 - rt4 16110
+ 10.0.255.12/32 60 - rt4 16120
+
+test# test isis topology 8 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt3 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt2 - rt2(4)
+rt7 TE-IS 20 rt4 - rt4(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+rt6 TE-IS 30 rt2 - rt3(4)
+ rt5(4)
+rt8 TE-IS 30 rt2 - rt5(4)
+rt10 TE-IS 30 rt4 - rt7(4)
+10.0.255.3/32 IP TE 30 rt2 - rt3(4)
+10.0.255.5/32 IP TE 30 rt2 - rt5(4)
+10.0.255.7/32 IP TE 30 rt4 - rt7(4)
+rt9 TE-IS 40 rt2 - rt8(4)
+rt11 TE-IS 40 rt2 - rt8(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+10.0.255.8/32 IP TE 40 rt2 - rt8(4)
+10.0.255.10/32 IP TE 40 rt4 - rt10(4)
+rt12 TE-IS 50 rt2 - rt9(4)
+ rt11(4)
+10.0.255.9/32 IP TE 50 rt2 - rt9(4)
+10.0.255.11/32 IP TE 50 rt2 - rt11(4)
+10.0.255.12/32 IP TE 60 rt2 - rt12(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 30 - rt2 16030
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 30 - rt2 16050
+ 10.0.255.6/32 40 - rt2 16060
+ 10.0.255.7/32 30 - rt4 16070
+ 10.0.255.8/32 40 - rt2 16080
+ 10.0.255.9/32 50 - rt2 16090
+ 10.0.255.10/32 40 - rt4 16100
+ 10.0.255.11/32 50 - rt2 16110
+ 10.0.255.12/32 60 - rt2 16120
+
+test# test isis topology 9 root rt1 spf
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt5 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+rt9 TE-IS 40 rt2 - rt5(4)
+10.0.255.5/32 IP TE 40 rt2 - rt5(4)
+rt6 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt7 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt8 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+10.0.255.9/32 IP TE 50 rt2 - rt9(4)
+10.0.255.6/32 IP TE 60 rt2 - rt6(4)
+10.0.255.7/32 IP TE 60 rt2 - rt7(4)
+10.0.255.8/32 IP TE 60 rt2 - rt8(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 40 - rt2 16050
+ 10.0.255.6/32 60 - rt2 16060
+ 10.0.255.7/32 60 - rt2 16070
+ 10.0.255.8/32 60 - rt2 16080
+ 10.0.255.9/32 50 - rt2 16090
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt5 TE-IS 30 rt2 - rt4(4)
+2001:db8::4/128 IP6 internal 30 rt2 - rt4(4)
+rt9 TE-IS 40 rt2 - rt5(4)
+2001:db8::5/128 IP6 internal 40 rt2 - rt5(4)
+rt6 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt7 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt8 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+2001:db8::9/128 IP6 internal 50 rt2 - rt9(4)
+2001:db8::6/128 IP6 internal 60 rt2 - rt6(4)
+2001:db8::7/128 IP6 internal 60 rt2 - rt7(4)
+2001:db8::8/128 IP6 internal 60 rt2 - rt8(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 implicit-null
+ 2001:db8::3/128 20 - rt3 implicit-null
+ 2001:db8::4/128 30 - rt2 16041
+ 2001:db8::5/128 40 - rt2 16051
+ 2001:db8::6/128 60 - rt2 16061
+ 2001:db8::7/128 60 - rt2 16071
+ 2001:db8::8/128 60 - rt2 16081
+ 2001:db8::9/128 50 - rt2 16091
+
+test# test isis topology 10 root rt1 spf
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 20 rt3 - rt1(4)
+rt4 TE-IS 20 rt4 - rt1(4)
+rt5 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+rt6 TE-IS 30 rt3 - rt3(4)
+rt7 TE-IS 30 rt4 - rt4(4)
+rt8 TE-IS 30 rt2 - rt5(4)
+10.0.255.3/32 IP TE 30 rt3 - rt3(4)
+10.0.255.4/32 IP TE 30 rt4 - rt4(4)
+10.0.255.5/32 IP TE 30 rt2 - rt5(4)
+10.0.255.6/32 IP TE 40 rt3 - rt6(4)
+10.0.255.7/32 IP TE 40 rt4 - rt7(4)
+10.0.255.8/32 IP TE 40 rt2 - rt8(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 30 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt4 implicit-null
+ 10.0.255.5/32 30 - rt2 16050
+ 10.0.255.6/32 40 - rt3 20060
+ 10.0.255.7/32 40 - rt4 16070
+ 10.0.255.8/32 40 - rt2 16080
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 20 rt3 - rt1(4)
+rt4 TE-IS 20 rt4 - rt1(4)
+rt5 TE-IS 20 rt2 - rt2(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+rt6 TE-IS 30 rt3 - rt3(4)
+rt7 TE-IS 30 rt4 - rt4(4)
+rt8 TE-IS 30 rt2 - rt5(4)
+2001:db8::3/128 IP6 internal 30 rt3 - rt3(4)
+2001:db8::4/128 IP6 internal 30 rt4 - rt4(4)
+2001:db8::5/128 IP6 internal 30 rt2 - rt5(4)
+2001:db8::6/128 IP6 internal 40 rt3 - rt6(4)
+2001:db8::7/128 IP6 internal 40 rt4 - rt7(4)
+2001:db8::8/128 IP6 internal 40 rt2 - rt8(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 implicit-null
+ 2001:db8::3/128 30 - rt3 implicit-null
+ 2001:db8::4/128 30 - rt4 implicit-null
+ 2001:db8::5/128 30 - rt2 16051
+ 2001:db8::6/128 40 - rt3 20061
+ 2001:db8::7/128 40 - rt4 16071
+ 2001:db8::8/128 40 - rt2 16081
+
+test# test isis topology 11 root rt1 spf
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt2 pseudo_TE-IS 20 rt3 - rt3(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+ rt3 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ - rt3 16060
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt2 pseudo_TE-IS 20 rt3 - rt3(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+2001:db8::4/128 IP6 internal 30 rt2 - rt4(4)
+2001:db8::5/128 IP6 internal 30 rt3 - rt5(4)
+2001:db8::6/128 IP6 internal 40 rt2 - rt6(4)
+ rt3 -
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 implicit-null
+ 2001:db8::3/128 20 - rt3 implicit-null
+ 2001:db8::4/128 30 - rt2 16041
+ 2001:db8::5/128 30 - rt3 16051
+ 2001:db8::6/128 40 - rt2 16061
+ - rt3 16061
+
+test# test isis topology 12 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt8 TE-IS 40 rt2 - rt6(4)
+rt9 TE-IS 40 rt3 - rt7(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+rt10 TE-IS 50 rt2 - rt8(4)
+10.0.255.8/32 IP TE 50 rt2 - rt8(4)
+10.0.255.9/32 IP TE 50 rt3 - rt9(4)
+10.0.255.10/32 IP TE 60 rt2 - rt10(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ 10.0.255.7/32 40 - rt3 16070
+ 10.0.255.8/32 50 - rt2 16080
+ 10.0.255.9/32 50 - rt3 16090
+ 10.0.255.10/32 60 - rt2 16100
+
+test# test isis topology 13 root rt1 spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+ rt3 - rt3(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+rt6 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+ rt6(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+ rt3 -
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 30 rt3 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ - rt3 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 30 - rt3 16060
+ 10.0.255.7/32 40 - rt3 16070
+
+test#
+test# test isis topology 4 root rt1 reverse-spf ipv4-only
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt8 TE-IS 40 rt2 - rt6(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+10.0.255.8/32 IP TE 50 rt2 - rt8(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ 10.0.255.7/32 40 - rt3 16070
+ 10.0.255.8/32 50 - rt2 16080
+
+test# test isis topology 11 root rt1 reverse-spf
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt2 pseudo_TE-IS 20 rt3 - rt3(4)
+rt4 TE-IS 20 rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt3 - rt4(4)
+ rt5(4)
+10.0.255.4/32 IP TE 30 rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 40 rt3 - rt6(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt3 16060
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt2 pseudo_TE-IS 20 rt3 - rt3(4)
+rt4 TE-IS 20 rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+2001:db8::2/128 IP6 internal 20 rt2(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt3 - rt4(4)
+ rt5(4)
+2001:db8::4/128 IP6 internal 30 rt4(4)
+2001:db8::5/128 IP6 internal 30 rt3 - rt5(4)
+2001:db8::6/128 IP6 internal 40 rt3 - rt6(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::3/128 20 - rt3 implicit-null
+ 2001:db8::5/128 30 - rt3 16051
+ 2001:db8::6/128 40 - rt3 16061
+
+test#
+test# test isis topology 1 root rt1 lfa system-id rt2
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+ rt3 -
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ - rt3 16060
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+2001:db8::4/128 IP6 internal 30 rt2 - rt4(4)
+2001:db8::5/128 IP6 internal 30 rt3 - rt5(4)
+2001:db8::6/128 IP6 internal 40 rt2 - rt6(4)
+ rt3 -
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 implicit-null
+ 2001:db8::3/128 20 - rt3 implicit-null
+ 2001:db8::4/128 30 - rt2 16041
+ 2001:db8::5/128 30 - rt3 16051
+ 2001:db8::6/128 40 - rt2 16061
+ - rt3 16061
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 2 root rt4 lfa system-id rt1 pseudonode-id 1
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+10.0.255.4/32 IP internal 0 rt4(4)
+rt1 TE-IS 10 rt1 - rt4(4)
+rt5 TE-IS 10 rt5 - rt4(4)
+rt6 TE-IS 10 rt6 - rt4(4)
+rt1 pseudo_TE-IS 20 rt1 - rt1(4)
+ rt5 - rt5(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt2 TE-IS 25 rt1 - rt1(4)
+10.0.255.2/32 IP TE 35 rt1 - rt2(4)
+rt3 TE-IS 40 rt1 - rt1(4)
+10.0.255.3/32 IP TE 50 rt1 - rt3(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 20 - rt1 implicit-null
+ 10.0.255.2/32 35 - rt1 16020
+ 10.0.255.3/32 50 - rt1 16030
+ 10.0.255.4/32 0 - - -
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.2/32 40 - rt2 implicit-null
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+2001:db8::4/128 IP6 internal 0 rt4(4)
+rt1 TE-IS 10 rt1 - rt4(4)
+rt5 TE-IS 10 rt5 - rt4(4)
+rt6 TE-IS 10 rt6 - rt4(4)
+rt1 pseudo_TE-IS 20 rt1 - rt1(4)
+ rt5 - rt5(4)
+2001:db8::1/128 IP6 internal 20 rt1 - rt1(4)
+2001:db8::5/128 IP6 internal 20 rt5 - rt5(4)
+2001:db8::6/128 IP6 internal 20 rt6 - rt6(4)
+rt2 TE-IS 25 rt1 - rt1(4)
+2001:db8::2/128 IP6 internal 35 rt1 - rt2(4)
+rt3 TE-IS 40 rt1 - rt1(4)
+2001:db8::3/128 IP6 internal 50 rt1 - rt3(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 20 - rt1 implicit-null
+ 2001:db8::2/128 35 - rt1 16021
+ 2001:db8::3/128 50 - rt1 16031
+ 2001:db8::4/128 0 - - -
+ 2001:db8::5/128 20 - rt5 implicit-null
+ 2001:db8::6/128 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::2/128 40 - rt2 implicit-null
+
+test# test isis topology 2 root rt4 lfa system-id rt6
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+10.0.255.4/32 IP internal 0 rt4(4)
+rt1 TE-IS 10 rt1 - rt4(4)
+rt5 TE-IS 10 rt5 - rt4(4)
+rt6 TE-IS 10 rt6 - rt4(4)
+rt1 pseudo_TE-IS 20 rt1 - rt1(4)
+ rt5 - rt5(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt2 TE-IS 25 rt1 - rt1(4)
+10.0.255.2/32 IP TE 35 rt1 - rt2(4)
+rt3 TE-IS 40 rt1 - rt1(4)
+10.0.255.3/32 IP TE 50 rt1 - rt3(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 20 - rt1 implicit-null
+ 10.0.255.2/32 35 - rt1 16020
+ 10.0.255.3/32 50 - rt1 16030
+ 10.0.255.4/32 0 - - -
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.6/32 20 - rt5 16060
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+2001:db8::4/128 IP6 internal 0 rt4(4)
+rt1 TE-IS 10 rt1 - rt4(4)
+rt5 TE-IS 10 rt5 - rt4(4)
+rt6 TE-IS 10 rt6 - rt4(4)
+rt1 pseudo_TE-IS 20 rt1 - rt1(4)
+ rt5 - rt5(4)
+2001:db8::1/128 IP6 internal 20 rt1 - rt1(4)
+2001:db8::5/128 IP6 internal 20 rt5 - rt5(4)
+2001:db8::6/128 IP6 internal 20 rt6 - rt6(4)
+rt2 TE-IS 25 rt1 - rt1(4)
+2001:db8::2/128 IP6 internal 35 rt1 - rt2(4)
+rt3 TE-IS 40 rt1 - rt1(4)
+2001:db8::3/128 IP6 internal 50 rt1 - rt3(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 20 - rt1 implicit-null
+ 2001:db8::2/128 35 - rt1 16021
+ 2001:db8::3/128 50 - rt1 16031
+ 2001:db8::4/128 0 - - -
+ 2001:db8::5/128 20 - rt5 implicit-null
+ 2001:db8::6/128 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::6/128 20 - rt5 16061
+
+test# test isis topology 3 root rt1 lfa system-id rt2
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt5 TE-IS 30 rt2 - rt4(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 40 rt2 - rt5(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 40 - rt2 16050
+ 10.0.255.6/32 40 - rt2 16060
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.2/32 20 - rt3 16020
+ 10.0.255.4/32 30 - rt3 16040
+ 10.0.255.5/32 40 - rt3 16050
+ 10.0.255.6/32 40 - rt3 16060
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 3 root rt1 lfa system-id rt3
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt5 TE-IS 30 rt2 - rt4(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 40 rt2 - rt5(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 40 - rt2 16050
+ 10.0.255.6/32 40 - rt2 16060
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.3/32 20 - rt2 16030
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 7 root rt1 lfa system-id rt4
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt5 TE-IS 20 rt4 - rt4(4)
+rt7 TE-IS 20 rt4 - rt4(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+rt2 TE-IS 30 rt4 - rt5(4)
+rt6 TE-IS 30 rt4 - rt5(4)
+rt8 TE-IS 30 rt4 - rt5(4)
+ rt7(4)
+10.0.255.5/32 IP TE 30 rt4 - rt5(4)
+10.0.255.7/32 IP TE 30 rt4 - rt7(4)
+rt10 TE-IS 40 rt4 - rt7(4)
+rt3 TE-IS 40 rt4 - rt2(4)
+ rt6(4)
+rt9 TE-IS 40 rt4 - rt8(4)
+rt11 TE-IS 40 rt4 - rt8(4)
+10.0.255.2/32 IP TE 40 rt4 - rt2(4)
+10.0.255.6/32 IP TE 40 rt4 - rt6(4)
+10.0.255.8/32 IP TE 40 rt4 - rt8(4)
+rt12 TE-IS 50 rt4 - rt9(4)
+ rt11(4)
+10.0.255.10/32 IP TE 50 rt4 - rt10(4)
+10.0.255.3/32 IP TE 50 rt4 - rt3(4)
+10.0.255.9/32 IP TE 50 rt4 - rt9(4)
+10.0.255.11/32 IP TE 50 rt4 - rt11(4)
+10.0.255.12/32 IP TE 60 rt4 - rt12(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 40 - rt4 16020
+ 10.0.255.3/32 50 - rt4 16030
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 30 - rt4 16050
+ 10.0.255.6/32 40 - rt4 16060
+ 10.0.255.7/32 30 - rt4 16070
+ 10.0.255.8/32 40 - rt4 16080
+ 10.0.255.9/32 50 - rt4 16090
+ 10.0.255.10/32 50 - rt4 16100
+ 10.0.255.11/32 50 - rt4 16110
+ 10.0.255.12/32 60 - rt4 16120
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.2/32 40 - rt2 implicit-null
+ 10.0.255.3/32 50 - rt2 16030
+ 10.0.255.4/32 60 - rt2 16040
+ 10.0.255.5/32 50 - rt2 16050
+ 10.0.255.6/32 60 - rt2 16060
+ 10.0.255.7/32 70 - rt2 16070
+ 10.0.255.8/32 60 - rt2 16080
+ 10.0.255.9/32 70 - rt2 16090
+ 10.0.255.10/32 80 - rt2 16100
+ 10.0.255.11/32 70 - rt2 16110
+ 10.0.255.12/32 80 - rt2 16120
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+rt4 TE-IS 10 rt4 - rt1(4)
+rt2 TE-IS 40 rt2 - rt1(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 7 root rt7 lfa system-id rt8
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt7
+10.0.255.7/32 IP internal 0 rt7(4)
+rt4 TE-IS 10 rt4 - rt7(4)
+rt8 TE-IS 10 rt8 - rt7(4)
+rt10 TE-IS 20 rt10 - rt7(4)
+rt1 TE-IS 20 rt4 - rt4(4)
+rt5 TE-IS 20 rt4 - rt4(4)
+ rt8 - rt8(4)
+rt9 TE-IS 20 rt8 - rt8(4)
+rt11 TE-IS 20 rt8 - rt8(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.8/32 IP TE 20 rt8 - rt8(4)
+rt2 TE-IS 30 rt4 - rt5(4)
+ rt8 -
+rt6 TE-IS 30 rt4 - rt5(4)
+ rt8 -
+rt12 TE-IS 30 rt8 - rt9(4)
+ rt11(4)
+10.0.255.10/32 IP TE 30 rt10 - rt10(4)
+10.0.255.1/32 IP TE 30 rt4 - rt1(4)
+10.0.255.5/32 IP TE 30 rt4 - rt5(4)
+ rt8 -
+10.0.255.9/32 IP TE 30 rt8 - rt9(4)
+10.0.255.11/32 IP TE 30 rt8 - rt11(4)
+rt3 TE-IS 40 rt4 - rt2(4)
+ rt8 - rt6(4)
+10.0.255.2/32 IP TE 40 rt4 - rt2(4)
+ rt8 -
+10.0.255.6/32 IP TE 40 rt4 - rt6(4)
+ rt8 -
+10.0.255.12/32 IP TE 40 rt8 - rt12(4)
+10.0.255.3/32 IP TE 50 rt4 - rt3(4)
+ rt8 -
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 30 - rt4 16010
+ 10.0.255.2/32 40 - rt4 16020
+ - rt8 16020
+ 10.0.255.3/32 50 - rt4 16030
+ - rt8 16030
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 30 - rt4 16050
+ - rt8 16050
+ 10.0.255.6/32 40 - rt4 16060
+ - rt8 16060
+ 10.0.255.7/32 0 - - -
+ 10.0.255.8/32 20 - rt8 implicit-null
+ 10.0.255.9/32 30 - rt8 16090
+ 10.0.255.10/32 30 - rt10 implicit-null
+ 10.0.255.11/32 30 - rt8 16110
+ 10.0.255.12/32 40 - rt8 16120
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------
+ 10.0.255.8/32 40 - rt10 16080
+ 10.0.255.9/32 50 - rt10 16090
+ 10.0.255.11/32 30 - rt10 16110
+ 10.0.255.12/32 40 - rt10 16120
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt7
+rt4 TE-IS 10 rt4 - rt7(4)
+rt8 TE-IS 10 rt8 - rt7(4)
+rt10 TE-IS 20 rt10 - rt7(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 7 root rt8 lfa system-id rt11
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt8
+10.0.255.8/32 IP internal 0 rt8(4)
+rt5 TE-IS 10 rt5 - rt8(4)
+rt7 TE-IS 10 rt7 - rt8(4)
+rt9 TE-IS 10 rt9 - rt8(4)
+rt11 TE-IS 10 rt11 - rt8(4)
+rt2 TE-IS 20 rt5 - rt5(4)
+rt4 TE-IS 20 rt5 - rt5(4)
+ rt7 - rt7(4)
+rt6 TE-IS 20 rt5 - rt5(4)
+rt12 TE-IS 20 rt9 - rt9(4)
+ rt11 - rt11(4)
+rt10 TE-IS 20 rt11 - rt11(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+10.0.255.7/32 IP TE 20 rt7 - rt7(4)
+10.0.255.9/32 IP TE 20 rt9 - rt9(4)
+10.0.255.11/32 IP TE 20 rt11 - rt11(4)
+rt3 TE-IS 30 rt5 - rt2(4)
+ rt6(4)
+rt1 TE-IS 30 rt5 - rt4(4)
+ rt7 -
+10.0.255.2/32 IP TE 30 rt5 - rt2(4)
+10.0.255.4/32 IP TE 30 rt5 - rt4(4)
+ rt7 -
+10.0.255.6/32 IP TE 30 rt5 - rt6(4)
+10.0.255.12/32 IP TE 30 rt9 - rt12(4)
+ rt11 -
+10.0.255.10/32 IP TE 30 rt11 - rt10(4)
+10.0.255.3/32 IP TE 40 rt5 - rt3(4)
+10.0.255.1/32 IP TE 40 rt5 - rt1(4)
+ rt7 -
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 40 - rt5 16010
+ - rt7 16010
+ 10.0.255.2/32 30 - rt5 16020
+ 10.0.255.3/32 40 - rt5 16030
+ 10.0.255.4/32 30 - rt5 16040
+ - rt7 16040
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 30 - rt5 16060
+ 10.0.255.7/32 20 - rt7 implicit-null
+ 10.0.255.8/32 0 - - -
+ 10.0.255.9/32 20 - rt9 implicit-null
+ 10.0.255.10/32 30 - rt11 16100
+ 10.0.255.11/32 20 - rt11 implicit-null
+ 10.0.255.12/32 30 - rt9 16120
+ - rt11 16120
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------
+ 10.0.255.10/32 30 - rt7 16100
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt8
+rt5 TE-IS 10 rt5 - rt8(4)
+rt7 TE-IS 10 rt7 - rt8(4)
+rt9 TE-IS 10 rt9 - rt8(4)
+rt11 TE-IS 10 rt11 - rt8(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 9 root rt3 lfa system-id rt1
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt3
+10.0.255.3/32 IP internal 0 rt3(4)
+rt1 TE-IS 10 rt1 - rt3(4)
+rt2 TE-IS 20 rt1 - rt1(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+rt4 TE-IS 30 rt1 - rt2(4)
+10.0.255.2/32 IP TE 30 rt1 - rt2(4)
+rt5 TE-IS 40 rt1 - rt4(4)
+10.0.255.4/32 IP TE 40 rt1 - rt4(4)
+rt9 TE-IS 50 rt1 - rt5(4)
+10.0.255.5/32 IP TE 50 rt1 - rt5(4)
+rt6 TE-IS 60 rt1 - rt4(4)
+ rt9(4)
+rt7 TE-IS 60 rt1 - rt4(4)
+ rt9(4)
+rt8 TE-IS 60 rt1 - rt4(4)
+ rt9(4)
+10.0.255.9/32 IP TE 60 rt1 - rt9(4)
+10.0.255.6/32 IP TE 70 rt1 - rt6(4)
+10.0.255.7/32 IP TE 70 rt1 - rt7(4)
+10.0.255.8/32 IP TE 70 rt1 - rt8(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 20 - rt1 implicit-null
+ 10.0.255.2/32 30 - rt1 16020
+ 10.0.255.3/32 0 - - -
+ 10.0.255.4/32 40 - rt1 16040
+ 10.0.255.5/32 50 - rt1 16050
+ 10.0.255.6/32 70 - rt1 16060
+ 10.0.255.7/32 70 - rt1 16070
+ 10.0.255.8/32 70 - rt1 16080
+ 10.0.255.9/32 60 - rt1 16090
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 120 - rt4 16010
+ 10.0.255.2/32 110 - rt4 16020
+ 10.0.255.4/32 100 - rt4 implicit-null
+ 10.0.255.5/32 110 - rt4 16050
+ 10.0.255.6/32 130 - rt4 16060
+ 10.0.255.7/32 130 - rt4 16070
+ 10.0.255.8/32 130 - rt4 16080
+ 10.0.255.9/32 120 - rt4 16090
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt3
+2001:db8::3/128 IP6 internal 0 rt3(4)
+rt1 TE-IS 10 rt1 - rt3(4)
+rt2 TE-IS 20 rt1 - rt1(4)
+2001:db8::1/128 IP6 internal 20 rt1 - rt1(4)
+rt4 TE-IS 30 rt1 - rt2(4)
+2001:db8::2/128 IP6 internal 30 rt1 - rt2(4)
+rt5 TE-IS 40 rt1 - rt4(4)
+2001:db8::4/128 IP6 internal 40 rt1 - rt4(4)
+rt9 TE-IS 50 rt1 - rt5(4)
+2001:db8::5/128 IP6 internal 50 rt1 - rt5(4)
+rt6 TE-IS 60 rt1 - rt4(4)
+ rt9(4)
+rt7 TE-IS 60 rt1 - rt4(4)
+ rt9(4)
+rt8 TE-IS 60 rt1 - rt4(4)
+ rt9(4)
+2001:db8::9/128 IP6 internal 60 rt1 - rt9(4)
+2001:db8::6/128 IP6 internal 70 rt1 - rt6(4)
+2001:db8::7/128 IP6 internal 70 rt1 - rt7(4)
+2001:db8::8/128 IP6 internal 70 rt1 - rt8(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 20 - rt1 implicit-null
+ 2001:db8::2/128 30 - rt1 16021
+ 2001:db8::3/128 0 - - -
+ 2001:db8::4/128 40 - rt1 16041
+ 2001:db8::5/128 50 - rt1 16051
+ 2001:db8::6/128 70 - rt1 16061
+ 2001:db8::7/128 70 - rt1 16071
+ 2001:db8::8/128 70 - rt1 16081
+ 2001:db8::9/128 60 - rt1 16091
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 120 - rt4 16011
+ 2001:db8::2/128 110 - rt4 16021
+ 2001:db8::4/128 100 - rt4 implicit-null
+ 2001:db8::5/128 110 - rt4 16051
+ 2001:db8::6/128 130 - rt4 16061
+ 2001:db8::7/128 130 - rt4 16071
+ 2001:db8::8/128 130 - rt4 16081
+ 2001:db8::9/128 120 - rt4 16091
+
+test# test isis topology 10 root rt8 lfa system-id rt5
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt8
+10.0.255.8/32 IP internal 0 rt8(4)
+rt5 TE-IS 10 rt5 - rt8(4)
+rt2 TE-IS 20 rt5 - rt5(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+rt1 TE-IS 30 rt5 - rt2(4)
+10.0.255.2/32 IP TE 30 rt5 - rt2(4)
+10.0.255.1/32 IP TE 40 rt5 - rt1(4)
+rt6 TE-IS 50 rt6 - rt8(4)
+rt7 TE-IS 50 rt7 - rt8(4)
+rt3 TE-IS 50 rt5 - rt1(4)
+rt4 TE-IS 50 rt5 - rt1(4)
+10.0.255.6/32 IP TE 60 rt6 - rt6(4)
+10.0.255.7/32 IP TE 60 rt7 - rt7(4)
+10.0.255.3/32 IP TE 60 rt5 - rt3(4)
+10.0.255.4/32 IP TE 60 rt5 - rt4(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 40 - rt5 16010
+ 10.0.255.2/32 30 - rt5 16020
+ 10.0.255.3/32 60 - rt5 16030
+ 10.0.255.4/32 60 - rt5 16040
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 60 - rt6 implicit-null
+ 10.0.255.7/32 60 - rt7 implicit-null
+ 10.0.255.8/32 0 - - -
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.1/32 80 - rt6 16010
+ - rt7 16010
+ 10.0.255.2/32 90 - rt6 16020
+ - rt7 16020
+ 10.0.255.3/32 60 - rt6 16030
+ - rt7 16030
+ 10.0.255.4/32 60 - rt6 16040
+ - rt7 16040
+ 10.0.255.5/32 100 - rt6 16050
+ - rt7 16050
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt8
+2001:db8::8/128 IP6 internal 0 rt8(4)
+rt5 TE-IS 10 rt5 - rt8(4)
+rt2 TE-IS 20 rt5 - rt5(4)
+2001:db8::5/128 IP6 internal 20 rt5 - rt5(4)
+rt1 TE-IS 30 rt5 - rt2(4)
+2001:db8::2/128 IP6 internal 30 rt5 - rt2(4)
+2001:db8::1/128 IP6 internal 40 rt5 - rt1(4)
+rt6 TE-IS 50 rt6 - rt8(4)
+rt7 TE-IS 50 rt7 - rt8(4)
+rt3 TE-IS 50 rt5 - rt1(4)
+rt4 TE-IS 50 rt5 - rt1(4)
+2001:db8::6/128 IP6 internal 60 rt6 - rt6(4)
+2001:db8::7/128 IP6 internal 60 rt7 - rt7(4)
+2001:db8::3/128 IP6 internal 60 rt5 - rt3(4)
+2001:db8::4/128 IP6 internal 60 rt5 - rt4(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 40 - rt5 16011
+ 2001:db8::2/128 30 - rt5 16021
+ 2001:db8::3/128 60 - rt5 16031
+ 2001:db8::4/128 60 - rt5 16041
+ 2001:db8::5/128 20 - rt5 implicit-null
+ 2001:db8::6/128 60 - rt6 implicit-null
+ 2001:db8::7/128 60 - rt7 implicit-null
+ 2001:db8::8/128 0 - - -
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::1/128 80 - rt6 16011
+ - rt7 16011
+ 2001:db8::2/128 90 - rt6 16021
+ - rt7 16021
+ 2001:db8::3/128 60 - rt6 16031
+ - rt7 16031
+ 2001:db8::4/128 60 - rt6 16041
+ - rt7 16041
+ 2001:db8::5/128 100 - rt6 16051
+ - rt7 16051
+
+test# test isis topology 11 root rt3 lfa system-id rt5
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt3
+10.0.255.3/32 IP internal 0 rt3(4)
+rt1 TE-IS 10 rt1 - rt3(4)
+rt2 TE-IS 10 rt2 - rt3(4)
+rt5 TE-IS 10 rt5 - rt3(4)
+rt2 pseudo_TE-IS 20 rt1 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+ rt5 - rt5(4)
+rt6 TE-IS 20 rt5 - rt5(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+ rt5 -
+10.0.255.6/32 IP TE 30 rt5 - rt6(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 20 - rt1 implicit-null
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 0 - - -
+ 10.0.255.4/32 30 - rt2 16040
+ - rt5 16040
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 30 - rt5 16060
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.5/32 30 - rt2 16050
+ 10.0.255.6/32 30 - rt2 16060
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt3
+2001:db8::3/128 IP6 internal 0 rt3(4)
+rt1 TE-IS 10 rt1 - rt3(4)
+rt2 TE-IS 10 rt2 - rt3(4)
+rt5 TE-IS 10 rt5 - rt3(4)
+rt2 pseudo_TE-IS 20 rt1 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+ rt5 - rt5(4)
+rt6 TE-IS 20 rt5 - rt5(4)
+2001:db8::1/128 IP6 internal 20 rt1 - rt1(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::5/128 IP6 internal 20 rt5 - rt5(4)
+2001:db8::4/128 IP6 internal 30 rt2 - rt4(4)
+ rt5 -
+2001:db8::6/128 IP6 internal 30 rt5 - rt6(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 20 - rt1 implicit-null
+ 2001:db8::2/128 20 - rt2 implicit-null
+ 2001:db8::3/128 0 - - -
+ 2001:db8::4/128 30 - rt2 16041
+ - rt5 16041
+ 2001:db8::5/128 20 - rt5 implicit-null
+ 2001:db8::6/128 30 - rt5 16061
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::5/128 30 - rt2 16051
+ 2001:db8::6/128 30 - rt2 16061
+
+test# test isis topology 13 root rt4 lfa system-id rt3
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+10.0.255.4/32 IP internal 0 rt4(4)
+rt2 TE-IS 10 rt2 - rt4(4)
+rt3 TE-IS 10 rt3 - rt4(4)
+rt1 TE-IS 20 rt2 - rt2(4)
+ rt3 - rt3(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+rt6 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+ rt6(4)
+10.0.255.1/32 IP TE 30 rt2 - rt1(4)
+ rt3 -
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 30 rt3 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 30 - rt2 16010
+ - rt3 16010
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 0 - - -
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 30 - rt3 16060
+ 10.0.255.7/32 40 - rt3 16070
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.3/32 110 - rt5 16030
+ 10.0.255.5/32 100 - rt5 implicit-null
+ 10.0.255.6/32 120 - rt5 16060
+ 10.0.255.7/32 110 - rt5 16070
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+rt2 TE-IS 10 rt2 - rt4(4)
+rt3 TE-IS 10 rt3 - rt4(4)
+rt5 TE-IS 100 rt5 - rt4(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 14 root rt1 lfa system-id rt1 pseudonode-id 1
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt1
+rt5 TE-IS 20 rt4 - rt4(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.5/32 IP TE 30 rt4 - rt5(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 -
+ 10.0.255.3/32 20 - rt3 -
+ 10.0.255.4/32 20 - rt4 -
+ 10.0.255.5/32 30 - rt4 -
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt1
+rt5 TE-IS 20 rt4 - rt4(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+2001:db8::4/128 IP6 internal 20 rt4 - rt4(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::5/128 IP6 internal 30 rt4 - rt5(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 -
+ 2001:db8::3/128 20 - rt3 -
+ 2001:db8::4/128 20 - rt4 -
+ 2001:db8::5/128 30 - rt4 -
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+test# test isis topology 14 root rt1 lfa system-id rt2
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt1
+rt5 TE-IS 20 rt4 - rt4(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.5/32 IP TE 30 rt4 - rt5(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 -
+ 10.0.255.3/32 20 - rt3 -
+ 10.0.255.4/32 20 - rt4 -
+ 10.0.255.5/32 30 - rt4 -
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.2/32 20 - rt3 -
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt1
+rt5 TE-IS 20 rt4 - rt4(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+2001:db8::4/128 IP6 internal 20 rt4 - rt4(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::5/128 IP6 internal 30 rt4 - rt5(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 -
+ 2001:db8::3/128 20 - rt3 -
+ 2001:db8::4/128 20 - rt4 -
+ 2001:db8::5/128 30 - rt4 -
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::2/128 20 - rt3 -
+
+test# test isis topology 14 root rt5 lfa system-id rt4
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt1 pseudo_TE-IS 20 rt4 - rt4(4)
+rt1 TE-IS 20 rt4 - rt1(2)
+rt3 TE-IS 20 rt4 - rt1(2)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+rt2 TE-IS 30 rt4 - rt1(4)
+ rt3(4)
+10.0.255.1/32 IP TE 30 rt4 - rt1(4)
+10.0.255.3/32 IP TE 30 rt4 - rt3(4)
+10.0.255.2/32 IP TE 40 rt4 - rt2(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.1/32 30 - rt4 -
+ 10.0.255.2/32 40 - rt4 -
+ 10.0.255.3/32 30 - rt4 -
+ 10.0.255.4/32 20 - rt4 -
+ 10.0.255.5/32 0 - - -
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.1/32 60 - rt3 -
+ 10.0.255.2/32 60 - rt3 -
+ 10.0.255.3/32 50 - rt3 -
+ 10.0.255.4/32 60 - rt3 -
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+2001:db8::5/128 IP6 internal 0 rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt1 pseudo_TE-IS 20 rt4 - rt4(4)
+rt1 TE-IS 20 rt4 - rt1(2)
+rt3 TE-IS 20 rt4 - rt1(2)
+2001:db8::4/128 IP6 internal 20 rt4 - rt4(4)
+rt2 TE-IS 30 rt4 - rt1(4)
+ rt3(4)
+2001:db8::1/128 IP6 internal 30 rt4 - rt1(4)
+2001:db8::3/128 IP6 internal 30 rt4 - rt3(4)
+2001:db8::2/128 IP6 internal 40 rt4 - rt2(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::1/128 30 - rt4 -
+ 2001:db8::2/128 40 - rt4 -
+ 2001:db8::3/128 30 - rt4 -
+ 2001:db8::4/128 20 - rt4 -
+ 2001:db8::5/128 0 - - -
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::1/128 60 - rt3 -
+ 2001:db8::2/128 60 - rt3 -
+ 2001:db8::3/128 50 - rt3 -
+ 2001:db8::4/128 60 - rt3 -
+
+test#
+test# test isis topology 1 root rt1 remote-lfa system-id rt2
+P-space (self):
+ rt3
+ rt5
+
+P-space (rt3):
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt2
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt3 - rt5(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt4 TE-IS 40 rt3 - rt6(4)
+10.0.255.6/32 IP TE 40 rt3 - rt6(4)
+rt2 TE-IS 50 rt3 - rt4(4)
+10.0.255.4/32 IP TE 50 rt3 - rt4(4)
+10.0.255.2/32 IP TE 60 rt3 - rt2(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+ rt3 -
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ - rt3 16060
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.2/32 60 - rt3 50600/16020
+ 10.0.255.4/32 50 - rt3 50600/16040
+
+P-space (self):
+ rt3
+ rt5
+
+P-space (rt3):
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt2
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt3 - rt5(4)
+2001:db8::5/128 IP6 internal 30 rt3 - rt5(4)
+rt4 TE-IS 40 rt3 - rt6(4)
+2001:db8::6/128 IP6 internal 40 rt3 - rt6(4)
+rt2 TE-IS 50 rt3 - rt4(4)
+2001:db8::4/128 IP6 internal 50 rt3 - rt4(4)
+2001:db8::2/128 IP6 internal 60 rt3 - rt2(4)
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+ rt3 - rt5(4)
+2001:db8::4/128 IP6 internal 30 rt2 - rt4(4)
+2001:db8::5/128 IP6 internal 30 rt3 - rt5(4)
+2001:db8::6/128 IP6 internal 40 rt2 - rt6(4)
+ rt3 -
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 0 - - -
+ 2001:db8::2/128 20 - rt2 implicit-null
+ 2001:db8::3/128 20 - rt3 implicit-null
+ 2001:db8::4/128 30 - rt2 16041
+ 2001:db8::5/128 30 - rt3 16051
+ 2001:db8::6/128 40 - rt2 16061
+ - rt3 16061
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 2001:db8::2/128 60 - rt3 50600/16021
+ 2001:db8::4/128 50 - rt3 50600/16041
+
+test# test isis topology 2 root rt5 remote-lfa system-id rt1 pseudonode-id 1
+P-space (self):
+ rt6
+
+P-space (rt3):
+ rt1
+ rt2
+ rt3
+ rt4
+
+P-space (rt6):
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt4 TE-IS 20 rt6 - rt6(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt1 pseudo_TE-IS 30 rt6 - rt4(4)
+rt1 TE-IS 30 rt6 - rt1(2)
+10.0.255.4/32 IP TE 30 rt6 - rt4(4)
+rt3 TE-IS 40 rt3 - rt5(4)
+10.0.255.1/32 IP TE 40 rt6 - rt1(4)
+rt2 TE-IS 45 rt6 - rt1(4)
+10.0.255.3/32 IP TE 50 rt3 - rt3(4)
+10.0.255.2/32 IP TE 55 rt6 - rt2(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt1 TE-IS 10 rt1 - rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt1 pseudo_TE-IS 20 rt1 - rt1(4)
+ rt4 - rt4(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt2 TE-IS 25 rt1 - rt1(4)
+10.0.255.2/32 IP TE 35 rt1 - rt2(4)
+rt3 TE-IS 40 rt3 - rt5(4)
+ rt1 - rt1(4)
+10.0.255.3/32 IP TE 50 rt3 - rt3(4)
+ rt1 -
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 20 - rt1 implicit-null
+ 10.0.255.2/32 35 - rt1 16020
+ 10.0.255.3/32 50 - rt3 implicit-null
+ - rt1 implicit-null
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 0 - - -
+ 10.0.255.6/32 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.1/32 40 - rt6 50400/16010
+ 10.0.255.2/32 55 - rt6 50400/16020
+ 10.0.255.4/32 30 - rt6 50400/16040
+
+P-space (self):
+ rt6
+
+P-space (rt3):
+ rt1
+ rt2
+ rt3
+ rt4
+
+P-space (rt6):
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+2001:db8::5/128 IP6 internal 0 rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt4 TE-IS 20 rt6 - rt6(4)
+2001:db8::6/128 IP6 internal 20 rt6 - rt6(4)
+rt1 pseudo_TE-IS 30 rt6 - rt4(4)
+rt1 TE-IS 30 rt6 - rt1(2)
+2001:db8::4/128 IP6 internal 30 rt6 - rt4(4)
+rt3 TE-IS 40 rt3 - rt5(4)
+2001:db8::1/128 IP6 internal 40 rt6 - rt1(4)
+rt2 TE-IS 45 rt6 - rt1(4)
+2001:db8::3/128 IP6 internal 50 rt3 - rt3(4)
+2001:db8::2/128 IP6 internal 55 rt6 - rt2(4)
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+2001:db8::5/128 IP6 internal 0 rt5(4)
+rt1 TE-IS 10 rt1 - rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt1 pseudo_TE-IS 20 rt1 - rt1(4)
+ rt4 - rt4(4)
+2001:db8::1/128 IP6 internal 20 rt1 - rt1(4)
+2001:db8::4/128 IP6 internal 20 rt4 - rt4(4)
+2001:db8::6/128 IP6 internal 20 rt6 - rt6(4)
+rt2 TE-IS 25 rt1 - rt1(4)
+2001:db8::2/128 IP6 internal 35 rt1 - rt2(4)
+rt3 TE-IS 40 rt3 - rt5(4)
+ rt1 - rt1(4)
+2001:db8::3/128 IP6 internal 50 rt3 - rt3(4)
+ rt1 -
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 20 - rt1 implicit-null
+ 2001:db8::2/128 35 - rt1 16021
+ 2001:db8::3/128 50 - rt3 implicit-null
+ - rt1 implicit-null
+ 2001:db8::4/128 20 - rt4 implicit-null
+ 2001:db8::5/128 0 - - -
+ 2001:db8::6/128 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 2001:db8::1/128 40 - rt6 50400/16011
+ 2001:db8::2/128 55 - rt6 50400/16021
+ 2001:db8::4/128 30 - rt6 50400/16041
+
+test# test isis topology 3 root rt5 remote-lfa system-id rt4 ipv4-only
+P-space (self):
+ rt6
+
+P-space (rt3):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+P-space (rt6):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt4 TE-IS 20 rt6 - rt6(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt3 TE-IS 30 rt3 - rt5(4)
+rt2 TE-IS 30 rt6 - rt4(4)
+10.0.255.4/32 IP TE 30 rt6 - rt4(4)
+rt1 TE-IS 40 rt3 - rt3(4)
+ rt6 - rt2(4)
+10.0.255.3/32 IP TE 40 rt3 - rt3(4)
+10.0.255.2/32 IP TE 40 rt6 - rt2(4)
+10.0.255.1/32 IP TE 50 rt3 - rt1(4)
+ rt6 -
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt2 TE-IS 20 rt4 - rt4(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt3 TE-IS 30 rt3 - rt5(4)
+ rt4 - rt2(4)
+rt1 TE-IS 30 rt4 - rt2(4)
+10.0.255.2/32 IP TE 30 rt4 - rt2(4)
+10.0.255.3/32 IP TE 40 rt3 - rt3(4)
+ rt4 -
+10.0.255.1/32 IP TE 40 rt4 - rt1(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 40 - rt4 16010
+ 10.0.255.2/32 30 - rt4 16020
+ 10.0.255.3/32 40 - rt3 implicit-null
+ - rt4 implicit-null
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 0 - - -
+ 10.0.255.6/32 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.1/32 40 - rt3 16010
+ - rt6 16010
+ 10.0.255.2/32 30 - rt3 16020
+ - rt6 16020
+ 10.0.255.4/32 20 - rt3 16040
+ - rt6 16040
+
+test# test isis topology 3 root rt5 remote-lfa system-id rt3 ipv4-only
+P-space (self):
+ rt1
+ rt2
+ rt4
+ rt6
+
+P-space (rt4):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+P-space (rt6):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt2 TE-IS 20 rt4 - rt4(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt1 TE-IS 30 rt4 - rt2(4)
+rt3 TE-IS 30 rt4 - rt2(4)
+10.0.255.2/32 IP TE 30 rt4 - rt2(4)
+10.0.255.1/32 IP TE 40 rt4 - rt1(4)
+10.0.255.3/32 IP TE 40 rt4 - rt3(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt2 TE-IS 20 rt4 - rt4(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt3 TE-IS 30 rt3 - rt5(4)
+ rt4 - rt2(4)
+rt1 TE-IS 30 rt4 - rt2(4)
+10.0.255.2/32 IP TE 30 rt4 - rt2(4)
+10.0.255.3/32 IP TE 40 rt3 - rt3(4)
+ rt4 -
+10.0.255.1/32 IP TE 40 rt4 - rt1(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 40 - rt4 16010
+ 10.0.255.2/32 30 - rt4 16020
+ 10.0.255.3/32 40 - rt3 implicit-null
+ - rt4 implicit-null
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 0 - - -
+ 10.0.255.6/32 20 - rt6 implicit-null
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+test# test isis topology 5 root rt1 remote-lfa system-id rt2 ipv4-only
+P-space (self):
+ rt3
+ rt5
+ rt7
+
+P-space (rt3):
+ rt3
+ rt5
+ rt7
+ rt8
+
+Q-space:
+ rt2
+ rt4
+ rt6
+ rt8
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt8 TE-IS 40 rt3 - rt7(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+rt6 TE-IS 50 rt3 - rt8(4)
+10.0.255.8/32 IP TE 50 rt3 - rt8(4)
+rt4 TE-IS 60 rt3 - rt6(4)
+10.0.255.6/32 IP TE 60 rt3 - rt6(4)
+rt2 TE-IS 70 rt3 - rt4(4)
+10.0.255.4/32 IP TE 70 rt3 - rt4(4)
+10.0.255.2/32 IP TE 80 rt3 - rt2(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt8 TE-IS 40 rt2 - rt6(4)
+ rt3 - rt7(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+10.0.255.8/32 IP TE 50 rt2 - rt8(4)
+ rt3 -
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 40 - rt2 16060
+ 10.0.255.7/32 40 - rt3 16070
+ 10.0.255.8/32 50 - rt2 16080
+ - rt3 16080
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.2/32 80 - rt3 50800/16020
+ 10.0.255.4/32 70 - rt3 50800/16040
+ 10.0.255.6/32 60 - rt3 50800/16060
+
+test# test isis topology 6 root rt4 remote-lfa system-id rt3 ipv4-only
+P-space (self):
+ rt2
+ rt5
+ rt6
+ rt7
+ rt8
+
+P-space (rt2):
+ rt1
+ rt2
+
+P-space (rt6):
+ rt5
+ rt6
+ rt7
+ rt8
+
+Q-space:
+ rt1
+ rt3
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+10.0.255.4/32 IP internal 0 rt4(4)
+rt2 TE-IS 10 rt2 - rt4(4)
+rt6 TE-IS 10 rt6 - rt4(4)
+rt1 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt6 - rt6(4)
+rt8 TE-IS 20 rt6 - rt6(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt3 TE-IS 30 rt2 - rt1(4)
+rt7 TE-IS 30 rt6 - rt5(4)
+ rt8(4)
+10.0.255.1/32 IP TE 30 rt2 - rt1(4)
+10.0.255.5/32 IP TE 30 rt6 - rt5(4)
+10.0.255.8/32 IP TE 30 rt6 - rt8(4)
+10.0.255.3/32 IP TE 40 rt2 - rt3(4)
+10.0.255.7/32 IP TE 40 rt6 - rt7(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+10.0.255.4/32 IP internal 0 rt4(4)
+rt2 TE-IS 10 rt2 - rt4(4)
+rt3 TE-IS 10 rt3 - rt4(4)
+rt6 TE-IS 10 rt6 - rt4(4)
+rt1 TE-IS 20 rt2 - rt2(4)
+ rt3 - rt3(4)
+rt5 TE-IS 20 rt6 - rt6(4)
+rt8 TE-IS 20 rt6 - rt6(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt7 TE-IS 30 rt6 - rt5(4)
+ rt8(4)
+10.0.255.1/32 IP TE 30 rt2 - rt1(4)
+ rt3 -
+10.0.255.5/32 IP TE 30 rt6 - rt5(4)
+10.0.255.8/32 IP TE 30 rt6 - rt8(4)
+10.0.255.7/32 IP TE 40 rt6 - rt7(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 30 - rt2 16010
+ - rt3 16010
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 0 - - -
+ 10.0.255.5/32 30 - rt6 16050
+ 10.0.255.6/32 20 - rt6 implicit-null
+ 10.0.255.7/32 40 - rt6 16070
+ 10.0.255.8/32 30 - rt6 16080
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.3/32 40 - rt2 50100/16030
+
+test# test isis topology 7 root rt11 remote-lfa system-id rt8 ipv4-only
+P-space (self):
+ rt10
+ rt12
+
+P-space (rt10):
+ rt1
+ rt4
+ rt7
+ rt10
+
+P-space (rt12):
+ rt9
+ rt12
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt11
+10.0.255.11/32 IP internal 0 rt11(4)
+rt10 TE-IS 10 rt10 - rt11(4)
+rt12 TE-IS 10 rt12 - rt11(4)
+rt9 TE-IS 20 rt12 - rt12(4)
+10.0.255.10/32 IP TE 20 rt10 - rt10(4)
+10.0.255.12/32 IP TE 20 rt12 - rt12(4)
+rt7 TE-IS 30 rt10 - rt10(4)
+rt8 TE-IS 30 rt12 - rt9(4)
+10.0.255.9/32 IP TE 30 rt12 - rt9(4)
+rt4 TE-IS 40 rt10 - rt7(4)
+rt5 TE-IS 40 rt12 - rt8(4)
+10.0.255.7/32 IP TE 40 rt10 - rt7(4)
+10.0.255.8/32 IP TE 40 rt12 - rt8(4)
+rt6 TE-IS 50 rt12 - rt9(4)
+ rt5(4)
+rt1 TE-IS 50 rt10 - rt4(4)
+rt2 TE-IS 50 rt12 - rt5(4)
+10.0.255.4/32 IP TE 50 rt10 - rt4(4)
+10.0.255.5/32 IP TE 50 rt12 - rt5(4)
+rt3 TE-IS 60 rt12 - rt6(4)
+ rt2(4)
+10.0.255.6/32 IP TE 60 rt12 - rt6(4)
+10.0.255.1/32 IP TE 60 rt10 - rt1(4)
+10.0.255.2/32 IP TE 60 rt12 - rt2(4)
+10.0.255.3/32 IP TE 70 rt12 - rt3(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt11
+10.0.255.11/32 IP internal 0 rt11(4)
+rt8 TE-IS 10 rt8 - rt11(4)
+rt10 TE-IS 10 rt10 - rt11(4)
+rt12 TE-IS 10 rt12 - rt11(4)
+rt5 TE-IS 20 rt8 - rt8(4)
+rt7 TE-IS 20 rt8 - rt8(4)
+rt9 TE-IS 20 rt8 - rt8(4)
+ rt12 - rt12(4)
+10.0.255.8/32 IP TE 20 rt8 - rt8(4)
+10.0.255.10/32 IP TE 20 rt10 - rt10(4)
+10.0.255.12/32 IP TE 20 rt12 - rt12(4)
+rt2 TE-IS 30 rt8 - rt5(4)
+rt4 TE-IS 30 rt8 - rt5(4)
+ rt7(4)
+rt6 TE-IS 30 rt8 - rt5(4)
+10.0.255.5/32 IP TE 30 rt8 - rt5(4)
+10.0.255.7/32 IP TE 30 rt8 - rt7(4)
+10.0.255.9/32 IP TE 30 rt8 - rt9(4)
+ rt12 -
+rt3 TE-IS 40 rt8 - rt2(4)
+ rt6(4)
+rt1 TE-IS 40 rt8 - rt4(4)
+10.0.255.2/32 IP TE 40 rt8 - rt2(4)
+10.0.255.4/32 IP TE 40 rt8 - rt4(4)
+10.0.255.6/32 IP TE 40 rt8 - rt6(4)
+10.0.255.3/32 IP TE 50 rt8 - rt3(4)
+10.0.255.1/32 IP TE 50 rt8 - rt1(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 50 - rt8 16010
+ 10.0.255.2/32 40 - rt8 16020
+ 10.0.255.3/32 50 - rt8 16030
+ 10.0.255.4/32 40 - rt8 16040
+ 10.0.255.5/32 30 - rt8 16050
+ 10.0.255.6/32 40 - rt8 16060
+ 10.0.255.7/32 30 - rt8 16070
+ 10.0.255.8/32 20 - rt8 implicit-null
+ 10.0.255.9/32 30 - rt8 16090
+ - rt12 16090
+ 10.0.255.10/32 20 - rt10 implicit-null
+ 10.0.255.11/32 0 - - -
+ 10.0.255.12/32 20 - rt12 implicit-null
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.1/32 50 - rt10 16010
+ 10.0.255.2/32 60 - rt12 50900/16020
+ 10.0.255.3/32 70 - rt12 50900/16030
+ 10.0.255.4/32 40 - rt10 16040
+ 10.0.255.5/32 50 - rt12 50900/16050
+ 10.0.255.6/32 60 - rt12 50900/16060
+ 10.0.255.7/32 30 - rt10 16070
+ 10.0.255.8/32 40 - rt12 50900/16080
+
+test# test isis topology 7 root rt6 remote-lfa system-id rt5 ipv4-only
+P-space (self):
+ rt3
+
+P-space (rt3):
+ rt2
+ rt3
+
+P-space (rt9):
+ rt1
+ rt2
+ rt4
+ rt5
+ rt7
+ rt8
+ rt9
+ rt10
+ rt11
+ rt12
+
+Q-space:
+ rt1
+ rt2
+ rt4
+ rt5
+ rt7
+ rt8
+ rt9
+ rt10
+ rt11
+ rt12
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt6
+10.0.255.6/32 IP internal 0 rt6(4)
+rt3 TE-IS 10 rt3 - rt6(4)
+rt2 TE-IS 20 rt3 - rt3(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt9 TE-IS 30 rt9 - rt6(4)
+rt5 TE-IS 30 rt3 - rt2(4)
+10.0.255.2/32 IP TE 30 rt3 - rt2(4)
+rt8 TE-IS 40 rt9 - rt9(4)
+ rt3 - rt5(4)
+rt12 TE-IS 40 rt9 - rt9(4)
+rt4 TE-IS 40 rt3 - rt5(4)
+10.0.255.9/32 IP TE 40 rt9 - rt9(4)
+10.0.255.5/32 IP TE 40 rt3 - rt5(4)
+rt7 TE-IS 50 rt9 - rt8(4)
+ rt3 - rt4(4)
+rt11 TE-IS 50 rt9 - rt8(4)
+ rt3 - rt12(4)
+rt1 TE-IS 50 rt3 - rt4(4)
+10.0.255.8/32 IP TE 50 rt9 - rt8(4)
+ rt3 -
+10.0.255.12/32 IP TE 50 rt9 - rt12(4)
+10.0.255.4/32 IP TE 50 rt3 - rt4(4)
+rt10 TE-IS 60 rt9 - rt11(4)
+ rt3 -
+10.0.255.7/32 IP TE 60 rt9 - rt7(4)
+ rt3 -
+10.0.255.11/32 IP TE 60 rt9 - rt11(4)
+ rt3 -
+10.0.255.1/32 IP TE 60 rt3 - rt1(4)
+10.0.255.10/32 IP TE 70 rt9 - rt10(4)
+ rt3 -
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt6
+10.0.255.6/32 IP internal 0 rt6(4)
+rt3 TE-IS 10 rt3 - rt6(4)
+rt5 TE-IS 10 rt5 - rt6(4)
+rt2 TE-IS 20 rt3 - rt3(4)
+ rt5 - rt5(4)
+rt4 TE-IS 20 rt5 - rt5(4)
+rt8 TE-IS 20 rt5 - rt5(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+rt9 TE-IS 30 rt9 - rt6(4)
+ rt5 - rt8(4)
+rt1 TE-IS 30 rt5 - rt4(4)
+rt7 TE-IS 30 rt5 - rt4(4)
+ rt8(4)
+rt11 TE-IS 30 rt5 - rt8(4)
+10.0.255.2/32 IP TE 30 rt3 - rt2(4)
+ rt5 -
+10.0.255.4/32 IP TE 30 rt5 - rt4(4)
+10.0.255.8/32 IP TE 30 rt5 - rt8(4)
+rt12 TE-IS 40 rt9 - rt9(4)
+ rt5 - rt11(4)
+rt10 TE-IS 40 rt5 - rt11(4)
+10.0.255.9/32 IP TE 40 rt9 - rt9(4)
+ rt5 -
+10.0.255.1/32 IP TE 40 rt5 - rt1(4)
+10.0.255.7/32 IP TE 40 rt5 - rt7(4)
+10.0.255.11/32 IP TE 40 rt5 - rt11(4)
+10.0.255.12/32 IP TE 50 rt9 - rt12(4)
+ rt5 -
+10.0.255.10/32 IP TE 50 rt5 - rt10(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 40 - rt5 16010
+ 10.0.255.2/32 30 - rt3 16020
+ - rt5 16020
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt5 16040
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 0 - - -
+ 10.0.255.7/32 40 - rt5 16070
+ 10.0.255.8/32 30 - rt5 16080
+ 10.0.255.9/32 40 - rt9 implicit-null
+ - rt5 implicit-null
+ 10.0.255.10/32 50 - rt5 16100
+ 10.0.255.11/32 40 - rt5 16110
+ 10.0.255.12/32 50 - rt9 16120
+ - rt5 16120
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------
+ 10.0.255.1/32 70 - rt9 16010
+ 10.0.255.4/32 60 - rt9 16040
+ 10.0.255.5/32 50 - rt9 16050
+ 10.0.255.7/32 50 - rt9 16070
+ 10.0.255.8/32 40 - rt9 16080
+ 10.0.255.10/32 60 - rt9 16100
+ 10.0.255.11/32 50 - rt9 16110
+
+test# test isis topology 8 root rt2 remote-lfa system-id rt5 ipv4-only
+P-space (self):
+ rt1
+ rt3
+ rt4
+ rt7
+ rt10
+
+P-space (rt1):
+ rt1
+ rt4
+ rt7
+ rt10
+
+P-space (rt3):
+ rt3
+ rt6
+
+Q-space:
+ rt5
+ rt6
+ rt8
+ rt9
+ rt11
+ rt12
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+10.0.255.2/32 IP internal 0 rt2(4)
+rt1 TE-IS 10 rt1 - rt2(4)
+rt3 TE-IS 10 rt3 - rt2(4)
+rt4 TE-IS 20 rt1 - rt1(4)
+rt6 TE-IS 20 rt3 - rt3(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt1 - rt4(4)
+rt5 TE-IS 30 rt3 - rt6(4)
+10.0.255.4/32 IP TE 30 rt1 - rt4(4)
+10.0.255.6/32 IP TE 30 rt3 - rt6(4)
+rt10 TE-IS 40 rt1 - rt7(4)
+rt8 TE-IS 40 rt3 - rt5(4)
+10.0.255.7/32 IP TE 40 rt1 - rt7(4)
+10.0.255.5/32 IP TE 40 rt3 - rt5(4)
+rt9 TE-IS 50 rt3 - rt8(4)
+rt11 TE-IS 50 rt3 - rt8(4)
+10.0.255.10/32 IP TE 50 rt1 - rt10(4)
+10.0.255.8/32 IP TE 50 rt3 - rt8(4)
+rt12 TE-IS 60 rt3 - rt9(4)
+ rt11(4)
+10.0.255.9/32 IP TE 60 rt3 - rt9(4)
+10.0.255.11/32 IP TE 60 rt3 - rt11(4)
+10.0.255.12/32 IP TE 70 rt3 - rt12(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+10.0.255.2/32 IP internal 0 rt2(4)
+rt1 TE-IS 10 rt1 - rt2(4)
+rt3 TE-IS 10 rt3 - rt2(4)
+rt5 TE-IS 10 rt5 - rt2(4)
+rt4 TE-IS 20 rt1 - rt1(4)
+rt6 TE-IS 20 rt3 - rt3(4)
+ rt5 - rt5(4)
+rt8 TE-IS 20 rt5 - rt5(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+rt7 TE-IS 30 rt1 - rt4(4)
+rt9 TE-IS 30 rt5 - rt8(4)
+rt11 TE-IS 30 rt5 - rt8(4)
+10.0.255.4/32 IP TE 30 rt1 - rt4(4)
+10.0.255.6/32 IP TE 30 rt3 - rt6(4)
+ rt5 -
+10.0.255.8/32 IP TE 30 rt5 - rt8(4)
+rt10 TE-IS 40 rt1 - rt7(4)
+rt12 TE-IS 40 rt5 - rt9(4)
+ rt11(4)
+10.0.255.7/32 IP TE 40 rt1 - rt7(4)
+10.0.255.9/32 IP TE 40 rt5 - rt9(4)
+10.0.255.11/32 IP TE 40 rt5 - rt11(4)
+10.0.255.10/32 IP TE 50 rt1 - rt10(4)
+10.0.255.12/32 IP TE 50 rt5 - rt12(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 20 - rt1 implicit-null
+ 10.0.255.2/32 0 - - -
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt1 16040
+ 10.0.255.5/32 20 - rt5 implicit-null
+ 10.0.255.6/32 30 - rt3 16060
+ - rt5 16060
+ 10.0.255.7/32 40 - rt1 16070
+ 10.0.255.8/32 30 - rt5 16080
+ 10.0.255.9/32 40 - rt5 16090
+ 10.0.255.10/32 50 - rt1 16100
+ 10.0.255.11/32 40 - rt5 16110
+ 10.0.255.12/32 50 - rt5 16120
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ---------------------------------------------------------
+ 10.0.255.5/32 40 - rt3 50600/16050
+ 10.0.255.8/32 50 - rt3 50600/16080
+ 10.0.255.9/32 60 - rt3 50600/16090
+ 10.0.255.11/32 60 - rt3 50600/16110
+ 10.0.255.12/32 70 - rt3 50600/16120
+
+test# test isis topology 11 root rt2 remote-lfa system-id rt4
+P-space (self):
+
+P-space (rt1):
+ rt1
+ rt3
+ rt5
+
+P-space (rt3):
+ rt1
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt1
+ rt3
+ rt4
+ rt5
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+10.0.255.2/32 IP internal 0 rt2(4)
+rt1 TE-IS 50 rt1 - rt2(4)
+rt3 TE-IS 50 rt3 - rt2(4)
+rt2
+rt5 TE-IS 60 rt3 - rt3(4)
+10.0.255.1/32 IP TE 60 rt1 - rt1(4)
+10.0.255.3/32 IP TE 60 rt3 - rt3(4)
+rt4 TE-IS 70 rt3 - rt5(4)
+rt6 TE-IS 70 rt3 - rt5(4)
+10.0.255.5/32 IP TE 70 rt3 - rt5(4)
+10.0.255.4/32 IP TE 80 rt3 - rt4(4)
+10.0.255.6/32 IP TE 80 rt3 - rt6(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+10.0.255.2/32 IP internal 0 rt2(4)
+rt4 TE-IS 10 rt4 - rt2(4)
+rt5 TE-IS 20 rt4 - rt4(4)
+rt6 TE-IS 20 rt4 - rt4(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+rt3 TE-IS 30 rt4 - rt5(4)
+10.0.255.5/32 IP TE 30 rt4 - rt5(4)
+10.0.255.6/32 IP TE 30 rt4 - rt6(4)
+rt2
+rt1 TE-IS 40 rt4 - rt2(2)
+10.0.255.3/32 IP TE 40 rt4 - rt3(4)
+10.0.255.1/32 IP TE 50 rt4 - rt1(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 50 - rt4 16010
+ 10.0.255.2/32 0 - - -
+ 10.0.255.3/32 40 - rt4 16030
+ 10.0.255.4/32 20 - rt4 implicit-null
+ 10.0.255.5/32 30 - rt4 16050
+ 10.0.255.6/32 30 - rt4 16060
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 50 - rt1 implicit-null
+ - rt3 16010
+ 10.0.255.3/32 50 - rt1 16030
+ - rt3 implicit-null
+ 10.0.255.4/32 80 - rt3 50500/16040
+ 10.0.255.5/32 60 - rt1 16050
+ - rt3 16050
+ 10.0.255.6/32 70 - rt3 16060
+
+P-space (self):
+
+P-space (rt1):
+ rt1
+ rt3
+ rt5
+
+P-space (rt3):
+ rt1
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt1
+ rt3
+ rt4
+ rt5
+ rt6
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+2001:db8::2/128 IP6 internal 0 rt2(4)
+rt1 TE-IS 50 rt1 - rt2(4)
+rt3 TE-IS 50 rt3 - rt2(4)
+rt2
+rt5 TE-IS 60 rt3 - rt3(4)
+2001:db8::1/128 IP6 internal 60 rt1 - rt1(4)
+2001:db8::3/128 IP6 internal 60 rt3 - rt3(4)
+rt4 TE-IS 70 rt3 - rt5(4)
+rt6 TE-IS 70 rt3 - rt5(4)
+2001:db8::5/128 IP6 internal 70 rt3 - rt5(4)
+2001:db8::4/128 IP6 internal 80 rt3 - rt4(4)
+2001:db8::6/128 IP6 internal 80 rt3 - rt6(4)
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+2001:db8::2/128 IP6 internal 0 rt2(4)
+rt4 TE-IS 10 rt4 - rt2(4)
+rt5 TE-IS 20 rt4 - rt4(4)
+rt6 TE-IS 20 rt4 - rt4(4)
+2001:db8::4/128 IP6 internal 20 rt4 - rt4(4)
+rt3 TE-IS 30 rt4 - rt5(4)
+2001:db8::5/128 IP6 internal 30 rt4 - rt5(4)
+2001:db8::6/128 IP6 internal 30 rt4 - rt6(4)
+rt2
+rt1 TE-IS 40 rt4 - rt2(2)
+2001:db8::3/128 IP6 internal 40 rt4 - rt3(4)
+2001:db8::1/128 IP6 internal 50 rt4 - rt1(4)
+
+Main:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 50 - rt4 16011
+ 2001:db8::2/128 0 - - -
+ 2001:db8::3/128 40 - rt4 16031
+ 2001:db8::4/128 20 - rt4 implicit-null
+ 2001:db8::5/128 30 - rt4 16051
+ 2001:db8::6/128 30 - rt4 16061
+
+Backup:
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 50 - rt1 implicit-null
+ - rt3 16011
+ 2001:db8::3/128 50 - rt1 16031
+ - rt3 implicit-null
+ 2001:db8::4/128 80 - rt3 50500/16041
+ 2001:db8::5/128 60 - rt1 16051
+ - rt3 16051
+ 2001:db8::6/128 70 - rt3 16061
+
+test# test isis topology 13 root rt1 remote-lfa system-id rt3 ipv4-only
+P-space (self):
+ rt2
+
+P-space (rt2):
+ rt2
+ rt4
+
+Q-space:
+ rt3
+ rt4
+ rt5
+ rt6
+ rt7
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+rt3 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+rt5 TE-IS 40 rt2 - rt3(4)
+rt6 TE-IS 40 rt2 - rt3(4)
+10.0.255.3/32 IP TE 40 rt2 - rt3(4)
+rt7 TE-IS 50 rt2 - rt5(4)
+ rt6(4)
+10.0.255.5/32 IP TE 50 rt2 - rt5(4)
+10.0.255.6/32 IP TE 50 rt2 - rt6(4)
+10.0.255.7/32 IP TE 60 rt2 - rt7(4)
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+ rt3 - rt3(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+rt6 TE-IS 20 rt3 - rt3(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+ rt6(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+ rt3 -
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.6/32 IP TE 30 rt3 - rt6(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+
+Main:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 0 - - -
+ 10.0.255.2/32 20 - rt2 implicit-null
+ 10.0.255.3/32 20 - rt3 implicit-null
+ 10.0.255.4/32 30 - rt2 16040
+ - rt3 16040
+ 10.0.255.5/32 30 - rt3 16050
+ 10.0.255.6/32 30 - rt3 16060
+ 10.0.255.7/32 40 - rt3 16070
+
+Backup:
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.3/32 40 - rt2 50400/16030
+ 10.0.255.5/32 50 - rt2 50400/16050
+ 10.0.255.6/32 50 - rt2 50400/16060
+ 10.0.255.7/32 60 - rt2 50400/16070
+
+test#
+test# test isis topology 1 root rt1 ti-lfa system-id rt2
+P-space (self):
+ rt3
+ rt5
+
+P-space (rt3):
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt2
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt3 - rt5(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt4 TE-IS 40 rt3 - rt6(4)
+10.0.255.6/32 IP TE 40 rt3 - rt6(4)
+rt2 TE-IS 50 rt3 - rt4(4)
+10.0.255.4/32 IP TE 50 rt3 - rt4(4)
+10.0.255.2/32 IP TE 60 rt3 - rt2(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.2/32 60 - rt3 16060/16020
+ 10.0.255.4/32 50 - rt3 16060/16040
+
+P-space (self):
+ rt3
+ rt5
+
+P-space (rt3):
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt2
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt6 TE-IS 30 rt3 - rt5(4)
+2001:db8::5/128 IP6 internal 30 rt3 - rt5(4)
+rt4 TE-IS 40 rt3 - rt6(4)
+2001:db8::6/128 IP6 internal 40 rt3 - rt6(4)
+rt2 TE-IS 50 rt3 - rt4(4)
+2001:db8::4/128 IP6 internal 50 rt3 - rt4(4)
+2001:db8::2/128 IP6 internal 60 rt3 - rt2(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 2001:db8::2/128 60 - rt3 16061/16021
+ 2001:db8::4/128 50 - rt3 16061/16041
+
+test# test isis topology 2 root rt1 ti-lfa system-id rt3
+P-space (self):
+ rt2
+ rt4
+ rt5
+ rt6
+
+P-space (rt2):
+ rt2
+
+P-space (rt4):
+ rt2
+ rt4
+ rt5
+ rt6
+
+P-space (rt5):
+ rt2
+ rt4
+ rt5
+ rt6
+
+Q-space:
+ rt3
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt5 TE-IS 10 rt5 - rt1(4)
+rt2 TE-IS 15 rt2 - rt1(4)
+rt1
+rt6 TE-IS 20 rt4 - rt4(4)
+ rt5 - rt5(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+10.0.255.2/32 IP TE 25 rt2 - rt2(4)
+10.0.255.6/32 IP TE 30 rt4 - rt6(4)
+ rt5 -
+rt3 TE-IS 50 rt5 - rt5(4)
+10.0.255.3/32 IP TE 60 rt5 - rt3(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.3/32 60 - rt5 16050/18
+
+P-space (self):
+ rt2
+ rt4
+ rt5
+ rt6
+
+P-space (rt2):
+ rt2
+
+P-space (rt4):
+ rt2
+ rt4
+ rt5
+ rt6
+
+P-space (rt5):
+ rt2
+ rt4
+ rt5
+ rt6
+
+Q-space:
+ rt3
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt4 TE-IS 10 rt4 - rt1(4)
+rt5 TE-IS 10 rt5 - rt1(4)
+rt2 TE-IS 15 rt2 - rt1(4)
+rt1
+rt6 TE-IS 20 rt4 - rt4(4)
+ rt5 - rt5(4)
+2001:db8::4/128 IP6 internal 20 rt4 - rt4(4)
+2001:db8::5/128 IP6 internal 20 rt5 - rt5(4)
+2001:db8::2/128 IP6 internal 25 rt2 - rt2(4)
+2001:db8::6/128 IP6 internal 30 rt4 - rt6(4)
+ rt5 -
+rt3 TE-IS 50 rt5 - rt5(4)
+2001:db8::3/128 IP6 internal 60 rt5 - rt3(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::3/128 60 - rt5 16051/19
+
+test# test isis topology 2 root rt1 ti-lfa system-id rt1 pseudonode-id 1
+P-space (self):
+ rt2
+ rt3
+
+P-space (rt2):
+ rt2
+ rt3
+
+P-space (rt3):
+ rt2
+ rt3
+
+Q-space:
+ rt4
+ rt5
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 15 rt2 - rt1(4)
+10.0.255.2/32 IP TE 25 rt2 - rt2(4)
+rt3 TE-IS 30 rt3 - rt1(4)
+10.0.255.3/32 IP TE 40 rt3 - rt3(4)
+rt4 TE-IS 55 rt2 - rt2(4)
+rt1
+rt6 TE-IS 65 rt2 - rt4(4)
+rt5 TE-IS 65 rt2 - rt1(2)
+10.0.255.4/32 IP TE 65 rt2 - rt4(4)
+10.0.255.6/32 IP TE 75 rt2 - rt6(4)
+10.0.255.5/32 IP TE 75 rt2 - rt5(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.4/32 65 - rt2 16020/18
+ 10.0.255.5/32 75 - rt2 16020/18/16050
+ 10.0.255.6/32 75 - rt2 16020/18/16060
+
+P-space (self):
+ rt2
+ rt3
+
+P-space (rt2):
+ rt2
+ rt3
+
+P-space (rt3):
+ rt2
+ rt3
+
+Q-space:
+ rt4
+ rt5
+ rt6
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 15 rt2 - rt1(4)
+2001:db8::2/128 IP6 internal 25 rt2 - rt2(4)
+rt3 TE-IS 30 rt3 - rt1(4)
+2001:db8::3/128 IP6 internal 40 rt3 - rt3(4)
+rt4 TE-IS 55 rt2 - rt2(4)
+rt1
+rt6 TE-IS 65 rt2 - rt4(4)
+rt5 TE-IS 65 rt2 - rt1(2)
+2001:db8::4/128 IP6 internal 65 rt2 - rt4(4)
+2001:db8::6/128 IP6 internal 75 rt2 - rt6(4)
+2001:db8::5/128 IP6 internal 75 rt2 - rt5(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------------
+ 2001:db8::4/128 65 - rt2 16021/19
+ 2001:db8::5/128 75 - rt2 16021/19/16051
+ 2001:db8::6/128 75 - rt2 16021/19/16061
+
+test# test isis topology 2 root rt5 ti-lfa system-id rt1 pseudonode-id 1
+P-space (self):
+ rt6
+
+P-space (rt3):
+ rt1
+ rt2
+ rt3
+ rt4
+
+P-space (rt6):
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt4 TE-IS 20 rt6 - rt6(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt1 pseudo_TE-IS 30 rt6 - rt4(4)
+rt1 TE-IS 30 rt6 - rt1(2)
+10.0.255.4/32 IP TE 30 rt6 - rt4(4)
+rt3 TE-IS 40 rt3 - rt5(4)
+10.0.255.1/32 IP TE 40 rt6 - rt1(4)
+rt2 TE-IS 45 rt6 - rt1(4)
+10.0.255.3/32 IP TE 50 rt3 - rt3(4)
+10.0.255.2/32 IP TE 55 rt6 - rt2(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.1/32 40 - rt6 16040/16010
+ 10.0.255.2/32 55 - rt6 16040/16020
+ 10.0.255.4/32 30 - rt6 16040
+
+P-space (self):
+ rt6
+
+P-space (rt3):
+ rt1
+ rt2
+ rt3
+ rt4
+
+P-space (rt6):
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+2001:db8::5/128 IP6 internal 0 rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt4 TE-IS 20 rt6 - rt6(4)
+2001:db8::6/128 IP6 internal 20 rt6 - rt6(4)
+rt1 pseudo_TE-IS 30 rt6 - rt4(4)
+rt1 TE-IS 30 rt6 - rt1(2)
+2001:db8::4/128 IP6 internal 30 rt6 - rt4(4)
+rt3 TE-IS 40 rt3 - rt5(4)
+2001:db8::1/128 IP6 internal 40 rt6 - rt1(4)
+rt2 TE-IS 45 rt6 - rt1(4)
+2001:db8::3/128 IP6 internal 50 rt3 - rt3(4)
+2001:db8::2/128 IP6 internal 55 rt6 - rt2(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 2001:db8::1/128 40 - rt6 16041/16011
+ 2001:db8::2/128 55 - rt6 16041/16021
+ 2001:db8::4/128 30 - rt6 16041
+
+test# test isis topology 3 root rt5 ti-lfa system-id rt4 ipv4-only
+P-space (self):
+ rt6
+
+P-space (rt3):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+P-space (rt6):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt4 TE-IS 20 rt6 - rt6(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt3 TE-IS 30 rt3 - rt5(4)
+rt2 TE-IS 30 rt6 - rt4(4)
+10.0.255.4/32 IP TE 30 rt6 - rt4(4)
+rt1 TE-IS 40 rt3 - rt3(4)
+ rt6 - rt2(4)
+10.0.255.3/32 IP TE 40 rt3 - rt3(4)
+10.0.255.2/32 IP TE 40 rt6 - rt2(4)
+10.0.255.1/32 IP TE 50 rt3 - rt1(4)
+ rt6 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.1/32 50 - rt3 16010
+ - rt6 16010
+ 10.0.255.2/32 40 - rt6 16020
+ 10.0.255.4/32 30 - rt6 16040
+
+test# test isis topology 3 root rt5 ti-lfa system-id rt3 ipv4-only
+P-space (self):
+ rt1
+ rt2
+ rt4
+ rt6
+
+P-space (rt4):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+P-space (rt6):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt5
+10.0.255.5/32 IP internal 0 rt5(4)
+rt4 TE-IS 10 rt4 - rt5(4)
+rt6 TE-IS 10 rt6 - rt5(4)
+rt2 TE-IS 20 rt4 - rt4(4)
+10.0.255.4/32 IP TE 20 rt4 - rt4(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt1 TE-IS 30 rt4 - rt2(4)
+rt3 TE-IS 30 rt4 - rt2(4)
+10.0.255.2/32 IP TE 30 rt4 - rt2(4)
+10.0.255.1/32 IP TE 40 rt4 - rt1(4)
+10.0.255.3/32 IP TE 40 rt4 - rt3(4)
+
+IS-IS L1 IPv4 routing table:
+
+test# test isis topology 4 root rt1 ti-lfa system-id rt2 ipv4-only
+P-space (self):
+ rt3
+ rt5
+ rt7
+
+P-space (rt3):
+ rt3
+ rt5
+ rt7
+
+Q-space:
+ rt2
+ rt4
+ rt6
+ rt8
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+rt6 TE-IS 70 rt3 - rt5(4)
+rt4 TE-IS 80 rt3 - rt6(4)
+rt8 TE-IS 80 rt3 - rt6(4)
+10.0.255.6/32 IP TE 80 rt3 - rt6(4)
+rt2 TE-IS 90 rt3 - rt4(4)
+10.0.255.4/32 IP TE 90 rt3 - rt4(4)
+10.0.255.8/32 IP TE 90 rt3 - rt8(4)
+10.0.255.2/32 IP TE 100 rt3 - rt2(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.2/32 100 - rt3 16050/17/16020
+ 10.0.255.4/32 90 - rt3 16050/17/16040
+ 10.0.255.6/32 80 - rt3 16050/17
+ 10.0.255.8/32 90 - rt3 16050/17/16080
+
+test# test isis topology 4 root rt4 ti-lfa system-id rt6 ipv4-only
+P-space (self):
+ rt1
+ rt2
+ rt3
+ rt5
+ rt7
+
+P-space (rt2):
+ rt1
+ rt2
+ rt3
+ rt5
+ rt7
+
+Q-space:
+ rt6
+ rt8
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+10.0.255.4/32 IP internal 0 rt4(4)
+rt2 TE-IS 10 rt2 - rt4(4)
+rt1 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+rt3 TE-IS 30 rt2 - rt1(4)
+10.0.255.1/32 IP TE 30 rt2 - rt1(4)
+rt5 TE-IS 40 rt2 - rt3(4)
+10.0.255.3/32 IP TE 40 rt2 - rt3(4)
+rt7 TE-IS 50 rt2 - rt5(4)
+10.0.255.5/32 IP TE 50 rt2 - rt5(4)
+10.0.255.7/32 IP TE 60 rt2 - rt7(4)
+rt6 TE-IS 90 rt2 - rt5(4)
+rt8 TE-IS 100 rt2 - rt6(4)
+10.0.255.6/32 IP TE 100 rt2 - rt6(4)
+10.0.255.8/32 IP TE 110 rt2 - rt8(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.6/32 100 - rt2 16050/17
+ 10.0.255.8/32 110 - rt2 16050/17/16080
+
+test# test isis topology 5 root rt1 ti-lfa system-id rt2 ipv4-only
+P-space (self):
+ rt3
+ rt5
+ rt7
+
+P-space (rt3):
+ rt3
+ rt5
+ rt7
+ rt8
+
+Q-space:
+ rt2
+ rt4
+ rt6
+ rt8
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+rt5 TE-IS 20 rt3 - rt3(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt3 - rt5(4)
+10.0.255.5/32 IP TE 30 rt3 - rt5(4)
+rt8 TE-IS 40 rt3 - rt7(4)
+10.0.255.7/32 IP TE 40 rt3 - rt7(4)
+rt6 TE-IS 50 rt3 - rt8(4)
+10.0.255.8/32 IP TE 50 rt3 - rt8(4)
+rt4 TE-IS 60 rt3 - rt6(4)
+10.0.255.6/32 IP TE 60 rt3 - rt6(4)
+rt2 TE-IS 70 rt3 - rt4(4)
+10.0.255.4/32 IP TE 70 rt3 - rt4(4)
+10.0.255.2/32 IP TE 80 rt3 - rt2(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.2/32 80 - rt3 16080/16020
+ 10.0.255.4/32 70 - rt3 16080/16040
+ 10.0.255.6/32 60 - rt3 16080/16060
+
+test# test isis topology 6 root rt4 ti-lfa system-id rt3 ipv4-only
+P-space (self):
+ rt2
+ rt5
+ rt6
+ rt7
+ rt8
+
+P-space (rt2):
+ rt1
+ rt2
+
+P-space (rt6):
+ rt5
+ rt6
+ rt7
+ rt8
+
+Q-space:
+ rt1
+ rt3
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt4
+10.0.255.4/32 IP internal 0 rt4(4)
+rt2 TE-IS 10 rt2 - rt4(4)
+rt6 TE-IS 10 rt6 - rt4(4)
+rt1 TE-IS 20 rt2 - rt2(4)
+rt5 TE-IS 20 rt6 - rt6(4)
+rt8 TE-IS 20 rt6 - rt6(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+rt3 TE-IS 30 rt2 - rt1(4)
+rt7 TE-IS 30 rt6 - rt5(4)
+ rt8(4)
+10.0.255.1/32 IP TE 30 rt2 - rt1(4)
+10.0.255.5/32 IP TE 30 rt6 - rt5(4)
+10.0.255.8/32 IP TE 30 rt6 - rt8(4)
+10.0.255.3/32 IP TE 40 rt2 - rt3(4)
+10.0.255.7/32 IP TE 40 rt6 - rt7(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.3/32 40 - rt2 16010/16030
+
+test# test isis topology 7 root rt11 ti-lfa system-id rt8 ipv4-only
+P-space (self):
+ rt10
+ rt12
+
+P-space (rt10):
+ rt1
+ rt4
+ rt7
+ rt10
+
+P-space (rt12):
+ rt9
+ rt12
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt11
+10.0.255.11/32 IP internal 0 rt11(4)
+rt10 TE-IS 10 rt10 - rt11(4)
+rt12 TE-IS 10 rt12 - rt11(4)
+rt9 TE-IS 20 rt12 - rt12(4)
+10.0.255.10/32 IP TE 20 rt10 - rt10(4)
+10.0.255.12/32 IP TE 20 rt12 - rt12(4)
+rt7 TE-IS 30 rt10 - rt10(4)
+rt8 TE-IS 30 rt12 - rt9(4)
+10.0.255.9/32 IP TE 30 rt12 - rt9(4)
+rt4 TE-IS 40 rt10 - rt7(4)
+rt5 TE-IS 40 rt12 - rt8(4)
+10.0.255.7/32 IP TE 40 rt10 - rt7(4)
+10.0.255.8/32 IP TE 40 rt12 - rt8(4)
+rt6 TE-IS 50 rt12 - rt9(4)
+ rt5(4)
+rt1 TE-IS 50 rt10 - rt4(4)
+rt2 TE-IS 50 rt12 - rt5(4)
+10.0.255.4/32 IP TE 50 rt10 - rt4(4)
+10.0.255.5/32 IP TE 50 rt12 - rt5(4)
+rt3 TE-IS 60 rt12 - rt6(4)
+ rt2(4)
+10.0.255.6/32 IP TE 60 rt12 - rt6(4)
+10.0.255.1/32 IP TE 60 rt10 - rt1(4)
+10.0.255.2/32 IP TE 60 rt12 - rt2(4)
+10.0.255.3/32 IP TE 70 rt12 - rt3(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.1/32 60 - rt10 16010
+ 10.0.255.2/32 60 - rt12 16090/16020
+ 10.0.255.3/32 70 - rt12 16090/16030
+ 10.0.255.4/32 50 - rt10 16040
+ 10.0.255.5/32 50 - rt12 16090/16050
+ 10.0.255.6/32 60 - rt12 16090/16060
+ 10.0.255.7/32 40 - rt10 16070
+ 10.0.255.8/32 40 - rt12 16090/16080
+
+test# test isis topology 7 root rt6 ti-lfa system-id rt5 ipv4-only
+P-space (self):
+ rt3
+
+P-space (rt3):
+ rt2
+ rt3
+
+P-space (rt9):
+ rt1
+ rt2
+ rt4
+ rt5
+ rt7
+ rt8
+ rt9
+ rt10
+ rt11
+ rt12
+
+Q-space:
+ rt1
+ rt2
+ rt4
+ rt5
+ rt7
+ rt8
+ rt9
+ rt10
+ rt11
+ rt12
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt6
+10.0.255.6/32 IP internal 0 rt6(4)
+rt3 TE-IS 10 rt3 - rt6(4)
+rt2 TE-IS 20 rt3 - rt3(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt9 TE-IS 30 rt9 - rt6(4)
+rt5 TE-IS 30 rt3 - rt2(4)
+10.0.255.2/32 IP TE 30 rt3 - rt2(4)
+rt8 TE-IS 40 rt9 - rt9(4)
+ rt3 - rt5(4)
+rt12 TE-IS 40 rt9 - rt9(4)
+rt4 TE-IS 40 rt3 - rt5(4)
+10.0.255.9/32 IP TE 40 rt9 - rt9(4)
+10.0.255.5/32 IP TE 40 rt3 - rt5(4)
+rt7 TE-IS 50 rt9 - rt8(4)
+ rt3 - rt4(4)
+rt11 TE-IS 50 rt9 - rt8(4)
+ rt3 - rt12(4)
+rt1 TE-IS 50 rt3 - rt4(4)
+10.0.255.8/32 IP TE 50 rt9 - rt8(4)
+ rt3 -
+10.0.255.12/32 IP TE 50 rt9 - rt12(4)
+10.0.255.4/32 IP TE 50 rt3 - rt4(4)
+rt10 TE-IS 60 rt9 - rt11(4)
+ rt3 -
+10.0.255.7/32 IP TE 60 rt9 - rt7(4)
+ rt3 -
+10.0.255.11/32 IP TE 60 rt9 - rt11(4)
+ rt3 -
+10.0.255.1/32 IP TE 60 rt3 - rt1(4)
+10.0.255.10/32 IP TE 70 rt9 - rt10(4)
+ rt3 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ---------------------------------------------------------
+ 10.0.255.1/32 60 - rt3 16020/16010
+ 10.0.255.4/32 50 - rt3 16020/16040
+ 10.0.255.5/32 40 - rt3 16020/16050
+ 10.0.255.7/32 60 - rt9 16070
+ - rt3 16070
+ 10.0.255.8/32 50 - rt9 16080
+ - rt3 16080
+ 10.0.255.10/32 70 - rt9 16100
+ - rt3 16100
+ 10.0.255.11/32 60 - rt9 16110
+ - rt3 16110
+
+test# test isis topology 8 root rt2 ti-lfa system-id rt1 ipv4-only
+P-space (self):
+ rt3
+ rt5
+ rt6
+ rt8
+ rt9
+ rt11
+ rt12
+
+P-space (rt3):
+ rt3
+ rt6
+
+P-space (rt5):
+ rt5
+ rt6
+ rt8
+ rt9
+ rt11
+ rt12
+
+Q-space:
+ rt1
+ rt4
+ rt7
+ rt10
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+10.0.255.2/32 IP internal 0 rt2(4)
+rt3 TE-IS 10 rt3 - rt2(4)
+rt5 TE-IS 10 rt5 - rt2(4)
+rt6 TE-IS 20 rt3 - rt3(4)
+ rt5 - rt5(4)
+rt8 TE-IS 20 rt5 - rt5(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+rt9 TE-IS 30 rt5 - rt8(4)
+rt11 TE-IS 30 rt5 - rt8(4)
+10.0.255.6/32 IP TE 30 rt3 - rt6(4)
+ rt5 -
+10.0.255.8/32 IP TE 30 rt5 - rt8(4)
+rt12 TE-IS 40 rt5 - rt9(4)
+ rt11(4)
+10.0.255.9/32 IP TE 40 rt5 - rt9(4)
+10.0.255.11/32 IP TE 40 rt5 - rt11(4)
+10.0.255.12/32 IP TE 50 rt5 - rt12(4)
+rt10 TE-IS 60 rt5 - rt11(4)
+rt7 TE-IS 70 rt5 - rt10(4)
+10.0.255.10/32 IP TE 70 rt5 - rt10(4)
+rt4 TE-IS 80 rt5 - rt7(4)
+10.0.255.7/32 IP TE 80 rt5 - rt7(4)
+rt1 TE-IS 90 rt5 - rt4(4)
+10.0.255.4/32 IP TE 90 rt5 - rt4(4)
+10.0.255.1/32 IP TE 100 rt5 - rt1(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 10.0.255.1/32 100 - rt5 16110/17/16010
+ 10.0.255.4/32 90 - rt5 16110/17/16040
+ 10.0.255.7/32 80 - rt5 16110/17/16070
+ 10.0.255.10/32 70 - rt5 16110/17
+
+test# test isis topology 8 root rt2 ti-lfa system-id rt5 ipv4-only
+P-space (self):
+ rt1
+ rt3
+ rt4
+ rt7
+ rt10
+
+P-space (rt1):
+ rt1
+ rt4
+ rt7
+ rt10
+
+P-space (rt3):
+ rt3
+ rt6
+
+Q-space:
+ rt5
+ rt6
+ rt8
+ rt9
+ rt11
+ rt12
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+10.0.255.2/32 IP internal 0 rt2(4)
+rt1 TE-IS 10 rt1 - rt2(4)
+rt3 TE-IS 10 rt3 - rt2(4)
+rt4 TE-IS 20 rt1 - rt1(4)
+rt6 TE-IS 20 rt3 - rt3(4)
+10.0.255.1/32 IP TE 20 rt1 - rt1(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt7 TE-IS 30 rt1 - rt4(4)
+rt5 TE-IS 30 rt3 - rt6(4)
+10.0.255.4/32 IP TE 30 rt1 - rt4(4)
+10.0.255.6/32 IP TE 30 rt3 - rt6(4)
+rt10 TE-IS 40 rt1 - rt7(4)
+rt8 TE-IS 40 rt3 - rt5(4)
+10.0.255.7/32 IP TE 40 rt1 - rt7(4)
+10.0.255.5/32 IP TE 40 rt3 - rt5(4)
+rt9 TE-IS 50 rt3 - rt8(4)
+rt11 TE-IS 50 rt3 - rt8(4)
+10.0.255.10/32 IP TE 50 rt1 - rt10(4)
+10.0.255.8/32 IP TE 50 rt3 - rt8(4)
+rt12 TE-IS 60 rt3 - rt9(4)
+ rt11(4)
+10.0.255.9/32 IP TE 60 rt3 - rt9(4)
+10.0.255.11/32 IP TE 60 rt3 - rt11(4)
+10.0.255.12/32 IP TE 70 rt3 - rt12(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ---------------------------------------------------------
+ 10.0.255.5/32 40 - rt3 16060/16050
+ 10.0.255.8/32 50 - rt3 16060/16080
+ 10.0.255.9/32 60 - rt3 16060/16090
+ 10.0.255.11/32 60 - rt3 16060/16110
+ 10.0.255.12/32 70 - rt3 16060/16120
+
+test# test isis topology 9 root rt1 ti-lfa system-id rt3
+P-space (self):
+ rt2
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+P-space (rt2):
+ rt2
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+Q-space:
+ rt3
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+rt5 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+rt9 TE-IS 40 rt2 - rt5(4)
+10.0.255.5/32 IP TE 40 rt2 - rt5(4)
+rt6 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt7 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt8 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+10.0.255.9/32 IP TE 50 rt2 - rt9(4)
+10.0.255.6/32 IP TE 60 rt2 - rt6(4)
+10.0.255.7/32 IP TE 60 rt2 - rt7(4)
+10.0.255.8/32 IP TE 60 rt2 - rt8(4)
+rt3 TE-IS 120 rt2 - rt4(4)
+10.0.255.3/32 IP TE 130 rt2 - rt3(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.3/32 130 - rt2 16040/18
+
+P-space (self):
+ rt2
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+P-space (rt2):
+ rt2
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+Q-space:
+ rt3
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+rt5 TE-IS 30 rt2 - rt4(4)
+2001:db8::4/128 IP6 internal 30 rt2 - rt4(4)
+rt9 TE-IS 40 rt2 - rt5(4)
+2001:db8::5/128 IP6 internal 40 rt2 - rt5(4)
+rt6 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt7 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+rt8 TE-IS 50 rt2 - rt4(4)
+ rt9(4)
+2001:db8::9/128 IP6 internal 50 rt2 - rt9(4)
+2001:db8::6/128 IP6 internal 60 rt2 - rt6(4)
+2001:db8::7/128 IP6 internal 60 rt2 - rt7(4)
+2001:db8::8/128 IP6 internal 60 rt2 - rt8(4)
+rt3 TE-IS 120 rt2 - rt4(4)
+2001:db8::3/128 IP6 internal 130 rt2 - rt3(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::3/128 130 - rt2 16041/19
+
+test# test isis topology 9 root rt1 ti-lfa system-id rt2
+P-space (self):
+ rt3
+
+P-space (rt3):
+ rt3
+
+Q-space:
+ rt2
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+10.0.255.3/32 IP TE 20 rt3 - rt3(4)
+rt4 TE-IS 110 rt3 - rt3(4)
+rt2 TE-IS 120 rt3 - rt4(4)
+rt5 TE-IS 120 rt3 - rt4(4)
+10.0.255.4/32 IP TE 120 rt3 - rt4(4)
+rt9 TE-IS 130 rt3 - rt5(4)
+10.0.255.2/32 IP TE 130 rt3 - rt2(4)
+10.0.255.5/32 IP TE 130 rt3 - rt5(4)
+rt6 TE-IS 140 rt3 - rt4(4)
+ rt9(4)
+rt7 TE-IS 140 rt3 - rt4(4)
+ rt9(4)
+rt8 TE-IS 140 rt3 - rt4(4)
+ rt9(4)
+10.0.255.9/32 IP TE 140 rt3 - rt9(4)
+10.0.255.6/32 IP TE 150 rt3 - rt6(4)
+10.0.255.7/32 IP TE 150 rt3 - rt7(4)
+10.0.255.8/32 IP TE 150 rt3 - rt8(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.2/32 130 - rt3 16030/18/16020
+ 10.0.255.4/32 120 - rt3 16030/18
+ 10.0.255.5/32 130 - rt3 16030/18/16050
+ 10.0.255.6/32 150 - rt3 16030/18/16060
+ 10.0.255.7/32 150 - rt3 16030/18/16070
+ 10.0.255.8/32 150 - rt3 16030/18/16080
+ 10.0.255.9/32 140 - rt3 16030/18/16090
+
+P-space (self):
+ rt3
+
+P-space (rt3):
+ rt3
+
+Q-space:
+ rt2
+ rt4
+ rt5
+ rt6
+ rt7
+ rt8
+ rt9
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt3 TE-IS 10 rt3 - rt1(4)
+2001:db8::3/128 IP6 internal 20 rt3 - rt3(4)
+rt4 TE-IS 110 rt3 - rt3(4)
+rt2 TE-IS 120 rt3 - rt4(4)
+rt5 TE-IS 120 rt3 - rt4(4)
+2001:db8::4/128 IP6 internal 120 rt3 - rt4(4)
+rt9 TE-IS 130 rt3 - rt5(4)
+2001:db8::2/128 IP6 internal 130 rt3 - rt2(4)
+2001:db8::5/128 IP6 internal 130 rt3 - rt5(4)
+rt6 TE-IS 140 rt3 - rt4(4)
+ rt9(4)
+rt7 TE-IS 140 rt3 - rt4(4)
+ rt9(4)
+rt8 TE-IS 140 rt3 - rt4(4)
+ rt9(4)
+2001:db8::9/128 IP6 internal 140 rt3 - rt9(4)
+2001:db8::6/128 IP6 internal 150 rt3 - rt6(4)
+2001:db8::7/128 IP6 internal 150 rt3 - rt7(4)
+2001:db8::8/128 IP6 internal 150 rt3 - rt8(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------------
+ 2001:db8::2/128 130 - rt3 16031/19/16021
+ 2001:db8::4/128 120 - rt3 16031/19
+ 2001:db8::5/128 130 - rt3 16031/19/16051
+ 2001:db8::6/128 150 - rt3 16031/19/16061
+ 2001:db8::7/128 150 - rt3 16031/19/16071
+ 2001:db8::8/128 150 - rt3 16031/19/16081
+ 2001:db8::9/128 140 - rt3 16031/19/16091
+
+test# test isis topology 9 root rt9 ti-lfa system-id rt5
+P-space (self):
+ rt6
+ rt7
+ rt8
+
+P-space (rt6):
+ rt6
+
+P-space (rt7):
+ rt7
+
+P-space (rt8):
+ rt8
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt9
+10.0.255.9/32 IP internal 0 rt9(4)
+rt6 TE-IS 10 rt6 - rt9(4)
+rt7 TE-IS 10 rt7 - rt9(4)
+rt8 TE-IS 10 rt8 - rt9(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+10.0.255.7/32 IP TE 20 rt7 - rt7(4)
+10.0.255.8/32 IP TE 20 rt8 - rt8(4)
+rt4 TE-IS 40 rt6 - rt6(4)
+ rt7 - rt7(4)
+ rt8 - rt8(4)
+rt2 TE-IS 50 rt6 - rt4(4)
+ rt7 -
+ rt8 -
+rt5 TE-IS 50 rt6 - rt4(4)
+ rt7 -
+ rt8 -
+10.0.255.4/32 IP TE 50 rt6 - rt4(4)
+ rt7 -
+ rt8 -
+rt1 TE-IS 60 rt6 - rt2(4)
+ rt7 -
+ rt8 -
+10.0.255.2/32 IP TE 60 rt6 - rt2(4)
+ rt7 -
+ rt8 -
+10.0.255.5/32 IP TE 60 rt6 - rt5(4)
+ rt7 -
+ rt8 -
+rt3 TE-IS 70 rt6 - rt1(4)
+ rt7 -
+ rt8 -
+10.0.255.1/32 IP TE 70 rt6 - rt1(4)
+ rt7 -
+ rt8 -
+10.0.255.3/32 IP TE 80 rt6 - rt3(4)
+ rt7 -
+ rt8 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.1/32 70 - rt6 16060/16/16010
+ - rt7 16070/16/16010
+ - rt8 16080/16/16010
+ 10.0.255.2/32 60 - rt6 16060/16/16020
+ - rt7 16070/16/16020
+ - rt8 16080/16/16020
+ 10.0.255.3/32 80 - rt6 16060/16/16030
+ - rt7 16070/16/16030
+ - rt8 16080/16/16030
+ 10.0.255.4/32 50 - rt6 16060/16
+ - rt7 16070/16
+ - rt8 16080/16
+ 10.0.255.5/32 60 - rt6 16060/16/16050
+ - rt7 16070/16/16050
+ - rt8 16080/16/16050
+
+P-space (self):
+ rt6
+ rt7
+ rt8
+
+P-space (rt6):
+ rt6
+
+P-space (rt7):
+ rt7
+
+P-space (rt8):
+ rt8
+
+Q-space:
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt9
+2001:db8::9/128 IP6 internal 0 rt9(4)
+rt6 TE-IS 10 rt6 - rt9(4)
+rt7 TE-IS 10 rt7 - rt9(4)
+rt8 TE-IS 10 rt8 - rt9(4)
+2001:db8::6/128 IP6 internal 20 rt6 - rt6(4)
+2001:db8::7/128 IP6 internal 20 rt7 - rt7(4)
+2001:db8::8/128 IP6 internal 20 rt8 - rt8(4)
+rt4 TE-IS 40 rt6 - rt6(4)
+ rt7 - rt7(4)
+ rt8 - rt8(4)
+rt2 TE-IS 50 rt6 - rt4(4)
+ rt7 -
+ rt8 -
+rt5 TE-IS 50 rt6 - rt4(4)
+ rt7 -
+ rt8 -
+2001:db8::4/128 IP6 internal 50 rt6 - rt4(4)
+ rt7 -
+ rt8 -
+rt1 TE-IS 60 rt6 - rt2(4)
+ rt7 -
+ rt8 -
+2001:db8::2/128 IP6 internal 60 rt6 - rt2(4)
+ rt7 -
+ rt8 -
+2001:db8::5/128 IP6 internal 60 rt6 - rt5(4)
+ rt7 -
+ rt8 -
+rt3 TE-IS 70 rt6 - rt1(4)
+ rt7 -
+ rt8 -
+2001:db8::1/128 IP6 internal 70 rt6 - rt1(4)
+ rt7 -
+ rt8 -
+2001:db8::3/128 IP6 internal 80 rt6 - rt3(4)
+ rt7 -
+ rt8 -
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------------
+ 2001:db8::1/128 70 - rt6 16061/17/16011
+ - rt7 16071/17/16011
+ - rt8 16081/17/16011
+ 2001:db8::2/128 60 - rt6 16061/17/16021
+ - rt7 16071/17/16021
+ - rt8 16081/17/16021
+ 2001:db8::3/128 80 - rt6 16061/17/16031
+ - rt7 16071/17/16031
+ - rt8 16081/17/16031
+ 2001:db8::4/128 50 - rt6 16061/17
+ - rt7 16071/17
+ - rt8 16081/17
+ 2001:db8::5/128 60 - rt6 16061/17/16051
+ - rt7 16071/17/16051
+ - rt8 16081/17/16051
+
+test# test isis topology 9 root rt9 ti-lfa system-id rt8
+P-space (self):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+ rt6
+ rt7
+
+P-space (rt5):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+
+P-space (rt6):
+ rt6
+
+P-space (rt7):
+ rt7
+
+Q-space:
+ rt8
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt9
+10.0.255.9/32 IP internal 0 rt9(4)
+rt5 TE-IS 10 rt5 - rt9(4)
+rt6 TE-IS 10 rt6 - rt9(4)
+rt7 TE-IS 10 rt7 - rt9(4)
+rt4 TE-IS 20 rt5 - rt5(4)
+10.0.255.5/32 IP TE 20 rt5 - rt5(4)
+10.0.255.6/32 IP TE 20 rt6 - rt6(4)
+10.0.255.7/32 IP TE 20 rt7 - rt7(4)
+rt2 TE-IS 30 rt5 - rt4(4)
+10.0.255.4/32 IP TE 30 rt5 - rt4(4)
+rt1 TE-IS 40 rt5 - rt2(4)
+10.0.255.2/32 IP TE 40 rt5 - rt2(4)
+rt8 TE-IS 50 rt5 - rt4(4)
+rt3 TE-IS 50 rt5 - rt1(4)
+10.0.255.1/32 IP TE 50 rt5 - rt1(4)
+10.0.255.8/32 IP TE 60 rt5 - rt8(4)
+10.0.255.3/32 IP TE 60 rt5 - rt3(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------
+ 10.0.255.8/32 60 - rt5 16040/26
+
+P-space (self):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+ rt6
+ rt7
+
+P-space (rt5):
+ rt1
+ rt2
+ rt3
+ rt4
+ rt5
+
+P-space (rt6):
+ rt6
+
+P-space (rt7):
+ rt7
+
+Q-space:
+ rt8
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt9
+2001:db8::9/128 IP6 internal 0 rt9(4)
+rt5 TE-IS 10 rt5 - rt9(4)
+rt6 TE-IS 10 rt6 - rt9(4)
+rt7 TE-IS 10 rt7 - rt9(4)
+rt4 TE-IS 20 rt5 - rt5(4)
+2001:db8::5/128 IP6 internal 20 rt5 - rt5(4)
+2001:db8::6/128 IP6 internal 20 rt6 - rt6(4)
+2001:db8::7/128 IP6 internal 20 rt7 - rt7(4)
+rt2 TE-IS 30 rt5 - rt4(4)
+2001:db8::4/128 IP6 internal 30 rt5 - rt4(4)
+rt1 TE-IS 40 rt5 - rt2(4)
+2001:db8::2/128 IP6 internal 40 rt5 - rt2(4)
+rt8 TE-IS 50 rt5 - rt4(4)
+rt3 TE-IS 50 rt5 - rt1(4)
+2001:db8::1/128 IP6 internal 50 rt5 - rt1(4)
+2001:db8::8/128 IP6 internal 60 rt5 - rt8(4)
+2001:db8::3/128 IP6 internal 60 rt5 - rt3(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------
+ 2001:db8::8/128 60 - rt5 16041/27
+
+test# test isis topology 10 root rt1 ti-lfa system-id rt2
+P-space (self):
+ rt3
+ rt4
+ rt6
+ rt7
+
+P-space (rt3):
+ rt3
+ rt6
+
+P-space (rt4):
+ rt4
+ rt7
+
+Q-space:
+ rt2
+ rt5
+ rt8
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt3 TE-IS 20 rt3 - rt1(4)
+rt4 TE-IS 20 rt4 - rt1(4)
+rt6 TE-IS 30 rt3 - rt3(4)
+rt7 TE-IS 30 rt4 - rt4(4)
+10.0.255.3/32 IP TE 30 rt3 - rt3(4)
+10.0.255.4/32 IP TE 30 rt4 - rt4(4)
+10.0.255.6/32 IP TE 40 rt3 - rt6(4)
+10.0.255.7/32 IP TE 40 rt4 - rt7(4)
+rt8 TE-IS 80 rt3 - rt6(4)
+ rt4 - rt7(4)
+rt5 TE-IS 90 rt3 - rt8(4)
+ rt4 -
+10.0.255.8/32 IP TE 90 rt3 - rt8(4)
+ rt4 -
+rt2 TE-IS 100 rt3 - rt5(4)
+ rt4 -
+10.0.255.5/32 IP TE 100 rt3 - rt5(4)
+ rt4 -
+10.0.255.2/32 IP TE 110 rt3 - rt2(4)
+ rt4 -
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.2/32 110 - rt3 20060/18/16020
+ - rt4 16070/18/16020
+ 10.0.255.5/32 100 - rt3 20060/18/16050
+ - rt4 16070/18/16050
+ 10.0.255.8/32 90 - rt3 20060/18
+ - rt4 16070/18
+
+P-space (self):
+ rt3
+ rt4
+ rt6
+ rt7
+
+P-space (rt3):
+ rt3
+ rt6
+
+P-space (rt4):
+ rt4
+ rt7
+
+Q-space:
+ rt2
+ rt5
+ rt8
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt3 TE-IS 20 rt3 - rt1(4)
+rt4 TE-IS 20 rt4 - rt1(4)
+rt6 TE-IS 30 rt3 - rt3(4)
+rt7 TE-IS 30 rt4 - rt4(4)
+2001:db8::3/128 IP6 internal 30 rt3 - rt3(4)
+2001:db8::4/128 IP6 internal 30 rt4 - rt4(4)
+2001:db8::6/128 IP6 internal 40 rt3 - rt6(4)
+2001:db8::7/128 IP6 internal 40 rt4 - rt7(4)
+rt8 TE-IS 80 rt3 - rt6(4)
+ rt4 - rt7(4)
+rt5 TE-IS 90 rt3 - rt8(4)
+ rt4 -
+2001:db8::8/128 IP6 internal 90 rt3 - rt8(4)
+ rt4 -
+rt2 TE-IS 100 rt3 - rt5(4)
+ rt4 -
+2001:db8::5/128 IP6 internal 100 rt3 - rt5(4)
+ rt4 -
+2001:db8::2/128 IP6 internal 110 rt3 - rt2(4)
+ rt4 -
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------------
+ 2001:db8::2/128 110 - rt3 20061/19/16021
+ - rt4 16071/19/16021
+ 2001:db8::5/128 100 - rt3 20061/19/16051
+ - rt4 16071/19/16051
+ 2001:db8::8/128 90 - rt3 20061/19
+ - rt4 16071/19
+
+test# test isis topology 10 root rt1 ti-lfa system-id rt4
+P-space (self):
+ rt2
+ rt3
+ rt5
+ rt6
+ rt8
+
+P-space (rt2):
+ rt2
+ rt5
+ rt8
+
+P-space (rt3):
+ rt3
+ rt6
+
+Q-space:
+ rt4
+ rt7
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 20 rt3 - rt1(4)
+rt5 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+rt6 TE-IS 30 rt3 - rt3(4)
+rt8 TE-IS 30 rt2 - rt5(4)
+10.0.255.3/32 IP TE 30 rt3 - rt3(4)
+10.0.255.5/32 IP TE 30 rt2 - rt5(4)
+10.0.255.6/32 IP TE 40 rt3 - rt6(4)
+10.0.255.8/32 IP TE 40 rt2 - rt8(4)
+rt7 TE-IS 80 rt2 - rt8(4)
+rt4 TE-IS 90 rt2 - rt7(4)
+10.0.255.7/32 IP TE 90 rt2 - rt7(4)
+10.0.255.4/32 IP TE 100 rt2 - rt4(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.4/32 100 - rt2 16080/20/16040
+ 10.0.255.7/32 90 - rt2 16080/20
+
+P-space (self):
+ rt2
+ rt3
+ rt5
+ rt6
+ rt8
+
+P-space (rt2):
+ rt2
+ rt5
+ rt8
+
+P-space (rt3):
+ rt3
+ rt6
+
+Q-space:
+ rt4
+ rt7
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+2001:db8::1/128 IP6 internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt3 TE-IS 20 rt3 - rt1(4)
+rt5 TE-IS 20 rt2 - rt2(4)
+2001:db8::2/128 IP6 internal 20 rt2 - rt2(4)
+rt6 TE-IS 30 rt3 - rt3(4)
+rt8 TE-IS 30 rt2 - rt5(4)
+2001:db8::3/128 IP6 internal 30 rt3 - rt3(4)
+2001:db8::5/128 IP6 internal 30 rt2 - rt5(4)
+2001:db8::6/128 IP6 internal 40 rt3 - rt6(4)
+2001:db8::8/128 IP6 internal 40 rt2 - rt8(4)
+rt7 TE-IS 80 rt2 - rt8(4)
+rt4 TE-IS 90 rt2 - rt7(4)
+2001:db8::7/128 IP6 internal 90 rt2 - rt7(4)
+2001:db8::4/128 IP6 internal 100 rt2 - rt4(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -------------------------------------------------------------
+ 2001:db8::4/128 100 - rt2 16081/21/16041
+ 2001:db8::7/128 90 - rt2 16081/21
+
+test# test isis topology 11 root rt2 ti-lfa system-id rt4
+P-space (self):
+
+P-space (rt1):
+ rt1
+ rt3
+ rt5
+
+P-space (rt3):
+ rt1
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt1
+ rt3
+ rt4
+ rt5
+ rt6
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+10.0.255.2/32 IP internal 0 rt2(4)
+rt1 TE-IS 50 rt1 - rt2(4)
+rt3 TE-IS 50 rt3 - rt2(4)
+rt2
+rt5 TE-IS 60 rt3 - rt3(4)
+10.0.255.1/32 IP TE 60 rt1 - rt1(4)
+10.0.255.3/32 IP TE 60 rt3 - rt3(4)
+rt4 TE-IS 70 rt3 - rt5(4)
+rt6 TE-IS 70 rt3 - rt5(4)
+10.0.255.5/32 IP TE 70 rt3 - rt5(4)
+10.0.255.4/32 IP TE 80 rt3 - rt4(4)
+10.0.255.6/32 IP TE 80 rt3 - rt6(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ----------------------------------------------------------
+ 10.0.255.1/32 60 - rt1 implicit-null
+ 10.0.255.3/32 60 - rt3 implicit-null
+ 10.0.255.4/32 80 - rt3 16050/16040
+ 10.0.255.5/32 70 - rt3 16050
+ 10.0.255.6/32 80 - rt3 16060
+
+P-space (self):
+
+P-space (rt1):
+ rt1
+ rt3
+ rt5
+
+P-space (rt3):
+ rt1
+ rt3
+ rt5
+ rt6
+
+Q-space:
+ rt1
+ rt3
+ rt4
+ rt5
+ rt6
+
+IS-IS paths to level-1 routers that speak IPv6
+Vertex Type Metric Next-Hop Interface Parent
+rt2
+2001:db8::2/128 IP6 internal 0 rt2(4)
+rt1 TE-IS 50 rt1 - rt2(4)
+rt3 TE-IS 50 rt3 - rt2(4)
+rt2
+rt5 TE-IS 60 rt3 - rt3(4)
+2001:db8::1/128 IP6 internal 60 rt1 - rt1(4)
+2001:db8::3/128 IP6 internal 60 rt3 - rt3(4)
+rt4 TE-IS 70 rt3 - rt5(4)
+rt6 TE-IS 70 rt3 - rt5(4)
+2001:db8::5/128 IP6 internal 70 rt3 - rt5(4)
+2001:db8::4/128 IP6 internal 80 rt3 - rt4(4)
+2001:db8::6/128 IP6 internal 80 rt3 - rt6(4)
+
+IS-IS L1 IPv6 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ ------------------------------------------------------------
+ 2001:db8::1/128 60 - rt1 implicit-null
+ 2001:db8::3/128 60 - rt3 implicit-null
+ 2001:db8::4/128 80 - rt3 16051/16041
+ 2001:db8::5/128 70 - rt3 16051
+ 2001:db8::6/128 80 - rt3 16061
+
+test# test isis topology 12 root rt1 ti-lfa system-id rt3 ipv4-only
+P-space (self):
+ rt2
+ rt4
+ rt6
+ rt8
+ rt10
+
+P-space (rt2):
+ rt2
+ rt4
+ rt6
+ rt8
+ rt10
+
+Q-space:
+ rt3
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+rt6 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+rt8 TE-IS 40 rt2 - rt6(4)
+10.0.255.6/32 IP TE 40 rt2 - rt6(4)
+rt10 TE-IS 50 rt2 - rt8(4)
+10.0.255.8/32 IP TE 50 rt2 - rt8(4)
+10.0.255.10/32 IP TE 60 rt2 - rt10(4)
+rt7 TE-IS 140 rt2 - rt8(4)
+rt9 TE-IS 150 rt2 - rt7(4)
+10.0.255.7/32 IP TE 150 rt2 - rt7(4)
+10.0.255.9/32 IP TE 160 rt2 - rt9(4)
+rt5 TE-IS 340 rt2 - rt7(4)
+10.0.255.5/32 IP TE 350 rt2 - rt5(4)
+rt3 TE-IS 740 rt2 - rt5(4)
+10.0.255.3/32 IP TE 750 rt2 - rt3(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ -----------------------------------------------------------
+ 10.0.255.3/32 750 - rt2 16080/17/16/16
+ 10.0.255.5/32 350 - rt2 16080/17/16
+ 10.0.255.7/32 150 - rt2 16080/17
+ 10.0.255.9/32 160 - rt2 16080/17/18
+
+test# test isis topology 13 root rt1 ti-lfa system-id rt3 ipv4-only
+P-space (self):
+ rt2
+
+P-space (rt2):
+ rt2
+ rt4
+
+Q-space:
+ rt3
+ rt4
+ rt5
+ rt6
+ rt7
+
+IS-IS paths to level-1 routers that speak IP
+Vertex Type Metric Next-Hop Interface Parent
+rt1
+10.0.255.1/32 IP internal 0 rt1(4)
+rt2 TE-IS 10 rt2 - rt1(4)
+rt4 TE-IS 20 rt2 - rt2(4)
+10.0.255.2/32 IP TE 20 rt2 - rt2(4)
+rt3 TE-IS 30 rt2 - rt4(4)
+10.0.255.4/32 IP TE 30 rt2 - rt4(4)
+rt5 TE-IS 40 rt2 - rt3(4)
+rt6 TE-IS 40 rt2 - rt3(4)
+10.0.255.3/32 IP TE 40 rt2 - rt3(4)
+rt7 TE-IS 50 rt2 - rt5(4)
+ rt6(4)
+10.0.255.5/32 IP TE 50 rt2 - rt5(4)
+10.0.255.6/32 IP TE 50 rt2 - rt6(4)
+10.0.255.7/32 IP TE 60 rt2 - rt7(4)
+
+IS-IS L1 IPv4 routing table:
+
+ Prefix Metric Interface Nexthop Label(s)
+ --------------------------------------------------------
+ 10.0.255.3/32 40 - rt2 16040/16030
+ 10.0.255.5/32 50 - rt2 16040/16050
+ 10.0.255.6/32 50 - rt2 16040/16060
+ 10.0.255.7/32 60 - rt2 16040/16070
+
+test#
+end.
diff --git a/tests/isisd/test_isis_vertex_queue.c b/tests/isisd/test_isis_vertex_queue.c
new file mode 100644
index 0000000..d2d9f62
--- /dev/null
+++ b/tests/isisd/test_isis_vertex_queue.c
@@ -0,0 +1,106 @@
+#include <zebra.h>
+
+#include "isisd/isis_spf.c"
+
+#include "test_common.h"
+
+static struct isis_vertex **vertices;
+static size_t vertex_count;
+
+static void setup_test_vertices(void)
+{
+ struct isis_spftree t = {
+ };
+ struct prefix_pair p = {
+ };
+ uint8_t node_id[7];
+
+ vertices = XMALLOC(MTYPE_TMP, sizeof(*vertices) * 16);
+
+ p.dest.family = AF_INET;
+ p.dest.prefixlen = 24;
+ inet_pton(AF_INET, "192.168.1.0", &p.dest.u.prefix4);
+ vertices[vertex_count] = isis_vertex_new(&t, &p, VTYPE_IPREACH_TE);
+ vertices[vertex_count]->d_N = 20;
+ vertex_count++;
+
+ p.dest.family = AF_INET;
+ p.dest.prefixlen = 24;
+ inet_pton(AF_INET, "192.168.2.0", &p.dest.u.prefix4);
+ vertices[vertex_count] = isis_vertex_new(&t, &p, VTYPE_IPREACH_TE);
+ vertices[vertex_count]->d_N = 20;
+ vertex_count++;
+
+ memset(node_id, 0, sizeof(node_id));
+ node_id[6] = 1;
+ vertices[vertex_count] = isis_vertex_new(&t, node_id,
+ VTYPE_PSEUDO_TE_IS);
+ vertices[vertex_count]->d_N = 15;
+ vertex_count++;
+
+ memset(node_id, 0, sizeof(node_id));
+ node_id[5] = 2;
+ vertices[vertex_count] = isis_vertex_new(&t, node_id,
+ VTYPE_NONPSEUDO_TE_IS);
+ vertices[vertex_count]->d_N = 15;
+ vertex_count++;
+
+ p.dest.family = AF_INET;
+ p.dest.prefixlen = 24;
+ inet_pton(AF_INET, "192.168.3.0", &p.dest.u.prefix4);
+ vertices[vertex_count] = isis_vertex_new(&t, &p, VTYPE_IPREACH_TE);
+ vertices[vertex_count]->d_N = 20;
+ vertex_count++;
+};
+
+static void cleanup_test_vertices(void)
+{
+ for (size_t i = 0; i < vertex_count; i++)
+ isis_vertex_del(vertices[i]);
+ XFREE(MTYPE_TMP, vertices);
+ vertex_count = 0;
+}
+
+static void test_ordered(void)
+{
+ struct isis_vertex_queue q;
+
+ isis_vertex_queue_init(&q, NULL, true);
+ for (size_t i = 0; i < vertex_count; i++)
+ isis_vertex_queue_insert(&q, vertices[i]);
+
+ assert(isis_vertex_queue_count(&q) == vertex_count);
+
+ for (size_t i = 0; i < vertex_count; i++) {
+ assert(isis_find_vertex(&q, &vertices[i]->N, vertices[i]->type) == vertices[i]);
+ }
+
+ assert(isis_vertex_queue_pop(&q) == vertices[2]);
+ assert(isis_find_vertex(&q, &vertices[2]->N, vertices[2]->type) == NULL);
+
+ assert(isis_vertex_queue_pop(&q) == vertices[3]);
+ assert(isis_find_vertex(&q, &vertices[3]->N, vertices[3]->type) == NULL);
+
+ assert(isis_vertex_queue_pop(&q) == vertices[0]);
+ assert(isis_find_vertex(&q, &vertices[0]->N, vertices[0]->type) == NULL);
+
+ assert(isis_vertex_queue_pop(&q) == vertices[1]);
+ assert(isis_find_vertex(&q, &vertices[1]->N, vertices[1]->type) == NULL);
+
+ isis_vertex_queue_delete(&q, vertices[4]);
+ assert(isis_find_vertex(&q, &vertices[4]->N, vertices[4]->type) == NULL);
+
+ assert(isis_vertex_queue_count(&q) == 0);
+ assert(isis_vertex_queue_pop(&q) == NULL);
+
+ isis_vertex_queue_free(&q);
+}
+
+int main(int argc, char **argv)
+{
+ setup_test_vertices();
+ test_ordered();
+ cleanup_test_vertices();
+
+ return 0;
+}
diff --git a/tests/isisd/test_isis_vertex_queue.py b/tests/isisd/test_isis_vertex_queue.py
new file mode 100644
index 0000000..b9d2fc5
--- /dev/null
+++ b/tests/isisd/test_isis_vertex_queue.py
@@ -0,0 +1,8 @@
+import frrtest
+
+
+class TestIsisVertexQueue(frrtest.TestMultiOut):
+ program = "./test_isis_vertex_queue"
+
+
+TestIsisVertexQueue.exit_cleanly()
diff --git a/tests/isisd/test_topologies.c b/tests/isisd/test_topologies.c
new file mode 100644
index 0000000..b3e500a
--- /dev/null
+++ b/tests/isisd/test_topologies.c
@@ -0,0 +1,3487 @@
+/*
+ * Copyright (C) 2020 NetDEF, Inc.
+ * Renato Westphal
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <zebra.h>
+
+#include "isisd/isisd.h"
+
+#include "test_common.h"
+
+/*
+ * clang-format off
+ *
+ * All topologies have the following properties:
+ * - The System-ID is 0000.0000.000X, where X is the node number (in hex);
+ * - The Router-ID is 10.0.255.X, where X is the node number;
+ * - The default link metric is 10;
+ * - When SR is enabled, Adj-SIDs and Prefix-SIDs are generated automatically;
+ * - When SR is enabled, the default SRGB is [16000-23999] (can be overridden).
+ *
+ * Test topology 1:
+ * ================
+ *
+ * +---------+
+ * | |
+ * | RT1 |
+ * +----------+ +----------+
+ * | | | |
+ * | +---------+ |
+ * | |
+ * | |
+ * | |
+ * +----+----+ +----+----+
+ * | | | |
+ * | RT2 | | RT3 |
+ * | | | |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * +---+-+---+ +----+----+
+ * | | | |
+ * | RT4 | | RT5 |
+ * | | | |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * | +---------+ |
+ * | | | |
+ * | | RT6 | |
+ * +----------+ +----------+
+ * | |
+ * +---------+
+ *
+ * Test topology 2:
+ * ================
+ *
+ * +---------+
+ * | |
+ * | RT1 |
+ * +----------+ +----------+
+ * | | | |
+ * | +----+----+ |
+ * | | |
+ * 15 | | | 30
+ * | | |
+ * +----+----+ | +----+----+
+ * | | | | |
+ * | RT2 | | | RT3 |
+ * | | | | |
+ * | | | | |
+ * +----+----+ | +----+----+
+ * | | |
+ * 40 | | | 40
+ * | | |
+ * +----+----+ | +----+----+
+ * | | | | |
+ * | RT4 | | | RT5 |
+ * | +----------+----------+ |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * | +---------+ |
+ * | | | |
+ * | | RT6 | |
+ * +----------+ +----------+
+ * | |
+ * +---------+
+ *
+ * Test topology 3:
+ * ================
+ *
+ * +---------+
+ * | |
+ * | RT1 |
+ * +----------+ +----------+
+ * | | | |
+ * | +---------+ |
+ * | |
+ * | |
+ * | |
+ * +----+----+ +----+----+
+ * | | | |
+ * | RT2 | | RT3 |
+ * | +---------------------+ |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | | 30
+ * | |
+ * +----+----+ +----+----+
+ * | | | |
+ * | RT4 | | RT5 |
+ * | +---------------------+ |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * | +---------+ |
+ * | | | |
+ * | | RT6 | |
+ * +----------+ +----------+
+ * | |
+ * +---------+
+ *
+ * Test topology 4:
+ * ================
+ *
+ * +---------+ +---------+
+ * | | | |
+ * | RT1 | | RT2 |
+ * | +---------------------+ |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT3 | | RT4 |
+ * | | | |
+ * | | | |
+ * +---+-----+ +------+--+
+ * |^ |
+ * ||200 |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT5 | 50 | RT6 |
+ * | +---------------------+ |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT7 | | RT8 |
+ * | | | |
+ * | | | |
+ * +---------+ +---------+
+ *
+ * Test topology 5:
+ * ================
+ *
+ * +---------+ +---------+
+ * | | | |
+ * | RT1 | | RT2 |
+ * | +---------------------+ |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT3 | | RT4 |
+ * | | | |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT5 | | RT6 |
+ * | | | |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT7 | | RT8 |
+ * | +---------------------+ |
+ * | | | |
+ * +---------+ +---------+
+ *
+ * Test topology 6:
+ * ================
+ *
+ * +---------+ +---------+
+ * | | | |
+ * | RT1 | | RT2 |
+ * | +---------------------+ |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT3 | | RT4 |
+ * | +---------------------+ |
+ * | | | |
+ * +---------+ +------+--+
+ * |
+ * |
+ * |
+ * +---------+ +------+--+
+ * | | | |
+ * | RT5 | | RT6 |
+ * | +---------------------+ |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT7 | | RT8 |
+ * | +---------------------+ |
+ * | | | |
+ * +---------+ +---------+
+ *
+ * Test topology 7:
+ * ================
+ *
+ * +---------+ +---------+ +---------+
+ * | | | | | |
+ * | RT1 | 40 | RT2 | | RT3 |
+ * | +---------------------+ +---------------------+ |
+ * | | | | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | |
+ * | | |
+ * | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | | | | |
+ * | RT4 | | RT5 | | RT6 |
+ * | +---------------------+ +---------------------+ |
+ * | | | | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | |
+ * | | | 30
+ * | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | | | | |
+ * | RT7 | | RT8 | | RT9 |
+ * | +---------------------+ +---------------------+ |
+ * | | | | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | |
+ * | 20 | |
+ * | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | | | | |
+ * | RT10 | | RT11 | | RT12 |
+ * | +---------------------+ +---------------------+ |
+ * | | | | | |
+ * +---------+ +---------+ +---------+
+ *
+ * Test topology 8:
+ * ================
+ *
+ * +---------+ +---------+ +---------+
+ * | | | | | |
+ * | RT1 | | RT2 | | RT3 |
+ * | +---------------------+ +---------------------+ |
+ * | | | | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | |
+ * | | |
+ * | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | | | | |
+ * | RT4 | | RT5 | | RT6 |
+ * | | | +---------------------+ |
+ * | | | | | |
+ * +---+-----+ +----+----+ +---------+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +----+----+ +---------+
+ * | | | | | |
+ * | RT7 | | RT8 | | RT9 |
+ * | | | +---------------------+ |
+ * | | | | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | |
+ * | | |
+ * | | |
+ * +---+-----+ +----+----+ +------+--+
+ * | | | | | |
+ * | RT10 | | RT11 | | RT12 |
+ * | +---------------------+ +---------------------+ |
+ * | | 30 | | | |
+ * +---------+ +---------+ +---------+
+ *
+ * Test topology 9:
+ * ================
+ *
+ * +---------+
+ * | |
+ * | RT1 |
+ * +----------+ +----------+
+ * | | | |
+ * | +---------+ |
+ * | |
+ * | |
+ * | |
+ * +----+----+ +----+----+
+ * | | | |
+ * | RT2 | | RT3 |
+ * | | | |
+ * | | | |
+ * +----+----+ +------+--+
+ * | |
+ * | |
+ * | |100
+ * | +---------+ |
+ * | | | |
+ * +----------+ RT4 +------------+
+ * +----------------| |----------------+
+ * | +-+ +--+ |
+ * | | +---------+ | |
+ * | | | |
+ * | |30 |30 |30
+ * | | | |
+ * +----+----+ +----+----+ +----+----+ +----+----+
+ * | | | | | | | |
+ * | RT5 | | RT6 | | RT7 | | RT8 |
+ * | | | | | | | |
+ * | | | | | | | |
+ * +----+----+ +----+----+ +----+----+ +----+----+
+ * | | | |
+ * | | | |
+ * | | | |
+ * | | +---------+ | |
+ * | +-+ +--+ |
+ * +----------------+ RT9 +----------------+
+ * | |
+ * | |
+ * +---------+
+ *
+ * Test topology 10:
+ * ================
+ *
+ * +---------+
+ * | |
+ * | RT1 |
+ * +----------+ +----------+
+ * | | | |
+ * | +----+----+ |
+ * | | |
+ * | |20 |20
+ * | | |
+ * +----+----+ +----+----+ +----+----+
+ * | | | | | |
+ * | RT2 | | RT3 | | RT4 |
+ * | | | | | |
+ * | | | | | |
+ * +----+----+ +----+----+ +----+----+
+ * | | |
+ * | | |
+ * | | |
+ * +----+----+ +----+----+ +----+----+
+ * | | | | | |
+ * | RT5 | | RT6 | | RT7 |
+ * | | | | | |
+ * | | | | | |
+ * +----+----+ +----+----+ +----+----+
+ * | | |
+ * | |50 |50
+ * | | |
+ * | +----+----+ |
+ * | | | |
+ * +----------+ RT8 +----------+
+ * | |
+ * | |
+ * +---------+
+ *
+ * Test topology 11:
+ * ================
+ *
+ * +---------+
+ * | |
+ * | RT1 |
+ * | |
+ * | |
+ * +----+----+
+ * |
+ * |
+ * |
+ * +---------+ | +---------+
+ * | | | | |
+ * | RT2 |50 | | RT3 |
+ * | +----------+----------+ |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * +----+----+ +----+----+
+ * | | | |
+ * | RT4 | | RT5 |
+ * | +---------------------+ |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * | +---------+ |
+ * | | | |
+ * | | RT6 | |
+ * +----------+ +----------+
+ * | |
+ * +---------+
+ *
+ * Test topology 12:
+ * ================
+ *
+ * +---------+ +---------+
+ * | | | |
+ * | RT1 | | RT2 |
+ * | +---------------------+ |
+ * | | | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT3 | | RT4 |
+ * | | | |
+ * | | | |
+ * +---+-----+ +------+--+
+ * |^ |
+ * |400 |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT5 | | RT6 |
+ * | | | |
+ * | | | |
+ * +---+-----+ +------+--+
+ * |^ |
+ * |200 |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT7 | | RT8 |
+ * | +---------------------+ |
+ * | | 100 | |
+ * +---+-----+ +------+--+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +------+--+
+ * | | | |
+ * | RT9 | | RT10 |
+ * | | | |
+ * | | | |
+ * +---------+ +---------+
+ *
+ * Test topology 13:
+ * ================
+ *
+ * +---------+ +---------+
+ * | | | |
+ * | RT1 | | RT2 |
+ * | +---------------------+ |
+ * | | | |
+ * +---+-----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * | +----+----+
+ * | | |
+ * | +----------+ RT4 |
+ * | | | |
+ * +---+-----+ | | |
+ * | | | +----+----+
+ * | RT3 +----------+ |
+ * | +----------+ |100
+ * | | | |
+ * +---+-----+ | +----+----+
+ * | | | |
+ * | | | RT5 |
+ * | +----------+ |
+ * | | |
+ * | +----+----+
+ * | |
+ * | |
+ * | |
+ * +---+-----+ +----+----+
+ * | | | |
+ * | RT6 | | RT7 |
+ * | +---------------------+ |
+ * | | | |
+ * +---------+ +---------+
+
+ * Test topology 14:
+ * =================
+ *
+ * +---------+ +---------+
+ * | | | |
+ * | RT1 | | RT2 |
+ * | +--------------+ |
+ * | | | |
+ * +----+----+ +----+----+
+ * | |
+ * | |
+ * | |
+ * | +----+----+
+ * | | |
+ * | | RT3 |
+ * +-------------------+ |
+ * | | |
+ * | +----+----+
+ * | |
+ * | |50
+ * | |
+ * +----+----+ +----+----+
+ * | | | |
+ * | RT4 | | RT5 |
+ * | +--------------+ |
+ * | | | |
+ * +---------+ +---------+
+ */
+
+struct isis_topology test_topologies[] = {
+ {
+ .number = 1,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ "2001:db8::1/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ "2001:db8::2/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ "2001:db8::3/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ "2001:db8::4/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ "2001:db8::5/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ "2001:db8::6/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 2,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ "2001:db8::1/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ {
+ .hostname = "rt2",
+ .metric = 15,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 30,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ "2001:db8::2/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 15,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 40,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ "2001:db8::3/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 40,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ "2001:db8::4/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ {
+ .hostname = "rt2",
+ .metric = 40,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ "2001:db8::5/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 40,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ "2001:db8::6/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .pseudonode_id = 1,
+ .level = IS_LEVEL_1,
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 0,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 0,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 0,
+ },
+ },
+ },
+ },
+ },
+ {
+ .number = 3,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 30,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 4,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 200,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 50,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 50,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 5,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 6,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 7,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 40,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 40,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 30,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt10",
+ .metric = 20,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt11",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt9",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x09},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.9",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.9/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt6",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt12",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt10",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x0a},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.10",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.10/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt7",
+ .metric = 20,
+ },
+ {
+ .hostname = "rt11",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt11",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x0b},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.11",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.11/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt10",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt12",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt12",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x0c},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.12",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.12/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt11",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 8,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt10",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt11",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt9",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x09},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.9",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.9/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt12",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt10",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x0a},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.10",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.10/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt11",
+ .metric = 30,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt11",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x0b},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.11",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.11/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt10",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt12",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt12",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x0c},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.12",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.12/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt11",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 9,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ "2001:db8::1/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ "2001:db8::2/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ "2001:db8::3/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 100,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ "2001:db8::4/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 100,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 30,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ "2001:db8::5/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ "2001:db8::6/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ "2001:db8::7/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ "2001:db8::8/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 30,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt9",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x09},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.9",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.9/32",
+ "2001:db8::9/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 10,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ "2001:db8::1/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 20,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 20,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ "2001:db8::2/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .srgb = {
+ .lower_bound = 20000,
+ .range_size = 8000,
+ },
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ "2001:db8::3/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 20,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ "2001:db8::4/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 20,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ "2001:db8::5/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ "2001:db8::6/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 50,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ "2001:db8::7/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 50,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ "2001:db8::8/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 50,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 50,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 11,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ "2001:db8::1/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ "2001:db8::2/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .pseudonode_id = 1,
+ .metric = 50,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ "2001:db8::3/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ "2001:db8::4/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ "2001:db8::5/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ "2001:db8::6/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .pseudonode_id = 1,
+ .level = IS_LEVEL_1,
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 0,
+ },
+ {
+ .hostname = "rt2",
+ .metric = 0,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 0,
+ },
+ },
+ },
+ },
+ },
+ {
+ .number = 12,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 400,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 200,
+ },
+ {
+ .hostname = "rt8",
+ .metric = 100,
+ },
+ {
+ .hostname = "rt9",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt8",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x08},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.8",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.8/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 100,
+ },
+ {
+ .hostname = "rt10",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt9",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x09},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.9",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.9/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt10",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x0a},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.10",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.10/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt8",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 13,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 100,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 100,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt6",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x06},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.6",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.6/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt7",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ {
+ .hostname = "rt7",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x07},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.7",
+ .protocols = {
+ .ipv4 = true,
+ },
+ .networks = {
+ "10.0.255.7/32",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt6",
+ .metric = 10,
+ },
+ },
+ .flags = F_ISIS_TEST_NODE_SR,
+ },
+ },
+ },
+ {
+ .number = 14,
+ .nodes = {
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.1",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.1/32",
+ "2001:db8::1/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ },
+ },
+ {
+ .hostname = "rt2",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.2",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.2/32",
+ "2001:db8::2/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 20,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 10,
+ },
+ },
+ },
+ {
+ .hostname = "rt3",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.3",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.3/32",
+ "2001:db8::3/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ {
+ .hostname = "rt2",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 50,
+ },
+ },
+ },
+ {
+ .hostname = "rt4",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.4",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.4/32",
+ "2001:db8::4/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .pseudonode_id = 1,
+ .metric = 10,
+ },
+ {
+ .hostname = "rt5",
+ .metric = 10,
+ },
+ },
+ },
+ {
+ .hostname = "rt5",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x05},
+ .level = IS_LEVEL_1,
+ .router_id = "10.0.255.5",
+ .protocols = {
+ .ipv4 = true,
+ .ipv6 = true,
+ },
+ .networks = {
+ "10.0.255.5/32",
+ "2001:db8::5/128",
+ },
+ .adjacencies = {
+ {
+ .hostname = "rt4",
+ .metric = 10,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 50,
+ },
+ },
+ },
+ {
+ .hostname = "rt1",
+ .sysid = {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+ .pseudonode_id = 1,
+ .level = IS_LEVEL_1,
+ .adjacencies = {
+ {
+ .hostname = "rt1",
+ .metric = 0,
+ },
+ {
+ .hostname = "rt3",
+ .metric = 0,
+ },
+ {
+ .hostname = "rt4",
+ .metric = 0,
+ },
+ },
+ },
+ },
+ },
+ {
+ /* sentinel */
+ },
+};