mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-13 17:49:56 +00:00
Merge pull request #6404 from FRRouting/dev_isis_sr
isisd: IS-IS Segment Routing support
This commit is contained in:
commit
36caef199a
@ -470,6 +470,57 @@ Traffic Engineering
|
||||
|
||||
.. _debugging-isis:
|
||||
|
||||
Segment Routing
|
||||
===============
|
||||
|
||||
This is an EXPERIMENTAL support of Segment Routing as per RFC8667
|
||||
for MPLS dataplane. It supports IPv4, IPv6 and ECMP and has been
|
||||
tested against Cisco & Juniper routers.
|
||||
|
||||
Known limitations:
|
||||
- No support for level redistribution (L1 to L2 or L2 to L1)
|
||||
- No support for binding SID
|
||||
- No support for SRMS
|
||||
- No support for SRLB
|
||||
- Only one SRGB and default SPF Algorithm is supported
|
||||
|
||||
.. index:: [no] segment-routing on
|
||||
.. clicmd:: [no] segment-routing on
|
||||
|
||||
Enable Segment Routing.
|
||||
|
||||
.. index:: [no] segment-routing global-block (0-1048575) (0-1048575)
|
||||
.. clicmd:: [no] segment-routing global-block (0-1048575) (0-1048575)
|
||||
|
||||
Set the Segment Routing Global Block i.e. the label range used by MPLS
|
||||
to store label in the MPLS FIB.
|
||||
|
||||
.. index:: [no] segment-routing node-msd (1-16)
|
||||
.. clicmd:: [no] segment-routing node-msd (1-16)
|
||||
|
||||
Set the Maximum Stack Depth supported by the router. The value depend of the
|
||||
MPLS dataplane. E.g. for Linux kernel, since version 4.13 the maximum value
|
||||
is 32.
|
||||
|
||||
.. index:: [no] segment-routing prefix <A.B.C.D/M|X:X::X:X/M> <absolute (16-1048575)|index (0-65535)> [no-php-flag|explicit-null]
|
||||
.. clicmd:: [no] segment-routing prefix <A.B.C.D/M|X:X::X:X/M> <absolute (16-1048575)|index (0-65535) [no-php-flag|explicit-null]
|
||||
|
||||
Set the Segment Routing index or absolute label value for the specified
|
||||
prefix. The 'no-php-flag' means NO Penultimate Hop Popping that allows SR
|
||||
node to request to its neighbor to not pop the label. The 'explicit-null'
|
||||
flag allows SR node to request to its neighbor to send IP packet with the
|
||||
EXPLICIT-NULL label.
|
||||
|
||||
.. index:: show isis segment-routing prefix-sids
|
||||
.. clicmd:: show isis segment-routing prefix-sids
|
||||
|
||||
Show detailed information about all learned Segment Routing Prefix-SIDs.
|
||||
|
||||
.. index:: show isis segment-routing nodes
|
||||
.. clicmd:: show isis segment-routing nodes
|
||||
|
||||
Show detailed information about all learned Segment Routing Nodes.
|
||||
|
||||
Debugging ISIS
|
||||
==============
|
||||
|
||||
@ -566,6 +617,14 @@ Debugging ISIS
|
||||
|
||||
Update related packets.
|
||||
|
||||
.. index:: debug isis sr-events
|
||||
.. clicmd:: debug isis sr-events
|
||||
|
||||
.. index:: no debug isis sr-events
|
||||
.. clicmd:: no debug isis sr-events
|
||||
|
||||
IS-IS Segment Routing events.
|
||||
|
||||
.. index:: show debugging isis
|
||||
.. clicmd:: show debugging isis
|
||||
|
||||
@ -655,3 +714,32 @@ Then the :file:`isisd.conf` itself:
|
||||
mpls-te router-address 10.1.1.1
|
||||
!
|
||||
line vty
|
||||
|
||||
A Segment Routing configuration, with IPv4, IPv6, SRGB and MSD configuration.
|
||||
|
||||
.. code-block:: frr
|
||||
|
||||
hostname HOSTNAME
|
||||
password PASSWORD
|
||||
log file /var/log/isisd.log
|
||||
!
|
||||
!
|
||||
interface eth0
|
||||
ip router isis SR
|
||||
isis network point-to-point
|
||||
!
|
||||
interface eth1
|
||||
ip router isis SR
|
||||
!
|
||||
!
|
||||
router isis SR
|
||||
net 49.0000.0000.0000.0001.00
|
||||
is-type level-1
|
||||
topology ipv6-unicast
|
||||
lsp-gen-interval 2
|
||||
segment-routing on
|
||||
segment-routing node-msd 8
|
||||
segment-routing prefix 10.1.1.1/32 index 100 explicit-null
|
||||
segment-routing prefix 2001:db8:1000::1/128 index 101 explicit-null
|
||||
!
|
||||
|
||||
|
@ -93,6 +93,7 @@ struct isis_adjacency *isis_new_adj(const uint8_t *id, const uint8_t *snpa,
|
||||
.last_dis_change = time(NULL);
|
||||
}
|
||||
}
|
||||
adj->adj_sids = list_new();
|
||||
|
||||
return adj;
|
||||
}
|
||||
@ -122,6 +123,44 @@ struct isis_adjacency *isis_adj_lookup_snpa(const uint8_t *ssnpa,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool isis_adj_exists(const struct isis_area *area, int level,
|
||||
const uint8_t *sysid)
|
||||
{
|
||||
struct isis_circuit *circuit;
|
||||
struct listnode *node;
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) {
|
||||
struct isis_adjacency *adj;
|
||||
struct listnode *anode;
|
||||
struct list *adjdb;
|
||||
|
||||
switch (circuit->circ_type) {
|
||||
case CIRCUIT_T_BROADCAST:
|
||||
adjdb = circuit->u.bc.adjdb[level - 1];
|
||||
if (!adjdb)
|
||||
continue;
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(adjdb, anode, adj)) {
|
||||
if (!memcmp(adj->sysid, sysid, ISIS_SYS_ID_LEN))
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case CIRCUIT_T_P2P:
|
||||
adj = circuit->u.p2p.neighbor;
|
||||
if (!adj)
|
||||
break;
|
||||
|
||||
if (!memcmp(adj->sysid, sysid, ISIS_SYS_ID_LEN))
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
DEFINE_HOOK(isis_adj_state_change_hook, (struct isis_adjacency *adj), (adj))
|
||||
|
||||
void isis_delete_adj(void *arg)
|
||||
@ -145,6 +184,7 @@ void isis_delete_adj(void *arg)
|
||||
XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv6_addresses);
|
||||
|
||||
adj_mt_finish(adj);
|
||||
list_delete(&adj->adj_sids);
|
||||
|
||||
XFREE(MTYPE_ISIS_ADJACENCY, adj);
|
||||
return;
|
||||
@ -441,6 +481,9 @@ void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,
|
||||
}
|
||||
|
||||
if (detail == ISIS_UI_LEVEL_DETAIL) {
|
||||
struct sr_adjacency *sra;
|
||||
struct listnode *anode;
|
||||
|
||||
level = adj->level;
|
||||
vty_out(vty, "\n");
|
||||
if (adj->circuit)
|
||||
@ -529,6 +572,31 @@ void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,
|
||||
vty_out(vty, " %s\n", buf);
|
||||
}
|
||||
}
|
||||
for (ALL_LIST_ELEMENTS_RO(adj->adj_sids, anode, sra)) {
|
||||
const char *adj_type;
|
||||
const char *backup;
|
||||
uint32_t sid;
|
||||
|
||||
switch (sra->adj->circuit->circ_type) {
|
||||
case CIRCUIT_T_BROADCAST:
|
||||
adj_type = "LAN Adjacency-SID";
|
||||
sid = sra->u.ladj_sid->sid;
|
||||
break;
|
||||
case CIRCUIT_T_P2P:
|
||||
adj_type = "Adjacency-SID";
|
||||
sid = sra->u.adj_sid->sid;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
backup = (sra->type == ISIS_SR_LAN_BACKUP) ? " (backup)"
|
||||
: "";
|
||||
|
||||
vty_out(vty, " %s %s%s: %u\n",
|
||||
(sra->nexthop.family == AF_INET) ? "IPv4"
|
||||
: "IPv6",
|
||||
adj_type, backup, sid);
|
||||
}
|
||||
vty_out(vty, "\n");
|
||||
}
|
||||
return;
|
||||
|
@ -69,6 +69,7 @@ struct isis_dis_record {
|
||||
};
|
||||
|
||||
struct bfd_session;
|
||||
struct isis_area;
|
||||
|
||||
struct isis_adjacency {
|
||||
uint8_t snpa[ETH_ALEN]; /* NeighbourSNPAAddress */
|
||||
@ -103,6 +104,7 @@ struct isis_adjacency {
|
||||
uint16_t *mt_set; /* Topologies this adjacency is valid for */
|
||||
unsigned int mt_count; /* Number of entries in mt_set */
|
||||
struct bfd_session *bfd_session;
|
||||
struct list *adj_sids; /* Segment Routing Adj-SIDs. */
|
||||
};
|
||||
|
||||
struct isis_threeway_adj;
|
||||
@ -111,6 +113,8 @@ struct isis_adjacency *isis_adj_lookup(const uint8_t *sysid,
|
||||
struct list *adjdb);
|
||||
struct isis_adjacency *isis_adj_lookup_snpa(const uint8_t *ssnpa,
|
||||
struct list *adjdb);
|
||||
bool isis_adj_exists(const struct isis_area *area, int level,
|
||||
const uint8_t *sysid);
|
||||
struct isis_adjacency *isis_new_adj(const uint8_t *id, const uint8_t *snpa,
|
||||
int level, struct isis_circuit *circuit);
|
||||
void isis_delete_adj(void *adj);
|
||||
@ -118,6 +122,10 @@ void isis_adj_process_threeway(struct isis_adjacency *adj,
|
||||
struct isis_threeway_adj *tw_adj,
|
||||
enum isis_adj_usage adj_usage);
|
||||
DECLARE_HOOK(isis_adj_state_change_hook, (struct isis_adjacency *adj), (adj))
|
||||
DECLARE_HOOK(isis_adj_ip_enabled_hook,
|
||||
(struct isis_adjacency *adj, int family), (adj, family))
|
||||
DECLARE_HOOK(isis_adj_ip_disabled_hook,
|
||||
(struct isis_adjacency *adj, int family), (adj, family))
|
||||
void isis_adj_state_change(struct isis_adjacency **adj,
|
||||
enum isis_adj_state state, const char *reason);
|
||||
void isis_adj_print(struct isis_adjacency *adj);
|
||||
|
218
isisd/isis_cli.c
218
isisd/isis_cli.c
@ -1355,6 +1355,215 @@ void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
|
||||
vty_out(vty, "\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/enabled
|
||||
*/
|
||||
DEFPY (isis_sr_enable,
|
||||
isis_sr_enable_cmd,
|
||||
"segment-routing on",
|
||||
SR_STR
|
||||
"Enable Segment Routing\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/enabled", NB_OP_MODIFY,
|
||||
"true");
|
||||
|
||||
return nb_cli_apply_changes(vty, NULL);
|
||||
}
|
||||
|
||||
DEFPY (no_isis_sr_enable,
|
||||
no_isis_sr_enable_cmd,
|
||||
"no segment-routing [on]",
|
||||
NO_STR
|
||||
SR_STR
|
||||
"Disable Segment Routing\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/enabled", NB_OP_MODIFY,
|
||||
"false");
|
||||
|
||||
return nb_cli_apply_changes(vty, NULL);
|
||||
}
|
||||
|
||||
void cli_show_isis_sr_enabled(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults)
|
||||
{
|
||||
if (!yang_dnode_get_bool(dnode, NULL))
|
||||
vty_out(vty, " no");
|
||||
|
||||
vty_out(vty, " segment-routing on\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/srgb
|
||||
*/
|
||||
DEFPY (isis_sr_global_block_label_range,
|
||||
isis_sr_global_block_label_range_cmd,
|
||||
"segment-routing global-block (16-1048575)$lower_bound (16-1048575)$upper_bound",
|
||||
SR_STR
|
||||
"Segment Routing Global Block label range\n"
|
||||
"The lower bound of SRGB (16-1048575)\n"
|
||||
"The upper bound of SRGB (16-1048575)\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/srgb/lower-bound",
|
||||
NB_OP_MODIFY, lower_bound_str);
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/srgb/upper-bound",
|
||||
NB_OP_MODIFY, upper_bound_str);
|
||||
|
||||
return nb_cli_apply_changes(vty, NULL);
|
||||
}
|
||||
|
||||
DEFPY (no_isis_sr_global_block_label_range,
|
||||
no_isis_sr_global_block_label_range_cmd,
|
||||
"no segment-routing global-block [(0-1048575) (0-1048575)]",
|
||||
NO_STR
|
||||
SR_STR
|
||||
"Segment Routing Global Block label range\n"
|
||||
"The lower bound of SRGB (16-1048575)\n"
|
||||
"The upper bound of SRGB (block size may not exceed 65535)\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/srgb/lower-bound",
|
||||
NB_OP_MODIFY, NULL);
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/srgb/upper-bound",
|
||||
NB_OP_MODIFY, NULL);
|
||||
|
||||
return nb_cli_apply_changes(vty, NULL);
|
||||
}
|
||||
|
||||
void cli_show_isis_srgb(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults)
|
||||
{
|
||||
vty_out(vty, " segment-routing global-block %s %s\n",
|
||||
yang_dnode_get_string(dnode, "./lower-bound"),
|
||||
yang_dnode_get_string(dnode, "./upper-bound"));
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/msd/node-msd
|
||||
*/
|
||||
DEFPY (isis_sr_node_msd,
|
||||
isis_sr_node_msd_cmd,
|
||||
"segment-routing node-msd (1-16)$msd",
|
||||
SR_STR
|
||||
"Maximum Stack Depth for this router\n"
|
||||
"Maximum number of label that can be stack (1-16)\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/msd/node-msd",
|
||||
NB_OP_MODIFY, msd_str);
|
||||
|
||||
return nb_cli_apply_changes(vty, NULL);
|
||||
}
|
||||
|
||||
DEFPY (no_isis_sr_node_msd,
|
||||
no_isis_sr_node_msd_cmd,
|
||||
"no segment-routing node-msd [(1-16)]",
|
||||
NO_STR
|
||||
SR_STR
|
||||
"Maximum Stack Depth for this router\n"
|
||||
"Maximum number of label that can be stack (1-16)\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, "./segment-routing/msd/node-msd",
|
||||
NB_OP_DESTROY, NULL);
|
||||
|
||||
return nb_cli_apply_changes(vty, NULL);
|
||||
}
|
||||
|
||||
void cli_show_isis_node_msd(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults)
|
||||
{
|
||||
vty_out(vty, " segment-routing node-msd %s\n",
|
||||
yang_dnode_get_string(dnode, NULL));
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid
|
||||
*/
|
||||
DEFPY (isis_sr_prefix_sid,
|
||||
isis_sr_prefix_sid_cmd,
|
||||
"segment-routing prefix\
|
||||
<A.B.C.D/M|X:X::X:X/M>$prefix\
|
||||
<absolute$sid_type (16-1048575)$sid_value|index$sid_type (0-65535)$sid_value>\
|
||||
[<no-php-flag|explicit-null>$lh_behavior]",
|
||||
SR_STR
|
||||
"Prefix SID\n"
|
||||
"IPv4 Prefix\n"
|
||||
"IPv6 Prefix\n"
|
||||
"Specify the absolute value of Prefix Segement ID\n"
|
||||
"The Prefix Segment ID value\n"
|
||||
"Specify the index of Prefix Segement ID\n"
|
||||
"The Prefix Segment ID index\n"
|
||||
"Don't request Penultimate Hop Popping (PHP)\n"
|
||||
"Upstream neighbor must replace prefix-sid with explicit null label\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
|
||||
nb_cli_enqueue_change(vty, "./sid-value-type", NB_OP_MODIFY, sid_type);
|
||||
nb_cli_enqueue_change(vty, "./sid-value", NB_OP_MODIFY, sid_value_str);
|
||||
if (lh_behavior) {
|
||||
const char *value;
|
||||
|
||||
if (strmatch(lh_behavior, "no-php-flag"))
|
||||
value = "no-php";
|
||||
else
|
||||
value = "explicit-null";
|
||||
|
||||
nb_cli_enqueue_change(vty, "./last-hop-behavior", NB_OP_MODIFY,
|
||||
value);
|
||||
} else
|
||||
nb_cli_enqueue_change(vty, "./last-hop-behavior", NB_OP_MODIFY,
|
||||
NULL);
|
||||
|
||||
return nb_cli_apply_changes(
|
||||
vty, "./segment-routing/prefix-sid-map/prefix-sid[prefix='%s']",
|
||||
prefix_str);
|
||||
}
|
||||
|
||||
DEFPY (no_isis_sr_prefix_sid,
|
||||
no_isis_sr_prefix_sid_cmd,
|
||||
"no segment-routing prefix <A.B.C.D/M|X:X::X:X/M>$prefix\
|
||||
[<absolute$sid_type (16-1048575)|index (0-65535)> [<no-php-flag|explicit-null>]]",
|
||||
NO_STR
|
||||
SR_STR
|
||||
"Prefix SID\n"
|
||||
"IPv4 Prefix\n"
|
||||
"IPv6 Prefix\n"
|
||||
"Specify the absolute value of Prefix Segement ID\n"
|
||||
"The Prefix Segment ID value\n"
|
||||
"Specify the index of Prefix Segement ID\n"
|
||||
"The Prefix Segment ID index\n"
|
||||
"Don't request Penultimate Hop Popping (PHP)\n"
|
||||
"Upstream neighbor must replace prefix-sid with explicit null label\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
|
||||
|
||||
return nb_cli_apply_changes(
|
||||
vty, "./segment-routing/prefix-sid-map/prefix-sid[prefix='%s']",
|
||||
prefix_str);
|
||||
}
|
||||
|
||||
void cli_show_isis_prefix_sid(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults)
|
||||
{
|
||||
const char *prefix;
|
||||
const char *lh_behavior;
|
||||
const char *sid_value_type;
|
||||
const char *sid_value;
|
||||
|
||||
prefix = yang_dnode_get_string(dnode, "./prefix");
|
||||
lh_behavior = yang_dnode_get_string(dnode, "./last-hop-behavior");
|
||||
sid_value_type = yang_dnode_get_string(dnode, "./sid-value-type");
|
||||
sid_value = yang_dnode_get_string(dnode, "./sid-value");
|
||||
|
||||
vty_out(vty, " segment-routing prefix %s", prefix);
|
||||
if (strmatch(sid_value_type, "absolute"))
|
||||
vty_out(vty, " absolute");
|
||||
else
|
||||
vty_out(vty, " index");
|
||||
vty_out(vty, " %s", sid_value);
|
||||
if (strmatch(lh_behavior, "no-php"))
|
||||
vty_out(vty, " no-php-flag");
|
||||
else if (strmatch(lh_behavior, "explicit-null"))
|
||||
vty_out(vty, " explicit-null");
|
||||
vty_out(vty, "\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-interface:lib/interface/frr-isisd:isis/passive
|
||||
*/
|
||||
@ -2095,6 +2304,15 @@ void isis_cli_init(void)
|
||||
|
||||
install_element(ISIS_NODE, &isis_topology_cmd);
|
||||
|
||||
install_element(ISIS_NODE, &isis_sr_enable_cmd);
|
||||
install_element(ISIS_NODE, &no_isis_sr_enable_cmd);
|
||||
install_element(ISIS_NODE, &isis_sr_global_block_label_range_cmd);
|
||||
install_element(ISIS_NODE, &no_isis_sr_global_block_label_range_cmd);
|
||||
install_element(ISIS_NODE, &isis_sr_node_msd_cmd);
|
||||
install_element(ISIS_NODE, &no_isis_sr_node_msd_cmd);
|
||||
install_element(ISIS_NODE, &isis_sr_prefix_sid_cmd);
|
||||
install_element(ISIS_NODE, &no_isis_sr_prefix_sid_cmd);
|
||||
|
||||
install_element(INTERFACE_NODE, &isis_passive_cmd);
|
||||
|
||||
install_element(INTERFACE_NODE, &isis_passwd_cmd);
|
||||
|
@ -37,6 +37,12 @@ static struct log_ref ferr_isis_err[] = {
|
||||
.description = "Isis has detected an error within configuration for the router",
|
||||
.suggestion = "Ensure configuration is correct"
|
||||
},
|
||||
{
|
||||
.code = EC_ISIS_SID_OVERFLOW,
|
||||
.title = "SID index overflow",
|
||||
.description = "Isis has detected that a SID index falls outside of its associated SRGB range",
|
||||
.suggestion = "Configure a larger SRGB"
|
||||
},
|
||||
{
|
||||
.code = END_FERR,
|
||||
}
|
||||
|
@ -26,6 +26,7 @@
|
||||
enum isis_log_refs {
|
||||
EC_ISIS_PACKET = ISIS_FERR_START,
|
||||
EC_ISIS_CONFIG,
|
||||
EC_ISIS_SID_OVERFLOW,
|
||||
};
|
||||
|
||||
extern void isis_error_init(void);
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include "isisd/isis_mt.h"
|
||||
#include "isisd/isis_tlvs.h"
|
||||
#include "isisd/isis_te.h"
|
||||
#include "isisd/isis_sr.h"
|
||||
#include "isisd/fabricd.h"
|
||||
#include "isisd/isis_tx_queue.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
@ -763,9 +764,15 @@ static void lsp_build_ext_reach_ipv4(struct isis_lsp *lsp,
|
||||
if (area->oldmetric)
|
||||
isis_tlvs_add_oldstyle_ip_reach(lsp->tlvs, ipv4,
|
||||
metric);
|
||||
if (area->newmetric)
|
||||
isis_tlvs_add_extended_ip_reach(lsp->tlvs, ipv4,
|
||||
metric);
|
||||
if (area->newmetric) {
|
||||
struct sr_prefix_cfg *pcfg = NULL;
|
||||
|
||||
if (area->srdb.enabled)
|
||||
pcfg = isis_sr_cfg_prefix_find(area, ipv4);
|
||||
|
||||
isis_tlvs_add_extended_ip_reach(lsp->tlvs, ipv4, metric,
|
||||
true, pcfg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -792,9 +799,14 @@ static void lsp_build_ext_reach_ipv6(struct isis_lsp *lsp,
|
||||
metric = MAX_WIDE_PATH_METRIC;
|
||||
|
||||
if (!src_p || !src_p->prefixlen) {
|
||||
struct sr_prefix_cfg *pcfg = NULL;
|
||||
|
||||
if (area->srdb.enabled)
|
||||
pcfg = isis_sr_cfg_prefix_find(area, p);
|
||||
|
||||
isis_tlvs_add_ipv6_reach(lsp->tlvs,
|
||||
isis_area_ipv6_topology(area),
|
||||
p, metric);
|
||||
p, metric, true, pcfg);
|
||||
} else if (isis_area_ipv6_dstsrc_enabled(area)) {
|
||||
isis_tlvs_add_ipv6_dstsrc_reach(lsp->tlvs,
|
||||
ISIS_MT_IPV6_DSTSRC,
|
||||
@ -910,6 +922,33 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
|
||||
area->area_tag);
|
||||
}
|
||||
|
||||
/* Add Router Capability TLV. */
|
||||
if (isis->router_id != 0) {
|
||||
struct isis_router_cap cap = {};
|
||||
|
||||
cap.router_id.s_addr = isis->router_id;
|
||||
|
||||
/* Add SR Sub-TLVs if SR is enabled. */
|
||||
if (area->srdb.enabled) {
|
||||
struct isis_sr_db *srdb = &area->srdb;
|
||||
uint32_t range_size;
|
||||
|
||||
range_size = srdb->config.srgb_upper_bound
|
||||
- srdb->config.srgb_lower_bound + 1;
|
||||
cap.srgb.flags = ISIS_SUBTLV_SRGB_FLAG_I
|
||||
| ISIS_SUBTLV_SRGB_FLAG_V;
|
||||
cap.srgb.range_size = range_size;
|
||||
cap.srgb.lower_bound = srdb->config.srgb_lower_bound;
|
||||
cap.algo[0] = SR_ALGORITHM_SPF;
|
||||
cap.algo[1] = SR_ALGORITHM_UNSET;
|
||||
cap.msd = srdb->config.msd;
|
||||
}
|
||||
|
||||
isis_tlvs_set_router_capability(lsp->tlvs, &cap);
|
||||
lsp_debug("ISIS (%s): Adding Router Capabilities information",
|
||||
area->area_tag);
|
||||
}
|
||||
|
||||
/* IPv4 address and TE router ID TLVs.
|
||||
* In case of the first one we don't follow "C" vendor,
|
||||
* but "J" vendor behavior - one IPv4 address is put
|
||||
@ -996,13 +1035,21 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
|
||||
}
|
||||
|
||||
if (area->newmetric) {
|
||||
struct sr_prefix_cfg *pcfg = NULL;
|
||||
|
||||
lsp_debug(
|
||||
"ISIS (%s): Adding te-style IP reachability for %s",
|
||||
area->area_tag,
|
||||
prefix2str(ipv4, buf,
|
||||
sizeof(buf)));
|
||||
|
||||
if (area->srdb.enabled)
|
||||
pcfg = isis_sr_cfg_prefix_find(
|
||||
area, ipv4);
|
||||
|
||||
isis_tlvs_add_extended_ip_reach(
|
||||
lsp->tlvs, ipv4, metric);
|
||||
lsp->tlvs, ipv4, metric, false,
|
||||
pcfg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1014,14 +1061,21 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(circuit->ipv6_non_link,
|
||||
ipnode, ipv6)) {
|
||||
struct sr_prefix_cfg *pcfg = NULL;
|
||||
|
||||
lsp_debug(
|
||||
"ISIS (%s): Adding IPv6 reachability for %s",
|
||||
area->area_tag,
|
||||
prefix2str(ipv6, buf, sizeof(buf)));
|
||||
|
||||
if (area->srdb.enabled)
|
||||
pcfg = isis_sr_cfg_prefix_find(area,
|
||||
ipv6);
|
||||
|
||||
isis_tlvs_add_ipv6_reach(
|
||||
lsp->tlvs,
|
||||
isis_area_ipv6_topology(area), ipv6,
|
||||
metric);
|
||||
metric, false, pcfg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,9 @@ struct zebra_privs_t isisd_privs = {
|
||||
.cap_num_i = 0};
|
||||
|
||||
/* isisd options */
|
||||
struct option longopts[] = {{0}};
|
||||
static const struct option longopts[] = {
|
||||
{"int_num", required_argument, NULL, 'I'},
|
||||
{0}};
|
||||
|
||||
/* Master of threads. */
|
||||
struct thread_master *master;
|
||||
@ -99,6 +101,7 @@ void sigusr1(void);
|
||||
|
||||
static __attribute__((__noreturn__)) void terminate(int i)
|
||||
{
|
||||
isis_sr_term();
|
||||
isis_zebra_stop();
|
||||
exit(i);
|
||||
}
|
||||
@ -196,13 +199,16 @@ FRR_DAEMON_INFO(isisd, ISIS, .vty_port = ISISD_VTY_PORT,
|
||||
int main(int argc, char **argv, char **envp)
|
||||
{
|
||||
int opt;
|
||||
int instance = 1;
|
||||
|
||||
#ifdef FABRICD
|
||||
frr_preinit(&fabricd_di, argc, argv);
|
||||
#else
|
||||
frr_preinit(&isisd_di, argc, argv);
|
||||
#endif
|
||||
frr_opt_add("", longopts, "");
|
||||
frr_opt_add(
|
||||
"I:", longopts,
|
||||
" -I, --int_num Set instance number (label-manager)\n");
|
||||
|
||||
/* Command line argument treatment. */
|
||||
while (1) {
|
||||
@ -214,6 +220,12 @@ int main(int argc, char **argv, char **envp)
|
||||
switch (opt) {
|
||||
case 0:
|
||||
break;
|
||||
case 'I':
|
||||
instance = atoi(optarg);
|
||||
if (instance < 1 || instance > (unsigned short)-1)
|
||||
zlog_err("Instance %i out of range (1..%u)",
|
||||
instance, (unsigned short)-1);
|
||||
break;
|
||||
default:
|
||||
frr_help_exit(1);
|
||||
break;
|
||||
@ -242,13 +254,14 @@ int main(int argc, char **argv, char **envp)
|
||||
isis_redist_init();
|
||||
isis_route_map_init();
|
||||
isis_mpls_te_init();
|
||||
isis_sr_init();
|
||||
lsp_init();
|
||||
mt_init();
|
||||
|
||||
/* create the global 'isis' instance */
|
||||
isis_new(1, VRF_DEFAULT);
|
||||
|
||||
isis_zebra_init(master);
|
||||
isis_zebra_init(master, instance);
|
||||
isis_bfd_init();
|
||||
fabricd_init();
|
||||
|
||||
|
@ -538,6 +538,26 @@ void log_multiline(int priority, const char *prefix, const char *format, ...)
|
||||
XFREE(MTYPE_TMP, p);
|
||||
}
|
||||
|
||||
char *log_uptime(time_t uptime, char *buf, size_t nbuf)
|
||||
{
|
||||
struct tm *tm;
|
||||
time_t difftime = time(NULL);
|
||||
difftime -= uptime;
|
||||
tm = gmtime(&difftime);
|
||||
|
||||
if (difftime < ONE_DAY_SECOND)
|
||||
snprintf(buf, nbuf, "%02d:%02d:%02d", tm->tm_hour, tm->tm_min,
|
||||
tm->tm_sec);
|
||||
else if (difftime < ONE_WEEK_SECOND)
|
||||
snprintf(buf, nbuf, "%dd%02dh%02dm", tm->tm_yday, tm->tm_hour,
|
||||
tm->tm_min);
|
||||
else
|
||||
snprintf(buf, nbuf, "%02dw%dd%02dh", tm->tm_yday / 7,
|
||||
tm->tm_yday - ((tm->tm_yday / 7) * 7), tm->tm_hour);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
void vty_multiline(struct vty *vty, const char *prefix, const char *format, ...)
|
||||
{
|
||||
char shortbuf[256];
|
||||
|
@ -80,6 +80,7 @@ enum { ISIS_UI_LEVEL_BRIEF,
|
||||
#include "lib/log.h"
|
||||
void log_multiline(int priority, const char *prefix, const char *format, ...)
|
||||
PRINTFRR(3, 4);
|
||||
char *log_uptime(time_t uptime, char *buf, size_t nbuf);
|
||||
struct vty;
|
||||
void vty_multiline(struct vty *vty, const char *prefix, const char *format, ...)
|
||||
PRINTFRR(3, 4);
|
||||
|
@ -454,6 +454,68 @@ const struct frr_yang_module_info frr_isisd_info = {
|
||||
.modify = isis_instance_mpls_te_router_address_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/enabled",
|
||||
.cbs = {
|
||||
.modify = isis_instance_segment_routing_enabled_modify,
|
||||
.cli_show = cli_show_isis_sr_enabled,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/srgb",
|
||||
.cbs = {
|
||||
.apply_finish = isis_instance_segment_routing_srgb_apply_finish,
|
||||
.cli_show = cli_show_isis_srgb,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/srgb/lower-bound",
|
||||
.cbs = {
|
||||
.modify = isis_instance_segment_routing_srgb_lower_bound_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/srgb/upper-bound",
|
||||
.cbs = {
|
||||
.modify = isis_instance_segment_routing_srgb_upper_bound_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/msd/node-msd",
|
||||
.cbs = {
|
||||
.modify = isis_instance_segment_routing_msd_node_msd_modify,
|
||||
.destroy = isis_instance_segment_routing_msd_node_msd_destroy,
|
||||
.cli_show = cli_show_isis_node_msd,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid",
|
||||
.cbs = {
|
||||
.create = isis_instance_segment_routing_prefix_sid_map_prefix_sid_create,
|
||||
.destroy = isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy,
|
||||
.pre_validate = isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate,
|
||||
.apply_finish = isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish,
|
||||
.cli_show = cli_show_isis_prefix_sid,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value-type",
|
||||
.cbs = {
|
||||
.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value",
|
||||
.cbs = {
|
||||
.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/last-hop-behavior",
|
||||
.cbs = {
|
||||
.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis",
|
||||
.cbs = {
|
||||
|
@ -172,6 +172,28 @@ int lib_interface_isis_ipv4_routing_modify(struct nb_cb_modify_args *args);
|
||||
int lib_interface_isis_ipv6_routing_modify(struct nb_cb_modify_args *args);
|
||||
int lib_interface_isis_circuit_type_modify(struct nb_cb_modify_args *args);
|
||||
int lib_interface_isis_bfd_monitoring_modify(struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_enabled_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_enabled_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_srgb_lower_bound_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_srgb_upper_bound_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_msd_node_msd_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_msd_node_msd_destroy(
|
||||
struct nb_cb_destroy_args *args);
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_create(
|
||||
struct nb_cb_create_args *args);
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy(
|
||||
struct nb_cb_destroy_args *args);
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int lib_interface_isis_csnp_interval_level_1_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int lib_interface_isis_csnp_interval_level_2_modify(
|
||||
@ -257,6 +279,10 @@ struct yang_data *
|
||||
lib_interface_isis_event_counters_authentication_fails_get_elem(
|
||||
struct nb_cb_get_elem_args *args);
|
||||
|
||||
/* Optional 'pre_validate' callbacks. */
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate(
|
||||
struct nb_cb_pre_validate_args *args);
|
||||
|
||||
/* Optional 'apply_finish' callbacks. */
|
||||
void ietf_backoff_delay_apply_finish(struct nb_cb_apply_finish_args *args);
|
||||
void area_password_apply_finish(struct nb_cb_apply_finish_args *args);
|
||||
@ -269,6 +295,10 @@ void default_info_origin_ipv6_apply_finish(
|
||||
void redistribute_apply_finish(const struct lyd_node *dnode, int family);
|
||||
void redistribute_ipv4_apply_finish(struct nb_cb_apply_finish_args *args);
|
||||
void redistribute_ipv6_apply_finish(struct nb_cb_apply_finish_args *args);
|
||||
void isis_instance_segment_routing_srgb_apply_finish(
|
||||
struct nb_cb_apply_finish_args *args);
|
||||
void isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish(
|
||||
struct nb_cb_apply_finish_args *args);
|
||||
|
||||
/* Optional 'cli_show' callbacks. */
|
||||
void cli_show_router_isis(struct vty *vty, struct lyd_node *dnode,
|
||||
@ -329,6 +359,14 @@ void cli_show_isis_mt_ipv6_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_sr_enabled(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_srgb(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_node_msd(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_prefix_sid(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_passive(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_password(struct vty *vty, struct lyd_node *dnode,
|
||||
|
@ -1402,6 +1402,289 @@ int isis_instance_mpls_te_router_address_destroy(
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/enabled
|
||||
*/
|
||||
int isis_instance_segment_routing_enabled_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
area->srdb.config.enabled = yang_dnode_get_bool(args->dnode, NULL);
|
||||
|
||||
if (area->srdb.config.enabled) {
|
||||
if (IS_DEBUG_ISIS(DEBUG_EVENTS))
|
||||
zlog_debug("SR: Segment Routing: OFF -> ON");
|
||||
|
||||
if (isis_sr_start(area) == 0)
|
||||
area->srdb.enabled = true;
|
||||
} else {
|
||||
if (IS_DEBUG_ISIS(DEBUG_EVENTS))
|
||||
zlog_debug("SR: Segment Routing: ON -> OFF");
|
||||
|
||||
isis_sr_stop(area);
|
||||
area->srdb.enabled = false;
|
||||
}
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/srgb
|
||||
*/
|
||||
void isis_instance_segment_routing_srgb_apply_finish(
|
||||
struct nb_cb_apply_finish_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
uint32_t lower_bound, upper_bound;
|
||||
int ret;
|
||||
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
lower_bound = yang_dnode_get_uint32(args->dnode, "./lower-bound");
|
||||
upper_bound = yang_dnode_get_uint32(args->dnode, "./upper-bound");
|
||||
|
||||
ret = isis_sr_cfg_srgb_update(area, lower_bound, upper_bound);
|
||||
if (area->srdb.config.enabled) {
|
||||
if (ret == 0)
|
||||
area->srdb.enabled = true;
|
||||
else {
|
||||
isis_sr_stop(area);
|
||||
area->srdb.enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/srgb/lower-bound
|
||||
*/
|
||||
int isis_instance_segment_routing_srgb_lower_bound_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
uint32_t lower_bound = yang_dnode_get_uint32(args->dnode, NULL);
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_VALIDATE:
|
||||
if (!IS_MPLS_UNRESERVED_LABEL(lower_bound)) {
|
||||
zlog_warn("Invalid SRGB lower bound: %" PRIu32,
|
||||
lower_bound);
|
||||
return NB_ERR_VALIDATION;
|
||||
}
|
||||
break;
|
||||
case NB_EV_PREPARE:
|
||||
case NB_EV_ABORT:
|
||||
case NB_EV_APPLY:
|
||||
break;
|
||||
}
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/srgb/upper-bound
|
||||
*/
|
||||
int isis_instance_segment_routing_srgb_upper_bound_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
uint32_t upper_bound = yang_dnode_get_uint32(args->dnode, NULL);
|
||||
|
||||
switch (args->event) {
|
||||
case NB_EV_VALIDATE:
|
||||
if (!IS_MPLS_UNRESERVED_LABEL(upper_bound)) {
|
||||
zlog_warn("Invalid SRGB upper bound: %" PRIu32,
|
||||
upper_bound);
|
||||
return NB_ERR_VALIDATION;
|
||||
}
|
||||
break;
|
||||
case NB_EV_PREPARE:
|
||||
case NB_EV_ABORT:
|
||||
case NB_EV_APPLY:
|
||||
break;
|
||||
}
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/msd/node-msd
|
||||
*/
|
||||
int isis_instance_segment_routing_msd_node_msd_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
area->srdb.config.msd = yang_dnode_get_uint8(args->dnode, NULL);
|
||||
|
||||
/* Update and regenerate LSP */
|
||||
lsp_regenerate_schedule(area, area->is_type, 0);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
int isis_instance_segment_routing_msd_node_msd_destroy(
|
||||
struct nb_cb_destroy_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
area->srdb.config.msd = 0;
|
||||
|
||||
/* Update and regenerate LSP */
|
||||
lsp_regenerate_schedule(area, area->is_type, 0);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid
|
||||
*/
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_create(
|
||||
struct nb_cb_create_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
struct prefix prefix;
|
||||
struct sr_prefix_cfg *pcfg;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
yang_dnode_get_prefix(&prefix, args->dnode, "./prefix");
|
||||
|
||||
pcfg = isis_sr_cfg_prefix_add(area, &prefix);
|
||||
nb_running_set_entry(args->dnode, pcfg);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy(
|
||||
struct nb_cb_destroy_args *args)
|
||||
{
|
||||
struct sr_prefix_cfg *pcfg;
|
||||
struct isis_area *area;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
pcfg = nb_running_unset_entry(args->dnode);
|
||||
area = pcfg->area;
|
||||
isis_sr_cfg_prefix_del(pcfg);
|
||||
lsp_regenerate_schedule(area, area->is_type, 0);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate(
|
||||
struct nb_cb_pre_validate_args *args)
|
||||
{
|
||||
uint32_t srgb_lbound;
|
||||
uint32_t srgb_ubound;
|
||||
uint32_t srgb_range;
|
||||
uint32_t sid;
|
||||
enum sr_sid_value_type sid_type;
|
||||
|
||||
srgb_lbound = yang_dnode_get_uint32(args->dnode,
|
||||
"../../srgb/lower-bound");
|
||||
srgb_ubound = yang_dnode_get_uint32(args->dnode,
|
||||
"../../srgb/upper-bound");
|
||||
sid = yang_dnode_get_uint32(args->dnode, "./sid-value");
|
||||
sid_type = yang_dnode_get_enum(args->dnode, "./sid-value-type");
|
||||
|
||||
srgb_range = srgb_ubound - srgb_lbound + 1;
|
||||
switch (sid_type) {
|
||||
case SR_SID_VALUE_TYPE_INDEX:
|
||||
if (sid >= srgb_range) {
|
||||
zlog_warn("SID index %u falls outside local SRGB range",
|
||||
sid);
|
||||
return NB_ERR_VALIDATION;
|
||||
}
|
||||
break;
|
||||
case SR_SID_VALUE_TYPE_ABSOLUTE:
|
||||
if (!IS_MPLS_UNRESERVED_LABEL(sid)) {
|
||||
zlog_warn("Invalid absolute SID %u", sid);
|
||||
return NB_ERR_VALIDATION;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
void isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish(
|
||||
struct nb_cb_apply_finish_args *args)
|
||||
{
|
||||
struct sr_prefix_cfg *pcfg;
|
||||
struct isis_area *area;
|
||||
|
||||
pcfg = nb_running_get_entry(args->dnode, NULL, true);
|
||||
area = pcfg->area;
|
||||
lsp_regenerate_schedule(area, area->is_type, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value-type
|
||||
*/
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct sr_prefix_cfg *pcfg;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
pcfg = nb_running_get_entry(args->dnode, NULL, true);
|
||||
pcfg->sid_type = yang_dnode_get_enum(args->dnode, NULL);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value
|
||||
*/
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct sr_prefix_cfg *pcfg;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
pcfg = nb_running_get_entry(args->dnode, NULL, true);
|
||||
pcfg->sid = yang_dnode_get_uint32(args->dnode, NULL);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/last-hop-behavior
|
||||
*/
|
||||
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct sr_prefix_cfg *pcfg;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
pcfg = nb_running_get_entry(args->dnode, NULL, true);
|
||||
pcfg->last_hop_behavior = yang_dnode_get_enum(args->dnode, NULL);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-interface:lib/interface/frr-isisd:isis
|
||||
*/
|
||||
|
@ -65,32 +65,19 @@ static struct isis_nexthop *isis_nexthop_create(int family, union g_addr *ip,
|
||||
{
|
||||
struct isis_nexthop *nexthop;
|
||||
|
||||
nexthop = nexthoplookup(isis->nexthops, family, ip, ifindex);
|
||||
if (nexthop) {
|
||||
nexthop->lock++;
|
||||
return nexthop;
|
||||
}
|
||||
|
||||
nexthop = XCALLOC(MTYPE_ISIS_NEXTHOP, sizeof(struct isis_nexthop));
|
||||
|
||||
nexthop->family = family;
|
||||
nexthop->ifindex = ifindex;
|
||||
nexthop->ip = *ip;
|
||||
listnode_add(isis->nexthops, nexthop);
|
||||
nexthop->lock++;
|
||||
isis_sr_nexthop_reset(&nexthop->sr);
|
||||
|
||||
return nexthop;
|
||||
}
|
||||
|
||||
static void isis_nexthop_delete(struct isis_nexthop *nexthop)
|
||||
{
|
||||
nexthop->lock--;
|
||||
if (nexthop->lock == 0) {
|
||||
listnode_delete(isis->nexthops, nexthop);
|
||||
XFREE(MTYPE_ISIS_NEXTHOP, nexthop);
|
||||
}
|
||||
|
||||
return;
|
||||
XFREE(MTYPE_ISIS_NEXTHOP, nexthop);
|
||||
}
|
||||
|
||||
static struct isis_nexthop *nexthoplookup(struct list *nexthops, int family,
|
||||
@ -143,6 +130,7 @@ static void adjinfo2nexthop(int family, struct list *nexthops,
|
||||
nh = isis_nexthop_create(
|
||||
AF_INET, &ip,
|
||||
adj->circuit->interface->ifindex);
|
||||
memcpy(nh->sysid, adj->sysid, sizeof(nh->sysid));
|
||||
listnode_add(nexthops, nh);
|
||||
break;
|
||||
}
|
||||
@ -157,6 +145,7 @@ static void adjinfo2nexthop(int family, struct list *nexthops,
|
||||
nh = isis_nexthop_create(
|
||||
AF_INET6, &ip,
|
||||
adj->circuit->interface->ifindex);
|
||||
memcpy(nh->sysid, adj->sysid, sizeof(nh->sysid));
|
||||
listnode_add(nexthops, nh);
|
||||
break;
|
||||
}
|
||||
|
@ -31,7 +31,8 @@ struct isis_nexthop {
|
||||
ifindex_t ifindex;
|
||||
int family;
|
||||
union g_addr ip;
|
||||
unsigned int lock;
|
||||
uint8_t sysid[ISIS_SYS_ID_LEN];
|
||||
struct sr_nexthop_info sr;
|
||||
};
|
||||
|
||||
struct isis_route_info {
|
||||
|
@ -1214,6 +1214,8 @@ static int isis_run_spf_cb(struct thread *thread)
|
||||
|
||||
isis_area_verify_routes(area);
|
||||
|
||||
isis_area_verify_sr(area);
|
||||
|
||||
/* walk all circuits and reset any spf specific flags */
|
||||
struct listnode *node;
|
||||
struct isis_circuit *circuit;
|
||||
|
1970
isisd/isis_sr.c
Normal file
1970
isisd/isis_sr.c
Normal file
File diff suppressed because it is too large
Load Diff
262
isisd/isis_sr.h
Normal file
262
isisd/isis_sr.h
Normal file
@ -0,0 +1,262 @@
|
||||
/*
|
||||
* This is an implementation of Segment Routing for IS-IS as per RFC 8667
|
||||
*
|
||||
* Copyright (C) 2019 Orange http://www.orange.com
|
||||
*
|
||||
* Author: Olivier Dugeon <olivier.dugeon@orange.com>
|
||||
* Contributor: Renato Westphal <renato@opensourcerouting.org> for NetDEF
|
||||
*
|
||||
* 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 _FRR_ISIS_SR_H
|
||||
#define _FRR_ISIS_SR_H
|
||||
|
||||
#include "lib/linklist.h"
|
||||
#include "lib/mpls.h"
|
||||
#include "lib/nexthop.h"
|
||||
#include "lib/typesafe.h"
|
||||
|
||||
#include "isisd/isis_tlvs.h"
|
||||
|
||||
/*
|
||||
* Segment Routing information is transported through the following Sub-TLVs:
|
||||
*
|
||||
* Sub-TLV Name Value TLVs
|
||||
* ---------------------------------------------------------------------
|
||||
* SID Label 1
|
||||
*
|
||||
* Prefix Segment Identifier 3 135, 235, 236 and 237
|
||||
*
|
||||
* Adjacency Segment Identifier 31 22, 23, 141, 222 and 223
|
||||
* LAN Adjacency Segment Identifier 32 22, 23, 141, 222 and 223
|
||||
*
|
||||
* Segment Routing Capability 2 242
|
||||
* Segment Routing Algorithm 19 242
|
||||
* Node Maximum Stack Depth (MSD) 23 242
|
||||
*
|
||||
* Sub-TLV definitions, serialization and de-serialization are defined
|
||||
* in isis_tlvs.[c,h].
|
||||
*/
|
||||
|
||||
#define SRGB_LOWER_BOUND 16000
|
||||
#define SRGB_UPPER_BOUND 23999
|
||||
|
||||
/* Segment Routing Data Base (SRDB) RB-Tree structure */
|
||||
PREDECL_RBTREE_UNIQ(srdb_node)
|
||||
PREDECL_RBTREE_UNIQ(srdb_node_prefix)
|
||||
PREDECL_RBTREE_UNIQ(srdb_area_prefix)
|
||||
PREDECL_RBTREE_UNIQ(srdb_prefix_cfg)
|
||||
|
||||
/* Segment Routing Adjacency-SID type. */
|
||||
enum sr_adj_type {
|
||||
ISIS_SR_ADJ_NORMAL = 0,
|
||||
ISIS_SR_LAN_BACKUP,
|
||||
};
|
||||
|
||||
/* Segment Routing Adjacency. */
|
||||
struct sr_adjacency {
|
||||
/* Adjacency type. */
|
||||
enum sr_adj_type type;
|
||||
|
||||
/* Adjacency-SID nexthop information. */
|
||||
struct {
|
||||
int family;
|
||||
union g_addr address;
|
||||
mpls_label_t label;
|
||||
} nexthop;
|
||||
|
||||
/* (LAN-)Adjacency-SID Sub-TLV. */
|
||||
union {
|
||||
struct isis_adj_sid *adj_sid;
|
||||
struct isis_lan_adj_sid *ladj_sid;
|
||||
} u;
|
||||
|
||||
/* Back pointer to IS-IS adjacency. */
|
||||
struct isis_adjacency *adj;
|
||||
};
|
||||
|
||||
/* Segment Routing Prefix-SID type. */
|
||||
enum sr_prefix_type {
|
||||
ISIS_SR_PREFIX_LOCAL = 0,
|
||||
ISIS_SR_PREFIX_REMOTE,
|
||||
};
|
||||
|
||||
/* Segment Routing Nexthop Information. */
|
||||
struct sr_nexthop_info {
|
||||
mpls_label_t label;
|
||||
time_t uptime;
|
||||
};
|
||||
|
||||
/* State of Object (SR-Node and SR-Prefix) stored in SRDB */
|
||||
enum srdb_state {
|
||||
SRDB_STATE_VALIDATED = 0,
|
||||
SRDB_STATE_NEW,
|
||||
SRDB_STATE_MODIFIED,
|
||||
SRDB_STATE_UNCHANGED
|
||||
};
|
||||
|
||||
/* Segment Routing Prefix-SID. */
|
||||
struct sr_prefix {
|
||||
/* SRDB RB-tree entries. */
|
||||
struct srdb_node_prefix_item node_entry;
|
||||
struct srdb_area_prefix_item area_entry;
|
||||
|
||||
/* IP prefix. */
|
||||
struct prefix prefix;
|
||||
|
||||
/* SID value, algorithm and flags subTLVs. */
|
||||
struct isis_prefix_sid sid;
|
||||
|
||||
/* Input label value. */
|
||||
mpls_label_t input_label;
|
||||
|
||||
/* Prefix-SID type. */
|
||||
enum sr_prefix_type type;
|
||||
union {
|
||||
struct {
|
||||
/* Information about this local Prefix-SID. */
|
||||
struct sr_nexthop_info info;
|
||||
} local;
|
||||
struct {
|
||||
/* Route associated to this remote Prefix-SID. */
|
||||
struct isis_route_info *rinfo;
|
||||
} remote;
|
||||
} u;
|
||||
|
||||
/* Backpointer to Segment Routing node. */
|
||||
struct sr_node *srn;
|
||||
|
||||
/* SR-Prefix State used while the LSPDB is being parsed. */
|
||||
enum srdb_state state;
|
||||
};
|
||||
|
||||
/* Segment Routing node. */
|
||||
struct sr_node {
|
||||
/* SRDB RB-tree entry. */
|
||||
struct srdb_node_item entry;
|
||||
|
||||
/* IS-IS level: ISIS_LEVEL1 or ISIS_LEVEL2. */
|
||||
int level;
|
||||
|
||||
/* IS-IS node identifier. */
|
||||
uint8_t sysid[ISIS_SYS_ID_LEN];
|
||||
|
||||
/* Segment Routing node capabilities (SRGB, SR Algorithms) subTLVs. */
|
||||
struct isis_router_cap cap;
|
||||
|
||||
/* List of Prefix-SIDs advertised by this node. */
|
||||
struct srdb_node_prefix_head prefix_sids;
|
||||
|
||||
/* Backpointer to IS-IS area. */
|
||||
struct isis_area *area;
|
||||
|
||||
/* SR-Node State used while the LSPDB is being parsed. */
|
||||
enum srdb_state state;
|
||||
};
|
||||
|
||||
/* SID type. NOTE: these values must be in sync with the YANG module. */
|
||||
enum sr_sid_value_type {
|
||||
SR_SID_VALUE_TYPE_INDEX = 0,
|
||||
SR_SID_VALUE_TYPE_ABSOLUTE = 1,
|
||||
};
|
||||
|
||||
#define IS_SID_VALUE(flag) CHECK_FLAG(flag, ISIS_PREFIX_SID_VALUE)
|
||||
|
||||
/* Last Hop Behavior. NOTE: these values must be in sync with the YANG module */
|
||||
enum sr_last_hop_behavior {
|
||||
SR_LAST_HOP_BEHAVIOR_EXP_NULL = 0,
|
||||
SR_LAST_HOP_BEHAVIOR_NO_PHP = 1,
|
||||
SR_LAST_HOP_BEHAVIOR_PHP = 2,
|
||||
};
|
||||
|
||||
/* Segment Routing Prefix-SID configuration. */
|
||||
struct sr_prefix_cfg {
|
||||
/* SRDB RB-tree entry. */
|
||||
struct srdb_prefix_cfg_item entry;
|
||||
|
||||
/* IP prefix. */
|
||||
struct prefix prefix;
|
||||
|
||||
/* SID value. */
|
||||
uint32_t sid;
|
||||
|
||||
/* SID value type. */
|
||||
enum sr_sid_value_type sid_type;
|
||||
|
||||
/* SID last hop behavior. */
|
||||
enum sr_last_hop_behavior last_hop_behavior;
|
||||
|
||||
/* Does this Prefix-SID refer to a loopback address (Node-SID)? */
|
||||
bool node_sid;
|
||||
|
||||
/* Backpointer to IS-IS area. */
|
||||
struct isis_area *area;
|
||||
};
|
||||
|
||||
/* Per-area IS-IS Segment Routing Data Base (SRDB). */
|
||||
struct isis_sr_db {
|
||||
/* Global Operational status of Segment Routing. */
|
||||
bool enabled;
|
||||
|
||||
/* List of local Adjacency-SIDs. */
|
||||
struct list *adj_sids;
|
||||
|
||||
/* Segment Routing Node information per IS-IS level. */
|
||||
struct srdb_node_head sr_nodes[ISIS_LEVELS];
|
||||
|
||||
/* Segment Routing Prefix-SIDs per IS-IS level. */
|
||||
struct srdb_area_prefix_head prefix_sids[ISIS_LEVELS];
|
||||
|
||||
/* Area Segment Routing configuration. */
|
||||
struct {
|
||||
/* Administrative status of Segment Routing. */
|
||||
bool enabled;
|
||||
|
||||
/* Segment Routing Global Block lower & upper bound. */
|
||||
uint32_t srgb_lower_bound;
|
||||
uint32_t srgb_upper_bound;
|
||||
|
||||
/* Maximum SID Depth supported by the node. */
|
||||
uint8_t msd;
|
||||
|
||||
/* Prefix-SID mappings. */
|
||||
struct srdb_prefix_cfg_head prefix_sids;
|
||||
} config;
|
||||
};
|
||||
|
||||
/* Prototypes. */
|
||||
extern int isis_sr_cfg_srgb_update(struct isis_area *area, uint32_t lower_bound,
|
||||
uint32_t upper_bound);
|
||||
extern struct sr_prefix_cfg *
|
||||
isis_sr_cfg_prefix_add(struct isis_area *area, const struct prefix *prefix);
|
||||
extern void isis_sr_cfg_prefix_del(struct sr_prefix_cfg *pcfg);
|
||||
extern struct sr_prefix_cfg *
|
||||
isis_sr_cfg_prefix_find(struct isis_area *area, union prefixconstptr prefix);
|
||||
extern void isis_sr_prefix_cfg2subtlv(const struct sr_prefix_cfg *pcfg,
|
||||
bool external,
|
||||
struct isis_prefix_sid *psid);
|
||||
extern void isis_sr_nexthop_update(struct sr_nexthop_info *srnh,
|
||||
mpls_label_t label);
|
||||
extern void isis_sr_nexthop_reset(struct sr_nexthop_info *srnh);
|
||||
extern void isis_area_verify_sr(struct isis_area *area);
|
||||
extern int isis_sr_start(struct isis_area *area);
|
||||
extern void isis_sr_stop(struct isis_area *area);
|
||||
extern void isis_sr_area_init(struct isis_area *area);
|
||||
extern void isis_sr_area_term(struct isis_area *area);
|
||||
extern void isis_sr_init(void);
|
||||
extern void isis_sr_term(void);
|
||||
|
||||
#endif /* _FRR_ISIS_SR_H */
|
@ -43,9 +43,10 @@
|
||||
#include "isisd/isis_pdu.h"
|
||||
#include "isisd/isis_lsp.h"
|
||||
#include "isisd/isis_te.h"
|
||||
#include "isisd/isis_sr.h"
|
||||
|
||||
DEFINE_MTYPE_STATIC(ISISD, ISIS_TLV, "ISIS TLVs")
|
||||
DEFINE_MTYPE_STATIC(ISISD, ISIS_SUBTLV, "ISIS Sub-TLVs")
|
||||
DEFINE_MTYPE(ISISD, ISIS_SUBTLV, "ISIS Sub-TLVs")
|
||||
DEFINE_MTYPE_STATIC(ISISD, ISIS_MT_ITEM_LIST, "ISIS MT Item Lists")
|
||||
|
||||
typedef int (*unpack_tlv_func)(enum isis_tlv_context context, uint8_t tlv_type,
|
||||
@ -283,7 +284,7 @@ static void format_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
|
||||
sbuf_push(buf, indent,
|
||||
"Unidir. Utilized Bandwidth: %g (Bytes/sec)\n",
|
||||
exts->use_bw);
|
||||
/* Segment Routing Adjacency */
|
||||
/* Segment Routing Adjacency as per RFC8667 section #2.2.1 */
|
||||
if (IS_SUBTLV(exts, EXT_ADJ_SID)) {
|
||||
struct isis_adj_sid *adj;
|
||||
|
||||
@ -314,6 +315,7 @@ static void format_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
|
||||
: '0');
|
||||
}
|
||||
}
|
||||
/* Segment Routing LAN-Adjacency as per RFC8667 section #2.2.2 */
|
||||
if (IS_SUBTLV(exts, EXT_LAN_ADJ_SID)) {
|
||||
struct isis_lan_adj_sid *lan;
|
||||
|
||||
@ -475,6 +477,7 @@ static int pack_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
|
||||
stream_putc(s, ISIS_SUBTLV_DEF_SIZE);
|
||||
stream_putf(s, exts->use_bw);
|
||||
}
|
||||
/* Segment Routing Adjacency as per RFC8667 section #2.2.1 */
|
||||
if (IS_SUBTLV(exts, EXT_ADJ_SID)) {
|
||||
struct isis_adj_sid *adj;
|
||||
|
||||
@ -494,6 +497,7 @@ static int pack_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
|
||||
|
||||
}
|
||||
}
|
||||
/* Segment Routing LAN-Adjacency as per RFC8667 section #2.2.2 */
|
||||
if (IS_SUBTLV(exts, EXT_LAN_ADJ_SID)) {
|
||||
struct isis_lan_adj_sid *lan;
|
||||
|
||||
@ -720,7 +724,7 @@ static int unpack_item_ext_subtlvs(uint16_t mtid, uint8_t len, struct stream *s,
|
||||
SET_SUBTLV(exts, EXT_USE_BW);
|
||||
}
|
||||
break;
|
||||
/* Segment Routing Adjacency */
|
||||
/* Segment Routing Adjacency as per RFC8667 section #2.2.1 */
|
||||
case ISIS_SUBTLV_ADJ_SID:
|
||||
if (subtlv_len != ISIS_SUBTLV_ADJ_SID_SIZE
|
||||
&& subtlv_len != ISIS_SUBTLV_ADJ_SID_SIZE + 1) {
|
||||
@ -748,6 +752,7 @@ static int unpack_item_ext_subtlvs(uint16_t mtid, uint8_t len, struct stream *s,
|
||||
SET_SUBTLV(exts, EXT_ADJ_SID);
|
||||
}
|
||||
break;
|
||||
/* Segment Routing LAN-Adjacency as per RFC8667 section 2.2.2 */
|
||||
case ISIS_SUBTLV_LAN_ADJ_SID:
|
||||
if (subtlv_len != ISIS_SUBTLV_LAN_ADJ_SID_SIZE
|
||||
&& subtlv_len != ISIS_SUBTLV_LAN_ADJ_SID_SIZE + 1) {
|
||||
@ -788,7 +793,7 @@ static int unpack_item_ext_subtlvs(uint16_t mtid, uint8_t len, struct stream *s,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Functions for Sub-TLV 3 SR Prefix-SID */
|
||||
/* Functions for Sub-TLV 3 SR Prefix-SID as per RFC8667 section 2.1 */
|
||||
static struct isis_item *copy_item_prefix_sid(struct isis_item *i)
|
||||
{
|
||||
struct isis_prefix_sid *sid = (struct isis_prefix_sid *)i;
|
||||
@ -887,7 +892,11 @@ static int unpack_item_prefix_sid(uint16_t mtid, uint8_t len, struct stream *s,
|
||||
|
||||
if (sid.flags & ISIS_PREFIX_SID_VALUE) {
|
||||
sid.value = stream_get3(s);
|
||||
sid.value &= MPLS_LABEL_VALUE_MASK;
|
||||
if (!IS_MPLS_UNRESERVED_LABEL(sid.value)) {
|
||||
sbuf_push(log, indent, "Invalid absolute SID %u\n",
|
||||
sid.value);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
sid.value = stream_getl(s);
|
||||
}
|
||||
@ -2580,7 +2589,7 @@ out:
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Functions related to TLV 242 Router Capability */
|
||||
/* Functions related to TLV 242 Router Capability as per RFC7981 */
|
||||
static struct isis_router_cap *copy_tlv_router_cap(
|
||||
const struct isis_router_cap *router_cap)
|
||||
{
|
||||
@ -2609,7 +2618,7 @@ static void format_tlv_router_cap(const struct isis_router_cap *router_cap,
|
||||
router_cap->flags & ISIS_ROUTER_CAP_FLAG_D ? '1' : '0',
|
||||
router_cap->flags & ISIS_ROUTER_CAP_FLAG_S ? '1' : '0');
|
||||
|
||||
/* SR Global Block */
|
||||
/* Segment Routing Global Block as per RFC8667 section #3.1 */
|
||||
if (router_cap->srgb.range_size != 0)
|
||||
sbuf_push(buf, indent,
|
||||
" Segment Routing: I:%s V:%s, SRGB Base: %d Range: %d\n",
|
||||
@ -2618,12 +2627,12 @@ static void format_tlv_router_cap(const struct isis_router_cap *router_cap,
|
||||
router_cap->srgb.lower_bound,
|
||||
router_cap->srgb.range_size);
|
||||
|
||||
/* SR Algorithms */
|
||||
/* Segment Routing Algorithms as per RFC8667 section #3.2 */
|
||||
if (router_cap->algo[0] != SR_ALGORITHM_UNSET) {
|
||||
sbuf_push(buf, indent, " Algorithm: %s",
|
||||
router_cap->algo[0] == 0 ? "0: SPF"
|
||||
: "0: Strict SPF");
|
||||
for (int i = 0; i < SR_ALGORITHM_COUNT; i++)
|
||||
for (int i = 1; i < SR_ALGORITHM_COUNT; i++)
|
||||
if (router_cap->algo[i] != SR_ALGORITHM_UNSET)
|
||||
sbuf_push(buf, indent, " %s",
|
||||
router_cap->algo[1] == 0
|
||||
@ -2632,7 +2641,7 @@ static void format_tlv_router_cap(const struct isis_router_cap *router_cap,
|
||||
sbuf_push(buf, indent, "\n");
|
||||
}
|
||||
|
||||
/* SR Node MSSD */
|
||||
/* Segment Routing Node MSD as per RFC8491 section #2 */
|
||||
if (router_cap->msd != 0)
|
||||
sbuf_push(buf, indent, " Node MSD: %d\n", router_cap->msd);
|
||||
}
|
||||
@ -2669,7 +2678,7 @@ static int pack_tlv_router_cap(const struct isis_router_cap *router_cap,
|
||||
stream_put_ipv4(s, router_cap->router_id.s_addr);
|
||||
stream_putc(s, router_cap->flags);
|
||||
|
||||
/* Add SRGB if set */
|
||||
/* Add SRGB if set as per RFC8667 section #3.1 */
|
||||
if ((router_cap->srgb.range_size != 0)
|
||||
&& (router_cap->srgb.lower_bound != 0)) {
|
||||
stream_putc(s, ISIS_SUBTLV_SID_LABEL_RANGE);
|
||||
@ -2680,7 +2689,7 @@ static int pack_tlv_router_cap(const struct isis_router_cap *router_cap,
|
||||
stream_putc(s, ISIS_SUBTLV_SID_LABEL_SIZE);
|
||||
stream_put3(s, router_cap->srgb.lower_bound);
|
||||
|
||||
/* Then SR Algorithm if set */
|
||||
/* Then SR Algorithm if set as per RFC8667 section #3.2 */
|
||||
for (nb_algo = 0; nb_algo < SR_ALGORITHM_COUNT; nb_algo++)
|
||||
if (router_cap->algo[nb_algo] == SR_ALGORITHM_UNSET)
|
||||
break;
|
||||
@ -2690,7 +2699,7 @@ static int pack_tlv_router_cap(const struct isis_router_cap *router_cap,
|
||||
for (int i = 0; i < nb_algo; i++)
|
||||
stream_putc(s, router_cap->algo[i]);
|
||||
}
|
||||
/* And finish with MSD if set */
|
||||
/* And finish with MSD if set as per RFC8491 section #2 */
|
||||
if (router_cap->msd != 0) {
|
||||
stream_putc(s, ISIS_SUBTLV_NODE_MSD);
|
||||
stream_putc(s, ISIS_SUBTLV_NODE_MSD_SIZE);
|
||||
@ -4413,10 +4422,22 @@ static void tlvs_protocols_supported_to_adj(struct isis_tlvs *tlvs,
|
||||
memcpy(adj->nlpids.nlpids, reduced.nlpids, reduced.count);
|
||||
}
|
||||
|
||||
DEFINE_HOOK(isis_adj_ip_enabled_hook, (struct isis_adjacency *adj, int family),
|
||||
(adj, family))
|
||||
DEFINE_HOOK(isis_adj_ip_disabled_hook,
|
||||
(struct isis_adjacency *adj, int family), (adj, family))
|
||||
|
||||
static void tlvs_ipv4_addresses_to_adj(struct isis_tlvs *tlvs,
|
||||
struct isis_adjacency *adj,
|
||||
bool *changed)
|
||||
{
|
||||
bool ipv4_enabled = false;
|
||||
|
||||
if (adj->ipv4_address_count == 0 && tlvs->ipv4_address.count > 0)
|
||||
ipv4_enabled = true;
|
||||
else if (adj->ipv4_address_count > 0 && tlvs->ipv4_address.count == 0)
|
||||
hook_call(isis_adj_ip_disabled_hook, adj, AF_INET);
|
||||
|
||||
if (adj->ipv4_address_count != tlvs->ipv4_address.count) {
|
||||
*changed = true;
|
||||
adj->ipv4_address_count = tlvs->ipv4_address.count;
|
||||
@ -4440,12 +4461,22 @@ static void tlvs_ipv4_addresses_to_adj(struct isis_tlvs *tlvs,
|
||||
*changed = true;
|
||||
adj->ipv4_addresses[i] = addr->addr;
|
||||
}
|
||||
|
||||
if (ipv4_enabled)
|
||||
hook_call(isis_adj_ip_enabled_hook, adj, AF_INET);
|
||||
}
|
||||
|
||||
static void tlvs_ipv6_addresses_to_adj(struct isis_tlvs *tlvs,
|
||||
struct isis_adjacency *adj,
|
||||
bool *changed)
|
||||
{
|
||||
bool ipv6_enabled = false;
|
||||
|
||||
if (adj->ipv6_address_count == 0 && tlvs->ipv6_address.count > 0)
|
||||
ipv6_enabled = true;
|
||||
else if (adj->ipv6_address_count > 0 && tlvs->ipv6_address.count == 0)
|
||||
hook_call(isis_adj_ip_disabled_hook, adj, AF_INET6);
|
||||
|
||||
if (adj->ipv6_address_count != tlvs->ipv6_address.count) {
|
||||
*changed = true;
|
||||
adj->ipv6_address_count = tlvs->ipv6_address.count;
|
||||
@ -4469,6 +4500,9 @@ static void tlvs_ipv6_addresses_to_adj(struct isis_tlvs *tlvs,
|
||||
*changed = true;
|
||||
adj->ipv6_addresses[i] = addr->addr;
|
||||
}
|
||||
|
||||
if (ipv6_enabled)
|
||||
hook_call(isis_adj_ip_enabled_hook, adj, AF_INET6);
|
||||
}
|
||||
|
||||
void isis_tlvs_to_adj(struct isis_tlvs *tlvs, struct isis_adjacency *adj,
|
||||
@ -4572,6 +4606,7 @@ void isis_tlvs_add_oldstyle_ip_reach(struct isis_tlvs *tlvs,
|
||||
append_item(&tlvs->oldstyle_ip_reach, (struct isis_item *)r);
|
||||
}
|
||||
|
||||
/* Add IS-IS SR Adjacency-SID subTLVs */
|
||||
void isis_tlvs_add_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
struct isis_adj_sid *adj)
|
||||
{
|
||||
@ -4579,6 +4614,7 @@ void isis_tlvs_add_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
SET_SUBTLV(exts, EXT_ADJ_SID);
|
||||
}
|
||||
|
||||
/* Delete IS-IS SR Adjacency-SID subTLVs */
|
||||
void isis_tlvs_del_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
struct isis_adj_sid *adj)
|
||||
{
|
||||
@ -4588,6 +4624,7 @@ void isis_tlvs_del_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
UNSET_SUBTLV(exts, EXT_ADJ_SID);
|
||||
}
|
||||
|
||||
/* Add IS-IS SR LAN-Adjacency-SID subTLVs */
|
||||
void isis_tlvs_add_lan_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
struct isis_lan_adj_sid *lan)
|
||||
{
|
||||
@ -4595,6 +4632,7 @@ void isis_tlvs_add_lan_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
SET_SUBTLV(exts, EXT_LAN_ADJ_SID);
|
||||
}
|
||||
|
||||
/* Delete IS-IS SR LAN-Adjacency-SID subTLVs */
|
||||
void isis_tlvs_del_lan_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
struct isis_lan_adj_sid *lan)
|
||||
{
|
||||
@ -4605,24 +4643,42 @@ void isis_tlvs_del_lan_adj_sid(struct isis_ext_subtlvs *exts,
|
||||
}
|
||||
|
||||
void isis_tlvs_add_extended_ip_reach(struct isis_tlvs *tlvs,
|
||||
struct prefix_ipv4 *dest, uint32_t metric)
|
||||
struct prefix_ipv4 *dest, uint32_t metric,
|
||||
bool external, struct sr_prefix_cfg *pcfg)
|
||||
{
|
||||
struct isis_extended_ip_reach *r = XCALLOC(MTYPE_ISIS_TLV, sizeof(*r));
|
||||
|
||||
r->metric = metric;
|
||||
memcpy(&r->prefix, dest, sizeof(*dest));
|
||||
apply_mask_ipv4(&r->prefix);
|
||||
if (pcfg) {
|
||||
struct isis_prefix_sid *psid =
|
||||
XCALLOC(MTYPE_ISIS_SUBTLV, sizeof(*psid));
|
||||
|
||||
isis_sr_prefix_cfg2subtlv(pcfg, external, psid);
|
||||
r->subtlvs = isis_alloc_subtlvs(ISIS_CONTEXT_SUBTLV_IP_REACH);
|
||||
append_item(&r->subtlvs->prefix_sids, (struct isis_item *)psid);
|
||||
}
|
||||
append_item(&tlvs->extended_ip_reach, (struct isis_item *)r);
|
||||
}
|
||||
|
||||
void isis_tlvs_add_ipv6_reach(struct isis_tlvs *tlvs, uint16_t mtid,
|
||||
struct prefix_ipv6 *dest, uint32_t metric)
|
||||
struct prefix_ipv6 *dest, uint32_t metric,
|
||||
bool external, struct sr_prefix_cfg *pcfg)
|
||||
{
|
||||
struct isis_ipv6_reach *r = XCALLOC(MTYPE_ISIS_TLV, sizeof(*r));
|
||||
|
||||
r->metric = metric;
|
||||
memcpy(&r->prefix, dest, sizeof(*dest));
|
||||
apply_mask_ipv6(&r->prefix);
|
||||
if (pcfg) {
|
||||
struct isis_prefix_sid *psid =
|
||||
XCALLOC(MTYPE_ISIS_SUBTLV, sizeof(*psid));
|
||||
|
||||
isis_sr_prefix_cfg2subtlv(pcfg, external, psid);
|
||||
r->subtlvs = isis_alloc_subtlvs(ISIS_CONTEXT_SUBTLV_IP_REACH);
|
||||
append_item(&r->subtlvs->prefix_sids, (struct isis_item *)psid);
|
||||
}
|
||||
|
||||
struct isis_item_list *l;
|
||||
l = (mtid == ISIS_MT_IPV4_UNICAST)
|
||||
@ -4636,7 +4692,7 @@ void isis_tlvs_add_ipv6_dstsrc_reach(struct isis_tlvs *tlvs, uint16_t mtid,
|
||||
struct prefix_ipv6 *src,
|
||||
uint32_t metric)
|
||||
{
|
||||
isis_tlvs_add_ipv6_reach(tlvs, mtid, dest, metric);
|
||||
isis_tlvs_add_ipv6_reach(tlvs, mtid, dest, metric, false, NULL);
|
||||
struct isis_item_list *l = isis_get_mt_items(&tlvs->mt_ipv6_reach,
|
||||
mtid);
|
||||
|
||||
|
@ -28,8 +28,11 @@
|
||||
#include "openbsd-tree.h"
|
||||
#include "prefix.h"
|
||||
|
||||
DECLARE_MTYPE(ISIS_SUBTLV)
|
||||
|
||||
struct lspdb_head;
|
||||
struct isis_subtlvs;
|
||||
struct sr_prefix_cfg;
|
||||
|
||||
struct isis_area_address;
|
||||
struct isis_area_address {
|
||||
@ -132,10 +135,7 @@ struct isis_threeway_adj {
|
||||
uint32_t neighbor_circuit_id;
|
||||
};
|
||||
|
||||
/*
|
||||
* Segment Routing subTLV's as per
|
||||
* draft-ietf-isis-segment-routing-extension-25
|
||||
*/
|
||||
/* Segment Routing subTLV's as per RFC8667 */
|
||||
#define ISIS_SUBTLV_SRGB_FLAG_I 0x80
|
||||
#define ISIS_SUBTLV_SRGB_FLAG_V 0x40
|
||||
#define IS_SR_IPV4(srgb) (srgb.flags & ISIS_SUBTLV_SRGB_FLAG_I)
|
||||
@ -213,7 +213,7 @@ struct isis_router_cap {
|
||||
struct in_addr router_id;
|
||||
uint8_t flags;
|
||||
|
||||
/* draft-ietf-segment-routing-extensions-25 */
|
||||
/* RFC 8667 section #3 */
|
||||
struct isis_srgb srgb;
|
||||
uint8_t algo[SR_ALGORITHM_COUNT];
|
||||
/* RFC 8491 */
|
||||
@ -341,7 +341,7 @@ struct isis_subtlvs {
|
||||
|
||||
/* draft-baker-ipv6-isis-dst-src-routing-06 */
|
||||
struct prefix_ipv6 *source_prefix;
|
||||
/* draft-ietf-isis-segment-routing-extensions-25 */
|
||||
/* RFC 8667 section #2.4 */
|
||||
struct isis_item_list prefix_sids;
|
||||
};
|
||||
|
||||
@ -391,15 +391,17 @@ enum isis_tlv_type {
|
||||
/* RFC 5307 */
|
||||
ISIS_SUBTLV_LLRI = 4,
|
||||
|
||||
/* RFC 8491 */
|
||||
ISIS_SUBTLV_NODE_MSD = 23,
|
||||
|
||||
/* RFC 5316 */
|
||||
ISIS_SUBTLV_RAS = 24,
|
||||
ISIS_SUBTLV_RIP = 25,
|
||||
|
||||
/* draft-isis-segment-routing-extension-25 */
|
||||
/* RFC 8667 section #2 */
|
||||
ISIS_SUBTLV_SID_LABEL = 1,
|
||||
ISIS_SUBTLV_SID_LABEL_RANGE = 2,
|
||||
ISIS_SUBTLV_ALGORITHM = 19,
|
||||
ISIS_SUBTLV_NODE_MSD = 23,
|
||||
ISIS_SUBTLV_PREFIX_SID = 3,
|
||||
ISIS_SUBTLV_ADJ_SID = 31,
|
||||
ISIS_SUBTLV_LAN_ADJ_SID = 32,
|
||||
@ -418,21 +420,26 @@ enum isis_tlv_type {
|
||||
|
||||
/* subTLVs size for TE and SR */
|
||||
enum ext_subtlv_size {
|
||||
/* RFC 5307 */
|
||||
ISIS_SUBTLV_LLRI_SIZE = 8,
|
||||
|
||||
/* RFC 5305 & RFC 6119 */
|
||||
ISIS_SUBTLV_UNRSV_BW_SIZE = 32,
|
||||
ISIS_SUBTLV_TE_METRIC_SIZE = 3,
|
||||
ISIS_SUBTLV_IPV6_ADDR_SIZE = 16,
|
||||
|
||||
/* draft-isis-segment-routing-extension-25 */
|
||||
/* RFC 8491 */
|
||||
ISIS_SUBTLV_NODE_MSD_SIZE = 2,
|
||||
|
||||
/* RFC 8667 section #2 */
|
||||
ISIS_SUBTLV_SID_LABEL_SIZE = 3,
|
||||
ISIS_SUBTLV_SID_LABEL_RANGE_SIZE = 9,
|
||||
ISIS_SUBTLV_ALGORITHM_SIZE = 4,
|
||||
ISIS_SUBTLV_NODE_MSD_SIZE = 2,
|
||||
ISIS_SUBTLV_ADJ_SID_SIZE = 5,
|
||||
ISIS_SUBTLV_LAN_ADJ_SID_SIZE = 11,
|
||||
ISIS_SUBTLV_PREFIX_SID_SIZE = 5,
|
||||
|
||||
/* RFC 7810 */
|
||||
ISIS_SUBTLV_MM_DELAY_SIZE = 8,
|
||||
|
||||
ISIS_SUBTLV_HDR_SIZE = 2,
|
||||
@ -580,9 +587,11 @@ void isis_tlvs_set_te_router_id(struct isis_tlvs *tlvs,
|
||||
void isis_tlvs_add_oldstyle_ip_reach(struct isis_tlvs *tlvs,
|
||||
struct prefix_ipv4 *dest, uint8_t metric);
|
||||
void isis_tlvs_add_extended_ip_reach(struct isis_tlvs *tlvs,
|
||||
struct prefix_ipv4 *dest, uint32_t metric);
|
||||
struct prefix_ipv4 *dest, uint32_t metric,
|
||||
bool external, struct sr_prefix_cfg *pcfg);
|
||||
void isis_tlvs_add_ipv6_reach(struct isis_tlvs *tlvs, uint16_t mtid,
|
||||
struct prefix_ipv6 *dest, uint32_t metric);
|
||||
struct prefix_ipv6 *dest, uint32_t metric,
|
||||
bool external, struct sr_prefix_cfg *pcfg);
|
||||
void isis_tlvs_add_ipv6_dstsrc_reach(struct isis_tlvs *tlvs, uint16_t mtid,
|
||||
struct prefix_ipv6 *dest,
|
||||
struct prefix_ipv6 *src,
|
||||
|
@ -49,9 +49,18 @@
|
||||
#include "isisd/isis_lsp.h"
|
||||
#include "isisd/isis_route.h"
|
||||
#include "isisd/isis_zebra.h"
|
||||
#include "isisd/isis_adjacency.h"
|
||||
#include "isisd/isis_te.h"
|
||||
#include "isisd/isis_sr.h"
|
||||
|
||||
struct zclient *zclient = NULL;
|
||||
struct zclient *zclient;
|
||||
static struct zclient *zclient_sync;
|
||||
|
||||
/* List of chunks of labels externally assigned by zebra. */
|
||||
static struct list *label_chunk_list;
|
||||
static struct listnode *current_label_chunk;
|
||||
|
||||
static void isis_zebra_label_manager_connect(void);
|
||||
|
||||
/* Router-id update message from zebra. */
|
||||
static int isis_router_id_update_zebra(ZAPI_CALLBACK_ARGS)
|
||||
@ -245,6 +254,160 @@ void isis_zebra_route_del_route(struct prefix *prefix,
|
||||
zclient_route_send(ZEBRA_ROUTE_DELETE, zclient, &api);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install Prefix-SID in the forwarding plane through Zebra.
|
||||
*
|
||||
* @param srp Segment Routing Prefix-SID
|
||||
*/
|
||||
static void isis_zebra_prefix_install_prefix_sid(const struct sr_prefix *srp)
|
||||
{
|
||||
struct zapi_labels zl;
|
||||
struct zapi_nexthop *znh;
|
||||
struct listnode *node;
|
||||
struct isis_nexthop *nexthop;
|
||||
struct interface *ifp;
|
||||
|
||||
/* Prepare message. */
|
||||
memset(&zl, 0, sizeof(zl));
|
||||
zl.type = ZEBRA_LSP_ISIS_SR;
|
||||
zl.local_label = srp->input_label;
|
||||
|
||||
switch (srp->type) {
|
||||
case ISIS_SR_PREFIX_LOCAL:
|
||||
ifp = if_lookup_by_name("lo", VRF_DEFAULT);
|
||||
if (!ifp) {
|
||||
zlog_warn(
|
||||
"%s: couldn't install Prefix-SID %pFX: loopback interface not found",
|
||||
__func__, &srp->prefix);
|
||||
return;
|
||||
}
|
||||
|
||||
znh = &zl.nexthops[zl.nexthop_num++];
|
||||
znh->type = NEXTHOP_TYPE_IFINDEX;
|
||||
znh->ifindex = ifp->ifindex;
|
||||
znh->label_num = 1;
|
||||
znh->labels[0] = MPLS_LABEL_IMPLICIT_NULL;
|
||||
break;
|
||||
case ISIS_SR_PREFIX_REMOTE:
|
||||
/* Update route in the RIB too. */
|
||||
SET_FLAG(zl.message, ZAPI_LABELS_FTN);
|
||||
zl.route.prefix = srp->prefix;
|
||||
zl.route.type = ZEBRA_ROUTE_ISIS;
|
||||
zl.route.instance = 0;
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(srp->u.remote.rinfo->nexthops, node,
|
||||
nexthop)) {
|
||||
if (nexthop->sr.label == MPLS_INVALID_LABEL)
|
||||
continue;
|
||||
|
||||
if (zl.nexthop_num >= MULTIPATH_NUM)
|
||||
break;
|
||||
|
||||
znh = &zl.nexthops[zl.nexthop_num++];
|
||||
znh->type = (srp->prefix.family == AF_INET)
|
||||
? NEXTHOP_TYPE_IPV4_IFINDEX
|
||||
: NEXTHOP_TYPE_IPV6_IFINDEX;
|
||||
znh->gate = nexthop->ip;
|
||||
znh->ifindex = nexthop->ifindex;
|
||||
znh->label_num = 1;
|
||||
znh->labels[0] = nexthop->sr.label;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* Send message to zebra. */
|
||||
(void)zebra_send_mpls_labels(zclient, ZEBRA_MPLS_LABELS_REPLACE, &zl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstall Prefix-SID from the forwarding plane through Zebra.
|
||||
*
|
||||
* @param srp Segment Routing Prefix-SID
|
||||
*/
|
||||
static void isis_zebra_uninstall_prefix_sid(const struct sr_prefix *srp)
|
||||
{
|
||||
struct zapi_labels zl;
|
||||
|
||||
/* Prepare message. */
|
||||
memset(&zl, 0, sizeof(zl));
|
||||
zl.type = ZEBRA_LSP_ISIS_SR;
|
||||
zl.local_label = srp->input_label;
|
||||
|
||||
if (srp->type == ISIS_SR_PREFIX_REMOTE) {
|
||||
/* Update route in the RIB too. */
|
||||
SET_FLAG(zl.message, ZAPI_LABELS_FTN);
|
||||
zl.route.prefix = srp->prefix;
|
||||
zl.route.type = ZEBRA_ROUTE_ISIS;
|
||||
zl.route.instance = 0;
|
||||
}
|
||||
|
||||
/* Send message to zebra. */
|
||||
(void)zebra_send_mpls_labels(zclient, ZEBRA_MPLS_LABELS_DELETE, &zl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Prefix-SID to ZEBRA for installation or deletion.
|
||||
*
|
||||
* @param cmd ZEBRA_MPLS_LABELS_REPLACE or ZEBRA_ROUTE_DELETE
|
||||
* @param srp Segment Routing Prefix-SID
|
||||
*/
|
||||
void isis_zebra_send_prefix_sid(int cmd, const struct sr_prefix *srp)
|
||||
{
|
||||
|
||||
if (cmd != ZEBRA_MPLS_LABELS_REPLACE
|
||||
&& cmd != ZEBRA_MPLS_LABELS_DELETE) {
|
||||
flog_warn(EC_LIB_DEVELOPMENT, "%s: wrong ZEBRA command",
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
|
||||
sr_debug(" |- %s label %u for prefix %pFX",
|
||||
cmd == ZEBRA_MPLS_LABELS_REPLACE ? "Update" : "Delete",
|
||||
srp->input_label, &srp->prefix);
|
||||
|
||||
if (cmd == ZEBRA_MPLS_LABELS_REPLACE)
|
||||
isis_zebra_prefix_install_prefix_sid(srp);
|
||||
else
|
||||
isis_zebra_uninstall_prefix_sid(srp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send (LAN)-Adjacency-SID to ZEBRA for installation or deletion.
|
||||
*
|
||||
* @param cmd ZEBRA_MPLS_LABELS_ADD or ZEBRA_ROUTE_DELETE
|
||||
* @param sra Segment Routing Adjacency-SID
|
||||
*/
|
||||
void isis_zebra_send_adjacency_sid(int cmd, const struct sr_adjacency *sra)
|
||||
{
|
||||
struct zapi_labels zl;
|
||||
struct zapi_nexthop *znh;
|
||||
|
||||
if (cmd != ZEBRA_MPLS_LABELS_ADD && cmd != ZEBRA_MPLS_LABELS_DELETE) {
|
||||
flog_warn(EC_LIB_DEVELOPMENT, "%s: wrong ZEBRA command",
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
|
||||
sr_debug(" |- %s label %u for interface %s",
|
||||
cmd == ZEBRA_MPLS_LABELS_ADD ? "Add" : "Delete",
|
||||
sra->nexthop.label, sra->adj->circuit->interface->name);
|
||||
|
||||
memset(&zl, 0, sizeof(zl));
|
||||
zl.type = ZEBRA_LSP_ISIS_SR;
|
||||
zl.local_label = sra->nexthop.label;
|
||||
zl.nexthop_num = 1;
|
||||
znh = &zl.nexthops[0];
|
||||
znh->gate = sra->nexthop.address;
|
||||
znh->type = (sra->nexthop.family == AF_INET)
|
||||
? NEXTHOP_TYPE_IPV4_IFINDEX
|
||||
: NEXTHOP_TYPE_IPV6_IFINDEX;
|
||||
znh->ifindex = sra->adj->circuit->interface->ifindex;
|
||||
znh->label_num = 1;
|
||||
znh->labels[0] = MPLS_LABEL_IMPLICIT_NULL;
|
||||
|
||||
(void)zebra_send_mpls_labels(zclient, cmd, &zl);
|
||||
}
|
||||
|
||||
static int isis_zebra_read(ZAPI_CALLBACK_ARGS)
|
||||
{
|
||||
struct zapi_route api;
|
||||
@ -302,13 +465,250 @@ void isis_zebra_redistribute_unset(afi_t afi, int type)
|
||||
type, 0, VRF_DEFAULT);
|
||||
}
|
||||
|
||||
/* Label Manager Functions */
|
||||
|
||||
/**
|
||||
* Request Label Range to the Label Manager.
|
||||
*
|
||||
* @param base base label of the label range to request
|
||||
* @param chunk_size size of the label range to request
|
||||
*
|
||||
* @return 0 on success, -1 on failure
|
||||
*/
|
||||
int isis_zebra_request_label_range(uint32_t base, uint32_t chunk_size)
|
||||
{
|
||||
int ret;
|
||||
uint32_t start, end;
|
||||
|
||||
if (zclient_sync->sock == -1)
|
||||
isis_zebra_label_manager_connect();
|
||||
|
||||
ret = lm_get_label_chunk(zclient_sync, 0, base, chunk_size, &start,
|
||||
&end);
|
||||
if (ret < 0) {
|
||||
zlog_warn("%s: error getting label range!", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Release Label Range to the Label Manager.
|
||||
*
|
||||
* @param start start of label range to release
|
||||
* @param end end of label range to release
|
||||
*/
|
||||
void isis_zebra_release_label_range(uint32_t start, uint32_t end)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (zclient_sync->sock == -1)
|
||||
isis_zebra_label_manager_connect();
|
||||
|
||||
ret = lm_release_label_chunk(zclient_sync, start, end);
|
||||
if (ret < 0)
|
||||
zlog_warn("%s: error releasing label range!", __func__);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a new Label Chunk from the Label Manager. The new Label Chunk is
|
||||
* added to the Label Chunk list.
|
||||
*
|
||||
* @return 0 on success, -1 on failure
|
||||
*/
|
||||
static int isis_zebra_get_label_chunk(void)
|
||||
{
|
||||
int ret;
|
||||
uint32_t start, end;
|
||||
struct label_chunk *new_label_chunk;
|
||||
|
||||
if (zclient_sync->sock == -1)
|
||||
isis_zebra_label_manager_connect();
|
||||
|
||||
ret = lm_get_label_chunk(zclient_sync, 0, MPLS_LABEL_BASE_ANY,
|
||||
CHUNK_SIZE, &start, &end);
|
||||
if (ret < 0) {
|
||||
zlog_warn("%s: error getting label chunk!", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
new_label_chunk = calloc(1, sizeof(struct label_chunk));
|
||||
if (!new_label_chunk) {
|
||||
zlog_warn("%s: error trying to allocate label chunk %u - %u",
|
||||
__func__, start, end);
|
||||
return -1;
|
||||
}
|
||||
|
||||
new_label_chunk->start = start;
|
||||
new_label_chunk->end = end;
|
||||
new_label_chunk->used_mask = 0;
|
||||
|
||||
listnode_add(label_chunk_list, (void *)new_label_chunk);
|
||||
|
||||
/* let's update current if needed */
|
||||
if (!current_label_chunk)
|
||||
current_label_chunk = listtail(label_chunk_list);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request a label from the Label Chunk list.
|
||||
*
|
||||
* @return valid label on success or MPLS_INVALID_LABEL on failure
|
||||
*/
|
||||
mpls_label_t isis_zebra_request_dynamic_label(void)
|
||||
{
|
||||
struct label_chunk *label_chunk;
|
||||
uint32_t i, size;
|
||||
uint64_t pos;
|
||||
uint32_t label = MPLS_INVALID_LABEL;
|
||||
|
||||
while (current_label_chunk) {
|
||||
label_chunk = listgetdata(current_label_chunk);
|
||||
if (!label_chunk)
|
||||
goto end;
|
||||
|
||||
/* try to get next free label in currently used label chunk */
|
||||
size = label_chunk->end - label_chunk->start + 1;
|
||||
for (i = 0, pos = 1; i < size; i++, pos <<= 1) {
|
||||
if (!(pos & label_chunk->used_mask)) {
|
||||
label_chunk->used_mask |= pos;
|
||||
label = label_chunk->start + i;
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
current_label_chunk = listnextnode(current_label_chunk);
|
||||
}
|
||||
|
||||
end:
|
||||
/*
|
||||
* we moved till the last chunk, or were not able to find a label, so
|
||||
* let's ask for another one.
|
||||
*/
|
||||
if (!current_label_chunk
|
||||
|| current_label_chunk == listtail(label_chunk_list)
|
||||
|| label == MPLS_INVALID_LABEL) {
|
||||
if (isis_zebra_get_label_chunk() != 0)
|
||||
zlog_warn("%s: error getting label chunk!", __func__);
|
||||
}
|
||||
|
||||
return label;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a Label Chunk.
|
||||
*
|
||||
* @param val Pointer to the Label Chunk to free
|
||||
*/
|
||||
static void isis_zebra_del_label_chunk(void *val)
|
||||
{
|
||||
free(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Release a pre-allocated Label chunk to the Label Manager.
|
||||
*
|
||||
* @param start start of the label chunk to release
|
||||
* @param end end of the label chunk to release
|
||||
*
|
||||
* @return 0 on success, -1 on failure
|
||||
*/
|
||||
static int isis_zebra_release_label_chunk(uint32_t start, uint32_t end)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = lm_release_label_chunk(zclient_sync, start, end);
|
||||
if (ret < 0) {
|
||||
zlog_warn("%s: error releasing label chunk!", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Release a pre-attributes label to the Label Chunk list.
|
||||
*
|
||||
* @param label Label to be release
|
||||
*/
|
||||
void isis_zebra_release_dynamic_label(mpls_label_t label)
|
||||
{
|
||||
struct listnode *node;
|
||||
struct label_chunk *label_chunk;
|
||||
uint64_t pos;
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(label_chunk_list, node, label_chunk)) {
|
||||
if (!(label <= label_chunk->end && label >= label_chunk->start))
|
||||
continue;
|
||||
|
||||
pos = 1ULL << (label - label_chunk->start);
|
||||
label_chunk->used_mask &= ~pos;
|
||||
|
||||
/*
|
||||
* If nobody is using this chunk and it's not
|
||||
* current_label_chunk, then free it.
|
||||
*/
|
||||
if (!label_chunk->used_mask && (current_label_chunk != node)) {
|
||||
if (isis_zebra_release_label_chunk(label_chunk->start,
|
||||
label_chunk->end)
|
||||
!= 0)
|
||||
zlog_warn("%s: error releasing label chunk!",
|
||||
__func__);
|
||||
else {
|
||||
listnode_delete(label_chunk_list, label_chunk);
|
||||
isis_zebra_del_label_chunk(label_chunk);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to the Label Manager.
|
||||
*/
|
||||
static void isis_zebra_label_manager_connect(void)
|
||||
{
|
||||
/* Connect to label manager. */
|
||||
while (zclient_socket_connect(zclient_sync) < 0) {
|
||||
zlog_warn("%s: re-attempt connecting synchronous zclient!",
|
||||
__func__);
|
||||
sleep(1);
|
||||
}
|
||||
/* make socket non-blocking */
|
||||
set_nonblocking(zclient_sync->sock);
|
||||
|
||||
/* Send hello to notify zebra this is a synchronous client */
|
||||
while (zclient_send_hello(zclient_sync) < 0) {
|
||||
zlog_warn(
|
||||
"%s: re-attempt sending hello for synchronous zclient!",
|
||||
__func__);
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
/* Connect to label manager */
|
||||
while (lm_label_manager_connect(zclient_sync, 0) != 0) {
|
||||
zlog_warn("%s: re-attempt connecting to label manager!", __func__);
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
label_chunk_list = list_new();
|
||||
label_chunk_list->del = isis_zebra_del_label_chunk;
|
||||
while (isis_zebra_get_label_chunk() != 0) {
|
||||
zlog_warn("%s: re-attempt getting first label chunk!", __func__);
|
||||
sleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void isis_zebra_connected(struct zclient *zclient)
|
||||
{
|
||||
zclient_send_reg_requests(zclient, VRF_DEFAULT);
|
||||
}
|
||||
|
||||
void isis_zebra_init(struct thread_master *master)
|
||||
void isis_zebra_init(struct thread_master *master, int instance)
|
||||
{
|
||||
/* Initialize asynchronous zclient. */
|
||||
zclient = zclient_new(master, &zclient_options_default);
|
||||
zclient_init(zclient, PROTO_TYPE, 0, &isisd_privs);
|
||||
zclient->zebra_connected = isis_zebra_connected;
|
||||
@ -319,7 +719,19 @@ void isis_zebra_init(struct thread_master *master)
|
||||
zclient->redistribute_route_add = isis_zebra_read;
|
||||
zclient->redistribute_route_del = isis_zebra_read;
|
||||
|
||||
return;
|
||||
/* Initialize special zclient for synchronous message exchanges. */
|
||||
struct zclient_options options = zclient_options_default;
|
||||
options.synchronous = true;
|
||||
zclient_sync = zclient_new(master, &options);
|
||||
zclient_sync->sock = -1;
|
||||
zclient_sync->redist_default = ZEBRA_ROUTE_ISIS;
|
||||
zclient_sync->instance = instance;
|
||||
/*
|
||||
* session_id must be different from default value (0) to distinguish
|
||||
* the asynchronous socket from the synchronous one
|
||||
*/
|
||||
zclient_sync->session_id = 1;
|
||||
zclient_sync->privs = &isisd_privs;
|
||||
}
|
||||
|
||||
void isis_zebra_stop(void)
|
||||
|
@ -24,10 +24,19 @@
|
||||
|
||||
extern struct zclient *zclient;
|
||||
|
||||
void isis_zebra_init(struct thread_master *);
|
||||
struct label_chunk {
|
||||
uint32_t start;
|
||||
uint32_t end;
|
||||
uint64_t used_mask;
|
||||
};
|
||||
#define CHUNK_SIZE 64
|
||||
|
||||
void isis_zebra_init(struct thread_master *master, int instance);
|
||||
void isis_zebra_stop(void);
|
||||
|
||||
struct isis_route_info;
|
||||
struct sr_prefix;
|
||||
struct sr_adjacency;
|
||||
|
||||
void isis_zebra_route_add_route(struct prefix *prefix,
|
||||
struct prefix_ipv6 *src_p,
|
||||
@ -35,8 +44,14 @@ void isis_zebra_route_add_route(struct prefix *prefix,
|
||||
void isis_zebra_route_del_route(struct prefix *prefix,
|
||||
struct prefix_ipv6 *src_p,
|
||||
struct isis_route_info *route_info);
|
||||
void isis_zebra_send_prefix_sid(int cmd, const struct sr_prefix *srp);
|
||||
void isis_zebra_send_adjacency_sid(int cmd, const struct sr_adjacency *sra);
|
||||
int isis_distribute_list_update(int routetype);
|
||||
void isis_zebra_redistribute_set(afi_t afi, int type);
|
||||
void isis_zebra_redistribute_unset(afi_t afi, int type);
|
||||
int isis_zebra_request_label_range(uint32_t base, uint32_t chunk_size);
|
||||
void isis_zebra_release_label_range(uint32_t start, uint32_t end);
|
||||
mpls_label_t isis_zebra_request_dynamic_label(void);
|
||||
void isis_zebra_release_dynamic_label(mpls_label_t label);
|
||||
|
||||
#endif /* _ZEBRA_ISIS_ZEBRA_H */
|
||||
|
@ -56,6 +56,7 @@
|
||||
#include "isisd/isis_events.h"
|
||||
#include "isisd/isis_te.h"
|
||||
#include "isisd/isis_mt.h"
|
||||
#include "isisd/isis_sr.h"
|
||||
#include "isisd/fabricd.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
@ -88,7 +89,6 @@ void isis_new(unsigned long process_id, vrf_id_t vrf_id)
|
||||
isis->area_list = list_new();
|
||||
isis->init_circ_list = list_new();
|
||||
isis->uptime = time(NULL);
|
||||
isis->nexthops = list_new();
|
||||
dyn_cache_init();
|
||||
/*
|
||||
* uncomment the next line for full debugs
|
||||
@ -129,6 +129,8 @@ struct isis_area *isis_area_create(const char *area_tag)
|
||||
thread_add_timer(master, lsp_tick, area, 1, &area->t_tick);
|
||||
flags_initialize(&area->flags);
|
||||
|
||||
isis_sr_area_init(area);
|
||||
|
||||
/*
|
||||
* Default values
|
||||
*/
|
||||
@ -272,6 +274,8 @@ int isis_area_destroy(const char *area_tag)
|
||||
isis_area_invalidate_routes(area, area->is_type);
|
||||
isis_area_verify_routes(area);
|
||||
|
||||
isis_sr_area_term(area);
|
||||
|
||||
spftree_area_del(area);
|
||||
|
||||
THREAD_TIMER_OFF(area->spf_timer[0]);
|
||||
@ -749,6 +753,9 @@ void print_debug(struct vty *vty, int flags, int onoff)
|
||||
onoffs);
|
||||
if (flags & DEBUG_SPF_EVENTS)
|
||||
vty_out(vty, "IS-IS SPF events debugging is %s\n", onoffs);
|
||||
if (flags & DEBUG_SR)
|
||||
vty_out(vty, "IS-IS Segment Routing events debugging is %s\n",
|
||||
onoffs);
|
||||
if (flags & DEBUG_UPDATE_PACKETS)
|
||||
vty_out(vty, "IS-IS Update related packet debugging is %s\n",
|
||||
onoffs);
|
||||
@ -813,6 +820,10 @@ static int config_write_debug(struct vty *vty)
|
||||
vty_out(vty, "debug " PROTO_NAME " spf-events\n");
|
||||
write++;
|
||||
}
|
||||
if (flags & DEBUG_SR) {
|
||||
vty_out(vty, "debug " PROTO_NAME " sr-events\n");
|
||||
write++;
|
||||
}
|
||||
if (flags & DEBUG_UPDATE_PACKETS) {
|
||||
vty_out(vty, "debug " PROTO_NAME " update-packets\n");
|
||||
write++;
|
||||
@ -1012,6 +1023,33 @@ DEFUN (no_debug_isis_spfevents,
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (debug_isis_srevents,
|
||||
debug_isis_srevents_cmd,
|
||||
"debug " PROTO_NAME " sr-events",
|
||||
DEBUG_STR
|
||||
PROTO_HELP
|
||||
"IS-IS Segment Routing Events\n")
|
||||
{
|
||||
isis->debugs |= DEBUG_SR;
|
||||
print_debug(vty, DEBUG_SR, 1);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (no_debug_isis_srevents,
|
||||
no_debug_isis_srevents_cmd,
|
||||
"no debug " PROTO_NAME " sr-events",
|
||||
NO_STR
|
||||
UNDEBUG_STR
|
||||
PROTO_HELP
|
||||
"IS-IS Segment Routing Events\n")
|
||||
{
|
||||
isis->debugs &= ~DEBUG_SR;
|
||||
print_debug(vty, DEBUG_SR, 0);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (debug_isis_rtevents,
|
||||
debug_isis_rtevents_cmd,
|
||||
"debug " PROTO_NAME " route-events",
|
||||
@ -2199,6 +2237,8 @@ void isis_init(void)
|
||||
install_element(ENABLE_NODE, &no_debug_isis_upd_cmd);
|
||||
install_element(ENABLE_NODE, &debug_isis_spfevents_cmd);
|
||||
install_element(ENABLE_NODE, &no_debug_isis_spfevents_cmd);
|
||||
install_element(ENABLE_NODE, &debug_isis_srevents_cmd);
|
||||
install_element(ENABLE_NODE, &no_debug_isis_srevents_cmd);
|
||||
install_element(ENABLE_NODE, &debug_isis_rtevents_cmd);
|
||||
install_element(ENABLE_NODE, &no_debug_isis_rtevents_cmd);
|
||||
install_element(ENABLE_NODE, &debug_isis_events_cmd);
|
||||
@ -2224,6 +2264,8 @@ void isis_init(void)
|
||||
install_element(CONFIG_NODE, &no_debug_isis_upd_cmd);
|
||||
install_element(CONFIG_NODE, &debug_isis_spfevents_cmd);
|
||||
install_element(CONFIG_NODE, &no_debug_isis_spfevents_cmd);
|
||||
install_element(CONFIG_NODE, &debug_isis_srevents_cmd);
|
||||
install_element(CONFIG_NODE, &no_debug_isis_srevents_cmd);
|
||||
install_element(CONFIG_NODE, &debug_isis_rtevents_cmd);
|
||||
install_element(CONFIG_NODE, &no_debug_isis_rtevents_cmd);
|
||||
install_element(CONFIG_NODE, &debug_isis_events_cmd);
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "isisd/isis_redist.h"
|
||||
#include "isisd/isis_pdu_counter.h"
|
||||
#include "isisd/isis_circuit.h"
|
||||
#include "isisd/isis_sr.h"
|
||||
#include "isis_flags.h"
|
||||
#include "isis_lsp.h"
|
||||
#include "isis_memory.h"
|
||||
@ -69,7 +70,6 @@ struct isis {
|
||||
uint32_t router_id; /* Router ID from zebra */
|
||||
struct list *area_list; /* list of IS-IS areas */
|
||||
struct list *init_circ_list;
|
||||
struct list *nexthops; /* IP next hops from this IS */
|
||||
uint8_t max_area_addrs; /* maximumAreaAdresses */
|
||||
struct area_addr *man_area_addrs; /* manualAreaAddresses */
|
||||
uint32_t debugs; /* bitmap for debug */
|
||||
@ -166,6 +166,8 @@ struct isis_area {
|
||||
struct list *mt_settings;
|
||||
/* MPLS-TE settings */
|
||||
struct mpls_te_area *mta;
|
||||
/* Segment Routing information */
|
||||
struct isis_sr_db srdb;
|
||||
int ipv6_circuits;
|
||||
bool purge_originator;
|
||||
/* Counters */
|
||||
@ -219,6 +221,10 @@ int isis_area_passwd_cleartext_set(struct isis_area *area, int level,
|
||||
int isis_area_passwd_hmac_md5_set(struct isis_area *area, int level,
|
||||
const char *passwd, uint8_t snp_auth);
|
||||
|
||||
/* YANG paths */
|
||||
#define ISIS_INSTANCE "/frr-isisd:isis/instance"
|
||||
#define ISIS_SR "/frr-isisd:isis/instance/segment-routing"
|
||||
|
||||
/* Master of threads. */
|
||||
extern struct thread_master *master;
|
||||
|
||||
@ -234,6 +240,7 @@ extern struct thread_master *master;
|
||||
#define DEBUG_FLOODING (1<<9)
|
||||
#define DEBUG_BFD (1<<10)
|
||||
#define DEBUG_TX_QUEUE (1<<11)
|
||||
#define DEBUG_SR (1<<12)
|
||||
|
||||
#define lsp_debug(...) \
|
||||
do { \
|
||||
@ -247,6 +254,12 @@ extern struct thread_master *master;
|
||||
zlog_debug(__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define sr_debug(...) \
|
||||
do { \
|
||||
if (IS_DEBUG_ISIS(DEBUG_SR)) \
|
||||
zlog_debug(__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define DEBUG_TE DEBUG_LSP_GEN
|
||||
|
||||
#define IS_DEBUG_ISIS(x) (isis->debugs & x)
|
||||
|
@ -11,6 +11,7 @@ vtysh_scan += \
|
||||
isisd/isis_redist.c \
|
||||
isisd/isis_spf.c \
|
||||
isisd/isis_te.c \
|
||||
isisd/isis_sr.c \
|
||||
isisd/isis_vty_fabricd.c \
|
||||
isisd/isisd.c \
|
||||
# end
|
||||
@ -48,6 +49,7 @@ noinst_HEADERS += \
|
||||
isisd/isis_routemap.h \
|
||||
isisd/isis_spf.h \
|
||||
isisd/isis_spf_private.h \
|
||||
isisd/isis_sr.h \
|
||||
isisd/isis_te.h \
|
||||
isisd/isis_tlvs.h \
|
||||
isisd/isis_tx_queue.h \
|
||||
@ -77,6 +79,7 @@ LIBISIS_SOURCES = \
|
||||
isisd/isis_route.c \
|
||||
isisd/isis_routemap.c \
|
||||
isisd/isis_spf.c \
|
||||
isisd/isis_sr.c \
|
||||
isisd/isis_te.c \
|
||||
isisd/isis_tlvs.c \
|
||||
isisd/isis_tx_queue.c \
|
||||
|
13
lib/if.c
13
lib/if.c
@ -410,7 +410,7 @@ struct interface *if_lookup_by_index_all_vrf(ifindex_t ifindex)
|
||||
}
|
||||
|
||||
/* Lookup interface by IP address. */
|
||||
struct interface *if_lookup_exact_address(void *src, int family,
|
||||
struct interface *if_lookup_exact_address(const void *src, int family,
|
||||
vrf_id_t vrf_id)
|
||||
{
|
||||
struct vrf *vrf = vrf_lookup_by_id(vrf_id);
|
||||
@ -442,7 +442,7 @@ struct interface *if_lookup_exact_address(void *src, int family,
|
||||
}
|
||||
|
||||
/* Lookup interface by IP address. */
|
||||
struct connected *if_lookup_address(void *matchaddr, int family,
|
||||
struct connected *if_lookup_address(const void *matchaddr, int family,
|
||||
vrf_id_t vrf_id)
|
||||
{
|
||||
struct vrf *vrf = vrf_lookup_by_id(vrf_id);
|
||||
@ -479,7 +479,7 @@ struct connected *if_lookup_address(void *matchaddr, int family,
|
||||
}
|
||||
|
||||
/* Lookup interface by prefix */
|
||||
struct interface *if_lookup_prefix(struct prefix *prefix, vrf_id_t vrf_id)
|
||||
struct interface *if_lookup_prefix(const struct prefix *prefix, vrf_id_t vrf_id)
|
||||
{
|
||||
struct vrf *vrf = vrf_lookup_by_id(vrf_id);
|
||||
struct listnode *cnode;
|
||||
@ -982,7 +982,8 @@ nbr_connected_log(struct nbr_connected *connected, char *str)
|
||||
}
|
||||
|
||||
/* If two connected address has same prefix return 1. */
|
||||
static int connected_same_prefix(struct prefix *p1, struct prefix *p2)
|
||||
static int connected_same_prefix(const struct prefix *p1,
|
||||
const struct prefix *p2)
|
||||
{
|
||||
if (p1->family == p2->family) {
|
||||
if (p1->family == AF_INET
|
||||
@ -1010,7 +1011,7 @@ unsigned int connected_count_by_family(struct interface *ifp, int family)
|
||||
}
|
||||
|
||||
struct connected *connected_lookup_prefix_exact(struct interface *ifp,
|
||||
struct prefix *p)
|
||||
const struct prefix *p)
|
||||
{
|
||||
struct listnode *node;
|
||||
struct listnode *next;
|
||||
@ -1049,7 +1050,7 @@ struct connected *connected_delete_by_prefix(struct interface *ifp,
|
||||
/* Find the address on our side that will be used when packets
|
||||
are sent to dst. */
|
||||
struct connected *connected_lookup_prefix(struct interface *ifp,
|
||||
struct prefix *addr)
|
||||
const struct prefix *addr)
|
||||
{
|
||||
struct listnode *cnode;
|
||||
struct connected *c;
|
||||
|
12
lib/if.h
12
lib/if.h
@ -512,11 +512,11 @@ extern struct interface *if_create_name(const char *name, vrf_id_t vrf_id);
|
||||
extern struct interface *if_create_ifindex(ifindex_t ifindex, vrf_id_t vrf_id);
|
||||
extern struct interface *if_lookup_by_index(ifindex_t, vrf_id_t vrf_id);
|
||||
extern struct interface *if_lookup_by_index_all_vrf(ifindex_t);
|
||||
extern struct interface *if_lookup_exact_address(void *matchaddr, int family,
|
||||
vrf_id_t vrf_id);
|
||||
extern struct connected *if_lookup_address(void *matchaddr, int family,
|
||||
extern struct interface *if_lookup_exact_address(const void *matchaddr,
|
||||
int family, vrf_id_t vrf_id);
|
||||
extern struct connected *if_lookup_address(const void *matchaddr, int family,
|
||||
vrf_id_t vrf_id);
|
||||
extern struct interface *if_lookup_prefix(struct prefix *prefix,
|
||||
extern struct interface *if_lookup_prefix(const struct prefix *prefix,
|
||||
vrf_id_t vrf_id);
|
||||
size_t if_lookup_by_hwaddr(const uint8_t *hw_addr, size_t addrsz,
|
||||
struct interface ***result, vrf_id_t vrf_id);
|
||||
@ -575,9 +575,9 @@ connected_add_by_prefix(struct interface *, struct prefix *, struct prefix *);
|
||||
extern struct connected *connected_delete_by_prefix(struct interface *,
|
||||
struct prefix *);
|
||||
extern struct connected *connected_lookup_prefix(struct interface *,
|
||||
struct prefix *);
|
||||
const struct prefix *);
|
||||
extern struct connected *connected_lookup_prefix_exact(struct interface *,
|
||||
struct prefix *);
|
||||
const struct prefix *);
|
||||
extern unsigned int connected_count_by_family(struct interface *, int family);
|
||||
extern struct nbr_connected *nbr_connected_new(void);
|
||||
extern void nbr_connected_free(struct nbr_connected *);
|
||||
|
@ -127,7 +127,8 @@ enum lsp_types_t {
|
||||
ZEBRA_LSP_LDP = 2, /* LDP LSP. */
|
||||
ZEBRA_LSP_BGP = 3, /* BGP LSP. */
|
||||
ZEBRA_LSP_OSPF_SR = 4,/* OSPF Segment Routing LSP. */
|
||||
ZEBRA_LSP_SHARP = 5, /* Identifier for test protocol */
|
||||
ZEBRA_LSP_ISIS_SR = 5,/* IS-IS Segment Routing LSP. */
|
||||
ZEBRA_LSP_SHARP = 6, /* Identifier for test protocol */
|
||||
};
|
||||
|
||||
/* Functions for basic label operations. */
|
||||
|
@ -522,7 +522,7 @@ static inline int is_default_prefix(const struct prefix *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int is_host_route(struct prefix *p)
|
||||
static inline int is_host_route(const struct prefix *p)
|
||||
{
|
||||
if (p->family == AF_INET)
|
||||
return (p->prefixlen == IPV4_MAX_BITLEN);
|
||||
|
0
tests/topotests/isis-sr-topo1/__init__.py
Normal file
0
tests/topotests/isis-sr-topo1/__init__.py
Normal file
30
tests/topotests/isis-sr-topo1/rt1/isisd.conf
Normal file
30
tests/topotests/isis-sr-topo1/rt1/isisd.conf
Normal file
@ -0,0 +1,30 @@
|
||||
password 1
|
||||
hostname rt1
|
||||
log file isisd.log
|
||||
!
|
||||
debug isis events
|
||||
debug isis route-events
|
||||
debug isis spf-events
|
||||
debug isis sr-events
|
||||
debug isis lsp-gen
|
||||
!
|
||||
interface lo
|
||||
ip router isis 1
|
||||
ipv6 router isis 1
|
||||
isis passive
|
||||
!
|
||||
interface eth-sw1
|
||||
ip router isis 1
|
||||
ipv6 router isis 1
|
||||
isis hello-multiplier 3
|
||||
!
|
||||
router isis 1
|
||||
net 49.0000.0000.0000.0001.00
|
||||
is-type level-1
|
||||
topology ipv6-unicast
|
||||
segment-routing on
|
||||
segment-routing global-block 16000 23999
|
||||
segment-routing node-msd 8
|
||||
segment-routing prefix 1.1.1.1/32 index 10
|
||||
segment-routing prefix 2001:db8:1000::1/128 index 11
|
||||
!
|
294
tests/topotests/isis-sr-topo1/rt1/step1/show_ip_route.ref
Normal file
294
tests/topotests/isis-sr-topo1/rt1/step1/show_ip_route.ref
Normal file
@ -0,0 +1,294 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step1/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step1/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
134
tests/topotests/isis-sr-topo1/rt1/step1/show_mpls_table.ref
Normal file
134
tests/topotests/isis-sr-topo1/rt1/step1/show_mpls_table.ref
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
287
tests/topotests/isis-sr-topo1/rt1/step10/show_ip_route.ref
Normal file
287
tests/topotests/isis-sr-topo1/rt1/step10/show_ip_route.ref
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step10/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step10/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
156
tests/topotests/isis-sr-topo1/rt1/step10/show_mpls_table.ref
Normal file
156
tests/topotests/isis-sr-topo1/rt1/step10/show_mpls_table.ref
Normal file
@ -0,0 +1,156 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
287
tests/topotests/isis-sr-topo1/rt1/step2/show_ip_route.ref
Normal file
287
tests/topotests/isis-sr-topo1/rt1/step2/show_ip_route.ref
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step2/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step2/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
134
tests/topotests/isis-sr-topo1/rt1/step2/show_mpls_table.ref
Normal file
134
tests/topotests/isis-sr-topo1/rt1/step2/show_mpls_table.ref
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
254
tests/topotests/isis-sr-topo1/rt1/step3/show_ip_route.ref
Normal file
254
tests/topotests/isis-sr-topo1/rt1/step3/show_ip_route.ref
Normal file
@ -0,0 +1,254 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
90
tests/topotests/isis-sr-topo1/rt1/step3/show_ipv6_route.ref
Normal file
90
tests/topotests/isis-sr-topo1/rt1/step3/show_ipv6_route.ref
Normal file
@ -0,0 +1,90 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
98
tests/topotests/isis-sr-topo1/rt1/step3/show_mpls_table.ref
Normal file
98
tests/topotests/isis-sr-topo1/rt1/step3/show_mpls_table.ref
Normal file
@ -0,0 +1,98 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
287
tests/topotests/isis-sr-topo1/rt1/step4/show_ip_route.ref
Normal file
287
tests/topotests/isis-sr-topo1/rt1/step4/show_ip_route.ref
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step4/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step4/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
134
tests/topotests/isis-sr-topo1/rt1/step4/show_mpls_table.ref
Normal file
134
tests/topotests/isis-sr-topo1/rt1/step4/show_mpls_table.ref
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
281
tests/topotests/isis-sr-topo1/rt1/step5/show_ip_route.ref
Normal file
281
tests/topotests/isis-sr-topo1/rt1/step5/show_ip_route.ref
Normal file
@ -0,0 +1,281 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
115
tests/topotests/isis-sr-topo1/rt1/step5/show_ipv6_route.ref
Normal file
115
tests/topotests/isis-sr-topo1/rt1/step5/show_ipv6_route.ref
Normal file
@ -0,0 +1,115 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
98
tests/topotests/isis-sr-topo1/rt1/step5/show_mpls_table.ref
Normal file
98
tests/topotests/isis-sr-topo1/rt1/step5/show_mpls_table.ref
Normal file
@ -0,0 +1,98 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
287
tests/topotests/isis-sr-topo1/rt1/step6/show_ip_route.ref
Normal file
287
tests/topotests/isis-sr-topo1/rt1/step6/show_ip_route.ref
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step6/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step6/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
134
tests/topotests/isis-sr-topo1/rt1/step6/show_mpls_table.ref
Normal file
134
tests/topotests/isis-sr-topo1/rt1/step6/show_mpls_table.ref
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
287
tests/topotests/isis-sr-topo1/rt1/step7/show_ip_route.ref
Normal file
287
tests/topotests/isis-sr-topo1/rt1/step7/show_ip_route.ref
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step7/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step7/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
134
tests/topotests/isis-sr-topo1/rt1/step7/show_mpls_table.ref
Normal file
134
tests/topotests/isis-sr-topo1/rt1/step7/show_mpls_table.ref
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
287
tests/topotests/isis-sr-topo1/rt1/step8/show_ip_route.ref
Normal file
287
tests/topotests/isis-sr-topo1/rt1/step8/show_ip_route.ref
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step8/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step8/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
134
tests/topotests/isis-sr-topo1/rt1/step8/show_mpls_table.ref
Normal file
134
tests/topotests/isis-sr-topo1/rt1/step8/show_mpls_table.ref
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
287
tests/topotests/isis-sr-topo1/rt1/step9/show_ip_route.ref
Normal file
287
tests/topotests/isis-sr-topo1/rt1/step9/show_ip_route.ref
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"2.2.2.2\/32":[
|
||||
{
|
||||
"prefix":"2.2.2.2\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16020
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.2",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
121
tests/topotests/isis-sr-topo1/rt1/step9/show_ipv6_route.ref
Normal file
121
tests/topotests/isis-sr-topo1/rt1/step9/show_ipv6_route.ref
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"2001:db8:1000::2\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::2\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16021
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":40,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
156
tests/topotests/isis-sr-topo1/rt1/step9/show_mpls_table.ref
Normal file
156
tests/topotests/isis-sr-topo1/rt1/step9/show_mpls_table.ref
Normal file
@ -0,0 +1,156 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16020,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16021,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17061,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0002",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
19
tests/topotests/isis-sr-topo1/rt1/zebra.conf
Normal file
19
tests/topotests/isis-sr-topo1/rt1/zebra.conf
Normal file
@ -0,0 +1,19 @@
|
||||
log file zebra.log
|
||||
!
|
||||
hostname rt1
|
||||
!
|
||||
debug zebra kernel
|
||||
debug zebra packet
|
||||
debug zebra mpls
|
||||
!
|
||||
interface lo
|
||||
ip address 1.1.1.1/32
|
||||
ipv6 address 2001:db8:1000::1/128
|
||||
!
|
||||
interface eth-sw1
|
||||
ip address 10.0.1.1/24
|
||||
!
|
||||
ip forwarding
|
||||
!
|
||||
line vty
|
||||
!
|
41
tests/topotests/isis-sr-topo1/rt2/isisd.conf
Normal file
41
tests/topotests/isis-sr-topo1/rt2/isisd.conf
Normal file
@ -0,0 +1,41 @@
|
||||
hostname rt2
|
||||
log file isisd.log
|
||||
!
|
||||
debug isis events
|
||||
debug isis route-events
|
||||
debug isis spf-events
|
||||
debug isis sr-events
|
||||
debug isis lsp-gen
|
||||
!
|
||||
interface lo
|
||||
ip router isis 1
|
||||
ipv6 router isis 1
|
||||
isis passive
|
||||
!
|
||||
interface eth-sw1
|
||||
ip router isis 1
|
||||
ipv6 router isis 1
|
||||
isis hello-multiplier 3
|
||||
!
|
||||
interface eth-rt4-1
|
||||
ip router isis 1
|
||||
ipv6 router isis 1
|
||||
isis network point-to-point
|
||||
isis hello-multiplier 3
|
||||
!
|
||||
interface eth-rt4-2
|
||||
ip router isis 1
|
||||
ipv6 router isis 1
|
||||
isis network point-to-point
|
||||
isis hello-multiplier 3
|
||||
!
|
||||
router isis 1
|
||||
net 49.0000.0000.0000.0002.00
|
||||
is-type level-1
|
||||
topology ipv6-unicast
|
||||
segment-routing on
|
||||
segment-routing global-block 16000 23999
|
||||
segment-routing node-msd 8
|
||||
segment-routing prefix 2.2.2.2/32 index 20 no-php-flag
|
||||
segment-routing prefix 2001:db8:1000::2/128 index 21 no-php-flag
|
||||
!
|
347
tests/topotests/isis-sr-topo1/rt2/step1/show_ip_route.ref
Normal file
347
tests/topotests/isis-sr-topo1/rt2/step1/show_ip_route.ref
Normal file
@ -0,0 +1,347 @@
|
||||
{
|
||||
"1.1.1.1\/32":[
|
||||
{
|
||||
"prefix":"1.1.1.1\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16050
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
148
tests/topotests/isis-sr-topo1/rt2/step1/show_ipv6_route.ref
Normal file
148
tests/topotests/isis-sr-topo1/rt2/step1/show_ipv6_route.ref
Normal file
@ -0,0 +1,148 @@
|
||||
{
|
||||
"2001:db8:1000::1\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::1\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16051
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16051
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
192
tests/topotests/isis-sr-topo1/rt2/step1/show_mpls_table.ref
Normal file
192
tests/topotests/isis-sr-topo1/rt2/step1/show_mpls_table.ref
Normal file
@ -0,0 +1,192 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16051,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16051,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-rt4-1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-rt4-2",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0001",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
259
tests/topotests/isis-sr-topo1/rt2/step10/show_ip_route.ref
Normal file
259
tests/topotests/isis-sr-topo1/rt2/step10/show_ip_route.ref
Normal file
@ -0,0 +1,259 @@
|
||||
{
|
||||
"1.1.1.1\/32":[
|
||||
{
|
||||
"prefix":"1.1.1.1\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16010
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
130
tests/topotests/isis-sr-topo1/rt2/step10/show_ipv6_route.ref
Normal file
130
tests/topotests/isis-sr-topo1/rt2/step10/show_ipv6_route.ref
Normal file
@ -0,0 +1,130 @@
|
||||
{
|
||||
"2001:db8:1000::1\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::1\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16011
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
156
tests/topotests/isis-sr-topo1/rt2/step10/show_mpls_table.ref
Normal file
156
tests/topotests/isis-sr-topo1/rt2/step10/show_mpls_table.ref
Normal file
@ -0,0 +1,156 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16010,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16011,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-rt4-1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-rt4-2",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0001",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
320
tests/topotests/isis-sr-topo1/rt2/step2/show_ip_route.ref
Normal file
320
tests/topotests/isis-sr-topo1/rt2/step2/show_ip_route.ref
Normal file
@ -0,0 +1,320 @@
|
||||
{
|
||||
"1.1.1.1\/32":[
|
||||
{
|
||||
"prefix":"1.1.1.1\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
130
tests/topotests/isis-sr-topo1/rt2/step2/show_ipv6_route.ref
Normal file
130
tests/topotests/isis-sr-topo1/rt2/step2/show_ipv6_route.ref
Normal file
@ -0,0 +1,130 @@
|
||||
{
|
||||
"2001:db8:1000::1\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::1\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
168
tests/topotests/isis-sr-topo1/rt2/step2/show_mpls_table.ref
Normal file
168
tests/topotests/isis-sr-topo1/rt2/step2/show_mpls_table.ref
Normal file
@ -0,0 +1,168 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-rt4-1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-rt4-2",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0001",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
273
tests/topotests/isis-sr-topo1/rt2/step3/show_ip_route.ref
Normal file
273
tests/topotests/isis-sr-topo1/rt2/step3/show_ip_route.ref
Normal file
@ -0,0 +1,273 @@
|
||||
{
|
||||
"1.1.1.1\/32":[
|
||||
{
|
||||
"prefix":"1.1.1.1\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
99
tests/topotests/isis-sr-topo1/rt2/step3/show_ipv6_route.ref
Normal file
99
tests/topotests/isis-sr-topo1/rt2/step3/show_ipv6_route.ref
Normal file
@ -0,0 +1,99 @@
|
||||
{
|
||||
"2001:db8:1000::1\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::1\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
132
tests/topotests/isis-sr-topo1/rt2/step3/show_mpls_table.ref
Normal file
132
tests/topotests/isis-sr-topo1/rt2/step3/show_mpls_table.ref
Normal file
@ -0,0 +1,132 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-rt4-1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-rt4-2",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0001",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
320
tests/topotests/isis-sr-topo1/rt2/step4/show_ip_route.ref
Normal file
320
tests/topotests/isis-sr-topo1/rt2/step4/show_ip_route.ref
Normal file
@ -0,0 +1,320 @@
|
||||
{
|
||||
"1.1.1.1\/32":[
|
||||
{
|
||||
"prefix":"1.1.1.1\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
130
tests/topotests/isis-sr-topo1/rt2/step4/show_ipv6_route.ref
Normal file
130
tests/topotests/isis-sr-topo1/rt2/step4/show_ipv6_route.ref
Normal file
@ -0,0 +1,130 @@
|
||||
{
|
||||
"2001:db8:1000::1\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::1\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
168
tests/topotests/isis-sr-topo1/rt2/step4/show_mpls_table.ref
Normal file
168
tests/topotests/isis-sr-topo1/rt2/step4/show_mpls_table.ref
Normal file
@ -0,0 +1,168 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-rt4-1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-rt4-2",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0001",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
314
tests/topotests/isis-sr-topo1/rt2/step5/show_ip_route.ref
Normal file
314
tests/topotests/isis-sr-topo1/rt2/step5/show_ip_route.ref
Normal file
@ -0,0 +1,314 @@
|
||||
{
|
||||
"1.1.1.1\/32":[
|
||||
{
|
||||
"prefix":"1.1.1.1\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
124
tests/topotests/isis-sr-topo1/rt2/step5/show_ipv6_route.ref
Normal file
124
tests/topotests/isis-sr-topo1/rt2/step5/show_ipv6_route.ref
Normal file
@ -0,0 +1,124 @@
|
||||
{
|
||||
"2001:db8:1000::1\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::1\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
132
tests/topotests/isis-sr-topo1/rt2/step5/show_mpls_table.ref
Normal file
132
tests/topotests/isis-sr-topo1/rt2/step5/show_mpls_table.ref
Normal file
@ -0,0 +1,132 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
{
|
||||
"frr-interface:lib": {
|
||||
"interface": [
|
||||
{
|
||||
"name": "eth-rt4-1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-rt4-2",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0004",
|
||||
"neighbor-extended-circuit-id": 0,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 0,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eth-sw1",
|
||||
"vrf": "default",
|
||||
"frr-isisd:isis": {
|
||||
"adjacencies": {
|
||||
"adjacency": [
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0003",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
},
|
||||
{
|
||||
"neighbor-sys-type": "level-1",
|
||||
"neighbor-sysid": "0000.0000.0001",
|
||||
"neighbor-extended-circuit-id": 2,
|
||||
"hold-timer": 9,
|
||||
"neighbor-priority": 64,
|
||||
"state": "up"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
320
tests/topotests/isis-sr-topo1/rt2/step6/show_ip_route.ref
Normal file
320
tests/topotests/isis-sr-topo1/rt2/step6/show_ip_route.ref
Normal file
@ -0,0 +1,320 @@
|
||||
{
|
||||
"1.1.1.1\/32":[
|
||||
{
|
||||
"prefix":"1.1.1.1\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3.3.3.3\/32":[
|
||||
{
|
||||
"prefix":"3.3.3.3\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17030
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4.4.4.4\/32":[
|
||||
{
|
||||
"prefix":"4.4.4.4\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16040
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5.5.5.5\/32":[
|
||||
{
|
||||
"prefix":"5.5.5.5\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17050
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"6.6.6.6\/32":[
|
||||
{
|
||||
"prefix":"6.6.6.6\/32",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16060
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.1.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.1.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.1.1",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.2.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.2.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1"
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.3.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.3.0\/24",
|
||||
"protocol":"isis",
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"nexthops":[
|
||||
{
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.4.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.4.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.5.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.5.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.6.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.6.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.7.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.7.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"10.0.8.0\/24":[
|
||||
{
|
||||
"prefix":"10.0.8.0\/24",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.1.3",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.2.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"ip":"10.0.3.4",
|
||||
"afi":"ipv4",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
130
tests/topotests/isis-sr-topo1/rt2/step6/show_ipv6_route.ref
Normal file
130
tests/topotests/isis-sr-topo1/rt2/step6/show_ipv6_route.ref
Normal file
@ -0,0 +1,130 @@
|
||||
{
|
||||
"2001:db8:1000::1\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::1\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
3
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::3\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::3\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17031
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::4\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::4\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":20,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16041
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::5\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::5\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-sw1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
17051
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"2001:db8:1000::6\/128":[
|
||||
{
|
||||
"prefix":"2001:db8:1000::6\/128",
|
||||
"protocol":"isis",
|
||||
"selected":true,
|
||||
"destSelected":true,
|
||||
"distance":115,
|
||||
"metric":30,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-1",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
},
|
||||
{
|
||||
"fib":true,
|
||||
"afi":"ipv6",
|
||||
"interfaceName":"eth-rt4-2",
|
||||
"active":true,
|
||||
"labels":[
|
||||
16061
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
168
tests/topotests/isis-sr-topo1/rt2/step6/show_mpls_table.ref
Normal file
168
tests/topotests/isis-sr-topo1/rt2/step6/show_mpls_table.ref
Normal file
@ -0,0 +1,168 @@
|
||||
{
|
||||
"16010":{
|
||||
"inLabel":16010,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16011":{
|
||||
"inLabel":16011,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16020":{
|
||||
"inLabel":16020,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16021":{
|
||||
"inLabel":16021,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":3,
|
||||
"installed":true
|
||||
}
|
||||
]
|
||||
},
|
||||
"16030":{
|
||||
"inLabel":16030,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17030,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16031":{
|
||||
"inLabel":16031,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17031,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16040":{
|
||||
"inLabel":16040,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16040,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16041":{
|
||||
"inLabel":16041,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16041,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16050":{
|
||||
"inLabel":16050,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17050,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.1.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16051":{
|
||||
"inLabel":16051,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":17051,
|
||||
"installed":true,
|
||||
"interface":"eth-sw1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16060":{
|
||||
"inLabel":16060,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.3.4"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16060,
|
||||
"installed":true,
|
||||
"nexthop":"10.0.2.4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"16061":{
|
||||
"inLabel":16061,
|
||||
"installed":true,
|
||||
"nexthops":[
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-2"
|
||||
},
|
||||
{
|
||||
"type":"SR (IS-IS)",
|
||||
"outLabel":16061,
|
||||
"installed":true,
|
||||
"interface":"eth-rt4-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user