isisd, yang: change type empty leafs to booleans

As requested by the reviewers. Additionally, added a check when
setting a circuit on an interface to see if it is a loopback,
and in that case, set it to passive.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
This commit is contained in:
Emanuele Di Pascale 2018-12-10 11:44:30 +01:00
parent 5e863fcb0f
commit 5f1e5e3fc6
3 changed files with 174 additions and 326 deletions

View File

@ -133,6 +133,9 @@ DEFPY(ip_router_isis, ip_router_isis_cmd, "ip router isis WORD$tag",
char temp_xpath[XPATH_MAXLEN]; char temp_xpath[XPATH_MAXLEN];
const char *circ_type; const char *circ_type;
struct isis_area *area; struct isis_area *area;
struct interface *ifp;
const struct lyd_node *dnode =
yang_dnode_get(running_config->dnode, VTY_CURR_XPATH);
/* area will be created if it is not present. make sure the yang model /* area will be created if it is not present. make sure the yang model
* is synced with FRR and call the appropriate NB cb. * is synced with FRR and call the appropriate NB cb.
@ -153,7 +156,7 @@ DEFPY(ip_router_isis, ip_router_isis_cmd, "ip router isis WORD$tag",
nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag", nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag",
NB_OP_MODIFY, tag); NB_OP_MODIFY, tag);
nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv4-routing", nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv4-routing",
NB_OP_CREATE, NULL); NB_OP_MODIFY, "true");
nb_cli_enqueue_change( nb_cli_enqueue_change(
vty, "./frr-isisd:isis/circuit-type", NB_OP_MODIFY, vty, "./frr-isisd:isis/circuit-type", NB_OP_MODIFY,
listcount(isis->area_list) == 0 ? "level-1-2" listcount(isis->area_list) == 0 ? "level-1-2"
@ -176,11 +179,17 @@ DEFPY(ip_router_isis, ip_router_isis_cmd, "ip router isis WORD$tag",
nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag", nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag",
NB_OP_MODIFY, tag); NB_OP_MODIFY, tag);
nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv4-routing", nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv4-routing",
NB_OP_CREATE, NULL); NB_OP_MODIFY, "true");
nb_cli_enqueue_change(vty, "./frr-isisd:isis/circuit-type", nb_cli_enqueue_change(vty, "./frr-isisd:isis/circuit-type",
NB_OP_MODIFY, circ_type); NB_OP_MODIFY, circ_type);
} }
/* check if the interface is a loopback and if so set it as passive */
ifp = yang_dnode_get_entry(dnode, false);
if (ifp && if_is_loopback(ifp))
nb_cli_enqueue_change(vty, "./frr-isisd:isis/passive",
NB_OP_MODIFY, "true");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -193,6 +202,9 @@ DEFPY(ip6_router_isis, ip6_router_isis_cmd, "ipv6 router isis WORD$tag",
char temp_xpath[XPATH_MAXLEN]; char temp_xpath[XPATH_MAXLEN];
const char *circ_type; const char *circ_type;
struct isis_area *area; struct isis_area *area;
struct interface *ifp;
const struct lyd_node *dnode =
yang_dnode_get(running_config->dnode, VTY_CURR_XPATH);
/* area will be created if it is not present. make sure the yang model /* area will be created if it is not present. make sure the yang model
* is synced with FRR and call the appropriate NB cb. * is synced with FRR and call the appropriate NB cb.
@ -213,7 +225,7 @@ DEFPY(ip6_router_isis, ip6_router_isis_cmd, "ipv6 router isis WORD$tag",
nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag", nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag",
NB_OP_MODIFY, tag); NB_OP_MODIFY, tag);
nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv6-routing", nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv6-routing",
NB_OP_CREATE, NULL); NB_OP_MODIFY, "true");
nb_cli_enqueue_change( nb_cli_enqueue_change(
vty, "./frr-isisd:isis/circuit-type", NB_OP_MODIFY, vty, "./frr-isisd:isis/circuit-type", NB_OP_MODIFY,
listcount(isis->area_list) == 0 ? "level-1-2" listcount(isis->area_list) == 0 ? "level-1-2"
@ -236,11 +248,17 @@ DEFPY(ip6_router_isis, ip6_router_isis_cmd, "ipv6 router isis WORD$tag",
nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag", nb_cli_enqueue_change(vty, "./frr-isisd:isis/area-tag",
NB_OP_MODIFY, tag); NB_OP_MODIFY, tag);
nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv6-routing", nb_cli_enqueue_change(vty, "./frr-isisd:isis/ipv6-routing",
NB_OP_CREATE, NULL); NB_OP_MODIFY, "true");
nb_cli_enqueue_change(vty, "./frr-isisd:isis/circuit-type", nb_cli_enqueue_change(vty, "./frr-isisd:isis/circuit-type",
NB_OP_MODIFY, circ_type); NB_OP_MODIFY, circ_type);
} }
/* check if the interface is a loopback and if so set it as passive */
ifp = yang_dnode_get_entry(dnode, false);
if (ifp && if_is_loopback(ifp))
nb_cli_enqueue_change(vty, "./frr-isisd:isis/passive",
NB_OP_MODIFY, "true");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -274,7 +292,7 @@ DEFPY(no_ip_router_isis, no_ip_router_isis_cmd,
else else
nb_cli_enqueue_change(vty, nb_cli_enqueue_change(vty,
"./frr-isisd:isis/ipv6-routing", "./frr-isisd:isis/ipv6-routing",
NB_OP_DELETE, NULL); NB_OP_MODIFY, "false");
} else { /* no ipv4 */ } else { /* no ipv4 */
if (circuit && !circuit->ipv6_router) if (circuit && !circuit->ipv6_router)
nb_cli_enqueue_change(vty, "./frr-isisd:isis", nb_cli_enqueue_change(vty, "./frr-isisd:isis",
@ -282,7 +300,7 @@ DEFPY(no_ip_router_isis, no_ip_router_isis_cmd,
else else
nb_cli_enqueue_change(vty, nb_cli_enqueue_change(vty,
"./frr-isisd:isis/ipv4-routing", "./frr-isisd:isis/ipv4-routing",
NB_OP_DELETE, NULL); NB_OP_MODIFY, "false");
} }
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
@ -291,6 +309,8 @@ DEFPY(no_ip_router_isis, no_ip_router_isis_cmd,
void cli_show_ip_isis_ipv4(struct vty *vty, struct lyd_node *dnode, void cli_show_ip_isis_ipv4(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " ip router isis %s\n", vty_out(vty, " ip router isis %s\n",
yang_dnode_get_string(dnode, "../area-tag")); yang_dnode_get_string(dnode, "../area-tag"));
} }
@ -298,6 +318,8 @@ void cli_show_ip_isis_ipv4(struct vty *vty, struct lyd_node *dnode,
void cli_show_ip_isis_ipv6(struct vty *vty, struct lyd_node *dnode, void cli_show_ip_isis_ipv6(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " ipv6 router isis %s\n", vty_out(vty, " ipv6 router isis %s\n",
yang_dnode_get_string(dnode, "../area-tag")); yang_dnode_get_string(dnode, "../area-tag"));
} }
@ -413,8 +435,8 @@ DEFPY(set_overload_bit, set_overload_bit_cmd, "[no] set-overload-bit",
"Reset overload bit to accept transit traffic\n" "Reset overload bit to accept transit traffic\n"
"Set overload bit to avoid any transit traffic\n") "Set overload bit to avoid any transit traffic\n")
{ {
nb_cli_enqueue_change(vty, "./overload", nb_cli_enqueue_change(vty, "./overload", NB_OP_MODIFY,
no ? NB_OP_DELETE : NB_OP_CREATE, NULL); no ? "false" : "true");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -422,6 +444,8 @@ DEFPY(set_overload_bit, set_overload_bit_cmd, "[no] set-overload-bit",
void cli_show_isis_overload(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_overload(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " set-overload-bit\n"); vty_out(vty, " set-overload-bit\n");
} }
@ -432,8 +456,8 @@ DEFPY(set_attached_bit, set_attached_bit_cmd, "[no] set-attached-bit",
"Reset attached bit\n" "Reset attached bit\n"
"Set attached bit to identify as L1/L2 router for inter-area traffic\n") "Set attached bit to identify as L1/L2 router for inter-area traffic\n")
{ {
nb_cli_enqueue_change(vty, "./attached", nb_cli_enqueue_change(vty, "./attached", NB_OP_MODIFY,
no ? NB_OP_DELETE : NB_OP_CREATE, NULL); no ? "false" : "true");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -441,6 +465,8 @@ DEFPY(set_attached_bit, set_attached_bit_cmd, "[no] set-attached-bit",
void cli_show_isis_attached(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_attached(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " set-attached-bit\n"); vty_out(vty, " set-attached-bit\n");
} }
@ -887,8 +913,8 @@ void cli_show_isis_spf_ietf_backoff(struct vty *vty, struct lyd_node *dnode,
DEFPY(area_purge_originator, area_purge_originator_cmd, "[no] purge-originator", DEFPY(area_purge_originator, area_purge_originator_cmd, "[no] purge-originator",
NO_STR "Use the RFC 6232 purge-originator\n") NO_STR "Use the RFC 6232 purge-originator\n")
{ {
nb_cli_enqueue_change(vty, "./purge-originator", nb_cli_enqueue_change(vty, "./purge-originator", NB_OP_MODIFY,
no ? NB_OP_DELETE : NB_OP_CREATE, NULL); no ? "false" : "true");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -896,6 +922,8 @@ DEFPY(area_purge_originator, area_purge_originator_cmd, "[no] purge-originator",
void cli_show_isis_purge_origin(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_purge_origin(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " purge-originator\n"); vty_out(vty, " purge-originator\n");
} }
@ -986,9 +1014,8 @@ DEFPY(isis_default_originate, isis_default_originate_cmd,
nb_cli_enqueue_change(vty, ".", NB_OP_DELETE, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_DELETE, NULL);
else { else {
nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
nb_cli_enqueue_change(vty, "./always", nb_cli_enqueue_change(vty, "./always", NB_OP_MODIFY,
always ? NB_OP_CREATE : NB_OP_DELETE, always ? "true" : "false");
NULL);
nb_cli_enqueue_change(vty, "./route-map", nb_cli_enqueue_change(vty, "./route-map",
rmap ? NB_OP_MODIFY : NB_OP_DELETE, rmap ? NB_OP_MODIFY : NB_OP_DELETE,
rmap ? rmap : NULL); rmap ? rmap : NULL);
@ -1014,7 +1041,7 @@ static void vty_print_def_origin(struct vty *vty, struct lyd_node *dnode,
const char *metric; const char *metric;
vty_out(vty, " default-information originate %s %s", family, level); vty_out(vty, " default-information originate %s %s", family, level);
if (yang_dnode_exists(dnode, "./always")) if (yang_dnode_get_bool(dnode, "./always"))
vty_out(vty, " always"); vty_out(vty, " always");
if (yang_dnode_exists(dnode, "./route-map")) if (yang_dnode_exists(dnode, "./route-map"))
@ -1154,9 +1181,8 @@ DEFPY(isis_topology, isis_topology_cmd,
nb_cli_enqueue_change(vty, ".", NB_OP_DELETE, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_DELETE, NULL);
else { else {
nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
nb_cli_enqueue_change(vty, "./overload", nb_cli_enqueue_change(vty, "./overload", NB_OP_MODIFY,
overload ? NB_OP_CREATE : NB_OP_DELETE, overload ? "true" : "false");
NULL);
} }
return nb_cli_apply_changes(vty, base_xpath); return nb_cli_apply_changes(vty, base_xpath);
@ -1166,7 +1192,7 @@ void cli_show_isis_mt_ipv4_multicast(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
vty_out(vty, " topology ipv4-multicast"); vty_out(vty, " topology ipv4-multicast");
if (yang_dnode_exists(dnode, "./overload")) if (yang_dnode_get_bool(dnode, "./overload"))
vty_out(vty, " overload"); vty_out(vty, " overload");
vty_out(vty, "\n"); vty_out(vty, "\n");
} }
@ -1175,7 +1201,7 @@ void cli_show_isis_mt_ipv4_mgmt(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
vty_out(vty, " topology ipv4-mgmt"); vty_out(vty, " topology ipv4-mgmt");
if (yang_dnode_exists(dnode, "./overload")) if (yang_dnode_get_bool(dnode, "./overload"))
vty_out(vty, " overload"); vty_out(vty, " overload");
vty_out(vty, "\n"); vty_out(vty, "\n");
} }
@ -1184,7 +1210,7 @@ void cli_show_isis_mt_ipv6_unicast(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
vty_out(vty, " topology ipv6-unicast"); vty_out(vty, " topology ipv6-unicast");
if (yang_dnode_exists(dnode, "./overload")) if (yang_dnode_get_bool(dnode, "./overload"))
vty_out(vty, " overload"); vty_out(vty, " overload");
vty_out(vty, "\n"); vty_out(vty, "\n");
} }
@ -1193,7 +1219,7 @@ void cli_show_isis_mt_ipv6_multicast(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
vty_out(vty, " topology ipv6-multicast"); vty_out(vty, " topology ipv6-multicast");
if (yang_dnode_exists(dnode, "./overload")) if (yang_dnode_get_bool(dnode, "./overload"))
vty_out(vty, " overload"); vty_out(vty, " overload");
vty_out(vty, "\n"); vty_out(vty, "\n");
} }
@ -1202,7 +1228,7 @@ void cli_show_isis_mt_ipv6_mgmt(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
vty_out(vty, " topology ipv6-mgmt"); vty_out(vty, " topology ipv6-mgmt");
if (yang_dnode_exists(dnode, "./overload")) if (yang_dnode_get_bool(dnode, "./overload"))
vty_out(vty, " overload"); vty_out(vty, " overload");
vty_out(vty, "\n"); vty_out(vty, "\n");
} }
@ -1211,7 +1237,7 @@ void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
vty_out(vty, " topology ipv6-dstsrc"); vty_out(vty, " topology ipv6-dstsrc");
if (yang_dnode_exists(dnode, "./overload")) if (yang_dnode_get_bool(dnode, "./overload"))
vty_out(vty, " overload"); vty_out(vty, " overload");
vty_out(vty, "\n"); vty_out(vty, "\n");
} }
@ -1224,8 +1250,8 @@ DEFPY(isis_passive, isis_passive_cmd, "[no] isis passive",
"IS-IS routing protocol\n" "IS-IS routing protocol\n"
"Configure the passive mode for interface\n") "Configure the passive mode for interface\n")
{ {
nb_cli_enqueue_change(vty, "./frr-isisd:isis/passive", nb_cli_enqueue_change(vty, "./frr-isisd:isis/passive", NB_OP_MODIFY,
no ? NB_OP_DELETE : NB_OP_CREATE, NULL); no ? "false" : "true");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -1233,6 +1259,8 @@ DEFPY(isis_passive, isis_passive_cmd, "[no] isis passive",
void cli_show_ip_isis_passive(struct vty *vty, struct lyd_node *dnode, void cli_show_ip_isis_passive(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " isis passive\n"); vty_out(vty, " isis passive\n");
} }
@ -1460,7 +1488,7 @@ DEFPY(isis_threeway_adj, isis_threeway_adj_cmd, "[no] isis three-way-handshake",
{ {
nb_cli_enqueue_change(vty, nb_cli_enqueue_change(vty,
"./frr-isisd:isis/disable-three-way-handshake", "./frr-isisd:isis/disable-three-way-handshake",
no ? NB_OP_CREATE : NB_OP_DELETE, NULL); NB_OP_MODIFY, no ? "true" : "false");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -1468,7 +1496,9 @@ DEFPY(isis_threeway_adj, isis_threeway_adj_cmd, "[no] isis three-way-handshake",
void cli_show_ip_isis_threeway_shake(struct vty *vty, struct lyd_node *dnode, void cli_show_ip_isis_threeway_shake(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
vty_out(vty, " no isis three-way-handshake\n"); if (yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " isis three-way-handshake\n");
} }
/* /*
@ -1884,8 +1914,8 @@ void cli_show_ip_isis_priority(struct vty *vty, struct lyd_node *dnode,
DEFPY(log_adj_changes, log_adj_changes_cmd, "[no] log-adjacency-changes", DEFPY(log_adj_changes, log_adj_changes_cmd, "[no] log-adjacency-changes",
NO_STR "Log changes in adjacency state\n") NO_STR "Log changes in adjacency state\n")
{ {
nb_cli_enqueue_change(vty, "./log-adjacency-changes", nb_cli_enqueue_change(vty, "./log-adjacency-changes", NB_OP_MODIFY,
no ? NB_OP_DELETE : NB_OP_CREATE, NULL); no ? "false" : "true");
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -1893,6 +1923,8 @@ DEFPY(log_adj_changes, log_adj_changes_cmd, "[no] log-adjacency-changes",
void cli_show_isis_log_adjacency(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_log_adjacency(struct vty *vty, struct lyd_node *dnode,
bool show_defaults) bool show_defaults)
{ {
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " log-adjacency-changes\n"); vty_out(vty, " log-adjacency-changes\n");
} }

View File

@ -253,31 +253,19 @@ static int isis_instance_dynamic_hostname_modify(enum nb_event event,
/* /*
* XPath: /frr-isisd:isis/instance/attached * XPath: /frr-isisd:isis/instance/attached
*/ */
static int isis_instance_attached_create(enum nb_event event, static int isis_instance_attached_modify(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
struct isis_area *area; struct isis_area *area;
bool attached;
if (event != NB_EV_APPLY) if (event != NB_EV_APPLY)
return NB_OK; return NB_OK;
area = yang_dnode_get_entry(dnode, true); area = yang_dnode_get_entry(dnode, true);
isis_area_attached_bit_set(area, true); attached = yang_dnode_get_bool(dnode, NULL);
isis_area_attached_bit_set(area, attached);
return NB_OK;
}
static int isis_instance_attached_delete(enum nb_event event,
const struct lyd_node *dnode)
{
struct isis_area *area;
if (event != NB_EV_APPLY)
return NB_OK;
area = yang_dnode_get_entry(dnode, true);
isis_area_attached_bit_set(area, false);
return NB_OK; return NB_OK;
} }
@ -285,31 +273,19 @@ static int isis_instance_attached_delete(enum nb_event event,
/* /*
* XPath: /frr-isisd:isis/instance/overload * XPath: /frr-isisd:isis/instance/overload
*/ */
static int isis_instance_overload_create(enum nb_event event, static int isis_instance_overload_modify(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
struct isis_area *area; struct isis_area *area;
bool overload;
if (event != NB_EV_APPLY) if (event != NB_EV_APPLY)
return NB_OK; return NB_OK;
area = yang_dnode_get_entry(dnode, true); area = yang_dnode_get_entry(dnode, true);
isis_area_overload_bit_set(area, true); overload = yang_dnode_get_bool(dnode, NULL);
isis_area_overload_bit_set(area, overload);
return NB_OK;
}
static int isis_instance_overload_delete(enum nb_event event,
const struct lyd_node *dnode)
{
struct isis_area *area;
if (event != NB_EV_APPLY)
return NB_OK;
area = yang_dnode_get_entry(dnode, true);
isis_area_overload_bit_set(area, false);
return NB_OK; return NB_OK;
} }
@ -339,7 +315,7 @@ static int isis_instance_metric_style_modify(enum nb_event event,
/* /*
* XPath: /frr-isisd:isis/instance/purge-originator * XPath: /frr-isisd:isis/instance/purge-originator
*/ */
static int isis_instance_purge_originator_create(enum nb_event event, static int isis_instance_purge_originator_modify(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
@ -349,21 +325,7 @@ static int isis_instance_purge_originator_create(enum nb_event event,
return NB_OK; return NB_OK;
area = yang_dnode_get_entry(dnode, true); area = yang_dnode_get_entry(dnode, true);
area->purge_originator = true; area->purge_originator = yang_dnode_get_bool(dnode, NULL);
return NB_OK;
}
static int isis_instance_purge_originator_delete(enum nb_event event,
const struct lyd_node *dnode)
{
struct isis_area *area;
if (event != NB_EV_APPLY)
return NB_OK;
area = yang_dnode_get_entry(dnode, true);
area->purge_originator = false;
return NB_OK; return NB_OK;
} }
@ -854,7 +816,7 @@ static void default_info_origin_apply_finish(const struct lyd_node *dnode,
struct isis_area *area = yang_dnode_get_entry(dnode, true); struct isis_area *area = yang_dnode_get_entry(dnode, true);
int level = yang_dnode_get_enum(dnode, "./level"); int level = yang_dnode_get_enum(dnode, "./level");
if (yang_dnode_exists(dnode, "./always")) { if (yang_dnode_get_bool(dnode, "./always")) {
originate_type = DEFAULT_ORIGINATE_ALWAYS; originate_type = DEFAULT_ORIGINATE_ALWAYS;
} else if (family == AF_INET6) { } else if (family == AF_INET6) {
zlog_warn( zlog_warn(
@ -908,7 +870,7 @@ static int isis_instance_default_information_originate_ipv4_delete(
/* /*
* XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/always * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/always
*/ */
static int isis_instance_default_information_originate_ipv4_always_create( static int isis_instance_default_information_originate_ipv4_always_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
@ -916,13 +878,6 @@ static int isis_instance_default_information_originate_ipv4_always_create(
return NB_OK; return NB_OK;
} }
static int isis_instance_default_information_originate_ipv4_always_delete(
enum nb_event event, const struct lyd_node *dnode)
{
/* It's all done by default_info_origin_apply_finish */
return NB_OK;
}
/* /*
* XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/route-map * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/route-map
*/ */
@ -989,7 +944,7 @@ static int isis_instance_default_information_originate_ipv6_delete(
/* /*
* XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/always * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/always
*/ */
static int isis_instance_default_information_originate_ipv6_always_create( static int isis_instance_default_information_originate_ipv6_always_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
@ -997,13 +952,6 @@ static int isis_instance_default_information_originate_ipv6_always_create(
return NB_OK; return NB_OK;
} }
static int isis_instance_default_information_originate_ipv6_always_delete(
enum nb_event event, const struct lyd_node *dnode)
{
/* It's all done by default_info_origin_apply_finish */
return NB_OK;
}
/* /*
* XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/route-map * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/route-map
*/ */
@ -1241,8 +1189,7 @@ static int isis_multi_topology_common(enum nb_event event,
static int isis_multi_topology_overload_common(enum nb_event event, static int isis_multi_topology_overload_common(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
const char *topology, const char *topology)
bool create)
{ {
struct isis_area *area; struct isis_area *area;
struct isis_area_mt_setting *setting; struct isis_area_mt_setting *setting;
@ -1254,7 +1201,7 @@ static int isis_multi_topology_overload_common(enum nb_event event,
area = yang_dnode_get_entry(dnode, true); area = yang_dnode_get_entry(dnode, true);
setting = area_get_mt_setting(area, mtid); setting = area_get_mt_setting(area, mtid);
setting->overload = create; setting->overload = yang_dnode_get_bool(dnode, NULL);
if (setting->enabled) if (setting->enabled)
lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 0); lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 0);
@ -1280,19 +1227,12 @@ isis_instance_multi_topology_ipv4_multicast_delete(enum nb_event event,
/* /*
* XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload
*/ */
static int isis_instance_multi_topology_ipv4_multicast_overload_create( static int isis_instance_multi_topology_ipv4_multicast_overload_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
return isis_multi_topology_overload_common(event, dnode, return isis_multi_topology_overload_common(event, dnode,
"ipv4-multicast", true); "ipv4-multicast");
}
static int isis_instance_multi_topology_ipv4_multicast_overload_delete(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_overload_common(event, dnode,
"ipv4-multicast", false);
} }
/* /*
@ -1314,19 +1254,11 @@ static int isis_instance_multi_topology_ipv4_management_delete(
/* /*
* XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management/overload * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management/overload
*/ */
static int isis_instance_multi_topology_ipv4_management_overload_create( static int isis_instance_multi_topology_ipv4_management_overload_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
return isis_multi_topology_overload_common(event, dnode, "ipv4-mgmt", return isis_multi_topology_overload_common(event, dnode, "ipv4-mgmt");
true);
}
static int isis_instance_multi_topology_ipv4_management_overload_delete(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_overload_common(event, dnode, "ipv4-mgmt",
false);
} }
/* /*
@ -1350,19 +1282,12 @@ isis_instance_multi_topology_ipv6_unicast_delete(enum nb_event event,
/* /*
* XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload
*/ */
static int isis_instance_multi_topology_ipv6_unicast_overload_create( static int isis_instance_multi_topology_ipv6_unicast_overload_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
return isis_multi_topology_overload_common(event, dnode, "ipv6-unicast", return isis_multi_topology_overload_common(event, dnode,
true); "ipv6-unicast");
}
static int isis_instance_multi_topology_ipv6_unicast_overload_delete(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_overload_common(event, dnode, "ipv6-unicast",
false);
} }
/* /*
@ -1387,19 +1312,12 @@ isis_instance_multi_topology_ipv6_multicast_delete(enum nb_event event,
/* /*
* XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload
*/ */
static int isis_instance_multi_topology_ipv6_multicast_overload_create( static int isis_instance_multi_topology_ipv6_multicast_overload_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
return isis_multi_topology_overload_common(event, dnode, return isis_multi_topology_overload_common(event, dnode,
"ipv6-multicast", true); "ipv6-multicast");
}
static int isis_instance_multi_topology_ipv6_multicast_overload_delete(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_overload_common(event, dnode,
"ipv6-multicast", false);
} }
/* /*
@ -1421,19 +1339,11 @@ static int isis_instance_multi_topology_ipv6_management_delete(
/* /*
* XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management/overload * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management/overload
*/ */
static int isis_instance_multi_topology_ipv6_management_overload_create( static int isis_instance_multi_topology_ipv6_management_overload_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
return isis_multi_topology_overload_common(event, dnode, "ipv6-mgmt", return isis_multi_topology_overload_common(event, dnode, "ipv6-mgmt");
true);
}
static int isis_instance_multi_topology_ipv6_management_overload_delete(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_overload_common(event, dnode, "ipv6-mgmt",
false);
} }
/* /*
@ -1457,51 +1367,29 @@ isis_instance_multi_topology_ipv6_dstsrc_delete(enum nb_event event,
/* /*
* XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload
*/ */
static int isis_instance_multi_topology_ipv6_dstsrc_overload_create( static int isis_instance_multi_topology_ipv6_dstsrc_overload_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
return isis_multi_topology_overload_common(event, dnode, "ipv6-dstsrc", return isis_multi_topology_overload_common(event, dnode, "ipv6-dstsrc");
true);
}
static int isis_instance_multi_topology_ipv6_dstsrc_overload_delete(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_overload_common(event, dnode, "ipv6-dstsrc",
false);
} }
/* /*
* XPath: /frr-isisd:isis/instance/log-adjacency-changes * XPath: /frr-isisd:isis/instance/log-adjacency-changes
*/ */
static int static int
isis_instance_log_adjacency_changes_create(enum nb_event event, isis_instance_log_adjacency_changes_modify(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
struct isis_area *area; struct isis_area *area;
bool log = yang_dnode_get_bool(dnode, NULL);
if (event != NB_EV_APPLY) if (event != NB_EV_APPLY)
return NB_OK; return NB_OK;
area = yang_dnode_get_entry(dnode, true); area = yang_dnode_get_entry(dnode, true);
area->log_adj_changes = 1; area->log_adj_changes = log ? 1 : 0;
return NB_OK;
}
static int
isis_instance_log_adjacency_changes_delete(enum nb_event event,
const struct lyd_node *dnode)
{
struct isis_area *area;
if (event != NB_EV_APPLY)
return NB_OK;
area = yang_dnode_get_entry(dnode, true);
area->log_adj_changes = 0;
return NB_OK; return NB_OK;
} }
@ -1782,37 +1670,20 @@ static int lib_interface_isis_circuit_type_modify(enum nb_event event,
/* /*
* XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv4-routing * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv4-routing
*/ */
static int lib_interface_isis_ipv4_routing_create(enum nb_event event, static int lib_interface_isis_ipv4_routing_modify(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
bool ipv6; bool ipv4, ipv6;
struct isis_circuit *circuit; struct isis_circuit *circuit;
if (event != NB_EV_APPLY) if (event != NB_EV_APPLY)
return NB_OK; return NB_OK;
circuit = yang_dnode_get_entry(dnode, true); circuit = yang_dnode_get_entry(dnode, true);
ipv6 = yang_dnode_exists(dnode, "../ipv6-routing"); ipv4 = yang_dnode_get_bool(dnode, NULL);
isis_circuit_af_set(circuit, true, ipv6); ipv6 = yang_dnode_get_bool(dnode, "../ipv6-routing");
isis_circuit_af_set(circuit, ipv4, ipv6);
return NB_OK;
}
static int lib_interface_isis_ipv4_routing_delete(enum nb_event event,
const struct lyd_node *dnode)
{
bool ipv6;
struct isis_circuit *circuit;
if (event != NB_EV_APPLY)
return NB_OK;
circuit = yang_dnode_get_entry(dnode, true);
if (circuit && circuit->area) {
ipv6 = yang_dnode_exists(dnode, "../ipv6-routing");
isis_circuit_af_set(circuit, false, ipv6);
}
return NB_OK; return NB_OK;
} }
@ -1820,37 +1691,20 @@ static int lib_interface_isis_ipv4_routing_delete(enum nb_event event,
/* /*
* XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv6-routing * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv6-routing
*/ */
static int lib_interface_isis_ipv6_routing_create(enum nb_event event, static int lib_interface_isis_ipv6_routing_modify(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
bool ipv4; bool ipv4, ipv6;
struct isis_circuit *circuit; struct isis_circuit *circuit;
if (event != NB_EV_APPLY) if (event != NB_EV_APPLY)
return NB_OK; return NB_OK;
circuit = yang_dnode_get_entry(dnode, true); circuit = yang_dnode_get_entry(dnode, true);
ipv4 = yang_dnode_exists(dnode, "../ipv6-routing"); ipv4 = yang_dnode_exists(dnode, "../ipv4-routing");
isis_circuit_af_set(circuit, ipv4, true); ipv6 = yang_dnode_get_bool(dnode, NULL);
isis_circuit_af_set(circuit, ipv4, ipv6);
return NB_OK;
}
static int lib_interface_isis_ipv6_routing_delete(enum nb_event event,
const struct lyd_node *dnode)
{
bool ipv4;
struct isis_circuit *circuit;
if (event != NB_EV_APPLY)
return NB_OK;
circuit = yang_dnode_get_entry(dnode, true);
if (circuit->area) {
ipv4 = yang_dnode_exists(dnode, "../ipv4-routing");
isis_circuit_af_set(circuit, ipv4, false);
}
return NB_OK; return NB_OK;
} }
@ -2168,69 +2022,46 @@ static int lib_interface_isis_network_type_delete(enum nb_event event,
/* /*
* XPath: /frr-interface:lib/interface/frr-isisd:isis/passive * XPath: /frr-interface:lib/interface/frr-isisd:isis/passive
*/ */
static int lib_interface_isis_passive_create(enum nb_event event, static int lib_interface_isis_passive_modify(enum nb_event event,
const struct lyd_node *dnode, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
struct isis_circuit *circuit; struct isis_circuit *circuit;
struct isis_area *area; struct isis_area *area;
struct interface *ifp;
bool passive = yang_dnode_get_bool(dnode, NULL);
/* validation only applies if we are setting passive to false */
if (!passive && event == NB_EV_VALIDATE) {
circuit = yang_dnode_get_entry(dnode, false);
if (!circuit)
return NB_OK;
ifp = circuit->interface;
if (!ifp)
return NB_OK;
if (if_is_loopback(ifp)) {
flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE,
"Loopback is always passive");
return NB_ERR_VALIDATION;
}
}
if (event != NB_EV_APPLY) if (event != NB_EV_APPLY)
return NB_OK; return NB_OK;
circuit = yang_dnode_get_entry(dnode, true); circuit = yang_dnode_get_entry(dnode, true);
if (circuit->state != C_STATE_UP) { if (circuit->state != C_STATE_UP) {
circuit->is_passive = true; circuit->is_passive = passive;
} else { } else {
area = circuit->area; area = circuit->area;
isis_csm_state_change(ISIS_DISABLE, circuit, area); isis_csm_state_change(ISIS_DISABLE, circuit, area);
circuit->is_passive = true; circuit->is_passive = passive;
isis_csm_state_change(ISIS_ENABLE, circuit, area); isis_csm_state_change(ISIS_ENABLE, circuit, area);
} }
return NB_OK; return NB_OK;
} }
static int lib_interface_isis_passive_delete(enum nb_event event,
const struct lyd_node *dnode)
{
struct isis_circuit *circuit;
struct isis_area *area;
struct interface *ifp;
switch (event) {
case NB_EV_VALIDATE:
circuit = yang_dnode_get_entry(dnode, false);
if (!circuit)
break;
ifp = circuit->interface;
if (!ifp)
break;
if (if_is_loopback(ifp)) {
flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE,
"Loopback is always passive");
return NB_ERR_VALIDATION;
}
break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
circuit = yang_dnode_get_entry(dnode, true);
if (circuit->state != C_STATE_UP) {
circuit->is_passive = false;
} else {
area = circuit->area;
isis_csm_state_change(ISIS_DISABLE, circuit, area);
circuit->is_passive = false;
isis_csm_state_change(ISIS_ENABLE, circuit, area);
}
break;
}
return NB_OK;
}
/* /*
* XPath: /frr-interface:lib/interface/frr-isisd:isis/password * XPath: /frr-interface:lib/interface/frr-isisd:isis/password
*/ */
@ -2302,7 +2133,7 @@ lib_interface_isis_password_password_type_modify(enum nb_event event,
* XPath: * XPath:
* /frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake * /frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake
*/ */
static int lib_interface_isis_disable_three_way_handshake_create( static int lib_interface_isis_disable_three_way_handshake_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
union nb_resource *resource) union nb_resource *resource)
{ {
@ -2312,21 +2143,7 @@ static int lib_interface_isis_disable_three_way_handshake_create(
return NB_OK; return NB_OK;
circuit = yang_dnode_get_entry(dnode, true); circuit = yang_dnode_get_entry(dnode, true);
circuit->disable_threeway_adj = true; circuit->disable_threeway_adj = yang_dnode_get_bool(dnode, NULL);
return NB_OK;
}
static int lib_interface_isis_disable_three_way_handshake_delete(
enum nb_event event, const struct lyd_node *dnode)
{
struct isis_circuit *circuit;
if (event != NB_EV_APPLY)
return NB_OK;
circuit = yang_dnode_get_entry(dnode, true);
circuit->disable_threeway_adj = false;
return NB_OK; return NB_OK;
} }
@ -2964,14 +2781,12 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/attached", .xpath = "/frr-isisd:isis/instance/attached",
.cbs.create = isis_instance_attached_create, .cbs.modify = isis_instance_attached_modify,
.cbs.delete = isis_instance_attached_delete,
.cbs.cli_show = cli_show_isis_attached, .cbs.cli_show = cli_show_isis_attached,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/overload", .xpath = "/frr-isisd:isis/instance/overload",
.cbs.create = isis_instance_overload_create, .cbs.modify = isis_instance_overload_modify,
.cbs.delete = isis_instance_overload_delete,
.cbs.cli_show = cli_show_isis_overload, .cbs.cli_show = cli_show_isis_overload,
}, },
{ {
@ -2981,8 +2796,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/purge-originator", .xpath = "/frr-isisd:isis/instance/purge-originator",
.cbs.create = isis_instance_purge_originator_create, .cbs.modify = isis_instance_purge_originator_modify,
.cbs.delete = isis_instance_purge_originator_delete,
.cbs.cli_show = cli_show_isis_purge_origin, .cbs.cli_show = cli_show_isis_purge_origin,
}, },
{ {
@ -3112,8 +2926,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/always", .xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/always",
.cbs.create = isis_instance_default_information_originate_ipv4_always_create, .cbs.modify = isis_instance_default_information_originate_ipv4_always_modify,
.cbs.delete = isis_instance_default_information_originate_ipv4_always_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map", .xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map",
@ -3134,8 +2947,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/always", .xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/always",
.cbs.create = isis_instance_default_information_originate_ipv6_always_create, .cbs.modify = isis_instance_default_information_originate_ipv6_always_modify,
.cbs.delete = isis_instance_default_information_originate_ipv6_always_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map", .xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map",
@ -3189,8 +3001,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload",
.cbs.create = isis_instance_multi_topology_ipv4_multicast_overload_create, .cbs.modify = isis_instance_multi_topology_ipv4_multicast_overload_modify,
.cbs.delete = isis_instance_multi_topology_ipv4_multicast_overload_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management",
@ -3200,8 +3011,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload",
.cbs.create = isis_instance_multi_topology_ipv4_management_overload_create, .cbs.modify = isis_instance_multi_topology_ipv4_management_overload_modify,
.cbs.delete = isis_instance_multi_topology_ipv4_management_overload_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast",
@ -3211,8 +3021,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload",
.cbs.create = isis_instance_multi_topology_ipv6_unicast_overload_create, .cbs.modify = isis_instance_multi_topology_ipv6_unicast_overload_modify,
.cbs.delete = isis_instance_multi_topology_ipv6_unicast_overload_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast",
@ -3222,8 +3031,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload",
.cbs.create = isis_instance_multi_topology_ipv6_multicast_overload_create, .cbs.modify = isis_instance_multi_topology_ipv6_multicast_overload_modify,
.cbs.delete = isis_instance_multi_topology_ipv6_multicast_overload_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management",
@ -3233,8 +3041,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload",
.cbs.create = isis_instance_multi_topology_ipv6_management_overload_create, .cbs.modify = isis_instance_multi_topology_ipv6_management_overload_modify,
.cbs.delete = isis_instance_multi_topology_ipv6_management_overload_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc",
@ -3244,13 +3051,11 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload", .xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload",
.cbs.create = isis_instance_multi_topology_ipv6_dstsrc_overload_create, .cbs.modify = isis_instance_multi_topology_ipv6_dstsrc_overload_modify,
.cbs.delete = isis_instance_multi_topology_ipv6_dstsrc_overload_delete,
}, },
{ {
.xpath = "/frr-isisd:isis/instance/log-adjacency-changes", .xpath = "/frr-isisd:isis/instance/log-adjacency-changes",
.cbs.create = isis_instance_log_adjacency_changes_create, .cbs.modify = isis_instance_log_adjacency_changes_modify,
.cbs.delete = isis_instance_log_adjacency_changes_delete,
.cbs.cli_show = cli_show_isis_log_adjacency, .cbs.cli_show = cli_show_isis_log_adjacency,
}, },
{ {
@ -3281,14 +3086,12 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing", .xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing",
.cbs.create = lib_interface_isis_ipv4_routing_create, .cbs.modify = lib_interface_isis_ipv4_routing_modify,
.cbs.delete = lib_interface_isis_ipv4_routing_delete,
.cbs.cli_show = cli_show_ip_isis_ipv4, .cbs.cli_show = cli_show_ip_isis_ipv4,
}, },
{ {
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing", .xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing",
.cbs.create = lib_interface_isis_ipv6_routing_create, .cbs.modify = lib_interface_isis_ipv6_routing_modify,
.cbs.delete = lib_interface_isis_ipv6_routing_delete,
.cbs.cli_show = cli_show_ip_isis_ipv6, .cbs.cli_show = cli_show_ip_isis_ipv6,
}, },
{ {
@ -3376,8 +3179,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/passive", .xpath = "/frr-interface:lib/interface/frr-isisd:isis/passive",
.cbs.create = lib_interface_isis_passive_create, .cbs.modify = lib_interface_isis_passive_modify,
.cbs.delete = lib_interface_isis_passive_delete,
.cbs.cli_show = cli_show_ip_isis_passive, .cbs.cli_show = cli_show_ip_isis_passive,
}, },
{ {
@ -3396,8 +3198,7 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
{ {
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake", .xpath = "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake",
.cbs.create = lib_interface_isis_disable_three_way_handshake_create, .cbs.modify = lib_interface_isis_disable_three_way_handshake_modify,
.cbs.delete = lib_interface_isis_disable_three_way_handshake_delete,
.cbs.cli_show = cli_show_ip_isis_threeway_shake, .cbs.cli_show = cli_show_ip_isis_threeway_shake,
}, },
{ {

View File

@ -205,7 +205,8 @@ module frr-isisd {
description description
"Redistribution of default route within a level."; "Redistribution of default route within a level.";
leaf always { leaf always {
type empty; type boolean;
default "false";
description description
"Always advertise default route."; "Always advertise default route.";
} }
@ -350,15 +351,17 @@ module frr-isisd {
} }
leaf attached { leaf attached {
type empty; type boolean;
default "false";
description description
"If present, identify as L1/L2 router for inter-area traffic."; "If true, identify as L1/L2 router for inter-area traffic.";
} }
leaf overload { leaf overload {
type empty; type boolean;
default "false";
description description
"If present, avoid any transit traffic."; "If true, avoid any transit traffic.";
} }
leaf metric-style { leaf metric-style {
@ -370,7 +373,8 @@ module frr-isisd {
} }
leaf purge-originator { leaf purge-originator {
type empty; type boolean;
default "false";
description description
"Use the RFC 6232 purge-originator."; "Use the RFC 6232 purge-originator.";
reference reference
@ -643,7 +647,8 @@ module frr-isisd {
description description
"IPv4 multicast topology."; "IPv4 multicast topology.";
leaf overload { leaf overload {
type empty; type boolean;
default "false";
} }
} }
@ -652,7 +657,8 @@ module frr-isisd {
description description
"IPv4 management topology."; "IPv4 management topology.";
leaf overload { leaf overload {
type empty; type boolean;
default "false";
} }
} }
@ -661,7 +667,8 @@ module frr-isisd {
description description
"IPv6 unicast topology."; "IPv6 unicast topology.";
leaf overload { leaf overload {
type empty; type boolean;
default "false";
} }
} }
@ -670,7 +677,8 @@ module frr-isisd {
description description
"IPv6 multicast topology."; "IPv6 multicast topology.";
leaf overload { leaf overload {
type empty; type boolean;
default "false";
} }
} }
@ -679,7 +687,8 @@ module frr-isisd {
description description
"IPv6 management topology."; "IPv6 management topology.";
leaf overload { leaf overload {
type empty; type boolean;
default "false";
} }
} }
@ -688,13 +697,15 @@ module frr-isisd {
description description
"IPv6 destination-source topology."; "IPv6 destination-source topology.";
leaf overload { leaf overload {
type empty; type boolean;
default "false";
} }
} }
} }
leaf log-adjacency-changes { leaf log-adjacency-changes {
type empty; type boolean;
default "false";
description description
"Log changes to the IS-IS adjacencies in this area."; "Log changes to the IS-IS adjacencies in this area.";
} }
@ -734,13 +745,15 @@ module frr-isisd {
} }
leaf ipv4-routing { leaf ipv4-routing {
type empty; type boolean;
default "false";
description description
"Routing IS-IS IPv4 traffic over this circuit."; "Routing IS-IS IPv4 traffic over this circuit.";
} }
leaf ipv6-routing { leaf ipv6-routing {
type empty; type boolean;
default "false";
description description
"Routing IS-IS IPv6 traffic over this circuit."; "Routing IS-IS IPv6 traffic over this circuit.";
} }
@ -904,7 +917,8 @@ module frr-isisd {
} }
leaf passive { leaf passive {
type empty; type boolean;
default "false";
description description
"Interface is in passive mode."; "Interface is in passive mode.";
} }
@ -915,7 +929,8 @@ module frr-isisd {
} }
leaf disable-three-way-handshake { leaf disable-three-way-handshake {
type empty; type boolean;
default "false";
description description
"Disables three-way handshake when creating new adjacencies."; "Disables three-way handshake when creating new adjacencies.";
} }