summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfdd/bfd.c257
-rw-r--r--bfdd/bfd.h86
-rw-r--r--bfdd/bfdd_cli.c136
-rw-r--r--bfdd/bfdd_nb.c67
-rw-r--r--bfdd/bfdd_nb.h19
-rw-r--r--bfdd/bfdd_nb_config.c241
-rw-r--r--bfdd/ptm_adapter.c3
-rw-r--r--bgpd/bgp_vty.c6
-rw-r--r--doc/user/bfd.rst57
-rw-r--r--isisd/isis_circuit.c2
-rw-r--r--isisd/isis_nb.c70
-rw-r--r--isisd/isis_nb.h39
-rw-r--r--isisd/isis_nb_state.c106
-rw-r--r--lib/command.c3
-rw-r--r--lib/command.h3
-rw-r--r--ripd/rip_nb_state.c1
-rw-r--r--ripngd/ripng_nb_state.c1
-rw-r--r--tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref42
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref33
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref33
-rw-r--r--tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref94
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref69
-rw-r--r--tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref94
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref69
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref69
-rw-r--r--tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref104
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref61
-rw-r--r--tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref78
-rw-r--r--tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref52
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref61
-rw-r--r--tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref104
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref61
-rw-r--r--tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref78
-rw-r--r--tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref52
-rw-r--r--tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref78
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref61
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref61
-rw-r--r--tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref52
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref43
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref43
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref43
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref43
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref43
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref43
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref43
l---------[-rw-r--r--]tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref43
-rw-r--r--vtysh/vtysh.c21
-rw-r--r--yang/frr-bfdd.yang38
-rw-r--r--yang/frr-isisd.yang10
-rw-r--r--zebra/zebra_nb_state.c84
80 files changed, 1639 insertions, 3115 deletions
diff --git a/bfdd/bfd.c b/bfdd/bfd.c
index e5432af553..a021b5cabc 100644
--- a/bfdd/bfd.c
+++ b/bfdd/bfd.c
@@ -33,6 +33,7 @@
#include "bfd.h"
DEFINE_MTYPE_STATIC(BFDD, BFDD_CONFIG, "long-lived configuration memory")
+DEFINE_MTYPE_STATIC(BFDD, BFDD_PROFILE, "long-lived profile memory")
DEFINE_MTYPE_STATIC(BFDD, BFDD_SESSION_OBSERVER, "Session observer")
DEFINE_MTYPE_STATIC(BFDD, BFDD_VRF, "BFD VRF")
@@ -53,12 +54,186 @@ static void bs_up_handler(struct bfd_session *bs, int nstate);
static void bs_neighbour_admin_down_handler(struct bfd_session *bfd,
uint8_t diag);
+/**
+ * Remove BFD profile from all BFD sessions so we don't leave dangling
+ * pointers.
+ */
+static void bfd_profile_detach(struct bfd_profile *bp);
+
/* Zeroed array with the size of an IPv6 address. */
struct in6_addr zero_addr;
+/** BFD profiles list. */
+struct bfdproflist bplist;
+
/*
* Functions
*/
+struct bfd_profile *bfd_profile_lookup(const char *name)
+{
+ struct bfd_profile *bp;
+
+ TAILQ_FOREACH (bp, &bplist, entry) {
+ if (strcmp(name, bp->name))
+ continue;
+
+ return bp;
+ }
+
+ return NULL;
+}
+
+static void bfd_profile_set_default(struct bfd_profile *bp)
+{
+ bp->admin_shutdown = true;
+ bp->detection_multiplier = BFD_DEFDETECTMULT;
+ bp->echo_mode = false;
+ bp->min_echo_rx = BFD_DEF_REQ_MIN_ECHO;
+ bp->min_rx = BFD_DEFREQUIREDMINRX;
+ bp->min_tx = BFD_DEFDESIREDMINTX;
+}
+
+struct bfd_profile *bfd_profile_new(const char *name)
+{
+ struct bfd_profile *bp;
+
+ /* Search for duplicates. */
+ if (bfd_profile_lookup(name) != NULL)
+ return NULL;
+
+ /* Allocate, name it and put into list. */
+ bp = XCALLOC(MTYPE_BFDD_PROFILE, sizeof(*bp));
+ strlcpy(bp->name, name, sizeof(bp->name));
+ TAILQ_INSERT_TAIL(&bplist, bp, entry);
+
+ /* Set default values. */
+ bfd_profile_set_default(bp);
+
+ return bp;
+}
+
+void bfd_profile_free(struct bfd_profile *bp)
+{
+ /* Detach from any session. */
+ bfd_profile_detach(bp);
+
+ /* Remove from global list. */
+ TAILQ_REMOVE(&bplist, bp, entry);
+ free(bp);
+}
+
+/**
+ * Removes a profile and tests whether it needs to apply the changes or not.
+ *
+ * \param bs the BFD session.
+ * \param apply whether or not to apply configurations immediately.
+ */
+static void _bfd_profile_remove(struct bfd_session *bs, bool apply)
+{
+ struct bfd_profile *bp;
+
+ /* No profile applied, nothing to do. */
+ bp = bs->profile;
+ if (bp == NULL)
+ return;
+
+ /* Remove the profile association. */
+ bs->profile = NULL;
+
+ /* Set multiplier to the default. */
+ bs->detect_mult = bs->peer_profile.detection_multiplier;
+
+ /* Set timers back to user configuration. */
+ bs->timers.desired_min_tx = bs->peer_profile.min_tx;
+ bs->timers.required_min_rx = bs->peer_profile.min_rx;
+
+ /* We can only apply echo options on single hop sessions. */
+ if (!CHECK_FLAG(bs->flags, BFD_SESS_FLAG_MH)) {
+ /* Set default echo timer. */
+ bs->timers.required_min_echo = bs->peer_profile.min_echo_rx;
+
+ /* Default is no echo mode. */
+ if (apply)
+ bfd_set_echo(bs, bs->peer_profile.echo_mode);
+ }
+
+ if (apply)
+ bfd_set_shutdown(bs, bs->peer_profile.admin_shutdown);
+}
+
+void bfd_profile_apply(const char *profname, struct bfd_session *bs)
+{
+ struct bfd_profile *bp;
+
+ /* Remove previous profile if any. */
+ if (bs->profile_name) {
+ _bfd_profile_remove(bs, false);
+
+ /* We are changing profiles. */
+ if (strcmp(bs->profile_name, profname)) {
+ XFREE(MTYPE_BFDD_PROFILE, bs->profile_name);
+ bs->profile_name =
+ XSTRDUP(MTYPE_BFDD_PROFILE, profname);
+ }
+ } else /* Save the current profile name (in case it doesn't exist). */
+ bs->profile_name = XSTRDUP(MTYPE_BFDD_PROFILE, profname);
+
+ /* Look up new profile to apply. */
+ bp = bfd_profile_lookup(profname);
+ if (bp == NULL)
+ return;
+
+ /* Point to profile if it exists. */
+ bs->profile = bp;
+
+ /* Set multiplier if not the default. */
+ if (bs->peer_profile.detection_multiplier == BFD_DEFDETECTMULT)
+ bs->detect_mult = bp->detection_multiplier;
+ else
+ bs->detect_mult = bs->peer_profile.detection_multiplier;
+
+ /* Set timers if not the default. */
+ if (bs->peer_profile.min_tx == BFD_DEFDESIREDMINTX)
+ bs->timers.desired_min_tx = bp->min_tx;
+ else
+ bs->timers.desired_min_tx = bs->peer_profile.min_tx;
+
+ if (bs->peer_profile.min_rx == BFD_DEFREQUIREDMINRX)
+ bs->timers.required_min_rx = bp->min_rx;
+ else
+ bs->timers.required_min_rx = bs->peer_profile.min_rx;
+
+ /* We can only apply echo options on single hop sessions. */
+ if (!CHECK_FLAG(bs->flags, BFD_SESS_FLAG_MH)) {
+ /* Configure remote echo if it was default. */
+ if (bs->peer_profile.min_echo_rx == BFD_DEF_REQ_MIN_ECHO)
+ bs->timers.required_min_echo = bp->min_echo_rx;
+ else
+ bs->timers.required_min_echo =
+ bs->peer_profile.min_echo_rx;
+
+ /* Toggle echo if default value. */
+ if (bs->peer_profile.echo_mode == false)
+ bfd_set_echo(bs, bp->echo_mode);
+ else
+ bfd_set_echo(bs, bs->peer_profile.echo_mode);
+ }
+
+ /* Toggle 'no shutdown' if default value. */
+ if (bs->peer_profile.admin_shutdown)
+ bfd_set_shutdown(bs, bp->admin_shutdown);
+ else
+ bfd_set_shutdown(bs, bs->peer_profile.admin_shutdown);
+}
+
+void bfd_profile_remove(struct bfd_session *bs)
+{
+ /* Remove any previous set profile name. */
+ XFREE(MTYPE_BFDD_PROFILE, bs->profile_name);
+
+ _bfd_profile_remove(bs, true);
+}
+
void gen_bfd_key(struct bfd_key *key, struct sockaddr_any *peer,
struct sockaddr_any *local, bool mhop, const char *ifname,
const char *vrfname)
@@ -494,6 +669,9 @@ struct bfd_session *bfd_session_new(void)
bs = XCALLOC(MTYPE_BFDD_CONFIG, sizeof(*bs));
+ /* Set peer session defaults. */
+ bfd_profile_set_default(&bs->peer_profile);
+
bs->timers.desired_min_tx = BFD_DEFDESIREDMINTX;
bs->timers.required_min_rx = BFD_DEFREQUIREDMINRX;
bs->timers.required_min_echo = BFD_DEF_REQ_MIN_ECHO;
@@ -550,17 +728,25 @@ int bfd_session_update_label(struct bfd_session *bs, const char *nlabel)
static void _bfd_session_update(struct bfd_session *bs,
struct bfd_peer_cfg *bpc)
{
- if (bpc->bpc_has_txinterval)
+ if (bpc->bpc_has_txinterval) {
bs->timers.desired_min_tx = bpc->bpc_txinterval * 1000;
+ bs->peer_profile.min_tx = bs->timers.desired_min_tx;
+ }
- if (bpc->bpc_has_recvinterval)
+ if (bpc->bpc_has_recvinterval) {
bs->timers.required_min_rx = bpc->bpc_recvinterval * 1000;
+ bs->peer_profile.min_rx = bs->timers.required_min_rx;
+ }
- if (bpc->bpc_has_detectmultiplier)
+ if (bpc->bpc_has_detectmultiplier) {
bs->detect_mult = bpc->bpc_detectmultiplier;
+ bs->peer_profile.detection_multiplier = bs->detect_mult;
+ }
- if (bpc->bpc_has_echointerval)
+ if (bpc->bpc_has_echointerval) {
bs->timers.required_min_echo = bpc->bpc_echointerval * 1000;
+ bs->peer_profile.min_echo_rx = bs->timers.required_min_echo;
+ }
if (bpc->bpc_has_label)
bfd_session_update_label(bs, bpc->bpc_label);
@@ -570,12 +756,14 @@ static void _bfd_session_update(struct bfd_session *bs,
else
UNSET_FLAG(bs->flags, BFD_SESS_FLAG_CBIT);
+ bs->peer_profile.echo_mode = bpc->bpc_echo;
bfd_set_echo(bs, bpc->bpc_echo);
/*
* Shutdown needs to be the last in order to avoid timers enable when
* the session is disabled.
*/
+ bs->peer_profile.admin_shutdown = bpc->bpc_shutdown;
bfd_set_shutdown(bs, bpc->bpc_shutdown);
}
@@ -613,6 +801,7 @@ void bfd_session_free(struct bfd_session *bs)
pl_free(bs->pl);
+ XFREE(MTYPE_BFDD_PROFILE, bs->profile_name);
XFREE(MTYPE_BFDD_CONFIG, bs);
}
@@ -1070,9 +1259,21 @@ void bfd_set_echo(struct bfd_session *bs, bool echo)
void bfd_set_shutdown(struct bfd_session *bs, bool shutdown)
{
+ bool is_shutdown;
+
+ /*
+ * Special case: we are batching changes and the previous state was
+ * not shutdown. Instead of potentially disconnect a running peer,
+ * we'll get the current status to validate we were really down.
+ */
+ if (bs->ses_state == PTM_BFD_UP)
+ is_shutdown = false;
+ else
+ is_shutdown = CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN);
+
if (shutdown) {
/* Already shutdown. */
- if (CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN))
+ if (is_shutdown)
return;
SET_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN);
@@ -1092,7 +1293,7 @@ void bfd_set_shutdown(struct bfd_session *bs, bool shutdown)
ptm_bfd_snd(bs, 0);
} else {
/* Already working. */
- if (!CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN))
+ if (!is_shutdown)
return;
UNSET_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN);
@@ -1577,6 +1778,7 @@ void bfd_initialize(void)
"BFD session discriminator hash");
bfd_key_hash = hash_create(bfd_key_hash_do, bfd_key_hash_cmp,
"BFD session hash");
+ TAILQ_INIT(&bplist);
}
static void _bfd_free(struct hash_bucket *hb,
@@ -1589,6 +1791,8 @@ static void _bfd_free(struct hash_bucket *hb,
void bfd_shutdown(void)
{
+ struct bfd_profile *bp;
+
/*
* Close and free all BFD sessions.
*
@@ -1602,6 +1806,10 @@ void bfd_shutdown(void)
/* Now free the hashes themselves. */
hash_free(bfd_id_hash);
hash_free(bfd_key_hash);
+
+ /* Free all profile allocations. */
+ while ((bp = TAILQ_FIRST(&bplist)) != NULL)
+ bfd_profile_free(bp);
}
struct bfd_session_iterator {
@@ -1690,6 +1898,43 @@ void bfd_sessions_remove_manual(void)
}
/*
+ * Profile related hash functions.
+ */
+static void _bfd_profile_update(struct hash_bucket *hb, void *arg)
+{
+ struct bfd_profile *bp = arg;
+ struct bfd_session *bs = hb->data;
+
+ /* This session is not using the profile. */
+ if (bs->profile_name == NULL || strcmp(bs->profile_name, bp->name) != 0)
+ return;
+
+ bfd_profile_apply(bp->name, bs);
+}
+
+void bfd_profile_update(struct bfd_profile *bp)
+{
+ hash_iterate(bfd_key_hash, _bfd_profile_update, bp);
+}
+
+static void _bfd_profile_detach(struct hash_bucket *hb, void *arg)
+{
+ struct bfd_profile *bp = arg;
+ struct bfd_session *bs = hb->data;
+
+ /* This session is not using the profile. */
+ if (bs->profile_name == NULL || strcmp(bs->profile_name, bp->name) != 0)
+ return;
+
+ bfd_profile_remove(bs);
+}
+
+static void bfd_profile_detach(struct bfd_profile *bp)
+{
+ hash_iterate(bfd_key_hash, _bfd_profile_detach, bp);
+}
+
+/*
* VRF related functions.
*/
static int bfd_vrf_new(struct vrf *vrf)
diff --git a/bfdd/bfd.h b/bfdd/bfd.h
index 5a81d80424..5984662a01 100644
--- a/bfdd/bfd.h
+++ b/bfdd/bfd.h
@@ -192,6 +192,34 @@ struct bfd_session_stats {
uint64_t znotification;
};
+/**
+ * BFD session profile to override default configurations.
+ */
+struct bfd_profile {
+ /** Profile name. */
+ char name[64];
+
+ /** Session detection multiplier. */
+ uint8_t detection_multiplier;
+ /** Desired transmission interval (in microseconds). */
+ uint32_t min_tx;
+ /** Minimum required receive interval (in microseconds). */
+ uint32_t min_rx;
+ /** Administrative state. */
+ bool admin_shutdown;
+
+ /** Echo mode (only applies to single hop). */
+ bool echo_mode;
+ /** Minimum required echo receive interval (in microseconds). */
+ uint32_t min_echo_rx;
+
+ /** Profile list entry. */
+ TAILQ_ENTRY(bfd_profile) entry;
+};
+
+/** Profile list type. */
+TAILQ_HEAD(bfdproflist, bfd_profile);
+
/* bfd_session shortcut label forwarding. */
struct peer_label;
@@ -210,6 +238,13 @@ struct bfd_session {
uint8_t mh_ttl;
uint8_t remote_cbit;
+ /** BFD profile name. */
+ char *profile_name;
+ /** BFD pre configured profile. */
+ struct bfd_profile *profile;
+ /** BFD peer configuration (without profile). */
+ struct bfd_profile peer_profile;
+
/* Timers */
struct bfd_timers timers;
struct bfd_timers cur_timers;
@@ -597,6 +632,57 @@ int bfd_echo_xmt_cb(struct thread *t);
extern struct in6_addr zero_addr;
+/**
+ * Creates a new profile entry and insert into the global list.
+ *
+ * \param name the BFD profile name.
+ *
+ * \returns `NULL` if it already exists otherwise the new entry.
+ */
+struct bfd_profile *bfd_profile_new(const char *name);
+
+/**
+ * Search for configured BFD profiles (profile name is case insensitive).
+ *
+ * \param name the BFD profile name.
+ *
+ * \returns `NULL` if it doesn't exist otherwise the entry.
+ */
+struct bfd_profile *bfd_profile_lookup(const char *name);
+
+/**
+ * Removes profile from list and free memory.
+ *
+ * \param bp the BFD profile.
+ */
+void bfd_profile_free(struct bfd_profile *bp);
+
+/**
+ * Apply a profile configuration to an existing BFD session. The non default
+ * values will not be overriden.
+ *
+ * NOTE: if the profile doesn't exist yet, then the profile will be applied
+ * once it begins to exist.
+ *
+ * \param profile_name the BFD profile name.
+ * \param bs the BFD session.
+ */
+void bfd_profile_apply(const char *profname, struct bfd_session *bs);
+
+/**
+ * Remove any applied profile from session and revert the session
+ * configuration.
+ *
+ * \param bs the BFD session.
+ */
+void bfd_profile_remove(struct bfd_session *bs);
+
+/**
+ * Apply new profile values to sessions using it.
+ *
+ * \param[in] bp the BFD profile that got updated.
+ */
+void bfd_profile_update(struct bfd_profile *bp);
/*
* bfdd_vty.c
diff --git a/bfdd/bfdd_cli.c b/bfdd/bfdd_cli.c
index 3e44fcb22a..166997e674 100644
--- a/bfdd/bfdd_cli.c
+++ b/bfdd/bfdd_cli.c
@@ -395,6 +395,125 @@ void bfd_cli_show_echo_interval(struct vty *vty, struct lyd_node *dnode,
}
}
+/*
+ * Profile commands.
+ */
+DEFPY_NOSH(bfd_profile, bfd_profile_cmd,
+ "profile WORD$name",
+ BFD_PROFILE_STR
+ BFD_PROFILE_NAME_STR)
+{
+ char xpath[XPATH_MAXLEN];
+ int rv;
+
+ snprintf(xpath, sizeof(xpath), "/frr-bfdd:bfdd/bfd/profile[name='%s']",
+ name);
+
+ nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
+
+ /* Apply settings immediately. */
+ rv = nb_cli_apply_changes(vty, NULL);
+ if (rv == CMD_SUCCESS)
+ VTY_PUSH_XPATH(BFD_PROFILE_NODE, xpath);
+
+ return CMD_SUCCESS;
+}
+
+DEFPY(no_bfd_profile, no_bfd_profile_cmd,
+ "no profile BFDPROF$name",
+ NO_STR
+ BFD_PROFILE_STR
+ BFD_PROFILE_NAME_STR)
+{
+ char xpath[XPATH_MAXLEN];
+
+ snprintf(xpath, sizeof(xpath), "/frr-bfdd:bfdd/bfd/profile[name='%s']",
+ name);
+
+ nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL);
+
+ /* Apply settings immediately. */
+ return nb_cli_apply_changes(vty, NULL);
+}
+
+void bfd_cli_show_profile(struct vty *vty, struct lyd_node *dnode,
+ bool show_defaults)
+{
+ vty_out(vty, " profile %s\n", yang_dnode_get_string(dnode, "./name"));
+}
+
+ALIAS(bfd_peer_mult, bfd_profile_mult_cmd,
+ "detect-multiplier (2-255)$multiplier",
+ "Configure peer detection multiplier\n"
+ "Configure peer detection multiplier value\n")
+
+ALIAS(bfd_peer_tx, bfd_profile_tx_cmd,
+ "transmit-interval (10-60000)$interval",
+ "Configure peer transmit interval\n"
+ "Configure peer transmit interval value in milliseconds\n")
+
+ALIAS(bfd_peer_rx, bfd_profile_rx_cmd,
+ "receive-interval (10-60000)$interval",
+ "Configure peer receive interval\n"
+ "Configure peer receive interval value in milliseconds\n")
+
+ALIAS(bfd_peer_shutdown, bfd_profile_shutdown_cmd,
+ "[no] shutdown",
+ NO_STR
+ "Disable BFD peer\n")
+
+ALIAS(bfd_peer_echo, bfd_profile_echo_cmd,
+ "[no] echo-mode",
+ NO_STR
+ "Configure echo mode\n")
+
+ALIAS(bfd_peer_echo_interval, bfd_profile_echo_interval_cmd,
+ "echo-interval (10-60000)$interval",
+ "Configure peer echo interval\n"
+ "Configure peer echo interval value in milliseconds\n")
+
+DEFPY(bfd_peer_profile, bfd_peer_profile_cmd,
+ "[no] profile BFDPROF$pname",
+ NO_STR
+ "Use BFD profile settings\n"
+ BFD_PROFILE_NAME_STR)
+{
+ if (no)
+ nb_cli_enqueue_change(vty, "./profile", NB_OP_DESTROY, NULL);
+ else
+ nb_cli_enqueue_change(vty, "./profile", NB_OP_MODIFY, pname);
+
+ return nb_cli_apply_changes(vty, NULL);
+}
+
+void bfd_cli_peer_profile_show(struct vty *vty, struct lyd_node *dnode,
+ bool show_defaults)
+{
+ vty_out(vty, " profile %s\n", yang_dnode_get_string(dnode, NULL));
+}
+
+struct cmd_node bfd_profile_node = {
+ .name = "bfd profile",
+ .node = BFD_PROFILE_NODE,
+ .parent_node = BFD_NODE,
+ .prompt = "%s(config-bfd-profile)# ",
+};
+
+static void bfd_profile_var(vector comps, struct cmd_token *token)
+{
+ extern struct bfdproflist bplist;
+ struct bfd_profile *bp;
+
+ TAILQ_FOREACH (bp, &bplist, entry) {
+ vector_set(comps, XSTRDUP(MTYPE_COMPLETION, bp->name));
+ }
+}
+
+static const struct cmd_variable_handler bfd_vars[] = {
+ {.tokenname = "BFDPROF", .completions = bfd_profile_var},
+ {.completions = NULL}
+};
+
void
bfdd_cli_init(void)
{
@@ -410,4 +529,21 @@ bfdd_cli_init(void)
install_element(BFD_PEER_NODE, &bfd_peer_tx_cmd);
install_element(BFD_PEER_NODE, &bfd_peer_echo_cmd);
install_element(BFD_PEER_NODE, &bfd_peer_echo_interval_cmd);
+ install_element(BFD_PEER_NODE, &bfd_peer_profile_cmd);
+
+ /* Profile commands. */
+ cmd_variable_handler_register(bfd_vars);
+
+ install_node(&bfd_profile_node);
+ install_default(BFD_PROFILE_NODE);
+
+ install_element(BFD_NODE, &bfd_profile_cmd);
+ install_element(BFD_NODE, &no_bfd_profile_cmd);
+
+ install_element(BFD_PROFILE_NODE, &bfd_profile_mult_cmd);
+ install_element(BFD_PROFILE_NODE, &bfd_profile_tx_cmd);
+ install_element(BFD_PROFILE_NODE, &bfd_profile_rx_cmd);
+ install_element(BFD_PROFILE_NODE, &bfd_profile_shutdown_cmd);
+ install_element(BFD_PROFILE_NODE, &bfd_profile_echo_cmd);
+ install_element(BFD_PROFILE_NODE, &bfd_profile_echo_interval_cmd);
}
diff --git a/bfdd/bfdd_nb.c b/bfdd/bfdd_nb.c
index 8d46742337..2ff99ca608 100644
--- a/bfdd/bfdd_nb.c
+++ b/bfdd/bfdd_nb.c
@@ -41,6 +41,57 @@ const struct frr_yang_module_info frr_bfdd_info = {
}
},
{
+ .xpath = "/frr-bfdd:bfdd/bfd/profile",
+ .cbs = {
+ .create = bfdd_bfd_profile_create,
+ .destroy = bfdd_bfd_profile_destroy,
+ .cli_show = bfd_cli_show_profile,
+ .cli_show_end = bfd_cli_show_peer_end,
+ }
+ },
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/profile/detection-multiplier",
+ .cbs = {
+ .modify = bfdd_bfd_profile_detection_multiplier_modify,
+ .cli_show = bfd_cli_show_mult,
+ }
+ },
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/profile/desired-transmission-interval",
+ .cbs = {
+ .modify = bfdd_bfd_profile_desired_transmission_interval_modify,
+ .cli_show = bfd_cli_show_tx,
+ }
+ },
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/profile/required-receive-interval",
+ .cbs = {
+ .modify = bfdd_bfd_profile_required_receive_interval_modify,
+ .cli_show = bfd_cli_show_rx,
+ }
+ },
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/profile/administrative-down",
+ .cbs = {
+ .modify = bfdd_bfd_profile_administrative_down_modify,
+ .cli_show = bfd_cli_show_shutdown,
+ }
+ },
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/profile/echo-mode",
+ .cbs = {
+ .modify = bfdd_bfd_profile_echo_mode_modify,
+ .cli_show = bfd_cli_show_echo,
+ }
+ },
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/profile/desired-echo-transmission-interval",
+ .cbs = {
+ .modify = bfdd_bfd_profile_desired_echo_transmission_interval_modify,
+ .cli_show = bfd_cli_show_echo_interval,
+ }
+ },
+ {
.xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop",
.cbs = {
.create = bfdd_bfd_sessions_single_hop_create,
@@ -59,6 +110,14 @@ const struct frr_yang_module_info frr_bfdd_info = {
.destroy = bfdd_bfd_sessions_single_hop_source_addr_destroy,
}
},
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/profile",
+ .cbs = {
+ .modify = bfdd_bfd_sessions_single_hop_profile_modify,
+ .destroy = bfdd_bfd_sessions_single_hop_profile_destroy,
+ .cli_show = bfd_cli_peer_profile_show,
+ }
+ },
{
.xpath = "/frr-bfdd:bfdd/bfd/sessions/single-hop/detection-multiplier",
.cbs = {
@@ -233,6 +292,14 @@ const struct frr_yang_module_info frr_bfdd_info = {
.cli_show_end = bfd_cli_show_peer_end,
}
},
+ {
+ .xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/profile",
+ .cbs = {
+ .modify = bfdd_bfd_sessions_single_hop_profile_modify,
+ .destroy = bfdd_bfd_sessions_single_hop_profile_destroy,
+ .cli_show = bfd_cli_peer_profile_show,
+ }
+ },
{
.xpath = "/frr-bfdd:bfdd/bfd/sessions/multi-hop/detection-multiplier",
.cbs = {
diff --git a/bfdd/bfdd_nb.h b/bfdd/bfdd_nb.h
index 4fba3a0d30..a379c2135e 100644
--- a/bfdd/bfdd_nb.h
+++ b/bfdd/bfdd_nb.h
@@ -28,6 +28,18 @@ extern const struct frr_yang_module_info frr_bfdd_info;
/* Mandatory callbacks. */
int bfdd_bfd_create(struct nb_cb_create_args *args);
int bfdd_bfd_destroy(struct nb_cb_destroy_args *args);
+int bfdd_bfd_profile_create(struct nb_cb_create_args *args);
+int bfdd_bfd_profile_destroy(struct nb_cb_destroy_args *args);
+int bfdd_bfd_profile_detection_multiplier_modify(
+ struct nb_cb_modify_args *args);
+int bfdd_bfd_profile_desired_transmission_interval_modify(
+ struct nb_cb_modify_args *args);
+int bfdd_bfd_profile_required_receive_interval_modify(
+ struct nb_cb_modify_args *args);
+int bfdd_bfd_profile_administrative_down_modify(struct nb_cb_modify_args *args);
+int bfdd_bfd_profile_echo_mode_modify(struct nb_cb_modify_args *args);
+int bfdd_bfd_profile_desired_echo_transmission_interval_modify(
+ struct nb_cb_modify_args *args);
int bfdd_bfd_sessions_single_hop_create(struct nb_cb_create_args *args);
int bfdd_bfd_sessions_single_hop_destroy(struct nb_cb_destroy_args *args);
const void *
@@ -39,6 +51,9 @@ int bfdd_bfd_sessions_single_hop_source_addr_modify(
struct nb_cb_modify_args *args);
int bfdd_bfd_sessions_single_hop_source_addr_destroy(
struct nb_cb_destroy_args *args);
+int bfdd_bfd_sessions_single_hop_profile_modify(struct nb_cb_modify_args *args);
+int bfdd_bfd_sessions_single_hop_profile_destroy(
+ struct nb_cb_destroy_args *args);
int bfdd_bfd_sessions_single_hop_detection_multiplier_modify(
struct nb_cb_modify_args *args);
int bfdd_bfd_sessions_single_hop_desired_transmission_interval_modify(
@@ -187,5 +202,9 @@ void bfd_cli_show_echo(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void bfd_cli_show_echo_interval(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
+void bfd_cli_show_profile(struct vty *vty, struct lyd_node *dnode,
+ bool show_defaults);
+void bfd_cli_peer_profile_show(struct vty *vty, struct lyd_node *dnode,
+ bool show_defaults);
#endif /* _FRR_BFDD_NB_H_ */
diff --git a/bfdd/bfdd_nb_config.c b/bfdd/bfdd_nb_config.c
index df8a644e78..de11997d1a 100644
--- a/bfdd/bfdd_nb_config.c
+++ b/bfdd/bfdd_nb_config.c
@@ -215,6 +215,211 @@ int bfdd_bfd_destroy(struct nb_cb_destroy_args *args)
}
/*
+ * XPath: /frr-bfdd:bfdd/bfd/profile
+ */
+int bfdd_bfd_profile_create(struct nb_cb_create_args *args)
+{
+ struct bfd_profile *bp;
+ const char *name;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ name = yang_dnode_get_string(args->dnode, "./name");
+ bp = bfd_profile_new(name);
+ nb_running_set_entry(args->dnode, bp);
+
+ return NB_OK;
+}
+
+int bfdd_bfd_profile_destroy(struct nb_cb_destroy_args *args)
+{
+ struct bfd_profile *bp;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ bp = nb_running_unset_entry(args->dnode);
+ bfd_profile_free(bp);
+
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-bfdd:bfdd/bfd/profile/detection-multiplier
+ */
+int bfdd_bfd_profile_detection_multiplier_modify(struct nb_cb_modify_args *args)
+{
+ struct bfd_profile *bp;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ bp = nb_running_get_entry(args->dnode, NULL, true);
+ bp->detection_multiplier = yang_dnode_get_uint8(args->dnode, NULL);
+
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-bfdd:bfdd/bfd/profile/desired-transmission-interval
+ */
+int bfdd_bfd_profile_desired_transmission_interval_modify(
+ struct nb_cb_modify_args *args)
+{
+ struct bfd_profile *bp;
+ uint32_t min_tx;
+
+ switch (args->event) {
+ case NB_EV_VALIDATE:
+ min_tx = yang_dnode_get_uint32(args->dnode, NULL);
+ if (min_tx < 10000 || min_tx > 60000000)
+ return NB_ERR_VALIDATION;
+ break;
+
+ case NB_EV_PREPARE:
+ /* NOTHING */
+ break;
+
+ case NB_EV_APPLY:
+ min_tx = yang_dnode_get_uint32(args->dnode, NULL);
+ bp = nb_running_get_entry(args->dnode, NULL, true);
+ if (bp->min_tx == min_tx)
+ return NB_OK;
+
+ bp->min_tx = min_tx;
+ bfd_profile_update(bp);
+ break;
+
+ case NB_EV_ABORT:
+ /* NOTHING */
+ break;
+ }
+
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-bfdd:bfdd/bfd/profile/required-receive-interval
+ */
+int bfdd_bfd_profile_required_receive_interval_modify(
+ struct nb_cb_modify_args *args)
+{
+ struct bfd_profile *bp;
+ uint32_t min_rx;
+
+ switch (args->event) {
+ case NB_EV_VALIDATE:
+ min_rx = yang_dnode_get_uint32(args->dnode, NULL);
+ if (min_rx < 10000 || min_rx > 60000000)
+ return NB_ERR_VALIDATION;
+ break;
+
+ case NB_EV_PREPARE:
+ /* NOTHING */
+ break;
+
+ case NB_EV_APPLY:
+ min_rx = yang_dnode_get_uint32(args->dnode, NULL);
+ bp = nb_running_get_entry(args->dnode, NULL, true);
+ if (bp->min_rx == min_rx)
+ return NB_OK;
+
+ bp->min_rx = min_rx;
+ bfd_profile_update(bp);
+ break;
+
+ case NB_EV_ABORT:
+ /* NOTHING */
+ break;
+ }
+
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-bfdd:bfdd/bfd/profile/administrative-down
+ */
+int bfdd_bfd_profile_administrative_down_modify(struct nb_cb_modify_args *args)
+{
+ struct bfd_profile *bp;
+ bool shutdown;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ shutdown = yang_dnode_get_bool(args->dnode, NULL);
+ bp = nb_running_get_entry(args->dnode, NULL, true);
+ if (bp->admin_shutdown == shutdown)
+ return NB_OK;
+
+ bp->admin_shutdown = shutdown;
+ bfd_profile_update(bp);
+
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-bfdd:bfdd/bfd/profile/echo-mode
+ */
+int bfdd_bfd_profile_echo_mode_modify(struct nb_cb_modify_args *args)
+{
+ struct bfd_profile *bp;
+ bool echo;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ echo = yang_dnode_get_bool(args->dnode, NULL);
+ bp = nb_running_get_entry(args->dnode, NULL, true);
+ if (bp->echo_mode == echo)
+ return NB_OK;
+
+ bp->echo_mode = echo;
+ bfd_profile_update(bp);
+
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-bfdd:bfdd/bfd/profile/desired-echo-echo-transmission-interval
+ */
+int bfdd_bfd_profile_desired_echo_transmission_interval_modify(
+ struct nb_cb_modify_args *args)
+{
+ struct bfd_profile *bp;
+ uint32_t min_rx;
+
+ switch (args->event) {
+ case NB_EV_VALIDATE:
+ min_rx = yang_dnode_get_uint32(args->dnode, NULL);
+ if (min_rx < 10000 || min_rx > 60000000)
+ return NB_ERR_VALIDATION;
+ break;
+
+ case NB_EV_PREPARE:
+ /* NOTHING */
+ break;
+
+ case NB_EV_APPLY:
+ min_rx = yang_dnode_get_uint32(args->dnode, NULL);
+ bp = nb_running_get_entry(args->dnode, NULL, true);
+ if (bp->min_echo_rx == min_rx)
+ return NB_OK;
+
+ bp->min_echo_rx = min_rx;
+ bfd_profile_update(bp);
+ break;
+
+ case NB_EV_ABORT:
+ /* NOTHING */
+ break;
+ }
+
+ return NB_OK;
+}
+
+/*
* XPath: /frr-bfdd:bfdd/bfd/sessions/single-hop
*/
int bfdd_bfd_sessions_single_hop_create(struct nb_cb_create_args *args)
@@ -244,6 +449,36 @@ int bfdd_bfd_sessions_single_hop_source_addr_destroy(
}
/*
+ * XPath: /frr-bfdd:bfdd/bfd/sessions/single-hop/profile
+ */
+int bfdd_bfd_sessions_single_hop_profile_modify(struct nb_cb_modify_args *args)
+{
+ struct bfd_session *bs;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ bs = nb_running_get_entry(args->dnode, NULL, true);
+ bfd_profile_apply(yang_dnode_get_string(args->dnode, NULL), bs);
+
+ return NB_OK;
+}
+
+int bfdd_bfd_sessions_single_hop_profile_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ struct bfd_session *bs;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ bs = nb_running_get_entry(args->dnode, NULL, true);
+ bfd_profile_remove(bs);
+
+ return NB_OK;
+}
+
+/*
* XPath: /frr-bfdd:bfdd/bfd/sessions/single-hop/detection-multiplier
*/
int bfdd_bfd_sessions_single_hop_detection_multiplier_modify(
@@ -263,6 +498,7 @@ int bfdd_bfd_sessions_single_hop_detection_multiplier_modify(
case NB_EV_APPLY:
bs = nb_running_get_entry(args->dnode, NULL, true);
bs->detect_mult = detection_multiplier;
+ bs->peer_profile.detection_multiplier = detection_multiplier;
break;
case NB_EV_ABORT:
@@ -298,6 +534,7 @@ int bfdd_bfd_sessions_single_hop_desired_transmission_interval_modify(
return NB_OK;
bs->timers.desired_min_tx = tx_interval;
+ bs->peer_profile.min_tx = tx_interval;
bfd_set_polling(bs);
break;
@@ -334,6 +571,7 @@ int bfdd_bfd_sessions_single_hop_required_receive_interval_modify(
return NB_OK;
bs->timers.required_min_rx = rx_interval;
+ bs->peer_profile.min_rx = rx_interval;
bfd_set_polling(bs);
break;
@@ -367,6 +605,7 @@ int bfdd_bfd_sessions_single_hop_administrative_down_modify(
}
bs = nb_running_get_entry(args->dnode, NULL, true);
+ bs->peer_profile.admin_shutdown = shutdown;
bfd_set_shutdown(bs, shutdown);
return NB_OK;
@@ -394,6 +633,7 @@ int bfdd_bfd_sessions_single_hop_echo_mode_modify(
}
bs = nb_running_get_entry(args->dnode, NULL, true);
+ bs->peer_profile.echo_mode = echo;
bfd_set_echo(bs, echo);
return NB_OK;
@@ -425,6 +665,7 @@ int bfdd_bfd_sessions_single_hop_desired_echo_transmission_interval_modify(
return NB_OK;
bs->timers.required_min_echo = echo_interval;
+ bs->peer_profile.min_echo_rx = echo_interval;
break;
case NB_EV_ABORT:
diff --git a/bfdd/ptm_adapter.c b/bfdd/ptm_adapter.c
index 7efbd2c7b8..25938dd9f5 100644
--- a/bfdd/ptm_adapter.c
+++ b/bfdd/ptm_adapter.c
@@ -417,6 +417,9 @@ static void bfdd_dest_register(struct stream *msg, vrf_id_t vrf_id)
"ptm-add-dest: failed to create BFD session");
return;
}
+
+ /* Protocol created peers are 'no shutdown' by default. */
+ bs->peer_profile.admin_shutdown = false;
} else {
/* Don't try to change echo/shutdown state. */
bpc.bpc_echo = CHECK_FLAG(bs->flags, BFD_SESS_FLAG_ECHO);
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 51a9684235..e16030d82d 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -16027,6 +16027,8 @@ void bgp_vty_init(void)
install_element(BGP_VPNV6_NODE, &neighbor_nexthop_self_all_hidden_cmd);
install_element(BGP_VPNV6_NODE,
&no_neighbor_nexthop_self_all_hidden_cmd);
+ install_element(BGP_EVPN_NODE, &neighbor_nexthop_self_force_cmd);
+ install_element(BGP_EVPN_NODE, &no_neighbor_nexthop_self_force_cmd);
/* "neighbor as-override" commands. */
install_element(BGP_NODE, &neighbor_as_override_hidden_cmd);
@@ -16234,10 +16236,6 @@ void bgp_vty_init(void)
&no_neighbor_route_reflector_client_cmd);
install_element(BGP_EVPN_NODE, &neighbor_route_reflector_client_cmd);
install_element(BGP_EVPN_NODE, &no_neighbor_route_reflector_client_cmd);
- install_element(BGP_EVPN_NODE, &neighbor_nexthop_self_cmd);
- install_element(BGP_EVPN_NODE, &no_neighbor_nexthop_self_cmd);
- install_element(BGP_EVPN_NODE, &neighbor_nexthop_self_force_cmd);
- install_element(BGP_EVPN_NODE, &no_neighbor_nexthop_self_force_cmd);
/* "neighbor route-server" commands.*/
install_element(BGP_NODE, &neighbor_route_server_client_hidden_cmd);
diff --git a/doc/user/bfd.rst b/doc/user/bfd.rst
index 32397d1303..40c2247b5b 100644
--- a/doc/user/bfd.rst
+++ b/doc/user/bfd.rst
@@ -84,6 +84,20 @@ BFDd Commands
Stops and removes the selected peer.
+
+.. index:: profile WORD
+.. clicmd:: profile WORD
+
+ Creates a peer profile that can be configured in multiple peers.
+
+
+.. index:: no profile WORD
+.. clicmd:: no profile WORD
+
+ Deletes a peer profile. Any peer using the profile will have their
+ configurations reset to the default values.
+
+
.. index:: show bfd [vrf NAME] peers [json]
.. clicmd:: show bfd [vrf NAME] peers [json]
@@ -101,8 +115,10 @@ BFDd Commands
.. _bfd-peer-config:
-Peer Configurations
--------------------
+Peer / Profile Configuration
+----------------------------
+
+BFD peers and profiles share the same BFD session configuration commands.
.. index:: detect-multiplier (2-255)
.. clicmd:: detect-multiplier (2-255)
@@ -154,6 +170,10 @@ Peer Configurations
Enables or disables the peer. When the peer is disabled an
'administrative down' message is sent to the remote peer.
+
+BFD Peer Specific Commands
+--------------------------
+
.. index:: label WORD
.. clicmd:: label WORD
@@ -161,6 +181,21 @@ Peer Configurations
later on other daemons to refer to a specific peer.
+.. index:: profile BFDPROF
+.. clicmd:: profile BFDPROF
+
+ Configure peer to use the profile configurations.
+
+ Notes:
+
+ - Profile configurations can be overriden on a peer basis by specifying
+ new parameters in peer configuration node.
+ - Non existing profiles can be configured and they will only be applied
+ once they start to exist.
+ - If the profile gets updated the new configuration will be applied to all
+ peers with the profile without interruptions.
+
+
.. _bfd-bgp-peer-config:
BGP BFD Configuration
@@ -292,6 +327,24 @@ Here are the available peer configurations:
::
bfd
+ ! Configure a fast profile
+ profile fast
+ receive-interval 150
+ transmit-interval 150
+ !
+
+ ! Configure peer with fast profile
+ peer 192.168.0.6
+ profile fast
+ no shutdown
+ !
+
+ ! Configure peer with fast profile and override receive speed.
+ peer 192.168.0.7
+ profile fast
+ receive-interval 500
+ no shutdown
+ !
! configure a peer on an specific interface
peer 192.168.0.1 interface eth0
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index 39118a2c86..1f76a3b2bb 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -1223,6 +1223,8 @@ struct isis_circuit *isis_circuit_create(struct isis_area *area,
if (circuit->state != C_STATE_CONF && circuit->state != C_STATE_UP)
return circuit;
isis_circuit_if_bind(circuit, ifp);
+ if (circuit->area->mta && circuit->area->mta->status)
+ isis_link_params_update(circuit, ifp);
return circuit;
}
diff --git a/isisd/isis_nb.c b/isisd/isis_nb.c
index 8e976d9bc8..f1f183cc59 100644
--- a/isisd/isis_nb.c
+++ b/isisd/isis_nb.c
@@ -763,99 +763,105 @@ const struct frr_yang_module_info frr_isisd_info = {
},
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis",
.cbs = {
- .get_next = lib_interface_isis_adjacencies_adjacency_get_next,
+ .get_elem = lib_interface_state_isis_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sys-type",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency",
.cbs = {
- .get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_sys_type_get_elem,
+ .get_next = lib_interface_state_isis_adjacencies_adjacency_get_next,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sysid",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-sys-type",
.cbs = {
- .get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_sysid_get_elem,
+ .get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_sys_type_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-extended-circuit-id",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-sysid",
.cbs = {
- .get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem,
+ .get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_sysid_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-snpa",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-extended-circuit-id",
.cbs = {
- .get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_snpa_get_elem,
+ .get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/hold-timer",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-snpa",
.cbs = {
- .get_elem = lib_interface_isis_adjacencies_adjacency_hold_timer_get_elem,
+ .get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_snpa_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-priority",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/hold-timer",
.cbs = {
- .get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_priority_get_elem,
+ .get_elem = lib_interface_state_isis_adjacencies_adjacency_hold_timer_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/state",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-priority",
.cbs = {
- .get_elem = lib_interface_isis_adjacencies_adjacency_state_get_elem,
+ .get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-changes",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/state",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_adjacency_changes_get_elem,
+ .get_elem = lib_interface_state_isis_adjacencies_adjacency_state_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-number",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-changes",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_adjacency_number_get_elem,
+ .get_elem = lib_interface_state_isis_event_counters_adjacency_changes_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/init-fails",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-number",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_init_fails_get_elem,
+ .get_elem = lib_interface_state_isis_event_counters_adjacency_number_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-rejects",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/init-fails",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_adjacency_rejects_get_elem,
+ .get_elem = lib_interface_state_isis_event_counters_init_fails_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/id-len-mismatch",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-rejects",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_id_len_mismatch_get_elem,
+ .get_elem = lib_interface_state_isis_event_counters_adjacency_rejects_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/max-area-addresses-mismatch",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/id-len-mismatch",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_max_area_addresses_mismatch_get_elem,
+ .get_elem = lib_interface_state_isis_event_counters_id_len_mismatch_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-type-fails",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/max-area-addresses-mismatch",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_authentication_type_fails_get_elem,
+ .get_elem = lib_interface_state_isis_event_counters_max_area_addresses_mismatch_get_elem,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-fails",
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/authentication-type-fails",
.cbs = {
- .get_elem = lib_interface_isis_event_counters_authentication_fails_get_elem,
+ .get_elem = lib_interface_state_isis_event_counters_authentication_type_fails_get_elem,
+ }
+ },
+ {
+ .xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/authentication-fails",
+ .cbs = {
+ .get_elem = lib_interface_state_isis_event_counters_authentication_fails_get_elem,
}
},
{
diff --git a/isisd/isis_nb.h b/isisd/isis_nb.h
index 58f6c38926..36dbc2d619 100644
--- a/isisd/isis_nb.h
+++ b/isisd/isis_nb.h
@@ -238,45 +238,52 @@ int lib_interface_isis_multi_topology_ipv6_management_modify(
struct nb_cb_modify_args *args);
int lib_interface_isis_multi_topology_ipv6_dstsrc_modify(
struct nb_cb_modify_args *args);
-const void *lib_interface_isis_adjacencies_adjacency_get_next(
+struct yang_data *
+lib_interface_state_isis_get_elem(struct nb_cb_get_elem_args *args);
+const void *lib_interface_state_isis_adjacencies_adjacency_get_next(
struct nb_cb_get_next_args *args);
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_sysid_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_sysid_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_snpa_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_snpa_get_elem(
struct nb_cb_get_elem_args *args);
-struct yang_data *lib_interface_isis_adjacencies_adjacency_hold_timer_get_elem(
+struct yang_data *
+lib_interface_state_isis_adjacencies_adjacency_hold_timer_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_priority_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem(
struct nb_cb_get_elem_args *args);
-struct yang_data *lib_interface_isis_adjacencies_adjacency_state_get_elem(
+struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(
struct nb_cb_get_elem_args *args);
-struct yang_data *lib_interface_isis_event_counters_adjacency_changes_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_adjacency_changes_get_elem(
struct nb_cb_get_elem_args *args);
-struct yang_data *lib_interface_isis_event_counters_adjacency_number_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_adjacency_number_get_elem(
struct nb_cb_get_elem_args *args);
-struct yang_data *lib_interface_isis_event_counters_init_fails_get_elem(
+struct yang_data *lib_interface_state_isis_event_counters_init_fails_get_elem(
struct nb_cb_get_elem_args *args);
-struct yang_data *lib_interface_isis_event_counters_adjacency_rejects_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_adjacency_rejects_get_elem(
struct nb_cb_get_elem_args *args);
-struct yang_data *lib_interface_isis_event_counters_id_len_mismatch_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_id_len_mismatch_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
-lib_interface_isis_event_counters_max_area_addresses_mismatch_get_elem(
+lib_interface_state_isis_event_counters_max_area_addresses_mismatch_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
-lib_interface_isis_event_counters_authentication_type_fails_get_elem(
+lib_interface_state_isis_event_counters_authentication_type_fails_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
-lib_interface_isis_event_counters_authentication_fails_get_elem(
+lib_interface_state_isis_event_counters_authentication_fails_get_elem(
struct nb_cb_get_elem_args *args);
/* Optional 'pre_validate' callbacks. */
diff --git a/isisd/isis_nb_state.c b/isisd/isis_nb_state.c
index 1e44e60ee0..4e325ed8da 100644
--- a/isisd/isis_nb_state.c
+++ b/isisd/isis_nb_state.c
@@ -29,14 +29,35 @@
#include "isisd/isis_misc.h"
/*
- * XPath: /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency
+ * XPath: /frr-interface:lib/interface/state/frr-isisd:isis
*/
-const void *lib_interface_isis_adjacencies_adjacency_get_next(
+struct yang_data *
+lib_interface_state_isis_get_elem(struct nb_cb_get_elem_args *args)
+{
+ struct interface *ifp;
+ struct isis_circuit *circuit;
+
+ ifp = (struct interface *)args->list_entry;
+ if (!ifp)
+ return NULL;
+
+ circuit = circuit_scan_by_ifp(ifp);
+ if (!circuit || !circuit->area)
+ return NULL;
+
+ return yang_data_new(args->xpath, NULL);
+}
+
+/*
+ * XPath:
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency
+ */
+const void *lib_interface_state_isis_adjacencies_adjacency_get_next(
struct nb_cb_get_next_args *args)
{
struct interface *ifp;
struct isis_circuit *circuit;
- struct isis_adjacency *adj, *adj_next = NULL;
+ struct isis_adjacency *adj = NULL, *adj_next = NULL;
struct list *list;
struct listnode *node, *node_next;
@@ -54,17 +75,20 @@ const void *lib_interface_isis_adjacencies_adjacency_get_next(
case CIRCUIT_T_BROADCAST:
for (int level = ISIS_LEVEL1; level <= ISIS_LEVELS;
level++) {
- adj = listnode_head(
- circuit->u.bc.adjdb[level - 1]);
- if (adj)
- break;
+ struct list *adjdb;
+
+ adjdb = circuit->u.bc.adjdb[level - 1];
+ if (adjdb) {
+ adj = listnode_head(adjdb);
+ if (adj)
+ break;
+ }
}
break;
case CIRCUIT_T_P2P:
adj = circuit->u.p2p.neighbor;
break;
default:
- adj = NULL;
break;
}
@@ -101,10 +125,10 @@ const void *lib_interface_isis_adjacencies_adjacency_get_next(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sys-type
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-sys-type
*/
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct isis_adjacency *adj = args->list_entry;
@@ -114,10 +138,10 @@ lib_interface_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sysid
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-sysid
*/
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_sysid_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_sysid_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct isis_adjacency *adj = args->list_entry;
@@ -127,10 +151,10 @@ lib_interface_isis_adjacencies_adjacency_neighbor_sysid_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-extended-circuit-id
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-extended-circuit-id
*/
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct isis_adjacency *adj = args->list_entry;
@@ -140,10 +164,10 @@ lib_interface_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-snpa
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-snpa
*/
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_snpa_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_snpa_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct isis_adjacency *adj = args->list_entry;
@@ -153,9 +177,10 @@ lib_interface_isis_adjacencies_adjacency_neighbor_snpa_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/hold-timer
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/hold-timer
*/
-struct yang_data *lib_interface_isis_adjacencies_adjacency_hold_timer_get_elem(
+struct yang_data *
+lib_interface_state_isis_adjacencies_adjacency_hold_timer_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct isis_adjacency *adj = args->list_entry;
@@ -165,10 +190,10 @@ struct yang_data *lib_interface_isis_adjacencies_adjacency_hold_timer_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-priority
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-priority
*/
struct yang_data *
-lib_interface_isis_adjacencies_adjacency_neighbor_priority_get_elem(
+lib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct isis_adjacency *adj = args->list_entry;
@@ -178,9 +203,9 @@ lib_interface_isis_adjacencies_adjacency_neighbor_priority_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/state
+ * /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/state
*/
-struct yang_data *lib_interface_isis_adjacencies_adjacency_state_get_elem(
+struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct isis_adjacency *adj = args->list_entry;
@@ -191,9 +216,10 @@ struct yang_data *lib_interface_isis_adjacencies_adjacency_state_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-changes
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-changes
*/
-struct yang_data *lib_interface_isis_event_counters_adjacency_changes_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_adjacency_changes_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
@@ -212,9 +238,10 @@ struct yang_data *lib_interface_isis_event_counters_adjacency_changes_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-number
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-number
*/
-struct yang_data *lib_interface_isis_event_counters_adjacency_number_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_adjacency_number_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
@@ -256,9 +283,10 @@ struct yang_data *lib_interface_isis_event_counters_adjacency_number_get_elem(
}
/*
- * XPath: /frr-interface:lib/interface/frr-isisd:isis/event-counters/init-fails
+ * XPath:
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/init-fails
*/
-struct yang_data *lib_interface_isis_event_counters_init_fails_get_elem(
+struct yang_data *lib_interface_state_isis_event_counters_init_fails_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
@@ -277,9 +305,10 @@ struct yang_data *lib_interface_isis_event_counters_init_fails_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-rejects
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-rejects
*/
-struct yang_data *lib_interface_isis_event_counters_adjacency_rejects_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_adjacency_rejects_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
@@ -298,9 +327,10 @@ struct yang_data *lib_interface_isis_event_counters_adjacency_rejects_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/event-counters/id-len-mismatch
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/id-len-mismatch
*/
-struct yang_data *lib_interface_isis_event_counters_id_len_mismatch_get_elem(
+struct yang_data *
+lib_interface_state_isis_event_counters_id_len_mismatch_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
@@ -319,10 +349,10 @@ struct yang_data *lib_interface_isis_event_counters_id_len_mismatch_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/event-counters/max-area-addresses-mismatch
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/max-area-addresses-mismatch
*/
struct yang_data *
-lib_interface_isis_event_counters_max_area_addresses_mismatch_get_elem(
+lib_interface_state_isis_event_counters_max_area_addresses_mismatch_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
@@ -342,10 +372,10 @@ lib_interface_isis_event_counters_max_area_addresses_mismatch_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-type-fails
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/authentication-type-fails
*/
struct yang_data *
-lib_interface_isis_event_counters_authentication_type_fails_get_elem(
+lib_interface_state_isis_event_counters_authentication_type_fails_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
@@ -364,10 +394,10 @@ lib_interface_isis_event_counters_authentication_type_fails_get_elem(
/*
* XPath:
- * /frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-fails
+ * /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/authentication-fails
*/
struct yang_data *
-lib_interface_isis_event_counters_authentication_fails_get_elem(
+lib_interface_state_isis_event_counters_authentication_fails_get_elem(
struct nb_cb_get_elem_args *args)
{
struct interface *ifp;
diff --git a/lib/command.c b/lib/command.c
index d8a2270bc5..c9715965aa 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -836,6 +836,9 @@ enum node_type node_parent(enum node_type node)
case BFD_PEER_NODE:
ret = BFD_NODE;
break;
+ case BFD_PROFILE_NODE:
+ ret = BFD_NODE;
+ break;
default:
ret = CONFIG_NODE;
break;
diff --git a/lib/command.h b/lib/command.h
index 725a201446..ed0ea18d6f 100644
--- a/lib/command.h
+++ b/lib/command.h
@@ -155,6 +155,7 @@ enum node_type {
BGP_FLOWSPECV6_NODE, /* BGP IPv6 FLOWSPEC Address-Family */
BFD_NODE, /* BFD protocol mode. */
BFD_PEER_NODE, /* BFD peer configuration mode. */
+ BFD_PROFILE_NODE, /* BFD profile configuration mode. */
OPENFABRIC_NODE, /* OpenFabric router configuration node */
VRRP_NODE, /* VRRP node */
BMP_NODE, /* BMP config under router bgp */
@@ -403,6 +404,8 @@ struct cmd_node {
#define WATCHFRR_STR "watchfrr information\n"
#define ZEBRA_STR "Zebra information\n"
#define FILTER_LOG_STR "Filter Logs\n"
+#define BFD_PROFILE_STR "BFD profile.\n"
+#define BFD_PROFILE_NAME_STR "BFD profile name.\n"
#define CMD_VNI_RANGE "(1-16777215)"
#define CONF_BACKUP_EXT ".sav"
diff --git a/ripd/rip_nb_state.c b/ripd/rip_nb_state.c
index e88f33ec68..184c760998 100644
--- a/ripd/rip_nb_state.c
+++ b/ripd/rip_nb_state.c
@@ -175,6 +175,7 @@ ripd_instance_state_routes_route_get_next(struct nb_cb_get_next_args *args)
rn = route_top(rip->table);
else
rn = route_next((struct route_node *)args->list_entry);
+ /* Optimization: skip empty route nodes. */
while (rn && rn->info == NULL)
rn = route_next(rn);
diff --git a/ripngd/ripng_nb_state.c b/ripngd/ripng_nb_state.c
index 926573b407..02a00ac429 100644
--- a/ripngd/ripng_nb_state.c
+++ b/ripngd/ripng_nb_state.c
@@ -144,6 +144,7 @@ ripngd_instance_state_routes_route_get_next(struct nb_cb_get_next_args *args)
rn = agg_route_top(ripng->table);
else
rn = agg_route_next((struct agg_node *)args->list_entry);
+ /* Optimization: skip empty route nodes. */
while (rn && rn->info == NULL)
rn = agg_route_next(rn);
diff --git a/tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..69dcc91b1d 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
@@ -4,26 +4,28 @@
{
"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"
- }
- ]
+ "state": {
+ "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"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref
index ce2d356f23..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref
@@ -1,32 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..be018fd59f 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
@@ -4,62 +4,68 @@
{
"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"
- }
- ]
+ "state": {
+ "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"
- }
- ]
+ "state": {
+ "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"
- }
- ]
+ "state": {
+ "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"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref
index 1e65fbff58..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..82069cec48 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
@@ -4,62 +4,68 @@
{
"name": "eth-rt5-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0005",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt5-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0005",
+ "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.0001",
- "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"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0001",
+ "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"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref
index 9c8a4056c0..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref
@@ -1,68 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt5-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt5-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "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.0001",
- "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"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
index 5889349cd8..9d7a19e868 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
@@ -4,72 +4,80 @@
{
"name": "eth-rt2-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0002",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt2-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0002",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt5",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0005",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt6",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0006",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..761cb2fd2f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt2-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt2-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step2/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..5fb8a361ac 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref
@@ -4,54 +4,60 @@
{
"name": "eth-rt2-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0002",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt2-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0002",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt6",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0006",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref
index f7327f0517..2a56f54e16 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref
@@ -4,36 +4,40 @@
{
"name": "eth-rt2-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0002",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt2-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0002",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..761cb2fd2f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt2-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt2-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step2/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..761cb2fd2f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt2-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt2-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step2/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..761cb2fd2f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt2-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt2-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step2/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..761cb2fd2f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt2-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt2-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step2/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..761cb2fd2f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt2-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt2-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step2/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref
index d2fad659bd..761cb2fd2f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt2-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt2-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0002",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step2/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
index 0342069fe3..4a3e626123 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
@@ -4,72 +4,80 @@
{
"name": "eth-rt3-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt3-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt4",
"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"
- }
- ]
+ "state": {
+ "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-rt6",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0006",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..7cdaabf53f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt3-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt3-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step4/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..ae26b5be99 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref
@@ -4,54 +4,60 @@
{
"name": "eth-rt3-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt3-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt6",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0006",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref
index 0466f315c1..7e62a65ea1 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref
@@ -4,36 +4,40 @@
{
"name": "eth-rt3-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt3-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..ae26b5be99 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref
@@ -4,54 +4,60 @@
{
"name": "eth-rt3-1",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt3-2",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0003",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
},
{
"name": "eth-rt6",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0006",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..7cdaabf53f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt3-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt3-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step4/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..7cdaabf53f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt3-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt3-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step4/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..7cdaabf53f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt3-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt3-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step4/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..7cdaabf53f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt3-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt3-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step4/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref
index 3518cc13e1..7cdaabf53f 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref
@@ -1,60 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt3-1",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt3-2",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0003",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- },
- {
- "name": "eth-rt6",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0006",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step4/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..49c40a471c 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
@@ -4,36 +4,40 @@
{
"name": "eth-rt4",
"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"
- }
- ]
+ "state": {
+ "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-rt5",
"vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
+ "state": {
+ "frr-isisd:isis": {
+ "adjacencies": {
+ "adjacency": [
+ {
+ "neighbor-sys-type": "level-1",
+ "neighbor-sysid": "0000.0000.0005",
+ "neighbor-extended-circuit-id": 0,
+ "hold-timer": 9,
+ "neighbor-priority": 0,
+ "state": "up"
+ }
+ ]
+ }
}
}
}
diff --git a/tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref
index 89ce0f65a8..0879b84d23 100644..120000
--- a/tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref
@@ -1,42 +1 @@
-{
- "frr-interface:lib": {
- "interface": [
- {
- "name": "eth-rt4",
- "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-rt5",
- "vrf": "default",
- "frr-isisd:isis": {
- "adjacencies": {
- "adjacency": [
- {
- "neighbor-sys-type": "level-1",
- "neighbor-sysid": "0000.0000.0005",
- "neighbor-extended-circuit-id": 0,
- "hold-timer": 9,
- "neighbor-priority": 0,
- "state": "up"
- }
- ]
- }
- }
- }
- ]
- }
-}
+../step1/show_yang_interface_isis_adjacencies.ref \ No newline at end of file
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 15ec866fc9..21280ec7aa 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -1492,6 +1492,13 @@ static struct cmd_node bfd_peer_node = {
.parent_node = BFD_NODE,
.prompt = "%s(config-bfd-peer)# ",
};
+
+static struct cmd_node bfd_profile_node = {
+ .name = "bfd profile",
+ .node = BFD_PROFILE_NODE,
+ .parent_node = BFD_NODE,
+ .prompt = "%s(config-bfd-profile)# ",
+};
#endif /* HAVE_BFDD */
/* Defined in lib/vty.c */
@@ -1947,6 +1954,15 @@ DEFUNSH(VTYSH_BFDD, bfd_peer_enter, bfd_peer_enter_cmd,
vty->node = BFD_PEER_NODE;
return CMD_SUCCESS;
}
+
+DEFUNSH(VTYSH_BFDD, bfd_profile_enter, bfd_profile_enter_cmd,
+ "profile WORD",
+ BFD_PROFILE_STR
+ BFD_PROFILE_NAME_STR)
+{
+ vty->node = BFD_PROFILE_NODE;
+ return CMD_SUCCESS;
+}
#endif /* HAVE_BFDD */
DEFSH(VTYSH_PBRD, vtysh_no_pbr_map_cmd, "no pbr-map PBRMAP [seq (1-700)]",
@@ -3796,6 +3812,7 @@ void vtysh_init_vty(void)
#if HAVE_BFDD > 0
install_node(&bfd_node);
install_node(&bfd_peer_node);
+ install_node(&bfd_profile_node);
#endif /* HAVE_BFDD */
struct cmd_node *node;
@@ -3897,16 +3914,20 @@ void vtysh_init_vty(void)
/* Enter node. */
install_element(CONFIG_NODE, &bfd_enter_cmd);
install_element(BFD_NODE, &bfd_peer_enter_cmd);
+ install_element(BFD_NODE, &bfd_profile_enter_cmd);
/* Exit/quit node. */
install_element(BFD_NODE, &vtysh_exit_bfdd_cmd);
install_element(BFD_NODE, &vtysh_quit_bfdd_cmd);
install_element(BFD_PEER_NODE, &vtysh_exit_bfdd_cmd);
install_element(BFD_PEER_NODE, &vtysh_quit_bfdd_cmd);
+ install_element(BFD_PROFILE_NODE, &vtysh_exit_bfdd_cmd);
+ install_element(BFD_PROFILE_NODE, &vtysh_quit_bfdd_cmd);
/* End/exit all. */
install_element(BFD_NODE, &vtysh_end_all_cmd);
install_element(BFD_PEER_NODE, &vtysh_end_all_cmd);
+ install_element(BFD_PROFILE_NODE, &vtysh_end_all_cmd);
#endif /* HAVE_BFDD */
install_element(VTY_NODE, &vtysh_exit_line_vty_cmd);
install_element(VTY_NODE, &vtysh_quit_line_vty_cmd);
diff --git a/yang/frr-bfdd.yang b/yang/frr-bfdd.yang
index 19e36fdfd7..13bad27b19 100644
--- a/yang/frr-bfdd.yang
+++ b/yang/frr-bfdd.yang
@@ -139,6 +139,21 @@ module frr-bfdd {
}
}
+ typedef profile-name {
+ type string {
+ length "1..64";
+ }
+ description "Profile name format";
+ }
+
+ typedef profile-ref {
+ type leafref {
+ path "/frr-bfdd:bfdd/frr-bfdd:bfd/frr-bfdd:profile/frr-bfdd:name";
+ require-instance false;
+ }
+ description "Reference to a BFD profile";
+ }
+
/*
* Shared BFD items.
*/
@@ -337,6 +352,19 @@ module frr-bfdd {
container bfd {
presence "Present if the BFD protocol is enabled";
+ list profile {
+ key "name";
+ description "BFD pre configuration profiles";
+
+ leaf name {
+ type profile-name;
+ description "Profile name";
+ }
+
+ uses session-common;
+ uses session-echo;
+ }
+
container sessions {
list single-hop {
key "dest-addr interface vrf";
@@ -364,6 +392,11 @@ module frr-bfdd {
description "Local IP address";
}
+ leaf profile {
+ type profile-ref;
+ description "Override defaults with profile.";
+ }
+
uses session-common;
uses session-echo;
@@ -399,6 +432,11 @@ module frr-bfdd {
description "Virtual Routing Domain name";
}
+ leaf profile {
+ type profile-ref;
+ description "Override defaults with profile.";
+ }
+
uses session-common;
container stats {
diff --git a/yang/frr-isisd.yang b/yang/frr-isisd.yang
index 5882f0522f..445a59bc8a 100644
--- a/yang/frr-isisd.yang
+++ b/yang/frr-isisd.yang
@@ -1298,6 +1298,16 @@ module frr-isisd {
description
"IS-IS interface parameters.";
uses interface-config;
+ }
+ }
+
+ augment "/frr-interface:lib/frr-interface:interface/frr-interface:state" {
+ description
+ "Extends interface model with IS-IS operational data.";
+ container isis {
+ presence "Present if an IS-IS circuit is defined for this interface.";
+ description
+ "IS-IS interface operational data.";
uses interface-state;
}
diff --git a/zebra/zebra_nb_state.c b/zebra/zebra_nb_state.c
index 44a2d172f1..afbabe342c 100644
--- a/zebra/zebra_nb_state.c
+++ b/zebra/zebra_nb_state.c
@@ -221,12 +221,20 @@ const void *
lib_vrf_zebra_ribs_rib_route_get_next(struct nb_cb_get_next_args *args)
{
const struct zebra_router_table *zrt = args->parent_list_entry;
- const struct route_node *rn = args->list_entry;
+ struct route_node *rn = (struct route_node *)args->list_entry;
if (args->list_entry == NULL)
rn = route_top(zrt->table);
else
rn = srcdest_route_next((struct route_node *)rn);
+ /* Optimization: skip empty route nodes. */
+ while (rn && rn->info == NULL)
+ rn = route_next(rn);
+
+ /* Skip link-local routes. */
+ if (rn && rn->p.family == AF_INET6
+ && IN6_IS_ADDR_LINKLOCAL(&rn->p.u.prefix6))
+ return NULL;
return rn;
}
@@ -512,8 +520,9 @@ int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_keys(
const void *lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_lookup_entry(
struct nb_cb_lookup_entry_args *args)
{
- /* TODO: implement me. */
- return NULL;
+ struct route_entry *re = (struct route_entry *)args->parent_list_entry;
+
+ return re->nhe;
}
/*
@@ -617,7 +626,72 @@ const void *
lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_lookup_entry(
struct nb_cb_lookup_entry_args *args)
{
- /* TODO: implement me. */
+ struct nhg_hash_entry *nhe;
+ struct nexthop nexthop_lookup = {};
+ struct nexthop *nexthop;
+ const char *nh_type_str;
+
+ nhe = (struct nhg_hash_entry *)args->parent_list_entry;
+ nexthop_lookup.vrf_id = nhe->vrf_id;
+
+ /*
+ * Get nexthop type.
+ * TODO: use yang_str2enum() instead.
+ */
+ nh_type_str = args->keys->key[0];
+ if (strmatch(nh_type_str, "ifindex"))
+ nexthop_lookup.type = NEXTHOP_TYPE_IFINDEX;
+ else if (strmatch(nh_type_str, "ip4"))
+ nexthop_lookup.type = NEXTHOP_TYPE_IPV4;
+ else if (strmatch(nh_type_str, "ip4-ifindex"))
+ nexthop_lookup.type = NEXTHOP_TYPE_IPV4_IFINDEX;
+ else if (strmatch(nh_type_str, "ip6"))
+ nexthop_lookup.type = NEXTHOP_TYPE_IPV6;
+ else if (strmatch(nh_type_str, "ip6-ifindex"))
+ nexthop_lookup.type = NEXTHOP_TYPE_IPV6_IFINDEX;
+ else if (strmatch(nh_type_str, "blackhole"))
+ nexthop_lookup.type = NEXTHOP_TYPE_BLACKHOLE;
+ else
+ /* unexpected */
+ return NULL;
+
+ /* Get nexthop address. */
+ switch (nexthop_lookup.type) {
+ case NEXTHOP_TYPE_IPV4:
+ case NEXTHOP_TYPE_IPV4_IFINDEX:
+ yang_str2ipv4(args->keys->key[1], &nexthop_lookup.gate.ipv4);
+ break;
+ case NEXTHOP_TYPE_IPV6:
+ case NEXTHOP_TYPE_IPV6_IFINDEX:
+ yang_str2ipv6(args->keys->key[1], &nexthop_lookup.gate.ipv6);
+ break;
+ case NEXTHOP_TYPE_IFINDEX:
+ case NEXTHOP_TYPE_BLACKHOLE:
+ break;
+ }
+
+ /* Get nexthop interface. */
+ switch (nexthop_lookup.type) {
+ case NEXTHOP_TYPE_IPV4_IFINDEX:
+ case NEXTHOP_TYPE_IPV6_IFINDEX:
+ case NEXTHOP_TYPE_IFINDEX:
+ nexthop_lookup.ifindex =
+ ifname2ifindex(args->keys->key[2], nhe->vrf_id);
+ break;
+ case NEXTHOP_TYPE_IPV4:
+ case NEXTHOP_TYPE_IPV6:
+ case NEXTHOP_TYPE_BLACKHOLE:
+ break;
+ }
+
+ /* Lookup requested nexthop (ignore weight and metric). */
+ for (ALL_NEXTHOPS(nhe->nhg, nexthop)) {
+ nexthop_lookup.weight = nexthop->weight;
+ nexthop_lookup.src = nexthop->src;
+ if (nexthop_same_no_labels(&nexthop_lookup, nexthop))
+ return nexthop;
+ }
+
return NULL;
}
@@ -715,7 +789,7 @@ lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_inte
struct nexthop *nexthop = (struct nexthop *)args->list_entry;
if (nexthop->ifindex)
- yang_data_new_string(
+ return yang_data_new_string(
args->xpath,
ifindex2ifname(nexthop->ifindex, nexthop->vrf_id));