diff options
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)); |
