#include "libfrr.h"
#include "linklist.h"
#include "log.h"
-#include "isisd/dict.h"
#include "isisd/isis_constants.h"
#include "isisd/isis_common.h"
#include "isisd/isis_flags.h"
area = isis_area_create(area_tag);
/* save area in dnode to avoid looking it up all the time */
- yang_dnode_set_entry(dnode, area);
+ nb_running_set_entry(dnode, area);
return NB_OK;
}
-static int isis_instance_delete(enum nb_event event,
+static int isis_instance_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
- const char *area_tag;
+ struct isis_area *area;
if (event != NB_EV_APPLY)
return NB_OK;
- area_tag = yang_dnode_get_string(dnode, "./area-tag");
- isis_area_destroy(area_tag);
+ area = nb_running_unset_entry(dnode);
+ isis_area_destroy(area->area_tag);
return NB_OK;
}
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
type = yang_dnode_get_enum(dnode, NULL);
isis_area_is_type_set(area, type);
XFREE(MTYPE_ISIS_AREA_ADDR, resource->ptr);
break;
case NB_EV_APPLY:
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
addrr = resource->ptr;
if (isis->sysid_set == 0) {
return NB_OK;
}
-static int isis_instance_area_address_delete(enum nb_event event,
+static int isis_instance_area_address_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
struct area_addr addr, *addrp = NULL;
net_title = yang_dnode_get_string(dnode, NULL);
addr.addr_len = dotformat2buff(buff, net_title);
memcpy(addr.area_addr, buff, (int)addr.addr_len);
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
for (ALL_LIST_ELEMENTS_RO(area->area_addrs, node, addrp)) {
if ((addrp->addr_len + ISIS_SYS_ID_LEN + 1) == addr.addr_len
&& !memcmp(addrp->area_addr, addr.area_addr, addr.addr_len))
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
isis_area_dynhostname_set(area, yang_dnode_get_bool(dnode, NULL));
return NB_OK;
/*
* 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,
union nb_resource *resource)
{
struct isis_area *area;
+ bool attached;
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
- isis_area_attached_bit_set(area, true);
-
- 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);
+ area = nb_running_get_entry(dnode, NULL, true);
+ attached = yang_dnode_get_bool(dnode, NULL);
+ isis_area_attached_bit_set(area, attached);
return NB_OK;
}
/*
* 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,
union nb_resource *resource)
{
struct isis_area *area;
+ bool overload;
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
- isis_area_overload_bit_set(area, true);
-
- 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);
+ area = nb_running_get_entry(dnode, NULL, true);
+ overload = yang_dnode_get_bool(dnode, NULL);
+ isis_area_overload_bit_set(area, overload);
return NB_OK;
}
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
old_metric = (metric_style == ISIS_WIDE_METRIC) ? false : true;
new_metric = (metric_style == ISIS_NARROW_METRIC) ? false : true;
isis_area_metricstyle_set(area, old_metric, new_metric);
/*
* 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,
union nb_resource *resource)
{
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
- area->purge_originator = true;
-
- 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;
+ area = nb_running_get_entry(dnode, NULL, true);
+ area->purge_originator = yang_dnode_get_bool(dnode, NULL);
return NB_OK;
}
switch (event) {
case NB_EV_VALIDATE:
- area = yang_dnode_get_entry(dnode, false);
+ area = nb_running_get_entry(dnode, NULL, false);
if (!area)
break;
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) {
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
isis_area_lsp_mtu_set(area, lsp_mtu);
break;
}
return NB_OK;
refr_int = yang_dnode_get_uint16(dnode, NULL);
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
isis_area_lsp_refresh_set(area, IS_LEVEL_1, refr_int);
return NB_OK;
return NB_OK;
refr_int = yang_dnode_get_uint16(dnode, NULL);
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
isis_area_lsp_refresh_set(area, IS_LEVEL_2, refr_int);
return NB_OK;
return NB_OK;
max_lt = yang_dnode_get_uint16(dnode, NULL);
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
isis_area_max_lsp_lifetime_set(area, IS_LEVEL_1, max_lt);
return NB_OK;
return NB_OK;
max_lt = yang_dnode_get_uint16(dnode, NULL);
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
isis_area_max_lsp_lifetime_set(area, IS_LEVEL_2, max_lt);
return NB_OK;
return NB_OK;
gen_int = yang_dnode_get_uint16(dnode, NULL);
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
area->lsp_gen_interval[0] = gen_int;
return NB_OK;
return NB_OK;
gen_int = yang_dnode_get_uint16(dnode, NULL);
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
area->lsp_gen_interval[1] = gen_int;
return NB_OK;
long long_delay = yang_dnode_get_uint16(dnode, "./long-delay");
long holddown = yang_dnode_get_uint16(dnode, "./hold-down");
long timetolearn = yang_dnode_get_uint16(dnode, "./time-to-learn");
- struct isis_area *area = yang_dnode_get_entry(dnode, true);
+ struct isis_area *area = nb_running_get_entry(dnode, NULL, true);
size_t bufsiz = strlen(area->area_tag) + sizeof("IS-IS Lx");
char *buf = XCALLOC(MTYPE_TMP, bufsiz);
}
static int
-isis_instance_spf_ietf_backoff_delay_delete(enum nb_event event,
+isis_instance_spf_ietf_backoff_delay_destroy(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 = nb_running_get_entry(dnode, NULL, true);
spf_backoff_free(area->spf_delay_ietf[0]);
spf_backoff_free(area->spf_delay_ietf[1]);
area->spf_delay_ietf[0] = NULL;
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
area->min_spf_interval[0] = yang_dnode_get_uint16(dnode, NULL);
return NB_OK;
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
area->min_spf_interval[1] = yang_dnode_get_uint16(dnode, NULL);
return NB_OK;
static void area_password_apply_finish(const struct lyd_node *dnode)
{
const char *password = yang_dnode_get_string(dnode, "./password");
- struct isis_area *area = yang_dnode_get_entry(dnode, true);
+ struct isis_area *area = nb_running_get_entry(dnode, NULL, true);
int pass_type = yang_dnode_get_enum(dnode, "./password-type");
uint8_t snp_auth = yang_dnode_get_enum(dnode, "./authenticate-snp");
return NB_OK;
}
-static int isis_instance_area_password_delete(enum nb_event event,
+static int isis_instance_area_password_destroy(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 = nb_running_get_entry(dnode, NULL, true);
isis_area_passwd_unset(area, IS_LEVEL_1);
return NB_OK;
static void domain_password_apply_finish(const struct lyd_node *dnode)
{
const char *password = yang_dnode_get_string(dnode, "./password");
- struct isis_area *area = yang_dnode_get_entry(dnode, true);
+ struct isis_area *area = nb_running_get_entry(dnode, NULL, true);
int pass_type = yang_dnode_get_enum(dnode, "./password-type");
uint8_t snp_auth = yang_dnode_get_enum(dnode, "./authenticate-snp");
return NB_OK;
}
-static int isis_instance_domain_password_delete(enum nb_event event,
+static int isis_instance_domain_password_destroy(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 = nb_running_get_entry(dnode, NULL, true);
isis_area_passwd_unset(area, IS_LEVEL_2);
return NB_OK;
int originate_type = DEFAULT_ORIGINATE;
unsigned long metric = 0;
const char *routemap = NULL;
- struct isis_area *area = yang_dnode_get_entry(dnode, true);
+ struct isis_area *area = nb_running_get_entry(dnode, NULL, true);
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;
} else if (family == AF_INET6) {
zlog_warn(
if (yang_dnode_exists(dnode, "./metric"))
metric = yang_dnode_get_uint32(dnode, "./metric");
- else if (yang_dnode_exists(dnode, "./route-map"))
+ if (yang_dnode_exists(dnode, "./route-map"))
routemap = yang_dnode_get_string(dnode, "./route-map");
isis_redist_set(area, level, family, DEFAULT_ROUTE, metric, routemap,
return NB_OK;
}
-static int isis_instance_default_information_originate_ipv4_delete(
+static int isis_instance_default_information_originate_ipv4_destroy(
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 = nb_running_get_entry(dnode, NULL, true);
level = yang_dnode_get_enum(dnode, "./level");
isis_redist_unset(area, level, AF_INET, DEFAULT_ROUTE);
/*
* 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,
union nb_resource *resource)
{
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
*/
return NB_OK;
}
-static int isis_instance_default_information_originate_ipv4_route_map_delete(
+static int isis_instance_default_information_originate_ipv4_route_map_destroy(
enum nb_event event, const struct lyd_node *dnode)
{
/* It's all done by default_info_origin_apply_finish */
return NB_OK;
}
-static int isis_instance_default_information_originate_ipv4_metric_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
*/
return NB_OK;
}
-static int isis_instance_default_information_originate_ipv6_delete(
+static int isis_instance_default_information_originate_ipv6_destroy(
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 = nb_running_get_entry(dnode, NULL, true);
level = yang_dnode_get_enum(dnode, "./level");
isis_redist_unset(area, level, AF_INET6, DEFAULT_ROUTE);
/*
* 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,
union nb_resource *resource)
{
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
*/
return NB_OK;
}
-static int isis_instance_default_information_originate_ipv6_route_map_delete(
+static int isis_instance_default_information_originate_ipv6_route_map_destroy(
enum nb_event event, const struct lyd_node *dnode)
{
/* It's all done by default_info_origin_apply_finish */
return NB_OK;
}
-static int isis_instance_default_information_originate_ipv6_metric_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/redistribute/ipv4
*/
type = yang_dnode_get_enum(dnode, "./protocol");
level = yang_dnode_get_enum(dnode, "./level");
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
if (yang_dnode_exists(dnode, "./metric"))
metric = yang_dnode_get_uint32(dnode, "./metric");
- else if (yang_dnode_exists(dnode, "./route-map"))
+ if (yang_dnode_exists(dnode, "./route-map"))
routemap = yang_dnode_get_string(dnode, "./route-map");
isis_redist_set(area, level, family, type, metric, routemap, 0);
return NB_OK;
}
-static int isis_instance_redistribute_ipv4_delete(enum nb_event event,
+static int isis_instance_redistribute_ipv4_destroy(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 = nb_running_get_entry(dnode, NULL, true);
level = yang_dnode_get_enum(dnode, "./level");
type = yang_dnode_get_enum(dnode, "./protocol");
isis_redist_unset(area, level, AF_INET, type);
}
static int
-isis_instance_redistribute_ipv4_route_map_delete(enum nb_event event,
+isis_instance_redistribute_ipv4_route_map_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
/* It's all done by redistribute_apply_finish */
return NB_OK;
}
-static int
-isis_instance_redistribute_ipv4_metric_delete(enum nb_event event,
- const struct lyd_node *dnode)
-{
- /* It's all done by redistribute_apply_finish */
- return NB_OK;
-}
-
/*
* XPath: /frr-isisd:isis/instance/redistribute/ipv6
*/
return NB_OK;
}
-static int isis_instance_redistribute_ipv6_delete(enum nb_event event,
+static int isis_instance_redistribute_ipv6_destroy(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 = nb_running_get_entry(dnode, NULL, true);
level = yang_dnode_get_enum(dnode, "./level");
type = yang_dnode_get_enum(dnode, "./protocol");
isis_redist_unset(area, level, AF_INET6, type);
}
static int
-isis_instance_redistribute_ipv6_route_map_delete(enum nb_event event,
+isis_instance_redistribute_ipv6_route_map_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
/* It's all done by redistribute_apply_finish */
return NB_OK;
}
-static int
-isis_instance_redistribute_ipv6_metric_delete(enum nb_event event,
- const struct lyd_node *dnode)
-{
- /* It's all done by redistribute_apply_finish */
- return NB_OK;
-}
-
/*
* XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast
*/
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
setting = area_get_mt_setting(area, mtid);
setting->enabled = create;
lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 0);
static int isis_multi_topology_overload_common(enum nb_event event,
const struct lyd_node *dnode,
- const char *topology,
- bool create)
+ const char *topology)
{
struct isis_area *area;
struct isis_area_mt_setting *setting;
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
+ area = nb_running_get_entry(dnode, NULL, true);
setting = area_get_mt_setting(area, mtid);
- setting->overload = create;
+ setting->overload = yang_dnode_get_bool(dnode, NULL);
if (setting->enabled)
lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 0);
}
static int
-isis_instance_multi_topology_ipv4_multicast_delete(enum nb_event event,
+isis_instance_multi_topology_ipv4_multicast_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
return isis_multi_topology_common(event, dnode, "ipv4-multicast",
/*
* 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,
union nb_resource *resource)
{
return isis_multi_topology_overload_common(event, dnode,
- "ipv4-multicast", true);
-}
-
-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);
+ "ipv4-multicast");
}
/*
return isis_multi_topology_common(event, dnode, "ipv4-mgmt", true);
}
-static int isis_instance_multi_topology_ipv4_management_delete(
+static int isis_instance_multi_topology_ipv4_management_destroy(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_common(event, dnode, "ipv4-mgmt", false);
/*
* 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,
union nb_resource *resource)
{
- 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);
+ return isis_multi_topology_overload_common(event, dnode, "ipv4-mgmt");
}
/*
}
static int
-isis_instance_multi_topology_ipv6_unicast_delete(enum nb_event event,
+isis_instance_multi_topology_ipv6_unicast_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
return isis_multi_topology_common(event, dnode, "ipv6-unicast", false);
/*
* 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,
union nb_resource *resource)
{
- return isis_multi_topology_overload_common(event, dnode, "ipv6-unicast",
- true);
-}
-
-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);
+ return isis_multi_topology_overload_common(event, dnode,
+ "ipv6-unicast");
}
/*
}
static int
-isis_instance_multi_topology_ipv6_multicast_delete(enum nb_event event,
+isis_instance_multi_topology_ipv6_multicast_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
return isis_multi_topology_common(event, dnode, "ipv6-multicast",
/*
* 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,
union nb_resource *resource)
{
return isis_multi_topology_overload_common(event, dnode,
- "ipv6-multicast", true);
-}
-
-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);
+ "ipv6-multicast");
}
/*
return isis_multi_topology_common(event, dnode, "ipv6-mgmt", true);
}
-static int isis_instance_multi_topology_ipv6_management_delete(
+static int isis_instance_multi_topology_ipv6_management_destroy(
enum nb_event event, const struct lyd_node *dnode)
{
return isis_multi_topology_common(event, dnode, "ipv6-mgmt", false);
/*
* 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,
union nb_resource *resource)
{
- 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);
+ return isis_multi_topology_overload_common(event, dnode, "ipv6-mgmt");
}
/*
}
static int
-isis_instance_multi_topology_ipv6_dstsrc_delete(enum nb_event event,
+isis_instance_multi_topology_ipv6_dstsrc_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
return isis_multi_topology_common(event, dnode, "ipv6-dstsrc", false);
/*
* 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,
union nb_resource *resource)
{
- 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);
+ return isis_multi_topology_overload_common(event, dnode, "ipv6-dstsrc");
}
/*
* XPath: /frr-isisd:isis/instance/log-adjacency-changes
*/
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,
union nb_resource *resource)
{
struct isis_area *area;
+ bool log = yang_dnode_get_bool(dnode, NULL);
if (event != NB_EV_APPLY)
return NB_OK;
- area = yang_dnode_get_entry(dnode, true);
- area->log_adj_changes = 1;
-
- 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;
+ area = nb_running_get_entry(dnode, NULL, true);
+ area->log_adj_changes = log ? 1 : 0;
return NB_OK;
}
/*
- * XPath: /frr-isisd:isis/mpls-te
+ * XPath: /frr-isisd:isis/instance/mpls-te
*/
-static int isis_mpls_te_create(enum nb_event event,
+static int isis_instance_mpls_te_create(enum nb_event event,
const struct lyd_node *dnode,
union nb_resource *resource)
{
struct listnode *node;
+ struct isis_area *area;
struct isis_circuit *circuit;
if (event != NB_EV_APPLY)
return NB_OK;
- isisMplsTE.status = enable;
+ area = nb_running_get_entry(dnode, NULL, true);
+ if (area->mta == NULL) {
+
+ struct mpls_te_area *new;
+
+ zlog_debug("ISIS MPLS-TE: Initialize area %s",
+ area->area_tag);
+
+ new = XCALLOC(MTYPE_ISIS_MPLS_TE, sizeof(struct mpls_te_area));
+
+ /* Initialize MPLS_TE structure */
+ new->status = enable;
+ new->level = 0;
+ new->inter_as = off;
+ new->interas_areaid.s_addr = 0;
+ new->router_id.s_addr = 0;
+
+ area->mta = new;
+ } else {
+ area->mta->status = enable;
+ }
/*
* Following code is intended to handle two cases;
* MPLS_TE flag
* 2) MPLS-TE was once enabled then disabled, and now enabled again.
*/
- for (ALL_LIST_ELEMENTS_RO(isisMplsTE.cir_list, node, circuit)) {
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) {
if (circuit->mtc == NULL || IS_FLOOD_AS(circuit->mtc->type))
continue;
- if ((circuit->mtc->status == disable)
+ if (!IS_MPLS_TE(circuit->mtc)
&& HAS_LINK_PARAMS(circuit->interface))
circuit->mtc->status = enable;
else
return NB_OK;
}
-static int isis_mpls_te_delete(enum nb_event event,
+static int isis_instance_mpls_te_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
struct listnode *node;
+ struct isis_area *area;
struct isis_circuit *circuit;
if (event != NB_EV_APPLY)
return NB_OK;
- isisMplsTE.status = disable;
+ area = nb_running_get_entry(dnode, NULL, true);
+ if (IS_MPLS_TE(area->mta))
+ area->mta->status = disable;
+ else
+ return NB_OK;
/* Flush LSP if circuit engage */
- for (ALL_LIST_ELEMENTS_RO(isisMplsTE.cir_list, node, circuit)) {
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) {
if (circuit->mtc == NULL || (circuit->mtc->status == disable))
continue;
}
/*
- * XPath: /frr-isisd:isis/mpls-te/router-address
+ * XPath: /frr-isisd:isis/instance/mpls-te/router-address
*/
-static int isis_mpls_te_router_address_modify(enum nb_event event,
+static int isis_instance_mpls_te_router_address_modify(enum nb_event event,
const struct lyd_node *dnode,
union nb_resource *resource)
{
struct in_addr value;
- struct listnode *node;
struct isis_area *area;
if (event != NB_EV_APPLY)
return NB_OK;
- yang_dnode_get_ipv4(&value, dnode, NULL);
- isisMplsTE.router_id.s_addr = value.s_addr;
+ area = nb_running_get_entry(dnode, NULL, true);
/* only proceed if MPLS-TE is enabled */
- if (isisMplsTE.status == disable)
+ if (!IS_MPLS_TE(area->mta))
return NB_OK;
- /* Update main Router ID in isis global structure */
- isis->router_id = value.s_addr;
+ /* Update Area Router ID */
+ yang_dnode_get_ipv4(&value, dnode, NULL);
+ area->mta->router_id.s_addr = value.s_addr;
+
/* And re-schedule LSP update */
- for (ALL_LIST_ELEMENTS_RO(isis->area_list, node, area))
- if (listcount(area->area_addrs) > 0)
- lsp_regenerate_schedule(area, area->is_type, 0);
+ if (listcount(area->area_addrs) > 0)
+ lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
-static int isis_mpls_te_router_address_delete(enum nb_event event,
+static int isis_instance_mpls_te_router_address_destroy(enum nb_event event,
const struct lyd_node *dnode)
{
- struct listnode *node;
struct isis_area *area;
if (event != NB_EV_APPLY)
return NB_OK;
- isisMplsTE.router_id.s_addr = INADDR_ANY;
+ area = nb_running_get_entry(dnode, NULL, true);
/* only proceed if MPLS-TE is enabled */
- if (isisMplsTE.status == disable)
+ if (!IS_MPLS_TE(area->mta))
return NB_OK;
- /* Update main Router ID in isis global structure */
- isis->router_id = 0;
+ /* Reset Area Router ID */
+ area->mta->router_id.s_addr = INADDR_ANY;
+
/* And re-schedule LSP update */
- for (ALL_LIST_ELEMENTS_RO(isis->area_list, node, area))
- if (listcount(area->area_addrs) > 0)
- lsp_regenerate_schedule(area, area->is_type, 0);
+ if (listcount(area->area_addrs) > 0)
+ lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
abort();
}
- ifp = yang_dnode_get_entry(dnode, true);
+ ifp = nb_running_get_entry(dnode, NULL, true);
circuit = isis_circuit_create(area, ifp);
assert(circuit->state == C_STATE_CONF || circuit->state == C_STATE_UP);
- yang_dnode_set_entry(dnode, circuit);
+ nb_running_set_entry(dnode, circuit);
return NB_OK;
}
-static int lib_interface_isis_delete(enum nb_event event,
+static int lib_interface_isis_destroy(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 = nb_running_unset_entry(dnode);
if (!circuit)
return NB_ERR_INCONSISTENCY;
/* delete circuit through csm changes */
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
isis_circuit_is_type_set(circuit, circ_type);
break;
}
/*
* 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,
union nb_resource *resource)
{
- bool ipv6;
+ bool ipv4, ipv6;
struct isis_circuit *circuit;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
- ipv6 = yang_dnode_exists(dnode, "../ipv6-routing");
- isis_circuit_af_set(circuit, true, 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);
- }
+ circuit = nb_running_get_entry(dnode, NULL, true);
+ ipv4 = yang_dnode_get_bool(dnode, NULL);
+ ipv6 = yang_dnode_get_bool(dnode, "../ipv6-routing");
+ isis_circuit_af_set(circuit, ipv4, ipv6);
return NB_OK;
}
/*
* 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,
union nb_resource *resource)
{
- bool ipv4;
+ bool ipv4, ipv6;
struct isis_circuit *circuit;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
- ipv4 = yang_dnode_exists(dnode, "../ipv6-routing");
- isis_circuit_af_set(circuit, ipv4, true);
-
- 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);
- }
+ circuit = nb_running_get_entry(dnode, NULL, true);
+ ipv4 = yang_dnode_exists(dnode, "../ipv4-routing");
+ ipv6 = yang_dnode_get_bool(dnode, NULL);
+ isis_circuit_af_set(circuit, ipv4, ipv6);
return NB_OK;
}
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->csnp_interval[0] = yang_dnode_get_uint16(dnode, NULL);
return NB_OK;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->csnp_interval[1] = yang_dnode_get_uint16(dnode, NULL);
return NB_OK;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->psnp_interval[0] = yang_dnode_get_uint16(dnode, NULL);
return NB_OK;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->psnp_interval[1] = yang_dnode_get_uint16(dnode, NULL);
return NB_OK;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->pad_hellos = yang_dnode_get_bool(dnode, NULL);
return NB_OK;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
interval = yang_dnode_get_uint32(dnode, NULL);
circuit->hello_interval[0] = interval;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
interval = yang_dnode_get_uint32(dnode, NULL);
circuit->hello_interval[1] = interval;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
multi = yang_dnode_get_uint16(dnode, NULL);
circuit->hello_multiplier[0] = multi;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
multi = yang_dnode_get_uint16(dnode, NULL);
circuit->hello_multiplier[1] = multi;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
met = yang_dnode_get_uint32(dnode, NULL);
isis_circuit_metric_set(circuit, IS_LEVEL_1, met);
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
met = yang_dnode_get_uint32(dnode, NULL);
isis_circuit_metric_set(circuit, IS_LEVEL_2, met);
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->priority[0] = yang_dnode_get_uint8(dnode, NULL);
return NB_OK;
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->priority[1] = yang_dnode_get_uint8(dnode, NULL);
return NB_OK;
switch (event) {
case NB_EV_VALIDATE:
- circuit = yang_dnode_get_entry(dnode, false);
+ circuit = nb_running_get_entry(dnode, NULL, false);
if (!circuit)
break;
- if (circuit->circ_type == CIRCUIT_T_LOOPBACK
- || circuit->circ_type == CIRCUIT_T_UNKNOWN) {
+ if (circuit->circ_type == CIRCUIT_T_LOOPBACK) {
flog_warn(
EC_LIB_NB_CB_CONFIG_VALIDATE,
- "Cannot change network type on unknown or loopback interface");
+ "Cannot change network type on loopback interface");
return NB_ERR_VALIDATION;
}
if (net_type == CIRCUIT_T_BROADCAST
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
isis_circuit_circ_type_set(circuit, net_type);
break;
}
return NB_OK;
}
-static int lib_interface_isis_network_type_delete(enum nb_event event,
- const struct lyd_node *dnode)
-{
- /* FIXME: This cannot be done in FRR. Not sure what the intended
- * behavior is.
- */
- return NB_OK;
-}
-
/*
* 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,
union nb_resource *resource)
{
struct isis_circuit *circuit;
struct isis_area *area;
-
- if (event != NB_EV_APPLY)
- return NB_OK;
-
- circuit = yang_dnode_get_entry(dnode, true);
- if (circuit->state != C_STATE_UP) {
- circuit->is_passive = true;
- } else {
- area = circuit->area;
- isis_csm_state_change(ISIS_DISABLE, circuit, area);
- circuit->is_passive = true;
- isis_csm_state_change(ISIS_ENABLE, circuit, area);
- }
-
- 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;
+ bool passive = yang_dnode_get_bool(dnode, NULL);
- switch (event) {
- case NB_EV_VALIDATE:
- circuit = yang_dnode_get_entry(dnode, false);
+ /* validation only applies if we are setting passive to false */
+ if (!passive && event == NB_EV_VALIDATE) {
+ circuit = nb_running_get_entry(dnode, NULL, false);
if (!circuit)
- break;
+ return NB_OK;
ifp = circuit->interface;
if (!ifp)
- break;
+ return NB_OK;
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;
+ }
+
+ if (event != NB_EV_APPLY)
+ return NB_OK;
+
+ circuit = nb_running_get_entry(dnode, NULL, true);
+ if (circuit->state != C_STATE_UP) {
+ circuit->is_passive = passive;
+ } else {
+ area = circuit->area;
+ isis_csm_state_change(ISIS_DISABLE, circuit, area);
+ circuit->is_passive = passive;
+ isis_csm_state_change(ISIS_ENABLE, circuit, area);
}
return NB_OK;
return NB_OK;
}
-static int lib_interface_isis_password_delete(enum nb_event event,
+static int lib_interface_isis_password_destroy(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 = nb_running_get_entry(dnode, NULL, true);
isis_circuit_passwd_unset(circuit);
return NB_OK;
return NB_OK;
password = yang_dnode_get_string(dnode, NULL);
- circuit = yang_dnode_get_entry(dnode, true);
- circuit->passwd.len = strlen(password);
- strncpy((char *)circuit->passwd.passwd, password, 255);
+ circuit = nb_running_get_entry(dnode, NULL, true);
+
+ isis_circuit_passwd_set(circuit, circuit->passwd.type, password);
return NB_OK;
}
return NB_OK;
pass_type = yang_dnode_get_enum(dnode, NULL);
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
circuit->passwd.type = pass_type;
return NB_OK;
* XPath:
* /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,
union nb_resource *resource)
{
if (event != NB_EV_APPLY)
return NB_OK;
- circuit = yang_dnode_get_entry(dnode, true);
- circuit->disable_threeway_adj = true;
-
- 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;
+ circuit = nb_running_get_entry(dnode, NULL, true);
+ circuit->disable_threeway_adj = yang_dnode_get_bool(dnode, NULL);
return NB_OK;
}
switch (event) {
case NB_EV_VALIDATE:
- circuit = yang_dnode_get_entry(dnode, false);
+ circuit = nb_running_get_entry(dnode, NULL, false);
if (circuit && circuit->area && circuit->area->oldmetric) {
flog_warn(
EC_LIB_NB_CB_CONFIG_VALIDATE,
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
- circuit = yang_dnode_get_entry(dnode, true);
+ circuit = nb_running_get_entry(dnode, NULL, true);
value = yang_dnode_get_bool(dnode, NULL);
isis_circuit_mt_enabled_set(circuit, mtid, value);
break;
nb_notification_send(xpath, arguments);
}
+/*
+ * XPath:
+ * /frr-isisd:own-lsp-purge
+ */
+void isis_notif_own_lsp_purge(const struct isis_circuit *circuit,
+ const char *lsp_id)
+{
+ const char *xpath = "/frr-isisd:own-lsp-purge";
+ struct list *arguments = yang_data_list_new();
+ char xpath_arg[XPATH_MAXLEN];
+ struct yang_data *data;
+ struct isis_area *area = circuit->area;
+
+ notif_prep_instance_hdr(xpath, area, "default", arguments);
+ notif_prepr_iface_hdr(xpath, circuit, arguments);
+ snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
+ data = yang_data_new_string(xpath_arg, lsp_id);
+ listnode_add(arguments, data);
+
+ nb_notification_send(xpath, arguments);
+}
+
/* clang-format off */
const struct frr_yang_module_info frr_isisd_info = {
.name = "frr-isisd",
{
.xpath = "/frr-isisd:isis/instance",
.cbs.create = isis_instance_create,
- .cbs.delete = isis_instance_delete,
+ .cbs.destroy = isis_instance_destroy,
.cbs.cli_show = cli_show_router_isis,
.priority = NB_DFLT_PRIORITY - 1,
},
{
.xpath = "/frr-isisd:isis/instance/area-address",
.cbs.create = isis_instance_area_address_create,
- .cbs.delete = isis_instance_area_address_delete,
+ .cbs.destroy = isis_instance_area_address_destroy,
.cbs.cli_show = cli_show_isis_area_address,
},
{
},
{
.xpath = "/frr-isisd:isis/instance/attached",
- .cbs.create = isis_instance_attached_create,
- .cbs.delete = isis_instance_attached_delete,
+ .cbs.modify = isis_instance_attached_modify,
.cbs.cli_show = cli_show_isis_attached,
},
{
.xpath = "/frr-isisd:isis/instance/overload",
- .cbs.create = isis_instance_overload_create,
- .cbs.delete = isis_instance_overload_delete,
+ .cbs.modify = isis_instance_overload_modify,
.cbs.cli_show = cli_show_isis_overload,
},
{
},
{
.xpath = "/frr-isisd:isis/instance/purge-originator",
- .cbs.create = isis_instance_purge_originator_create,
- .cbs.delete = isis_instance_purge_originator_delete,
+ .cbs.modify = isis_instance_purge_originator_modify,
.cbs.cli_show = cli_show_isis_purge_origin,
},
{
{
.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay",
.cbs.create = isis_instance_spf_ietf_backoff_delay_create,
- .cbs.delete = isis_instance_spf_ietf_backoff_delay_delete,
+ .cbs.destroy = isis_instance_spf_ietf_backoff_delay_destroy,
.cbs.apply_finish = ietf_backoff_delay_apply_finish,
.cbs.cli_show = cli_show_isis_spf_ietf_backoff,
},
{
.xpath = "/frr-isisd:isis/instance/area-password",
.cbs.create = isis_instance_area_password_create,
- .cbs.delete = isis_instance_area_password_delete,
+ .cbs.destroy = isis_instance_area_password_destroy,
.cbs.apply_finish = area_password_apply_finish,
.cbs.cli_show = cli_show_isis_area_pwd,
},
{
.xpath = "/frr-isisd:isis/instance/domain-password",
.cbs.create = isis_instance_domain_password_create,
- .cbs.delete = isis_instance_domain_password_delete,
+ .cbs.destroy = isis_instance_domain_password_destroy,
.cbs.apply_finish = domain_password_apply_finish,
.cbs.cli_show = cli_show_isis_domain_pwd,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4",
.cbs.create = isis_instance_default_information_originate_ipv4_create,
- .cbs.delete = isis_instance_default_information_originate_ipv4_delete,
+ .cbs.destroy = isis_instance_default_information_originate_ipv4_destroy,
.cbs.apply_finish = default_info_origin_ipv4_apply_finish,
.cbs.cli_show = cli_show_isis_def_origin_ipv4,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/always",
- .cbs.create = isis_instance_default_information_originate_ipv4_always_create,
- .cbs.delete = isis_instance_default_information_originate_ipv4_always_delete,
+ .cbs.modify = isis_instance_default_information_originate_ipv4_always_modify,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map",
.cbs.modify = isis_instance_default_information_originate_ipv4_route_map_modify,
- .cbs.delete = isis_instance_default_information_originate_ipv4_route_map_delete,
+ .cbs.destroy = isis_instance_default_information_originate_ipv4_route_map_destroy,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/metric",
.cbs.modify = isis_instance_default_information_originate_ipv4_metric_modify,
- .cbs.delete = isis_instance_default_information_originate_ipv4_metric_delete,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6",
.cbs.create = isis_instance_default_information_originate_ipv6_create,
- .cbs.delete = isis_instance_default_information_originate_ipv6_delete,
+ .cbs.destroy = isis_instance_default_information_originate_ipv6_destroy,
.cbs.apply_finish = default_info_origin_ipv6_apply_finish,
.cbs.cli_show = cli_show_isis_def_origin_ipv6,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/always",
- .cbs.create = isis_instance_default_information_originate_ipv6_always_create,
- .cbs.delete = isis_instance_default_information_originate_ipv6_always_delete,
+ .cbs.modify = isis_instance_default_information_originate_ipv6_always_modify,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map",
.cbs.modify = isis_instance_default_information_originate_ipv6_route_map_modify,
- .cbs.delete = isis_instance_default_information_originate_ipv6_route_map_delete,
+ .cbs.destroy = isis_instance_default_information_originate_ipv6_route_map_destroy,
},
{
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/metric",
.cbs.modify = isis_instance_default_information_originate_ipv6_metric_modify,
- .cbs.delete = isis_instance_default_information_originate_ipv6_metric_delete,
},
{
.xpath = "/frr-isisd:isis/instance/redistribute/ipv4",
.cbs.create = isis_instance_redistribute_ipv4_create,
- .cbs.delete = isis_instance_redistribute_ipv4_delete,
+ .cbs.destroy = isis_instance_redistribute_ipv4_destroy,
.cbs.apply_finish = redistribute_ipv4_apply_finish,
.cbs.cli_show = cli_show_isis_redistribute_ipv4,
},
{
.xpath = "/frr-isisd:isis/instance/redistribute/ipv4/route-map",
.cbs.modify = isis_instance_redistribute_ipv4_route_map_modify,
- .cbs.delete = isis_instance_redistribute_ipv4_route_map_delete,
+ .cbs.destroy = isis_instance_redistribute_ipv4_route_map_destroy,
},
{
.xpath = "/frr-isisd:isis/instance/redistribute/ipv4/metric",
.cbs.modify = isis_instance_redistribute_ipv4_metric_modify,
- .cbs.delete = isis_instance_redistribute_ipv4_metric_delete,
},
{
.xpath = "/frr-isisd:isis/instance/redistribute/ipv6",
.cbs.create = isis_instance_redistribute_ipv6_create,
- .cbs.delete = isis_instance_redistribute_ipv6_delete,
+ .cbs.destroy = isis_instance_redistribute_ipv6_destroy,
.cbs.apply_finish = redistribute_ipv6_apply_finish,
.cbs.cli_show = cli_show_isis_redistribute_ipv6,
},
{
.xpath = "/frr-isisd:isis/instance/redistribute/ipv6/route-map",
.cbs.modify = isis_instance_redistribute_ipv6_route_map_modify,
- .cbs.delete = isis_instance_redistribute_ipv6_route_map_delete,
+ .cbs.destroy = isis_instance_redistribute_ipv6_route_map_destroy,
},
{
.xpath = "/frr-isisd:isis/instance/redistribute/ipv6/metric",
.cbs.modify = isis_instance_redistribute_ipv6_metric_modify,
- .cbs.delete = isis_instance_redistribute_ipv6_metric_delete,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast",
.cbs.create = isis_instance_multi_topology_ipv4_multicast_create,
- .cbs.delete = isis_instance_multi_topology_ipv4_multicast_delete,
+ .cbs.destroy = isis_instance_multi_topology_ipv4_multicast_destroy,
.cbs.cli_show = cli_show_isis_mt_ipv4_multicast,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload",
- .cbs.create = isis_instance_multi_topology_ipv4_multicast_overload_create,
- .cbs.delete = isis_instance_multi_topology_ipv4_multicast_overload_delete,
+ .cbs.modify = isis_instance_multi_topology_ipv4_multicast_overload_modify,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management",
.cbs.create = isis_instance_multi_topology_ipv4_management_create,
- .cbs.delete = isis_instance_multi_topology_ipv4_management_delete,
+ .cbs.destroy = isis_instance_multi_topology_ipv4_management_destroy,
.cbs.cli_show = cli_show_isis_mt_ipv4_mgmt,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload",
- .cbs.create = isis_instance_multi_topology_ipv4_management_overload_create,
- .cbs.delete = isis_instance_multi_topology_ipv4_management_overload_delete,
+ .cbs.modify = isis_instance_multi_topology_ipv4_management_overload_modify,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast",
.cbs.create = isis_instance_multi_topology_ipv6_unicast_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_unicast_delete,
+ .cbs.destroy = isis_instance_multi_topology_ipv6_unicast_destroy,
.cbs.cli_show = cli_show_isis_mt_ipv6_unicast,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload",
- .cbs.create = isis_instance_multi_topology_ipv6_unicast_overload_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_unicast_overload_delete,
+ .cbs.modify = isis_instance_multi_topology_ipv6_unicast_overload_modify,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast",
.cbs.create = isis_instance_multi_topology_ipv6_multicast_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_multicast_delete,
+ .cbs.destroy = isis_instance_multi_topology_ipv6_multicast_destroy,
.cbs.cli_show = cli_show_isis_mt_ipv6_multicast,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload",
- .cbs.create = isis_instance_multi_topology_ipv6_multicast_overload_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_multicast_overload_delete,
+ .cbs.modify = isis_instance_multi_topology_ipv6_multicast_overload_modify,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management",
.cbs.create = isis_instance_multi_topology_ipv6_management_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_management_delete,
+ .cbs.destroy = isis_instance_multi_topology_ipv6_management_destroy,
.cbs.cli_show = cli_show_isis_mt_ipv6_mgmt,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload",
- .cbs.create = isis_instance_multi_topology_ipv6_management_overload_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_management_overload_delete,
+ .cbs.modify = isis_instance_multi_topology_ipv6_management_overload_modify,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc",
.cbs.create = isis_instance_multi_topology_ipv6_dstsrc_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_dstsrc_delete,
+ .cbs.destroy = isis_instance_multi_topology_ipv6_dstsrc_destroy,
.cbs.cli_show = cli_show_isis_mt_ipv6_dstsrc,
},
{
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload",
- .cbs.create = isis_instance_multi_topology_ipv6_dstsrc_overload_create,
- .cbs.delete = isis_instance_multi_topology_ipv6_dstsrc_overload_delete,
+ .cbs.modify = isis_instance_multi_topology_ipv6_dstsrc_overload_modify,
},
{
.xpath = "/frr-isisd:isis/instance/log-adjacency-changes",
- .cbs.create = isis_instance_log_adjacency_changes_create,
- .cbs.delete = isis_instance_log_adjacency_changes_delete,
+ .cbs.modify = isis_instance_log_adjacency_changes_modify,
.cbs.cli_show = cli_show_isis_log_adjacency,
},
{
- .xpath = "/frr-isisd:isis/mpls-te",
- .cbs.create = isis_mpls_te_create,
- .cbs.delete = isis_mpls_te_delete,
+ .xpath = "/frr-isisd:isis/instance/mpls-te",
+ .cbs.create = isis_instance_mpls_te_create,
+ .cbs.destroy = isis_instance_mpls_te_destroy,
.cbs.cli_show = cli_show_isis_mpls_te,
},
{
- .xpath = "/frr-isisd:isis/mpls-te/router-address",
- .cbs.modify = isis_mpls_te_router_address_modify,
- .cbs.delete = isis_mpls_te_router_address_delete,
+ .xpath = "/frr-isisd:isis/instance/mpls-te/router-address",
+ .cbs.modify = isis_instance_mpls_te_router_address_modify,
+ .cbs.destroy = isis_instance_mpls_te_router_address_destroy,
.cbs.cli_show = cli_show_isis_mpls_te_router_addr,
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis",
.cbs.create = lib_interface_isis_create,
- .cbs.delete = lib_interface_isis_delete,
+ .cbs.destroy = lib_interface_isis_destroy,
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/area-tag",
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing",
- .cbs.create = lib_interface_isis_ipv4_routing_create,
- .cbs.delete = lib_interface_isis_ipv4_routing_delete,
+ .cbs.modify = lib_interface_isis_ipv4_routing_modify,
.cbs.cli_show = cli_show_ip_isis_ipv4,
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing",
- .cbs.create = lib_interface_isis_ipv6_routing_create,
- .cbs.delete = lib_interface_isis_ipv6_routing_delete,
+ .cbs.modify = lib_interface_isis_ipv6_routing_modify,
.cbs.cli_show = cli_show_ip_isis_ipv6,
},
{
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/network-type",
.cbs.modify = lib_interface_isis_network_type_modify,
- .cbs.delete = lib_interface_isis_network_type_delete,
.cbs.cli_show = cli_show_ip_isis_network_type,
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/passive",
- .cbs.create = lib_interface_isis_passive_create,
- .cbs.delete = lib_interface_isis_passive_delete,
+ .cbs.modify = lib_interface_isis_passive_modify,
.cbs.cli_show = cli_show_ip_isis_passive,
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/password",
.cbs.create = lib_interface_isis_password_create,
- .cbs.delete = lib_interface_isis_password_delete,
+ .cbs.destroy = lib_interface_isis_password_destroy,
.cbs.cli_show = cli_show_ip_isis_password,
},
{
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake",
- .cbs.create = lib_interface_isis_disable_three_way_handshake_create,
- .cbs.delete = lib_interface_isis_disable_three_way_handshake_delete,
+ .cbs.modify = lib_interface_isis_disable_three_way_handshake_modify,
.cbs.cli_show = cli_show_ip_isis_threeway_shake,
},
{