2 * Copyright (C) 2001,2002 Sampo Saaristo
3 * Tampere University of Technology
4 * Institute of Communications Engineering
5 * Copyright (C) 2018 Volta Networks
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the Free
10 * Software Foundation; either version 2 of the License, or (at your option)
13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
18 * You should have received a copy of the GNU General Public License along
19 * with this program; see the file COPYING; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 #include "northbound.h"
28 #include "isisd/dict.h"
29 #include "isisd/isis_constants.h"
30 #include "isisd/isis_common.h"
31 #include "isisd/isis_flags.h"
32 #include "isisd/isis_circuit.h"
33 #include "isisd/isisd.h"
34 #include "isisd/isis_lsp.h"
35 #include "isisd/isis_pdu.h"
36 #include "isisd/isis_dynhn.h"
37 #include "isisd/isis_misc.h"
38 #include "isisd/isis_csm.h"
39 #include "isisd/isis_adjacency.h"
40 #include "isisd/isis_spf.h"
41 #include "isisd/isis_te.h"
42 #include "isisd/isis_memory.h"
43 #include "isisd/isis_mt.h"
44 #include "isisd/isis_cli.h"
45 #include "isisd/isis_redist.h"
46 #include "lib/spf_backoff.h"
47 #include "lib/lib_errors.h"
51 * XPath: /frr-isisd:isis/instance
53 static int isis_instance_create(enum nb_event event
,
54 const struct lyd_node
*dnode
,
55 union nb_resource
*resource
)
57 struct isis_area
*area
;
60 if (event
!= NB_EV_APPLY
)
63 area_tag
= yang_dnode_get_string(dnode
, "./area-tag");
64 area
= isis_area_lookup(area_tag
);
66 return NB_ERR_INCONSISTENCY
;
68 area
= isis_area_create(area_tag
);
69 /* save area in dnode to avoid looking it up all the time */
70 yang_dnode_set_entry(dnode
, area
);
75 static int isis_instance_delete(enum nb_event event
,
76 const struct lyd_node
*dnode
)
80 if (event
!= NB_EV_APPLY
)
83 area_tag
= yang_dnode_get_string(dnode
, "./area-tag");
84 isis_area_destroy(area_tag
);
90 * XPath: /frr-isisd:isis/instance/is-type
92 static int isis_instance_is_type_modify(enum nb_event event
,
93 const struct lyd_node
*dnode
,
94 union nb_resource
*resource
)
96 struct isis_area
*area
;
99 if (event
!= NB_EV_APPLY
)
102 area
= yang_dnode_get_entry(dnode
, true);
103 type
= yang_dnode_get_enum(dnode
, NULL
);
104 isis_area_is_type_set(area
, type
);
110 * XPath: /frr-isisd:isis/instance/area-address
112 static int isis_instance_area_address_create(enum nb_event event
,
113 const struct lyd_node
*dnode
,
114 union nb_resource
*resource
)
116 struct isis_area
*area
;
117 struct area_addr addr
, *addrr
= NULL
, *addrp
= NULL
;
118 struct listnode
*node
;
120 const char *net_title
= yang_dnode_get_string(dnode
, NULL
);
124 addr
.addr_len
= dotformat2buff(buff
, net_title
);
125 memcpy(addr
.area_addr
, buff
, addr
.addr_len
);
126 if (addr
.area_addr
[addr
.addr_len
- 1] != 0) {
128 EC_LIB_NB_CB_CONFIG_VALIDATE
,
129 "nsel byte (last byte) in area address must be 0");
130 return NB_ERR_VALIDATION
;
132 if (isis
->sysid_set
) {
133 /* Check that the SystemID portions match */
134 if (memcmp(isis
->sysid
, GETSYSID((&addr
)),
137 EC_LIB_NB_CB_CONFIG_VALIDATE
,
138 "System ID must not change when defining additional area addresses");
139 return NB_ERR_VALIDATION
;
144 addrr
= XMALLOC(MTYPE_ISIS_AREA_ADDR
, sizeof(struct area_addr
));
145 addrr
->addr_len
= dotformat2buff(buff
, net_title
);
146 memcpy(addrr
->area_addr
, buff
, addrr
->addr_len
);
147 resource
->ptr
= addrr
;
150 XFREE(MTYPE_ISIS_AREA_ADDR
, resource
->ptr
);
153 area
= yang_dnode_get_entry(dnode
, true);
154 addrr
= resource
->ptr
;
156 if (isis
->sysid_set
== 0) {
158 * First area address - get the SystemID for this router
160 memcpy(isis
->sysid
, GETSYSID(addrr
), ISIS_SYS_ID_LEN
);
163 /* check that we don't already have this address */
164 for (ALL_LIST_ELEMENTS_RO(area
->area_addrs
, node
,
166 if ((addrp
->addr_len
+ ISIS_SYS_ID_LEN
168 != (addrr
->addr_len
))
170 if (!memcmp(addrp
->area_addr
, addrr
->area_addr
,
172 XFREE(MTYPE_ISIS_AREA_ADDR
, addrr
);
173 return NB_OK
; /* silent fail */
178 /*Forget the systemID part of the address */
179 addrr
->addr_len
-= (ISIS_SYS_ID_LEN
+ ISIS_NSEL_LEN
);
180 assert(area
->area_addrs
); /* to silence scan-build sillyness */
181 listnode_add(area
->area_addrs
, addrr
);
183 /* only now we can safely generate our LSPs for this area */
184 if (listcount(area
->area_addrs
) > 0) {
185 if (area
->is_type
& IS_LEVEL_1
)
186 lsp_generate(area
, IS_LEVEL_1
);
187 if (area
->is_type
& IS_LEVEL_2
)
188 lsp_generate(area
, IS_LEVEL_2
);
196 static int isis_instance_area_address_delete(enum nb_event event
,
197 const struct lyd_node
*dnode
)
199 struct area_addr addr
, *addrp
= NULL
;
200 struct listnode
*node
;
202 struct isis_area
*area
;
203 const char *net_title
;
205 if (event
!= NB_EV_APPLY
)
208 net_title
= yang_dnode_get_string(dnode
, NULL
);
209 addr
.addr_len
= dotformat2buff(buff
, net_title
);
210 memcpy(addr
.area_addr
, buff
, (int)addr
.addr_len
);
211 area
= yang_dnode_get_entry(dnode
, true);
212 for (ALL_LIST_ELEMENTS_RO(area
->area_addrs
, node
, addrp
)) {
213 if ((addrp
->addr_len
+ ISIS_SYS_ID_LEN
+ 1) == addr
.addr_len
214 && !memcmp(addrp
->area_addr
, addr
.area_addr
, addr
.addr_len
))
218 return NB_ERR_INCONSISTENCY
;
220 listnode_delete(area
->area_addrs
, addrp
);
221 XFREE(MTYPE_ISIS_AREA_ADDR
, addrp
);
223 * Last area address - reset the SystemID for this router
225 if (listcount(area
->area_addrs
) == 0) {
226 memset(isis
->sysid
, 0, ISIS_SYS_ID_LEN
);
228 if (isis
->debugs
& DEBUG_EVENTS
)
229 zlog_debug("Router has no SystemID");
236 * XPath: /frr-isisd:isis/instance/dynamic-hostname
238 static int isis_instance_dynamic_hostname_modify(enum nb_event event
,
239 const struct lyd_node
*dnode
,
240 union nb_resource
*resource
)
242 struct isis_area
*area
;
244 if (event
!= NB_EV_APPLY
)
247 area
= yang_dnode_get_entry(dnode
, true);
248 isis_area_dynhostname_set(area
, yang_dnode_get_bool(dnode
, NULL
));
254 * XPath: /frr-isisd:isis/instance/attached
256 static int isis_instance_attached_create(enum nb_event event
,
257 const struct lyd_node
*dnode
,
258 union nb_resource
*resource
)
260 struct isis_area
*area
;
262 if (event
!= NB_EV_APPLY
)
265 area
= yang_dnode_get_entry(dnode
, true);
266 isis_area_attached_bit_set(area
, true);
271 static int isis_instance_attached_delete(enum nb_event event
,
272 const struct lyd_node
*dnode
)
274 struct isis_area
*area
;
276 if (event
!= NB_EV_APPLY
)
279 area
= yang_dnode_get_entry(dnode
, true);
280 isis_area_attached_bit_set(area
, false);
286 * XPath: /frr-isisd:isis/instance/overload
288 static int isis_instance_overload_create(enum nb_event event
,
289 const struct lyd_node
*dnode
,
290 union nb_resource
*resource
)
292 struct isis_area
*area
;
294 if (event
!= NB_EV_APPLY
)
297 area
= yang_dnode_get_entry(dnode
, true);
298 isis_area_overload_bit_set(area
, true);
303 static int isis_instance_overload_delete(enum nb_event event
,
304 const struct lyd_node
*dnode
)
306 struct isis_area
*area
;
308 if (event
!= NB_EV_APPLY
)
311 area
= yang_dnode_get_entry(dnode
, true);
312 isis_area_overload_bit_set(area
, false);
318 * XPath: /frr-isisd:isis/instance/metric-style
320 static int isis_instance_metric_style_modify(enum nb_event event
,
321 const struct lyd_node
*dnode
,
322 union nb_resource
*resource
)
324 struct isis_area
*area
;
325 bool old_metric
, new_metric
;
326 enum isis_metric_style metric_style
= yang_dnode_get_enum(dnode
, NULL
);
328 if (event
!= NB_EV_APPLY
)
331 area
= yang_dnode_get_entry(dnode
, true);
332 old_metric
= (metric_style
== ISIS_WIDE_METRIC
) ? false : true;
333 new_metric
= (metric_style
== ISIS_NARROW_METRIC
) ? false : true;
334 isis_area_metricstyle_set(area
, old_metric
, new_metric
);
340 * XPath: /frr-isisd:isis/instance/purge-originator
342 static int isis_instance_purge_originator_create(enum nb_event event
,
343 const struct lyd_node
*dnode
,
344 union nb_resource
*resource
)
346 /* TODO: implement me. */
350 static int isis_instance_purge_originator_delete(enum nb_event event
,
351 const struct lyd_node
*dnode
)
353 /* TODO: implement me. */
358 * XPath: /frr-isisd:isis/instance/lsp/mtu
360 static int isis_instance_lsp_mtu_modify(enum nb_event event
,
361 const struct lyd_node
*dnode
,
362 union nb_resource
*resource
)
364 /* TODO: implement me. */
369 * XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-1
372 isis_instance_lsp_refresh_interval_level_1_modify(enum nb_event event
,
373 const struct lyd_node
*dnode
,
374 union nb_resource
*resource
)
376 struct isis_area
*area
;
379 if (event
!= NB_EV_APPLY
)
382 refr_int
= yang_dnode_get_uint16(dnode
, NULL
);
383 area
= yang_dnode_get_entry(dnode
, true);
384 isis_area_lsp_refresh_set(area
, IS_LEVEL_1
, refr_int
);
390 * XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-2
393 isis_instance_lsp_refresh_interval_level_2_modify(enum nb_event event
,
394 const struct lyd_node
*dnode
,
395 union nb_resource
*resource
)
397 struct isis_area
*area
;
400 if (event
!= NB_EV_APPLY
)
403 refr_int
= yang_dnode_get_uint16(dnode
, NULL
);
404 area
= yang_dnode_get_entry(dnode
, true);
405 isis_area_lsp_refresh_set(area
, IS_LEVEL_2
, refr_int
);
411 * XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-1
414 isis_instance_lsp_maximum_lifetime_level_1_modify(enum nb_event event
,
415 const struct lyd_node
*dnode
,
416 union nb_resource
*resource
)
418 /* TODO: implement me. */
423 * XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-2
426 isis_instance_lsp_maximum_lifetime_level_2_modify(enum nb_event event
,
427 const struct lyd_node
*dnode
,
428 union nb_resource
*resource
)
430 /* TODO: implement me. */
435 * XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-1
437 static int isis_instance_lsp_generation_interval_level_1_modify(
438 enum nb_event event
, const struct lyd_node
*dnode
,
439 union nb_resource
*resource
)
441 struct isis_area
*area
;
444 if (event
!= NB_EV_APPLY
)
447 gen_int
= yang_dnode_get_uint16(dnode
, NULL
);
448 area
= yang_dnode_get_entry(dnode
, true);
449 area
->lsp_gen_interval
[0] = gen_int
;
455 * XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-2
457 static int isis_instance_lsp_generation_interval_level_2_modify(
458 enum nb_event event
, const struct lyd_node
*dnode
,
459 union nb_resource
*resource
)
461 struct isis_area
*area
;
464 if (event
!= NB_EV_APPLY
)
467 gen_int
= yang_dnode_get_uint16(dnode
, NULL
);
468 area
= yang_dnode_get_entry(dnode
, true);
469 area
->lsp_gen_interval
[1] = gen_int
;
475 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay
478 isis_instance_spf_ietf_backoff_delay_create(enum nb_event event
,
479 const struct lyd_node
*dnode
,
480 union nb_resource
*resource
)
482 /* TODO: implement me. */
487 isis_instance_spf_ietf_backoff_delay_delete(enum nb_event event
,
488 const struct lyd_node
*dnode
)
490 /* TODO: implement me. */
495 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay
497 static int isis_instance_spf_ietf_backoff_delay_init_delay_modify(
498 enum nb_event event
, const struct lyd_node
*dnode
,
499 union nb_resource
*resource
)
501 /* TODO: implement me. */
506 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay
508 static int isis_instance_spf_ietf_backoff_delay_short_delay_modify(
509 enum nb_event event
, const struct lyd_node
*dnode
,
510 union nb_resource
*resource
)
512 /* TODO: implement me. */
517 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay
519 static int isis_instance_spf_ietf_backoff_delay_long_delay_modify(
520 enum nb_event event
, const struct lyd_node
*dnode
,
521 union nb_resource
*resource
)
523 /* TODO: implement me. */
528 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down
530 static int isis_instance_spf_ietf_backoff_delay_hold_down_modify(
531 enum nb_event event
, const struct lyd_node
*dnode
,
532 union nb_resource
*resource
)
534 /* TODO: implement me. */
539 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn
541 static int isis_instance_spf_ietf_backoff_delay_time_to_learn_modify(
542 enum nb_event event
, const struct lyd_node
*dnode
,
543 union nb_resource
*resource
)
545 /* TODO: implement me. */
550 * XPath: /frr-isisd:isis/instance/spf/minimum-interval/level-1
553 isis_instance_spf_minimum_interval_level_1_modify(enum nb_event event
,
554 const struct lyd_node
*dnode
,
555 union nb_resource
*resource
)
557 /* TODO: implement me. */
562 * XPath: /frr-isisd:isis/instance/spf/minimum-interval/level-2
565 isis_instance_spf_minimum_interval_level_2_modify(enum nb_event event
,
566 const struct lyd_node
*dnode
,
567 union nb_resource
*resource
)
569 /* TODO: implement me. */
574 * XPath: /frr-isisd:isis/instance/area-password
576 static void area_password_apply_finish(const struct lyd_node
*dnode
)
578 const char *password
= yang_dnode_get_string(dnode
, "./password");
579 struct isis_area
*area
= yang_dnode_get_entry(dnode
, true);
580 int pass_type
= yang_dnode_get_enum(dnode
, "./password-type");
581 uint8_t snp_auth
= yang_dnode_get_enum(dnode
, "./authenticate-snp");
584 case ISIS_PASSWD_TYPE_CLEARTXT
:
585 isis_area_passwd_cleartext_set(area
, IS_LEVEL_1
, password
,
588 case ISIS_PASSWD_TYPE_HMAC_MD5
:
589 isis_area_passwd_hmac_md5_set(area
, IS_LEVEL_1
, password
,
595 static int isis_instance_area_password_create(enum nb_event event
,
596 const struct lyd_node
*dnode
,
597 union nb_resource
*resource
)
599 /* actual setting is done in apply_finish */
603 static int isis_instance_area_password_delete(enum nb_event event
,
604 const struct lyd_node
*dnode
)
606 struct isis_area
*area
;
608 if (event
!= NB_EV_APPLY
)
611 area
= yang_dnode_get_entry(dnode
, true);
612 isis_area_passwd_unset(area
, IS_LEVEL_1
);
618 * XPath: /frr-isisd:isis/instance/area-password/password
621 isis_instance_area_password_password_modify(enum nb_event event
,
622 const struct lyd_node
*dnode
,
623 union nb_resource
*resource
)
625 /* actual setting is done in apply_finish */
630 * XPath: /frr-isisd:isis/instance/area-password/password-type
633 isis_instance_area_password_password_type_modify(enum nb_event event
,
634 const struct lyd_node
*dnode
,
635 union nb_resource
*resource
)
637 /* actual setting is done in apply_finish */
642 * XPath: /frr-isisd:isis/instance/area-password/authenticate-snp
644 static int isis_instance_area_password_authenticate_snp_modify(
645 enum nb_event event
, const struct lyd_node
*dnode
,
646 union nb_resource
*resource
)
648 /* actual setting is done in apply_finish */
653 * XPath: /frr-isisd:isis/instance/domain-password
655 static void domain_password_apply_finish(const struct lyd_node
*dnode
)
657 const char *password
= yang_dnode_get_string(dnode
, "./password");
658 struct isis_area
*area
= yang_dnode_get_entry(dnode
, true);
659 int pass_type
= yang_dnode_get_enum(dnode
, "./password-type");
660 uint8_t snp_auth
= yang_dnode_get_enum(dnode
, "./authenticate-snp");
663 case ISIS_PASSWD_TYPE_CLEARTXT
:
664 isis_area_passwd_cleartext_set(area
, IS_LEVEL_2
, password
,
667 case ISIS_PASSWD_TYPE_HMAC_MD5
:
668 isis_area_passwd_hmac_md5_set(area
, IS_LEVEL_2
, password
,
674 static int isis_instance_domain_password_create(enum nb_event event
,
675 const struct lyd_node
*dnode
,
676 union nb_resource
*resource
)
678 /* actual setting is done in apply_finish */
682 static int isis_instance_domain_password_delete(enum nb_event event
,
683 const struct lyd_node
*dnode
)
685 struct isis_area
*area
;
687 if (event
!= NB_EV_APPLY
)
690 area
= yang_dnode_get_entry(dnode
, true);
691 isis_area_passwd_unset(area
, IS_LEVEL_2
);
697 * XPath: /frr-isisd:isis/instance/domain-password/password
700 isis_instance_domain_password_password_modify(enum nb_event event
,
701 const struct lyd_node
*dnode
,
702 union nb_resource
*resource
)
704 /* actual setting is done in apply_finish */
709 * XPath: /frr-isisd:isis/instance/domain-password/password-type
712 isis_instance_domain_password_password_type_modify(enum nb_event event
,
713 const struct lyd_node
*dnode
,
714 union nb_resource
*resource
)
716 /* actual setting is done in apply_finish */
721 * XPath: /frr-isisd:isis/instance/domain-password/authenticate-snp
723 static int isis_instance_domain_password_authenticate_snp_modify(
724 enum nb_event event
, const struct lyd_node
*dnode
,
725 union nb_resource
*resource
)
727 /* actual setting is done in apply_finish */
732 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4
734 static int isis_instance_default_information_originate_ipv4_create(
735 enum nb_event event
, const struct lyd_node
*dnode
,
736 union nb_resource
*resource
)
738 /* TODO: implement me. */
742 static int isis_instance_default_information_originate_ipv4_delete(
743 enum nb_event event
, const struct lyd_node
*dnode
)
745 /* TODO: implement me. */
750 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/always
752 static int isis_instance_default_information_originate_ipv4_always_create(
753 enum nb_event event
, const struct lyd_node
*dnode
,
754 union nb_resource
*resource
)
756 /* TODO: implement me. */
760 static int isis_instance_default_information_originate_ipv4_always_delete(
761 enum nb_event event
, const struct lyd_node
*dnode
)
763 /* TODO: implement me. */
768 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/route-map
770 static int isis_instance_default_information_originate_ipv4_route_map_modify(
771 enum nb_event event
, const struct lyd_node
*dnode
,
772 union nb_resource
*resource
)
774 /* TODO: implement me. */
778 static int isis_instance_default_information_originate_ipv4_route_map_delete(
779 enum nb_event event
, const struct lyd_node
*dnode
)
781 /* TODO: implement me. */
786 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/metric
788 static int isis_instance_default_information_originate_ipv4_metric_modify(
789 enum nb_event event
, const struct lyd_node
*dnode
,
790 union nb_resource
*resource
)
792 /* TODO: implement me. */
796 static int isis_instance_default_information_originate_ipv4_metric_delete(
797 enum nb_event event
, const struct lyd_node
*dnode
)
799 /* TODO: implement me. */
804 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6
806 static int isis_instance_default_information_originate_ipv6_create(
807 enum nb_event event
, const struct lyd_node
*dnode
,
808 union nb_resource
*resource
)
810 /* TODO: implement me. */
814 static int isis_instance_default_information_originate_ipv6_delete(
815 enum nb_event event
, const struct lyd_node
*dnode
)
817 /* TODO: implement me. */
822 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/always
824 static int isis_instance_default_information_originate_ipv6_always_create(
825 enum nb_event event
, const struct lyd_node
*dnode
,
826 union nb_resource
*resource
)
828 /* TODO: implement me. */
832 static int isis_instance_default_information_originate_ipv6_always_delete(
833 enum nb_event event
, const struct lyd_node
*dnode
)
835 /* TODO: implement me. */
840 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/route-map
842 static int isis_instance_default_information_originate_ipv6_route_map_modify(
843 enum nb_event event
, const struct lyd_node
*dnode
,
844 union nb_resource
*resource
)
846 /* TODO: implement me. */
850 static int isis_instance_default_information_originate_ipv6_route_map_delete(
851 enum nb_event event
, const struct lyd_node
*dnode
)
853 /* TODO: implement me. */
858 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/metric
860 static int isis_instance_default_information_originate_ipv6_metric_modify(
861 enum nb_event event
, const struct lyd_node
*dnode
,
862 union nb_resource
*resource
)
864 /* TODO: implement me. */
868 static int isis_instance_default_information_originate_ipv6_metric_delete(
869 enum nb_event event
, const struct lyd_node
*dnode
)
871 /* TODO: implement me. */
876 * XPath: /frr-isisd:isis/instance/redistribute/ipv4
878 static int isis_instance_redistribute_ipv4_create(enum nb_event event
,
879 const struct lyd_node
*dnode
,
880 union nb_resource
*resource
)
882 /* TODO: implement me. */
886 static int isis_instance_redistribute_ipv4_delete(enum nb_event event
,
887 const struct lyd_node
*dnode
)
889 /* TODO: implement me. */
894 * XPath: /frr-isisd:isis/instance/redistribute/ipv4/route-map
897 isis_instance_redistribute_ipv4_route_map_modify(enum nb_event event
,
898 const struct lyd_node
*dnode
,
899 union nb_resource
*resource
)
901 /* TODO: implement me. */
906 isis_instance_redistribute_ipv4_route_map_delete(enum nb_event event
,
907 const struct lyd_node
*dnode
)
909 /* TODO: implement me. */
914 * XPath: /frr-isisd:isis/instance/redistribute/ipv4/metric
917 isis_instance_redistribute_ipv4_metric_modify(enum nb_event event
,
918 const struct lyd_node
*dnode
,
919 union nb_resource
*resource
)
921 /* TODO: implement me. */
926 isis_instance_redistribute_ipv4_metric_delete(enum nb_event event
,
927 const struct lyd_node
*dnode
)
929 /* TODO: implement me. */
934 * XPath: /frr-isisd:isis/instance/redistribute/ipv6
936 static int isis_instance_redistribute_ipv6_create(enum nb_event event
,
937 const struct lyd_node
*dnode
,
938 union nb_resource
*resource
)
940 /* TODO: implement me. */
944 static int isis_instance_redistribute_ipv6_delete(enum nb_event event
,
945 const struct lyd_node
*dnode
)
947 /* TODO: implement me. */
952 * XPath: /frr-isisd:isis/instance/redistribute/ipv6/route-map
955 isis_instance_redistribute_ipv6_route_map_modify(enum nb_event event
,
956 const struct lyd_node
*dnode
,
957 union nb_resource
*resource
)
959 /* TODO: implement me. */
964 isis_instance_redistribute_ipv6_route_map_delete(enum nb_event event
,
965 const struct lyd_node
*dnode
)
967 /* TODO: implement me. */
972 * XPath: /frr-isisd:isis/instance/redistribute/ipv6/metric
975 isis_instance_redistribute_ipv6_metric_modify(enum nb_event event
,
976 const struct lyd_node
*dnode
,
977 union nb_resource
*resource
)
979 /* TODO: implement me. */
984 isis_instance_redistribute_ipv6_metric_delete(enum nb_event event
,
985 const struct lyd_node
*dnode
)
987 /* TODO: implement me. */
992 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast
995 isis_instance_multi_topology_ipv4_multicast_create(enum nb_event event
,
996 const struct lyd_node
*dnode
,
997 union nb_resource
*resource
)
999 /* TODO: implement me. */
1004 isis_instance_multi_topology_ipv4_multicast_delete(enum nb_event event
,
1005 const struct lyd_node
*dnode
)
1007 /* TODO: implement me. */
1012 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload
1014 static int isis_instance_multi_topology_ipv4_multicast_overload_create(
1015 enum nb_event event
, const struct lyd_node
*dnode
,
1016 union nb_resource
*resource
)
1018 /* TODO: implement me. */
1022 static int isis_instance_multi_topology_ipv4_multicast_overload_delete(
1023 enum nb_event event
, const struct lyd_node
*dnode
)
1025 /* TODO: implement me. */
1030 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management
1032 static int isis_instance_multi_topology_ipv4_management_create(
1033 enum nb_event event
, const struct lyd_node
*dnode
,
1034 union nb_resource
*resource
)
1036 /* TODO: implement me. */
1040 static int isis_instance_multi_topology_ipv4_management_delete(
1041 enum nb_event event
, const struct lyd_node
*dnode
)
1043 /* TODO: implement me. */
1048 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management/overload
1050 static int isis_instance_multi_topology_ipv4_management_overload_create(
1051 enum nb_event event
, const struct lyd_node
*dnode
,
1052 union nb_resource
*resource
)
1054 /* TODO: implement me. */
1058 static int isis_instance_multi_topology_ipv4_management_overload_delete(
1059 enum nb_event event
, const struct lyd_node
*dnode
)
1061 /* TODO: implement me. */
1066 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast
1069 isis_instance_multi_topology_ipv6_unicast_create(enum nb_event event
,
1070 const struct lyd_node
*dnode
,
1071 union nb_resource
*resource
)
1073 /* TODO: implement me. */
1078 isis_instance_multi_topology_ipv6_unicast_delete(enum nb_event event
,
1079 const struct lyd_node
*dnode
)
1081 /* TODO: implement me. */
1086 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload
1088 static int isis_instance_multi_topology_ipv6_unicast_overload_create(
1089 enum nb_event event
, const struct lyd_node
*dnode
,
1090 union nb_resource
*resource
)
1092 /* TODO: implement me. */
1096 static int isis_instance_multi_topology_ipv6_unicast_overload_delete(
1097 enum nb_event event
, const struct lyd_node
*dnode
)
1099 /* TODO: implement me. */
1104 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast
1107 isis_instance_multi_topology_ipv6_multicast_create(enum nb_event event
,
1108 const struct lyd_node
*dnode
,
1109 union nb_resource
*resource
)
1111 /* TODO: implement me. */
1116 isis_instance_multi_topology_ipv6_multicast_delete(enum nb_event event
,
1117 const struct lyd_node
*dnode
)
1119 /* TODO: implement me. */
1124 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload
1126 static int isis_instance_multi_topology_ipv6_multicast_overload_create(
1127 enum nb_event event
, const struct lyd_node
*dnode
,
1128 union nb_resource
*resource
)
1130 /* TODO: implement me. */
1134 static int isis_instance_multi_topology_ipv6_multicast_overload_delete(
1135 enum nb_event event
, const struct lyd_node
*dnode
)
1137 /* TODO: implement me. */
1142 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management
1144 static int isis_instance_multi_topology_ipv6_management_create(
1145 enum nb_event event
, const struct lyd_node
*dnode
,
1146 union nb_resource
*resource
)
1148 /* TODO: implement me. */
1152 static int isis_instance_multi_topology_ipv6_management_delete(
1153 enum nb_event event
, const struct lyd_node
*dnode
)
1155 /* TODO: implement me. */
1160 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management/overload
1162 static int isis_instance_multi_topology_ipv6_management_overload_create(
1163 enum nb_event event
, const struct lyd_node
*dnode
,
1164 union nb_resource
*resource
)
1166 /* TODO: implement me. */
1170 static int isis_instance_multi_topology_ipv6_management_overload_delete(
1171 enum nb_event event
, const struct lyd_node
*dnode
)
1173 /* TODO: implement me. */
1178 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc
1181 isis_instance_multi_topology_ipv6_dstsrc_create(enum nb_event event
,
1182 const struct lyd_node
*dnode
,
1183 union nb_resource
*resource
)
1185 /* TODO: implement me. */
1190 isis_instance_multi_topology_ipv6_dstsrc_delete(enum nb_event event
,
1191 const struct lyd_node
*dnode
)
1193 /* TODO: implement me. */
1198 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload
1200 static int isis_instance_multi_topology_ipv6_dstsrc_overload_create(
1201 enum nb_event event
, const struct lyd_node
*dnode
,
1202 union nb_resource
*resource
)
1204 /* TODO: implement me. */
1208 static int isis_instance_multi_topology_ipv6_dstsrc_overload_delete(
1209 enum nb_event event
, const struct lyd_node
*dnode
)
1211 /* TODO: implement me. */
1216 * XPath: /frr-isisd:isis/instance/log-adjacency-changes
1219 isis_instance_log_adjacency_changes_create(enum nb_event event
,
1220 const struct lyd_node
*dnode
,
1221 union nb_resource
*resource
)
1223 /* TODO: implement me. */
1228 isis_instance_log_adjacency_changes_delete(enum nb_event event
,
1229 const struct lyd_node
*dnode
)
1231 /* TODO: implement me. */
1236 * XPath: /frr-isisd:isis/mpls-te
1238 static int isis_mpls_te_create(enum nb_event event
,
1239 const struct lyd_node
*dnode
,
1240 union nb_resource
*resource
)
1242 /* TODO: implement me. */
1246 static int isis_mpls_te_delete(enum nb_event event
,
1247 const struct lyd_node
*dnode
)
1249 /* TODO: implement me. */
1254 * XPath: /frr-isisd:isis/mpls-te/router-address
1256 static int isis_mpls_te_router_address_modify(enum nb_event event
,
1257 const struct lyd_node
*dnode
,
1258 union nb_resource
*resource
)
1260 /* TODO: implement me. */
1264 static int isis_mpls_te_router_address_delete(enum nb_event event
,
1265 const struct lyd_node
*dnode
)
1267 /* TODO: implement me. */
1272 * XPath: /frr-interface:lib/interface/frr-isisd:isis
1274 static int lib_interface_isis_create(enum nb_event event
,
1275 const struct lyd_node
*dnode
,
1276 union nb_resource
*resource
)
1278 struct isis_area
*area
;
1279 struct interface
*ifp
;
1280 struct isis_circuit
*circuit
;
1281 const char *area_tag
= yang_dnode_get_string(dnode
, "./area-tag");
1283 if (event
!= NB_EV_APPLY
)
1286 area
= isis_area_lookup(area_tag
);
1287 /* The area should have already be created. We are
1288 * setting the priority of the global isis area creation
1289 * slightly lower, so it should be executed first, but I
1290 * cannot rely on that so here I have to check.
1294 EC_LIB_NB_CB_CONFIG_APPLY
,
1295 "%s: attempt to create circuit for area %s before the area has been created",
1296 __func__
, area_tag
);
1300 ifp
= yang_dnode_get_entry(dnode
, true);
1301 circuit
= isis_circuit_create(area
, ifp
);
1302 assert(circuit
->state
== C_STATE_CONF
|| circuit
->state
== C_STATE_UP
);
1303 yang_dnode_set_entry(dnode
, circuit
);
1308 static int lib_interface_isis_delete(enum nb_event event
,
1309 const struct lyd_node
*dnode
)
1311 struct isis_circuit
*circuit
;
1313 if (event
!= NB_EV_APPLY
)
1316 circuit
= yang_dnode_get_entry(dnode
, true);
1318 return NB_ERR_INCONSISTENCY
;
1319 /* delete circuit through csm changes */
1320 switch (circuit
->state
) {
1322 isis_csm_state_change(IF_DOWN_FROM_Z
, circuit
,
1323 circuit
->interface
);
1324 isis_csm_state_change(ISIS_DISABLE
, circuit
, circuit
->area
);
1327 isis_csm_state_change(ISIS_DISABLE
, circuit
, circuit
->area
);
1330 isis_csm_state_change(IF_DOWN_FROM_Z
, circuit
,
1331 circuit
->interface
);
1339 * XPath: /frr-interface:lib/interface/frr-isisd:isis/area-tag
1341 static int lib_interface_isis_area_tag_modify(enum nb_event event
,
1342 const struct lyd_node
*dnode
,
1343 union nb_resource
*resource
)
1345 struct isis_circuit
*circuit
;
1346 struct interface
*ifp
;
1348 const char *area_tag
, *ifname
, *vrfname
;
1350 if (event
== NB_EV_VALIDATE
) {
1351 /* libyang doesn't like relative paths across module boundaries
1353 ifname
= yang_dnode_get_string(dnode
->parent
->parent
, "./name");
1354 vrfname
= yang_dnode_get_string(dnode
->parent
->parent
, "./vrf");
1355 vrf
= vrf_lookup_by_name(vrfname
);
1357 ifp
= if_lookup_by_name(ifname
, vrf
->vrf_id
);
1360 circuit
= circuit_lookup_by_ifp(ifp
, isis
->init_circ_list
);
1361 area_tag
= yang_dnode_get_string(dnode
, NULL
);
1362 if (circuit
&& circuit
->area
&& circuit
->area
->area_tag
1363 && strcmp(circuit
->area
->area_tag
, area_tag
)) {
1364 flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE
,
1365 "ISIS circuit is already defined on %s",
1366 circuit
->area
->area_tag
);
1367 return NB_ERR_VALIDATION
;
1375 * XPath: /frr-interface:lib/interface/frr-isisd:isis/circuit-type
1377 static int lib_interface_isis_circuit_type_modify(enum nb_event event
,
1378 const struct lyd_node
*dnode
,
1379 union nb_resource
*resource
)
1381 int circ_type
= yang_dnode_get_enum(dnode
, NULL
);
1382 struct isis_circuit
*circuit
;
1383 struct interface
*ifp
;
1385 const char *ifname
, *vrfname
;
1388 case NB_EV_VALIDATE
:
1389 /* libyang doesn't like relative paths across module boundaries
1391 ifname
= yang_dnode_get_string(dnode
->parent
->parent
, "./name");
1392 vrfname
= yang_dnode_get_string(dnode
->parent
->parent
, "./vrf");
1393 vrf
= vrf_lookup_by_name(vrfname
);
1395 ifp
= if_lookup_by_name(ifname
, vrf
->vrf_id
);
1398 circuit
= circuit_lookup_by_ifp(ifp
, isis
->init_circ_list
);
1399 if (circuit
&& circuit
->state
== C_STATE_UP
1400 && circuit
->area
->is_type
!= IS_LEVEL_1_AND_2
1401 && circuit
->area
->is_type
!= circ_type
) {
1402 flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE
,
1403 "Invalid circuit level for area %s",
1404 circuit
->area
->area_tag
);
1405 return NB_ERR_VALIDATION
;
1412 circuit
= yang_dnode_get_entry(dnode
, true);
1413 isis_circuit_is_type_set(circuit
, circ_type
);
1421 * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv4-routing
1423 static int lib_interface_isis_ipv4_routing_create(enum nb_event event
,
1424 const struct lyd_node
*dnode
,
1425 union nb_resource
*resource
)
1428 struct isis_circuit
*circuit
;
1430 if (event
!= NB_EV_APPLY
)
1433 circuit
= yang_dnode_get_entry(dnode
, true);
1434 ipv6
= yang_dnode_exists(dnode
, "../ipv6-routing");
1435 isis_circuit_af_set(circuit
, true, ipv6
);
1440 static int lib_interface_isis_ipv4_routing_delete(enum nb_event event
,
1441 const struct lyd_node
*dnode
)
1444 struct isis_circuit
*circuit
;
1446 if (event
!= NB_EV_APPLY
)
1449 circuit
= yang_dnode_get_entry(dnode
, true);
1450 if (circuit
&& circuit
->area
) {
1451 ipv6
= yang_dnode_exists(dnode
, "../ipv6-routing");
1452 isis_circuit_af_set(circuit
, false, ipv6
);
1459 * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv6-routing
1461 static int lib_interface_isis_ipv6_routing_create(enum nb_event event
,
1462 const struct lyd_node
*dnode
,
1463 union nb_resource
*resource
)
1466 struct isis_circuit
*circuit
;
1468 if (event
!= NB_EV_APPLY
)
1471 circuit
= yang_dnode_get_entry(dnode
, true);
1472 ipv4
= yang_dnode_exists(dnode
, "../ipv6-routing");
1473 isis_circuit_af_set(circuit
, ipv4
, true);
1478 static int lib_interface_isis_ipv6_routing_delete(enum nb_event event
,
1479 const struct lyd_node
*dnode
)
1482 struct isis_circuit
*circuit
;
1484 if (event
!= NB_EV_APPLY
)
1487 circuit
= yang_dnode_get_entry(dnode
, true);
1488 if (circuit
->area
) {
1489 ipv4
= yang_dnode_exists(dnode
, "../ipv4-routing");
1490 isis_circuit_af_set(circuit
, ipv4
, false);
1497 * XPath: /frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1
1500 lib_interface_isis_csnp_interval_level_1_modify(enum nb_event event
,
1501 const struct lyd_node
*dnode
,
1502 union nb_resource
*resource
)
1504 /* TODO: implement me. */
1509 * XPath: /frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2
1512 lib_interface_isis_csnp_interval_level_2_modify(enum nb_event event
,
1513 const struct lyd_node
*dnode
,
1514 union nb_resource
*resource
)
1516 /* TODO: implement me. */
1521 * XPath: /frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1
1524 lib_interface_isis_psnp_interval_level_1_modify(enum nb_event event
,
1525 const struct lyd_node
*dnode
,
1526 union nb_resource
*resource
)
1528 /* TODO: implement me. */
1533 * XPath: /frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2
1536 lib_interface_isis_psnp_interval_level_2_modify(enum nb_event event
,
1537 const struct lyd_node
*dnode
,
1538 union nb_resource
*resource
)
1540 /* TODO: implement me. */
1545 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/padding
1547 static int lib_interface_isis_hello_padding_modify(enum nb_event event
,
1548 const struct lyd_node
*dnode
,
1549 union nb_resource
*resource
)
1551 /* TODO: implement me. */
1556 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1
1559 lib_interface_isis_hello_interval_level_1_modify(enum nb_event event
,
1560 const struct lyd_node
*dnode
,
1561 union nb_resource
*resource
)
1563 /* TODO: implement me. */
1568 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2
1571 lib_interface_isis_hello_interval_level_2_modify(enum nb_event event
,
1572 const struct lyd_node
*dnode
,
1573 union nb_resource
*resource
)
1575 /* TODO: implement me. */
1580 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1
1583 lib_interface_isis_hello_multiplier_level_1_modify(enum nb_event event
,
1584 const struct lyd_node
*dnode
,
1585 union nb_resource
*resource
)
1587 /* TODO: implement me. */
1592 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2
1595 lib_interface_isis_hello_multiplier_level_2_modify(enum nb_event event
,
1596 const struct lyd_node
*dnode
,
1597 union nb_resource
*resource
)
1599 /* TODO: implement me. */
1604 * XPath: /frr-interface:lib/interface/frr-isisd:isis/metric/level-1
1607 lib_interface_isis_metric_level_1_modify(enum nb_event event
,
1608 const struct lyd_node
*dnode
,
1609 union nb_resource
*resource
)
1611 /* TODO: implement me. */
1616 * XPath: /frr-interface:lib/interface/frr-isisd:isis/metric/level-2
1619 lib_interface_isis_metric_level_2_modify(enum nb_event event
,
1620 const struct lyd_node
*dnode
,
1621 union nb_resource
*resource
)
1623 /* TODO: implement me. */
1628 * XPath: /frr-interface:lib/interface/frr-isisd:isis/priority/level-1
1631 lib_interface_isis_priority_level_1_modify(enum nb_event event
,
1632 const struct lyd_node
*dnode
,
1633 union nb_resource
*resource
)
1635 /* TODO: implement me. */
1640 * XPath: /frr-interface:lib/interface/frr-isisd:isis/priority/level-2
1643 lib_interface_isis_priority_level_2_modify(enum nb_event event
,
1644 const struct lyd_node
*dnode
,
1645 union nb_resource
*resource
)
1647 /* TODO: implement me. */
1652 * XPath: /frr-interface:lib/interface/frr-isisd:isis/network-type
1654 static int lib_interface_isis_network_type_modify(enum nb_event event
,
1655 const struct lyd_node
*dnode
,
1656 union nb_resource
*resource
)
1658 /* TODO: implement me. */
1662 static int lib_interface_isis_network_type_delete(enum nb_event event
,
1663 const struct lyd_node
*dnode
)
1665 /* TODO: implement me. */
1670 * XPath: /frr-interface:lib/interface/frr-isisd:isis/passive
1672 static int lib_interface_isis_passive_create(enum nb_event event
,
1673 const struct lyd_node
*dnode
,
1674 union nb_resource
*resource
)
1676 /* TODO: implement me. */
1680 static int lib_interface_isis_passive_delete(enum nb_event event
,
1681 const struct lyd_node
*dnode
)
1683 /* TODO: implement me. */
1688 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password
1690 static int lib_interface_isis_password_create(enum nb_event event
,
1691 const struct lyd_node
*dnode
,
1692 union nb_resource
*resource
)
1694 /* TODO: implement me. */
1698 static int lib_interface_isis_password_delete(enum nb_event event
,
1699 const struct lyd_node
*dnode
)
1701 /* TODO: implement me. */
1706 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password/password
1709 lib_interface_isis_password_password_modify(enum nb_event event
,
1710 const struct lyd_node
*dnode
,
1711 union nb_resource
*resource
)
1713 /* TODO: implement me. */
1718 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password/password-type
1721 lib_interface_isis_password_password_type_modify(enum nb_event event
,
1722 const struct lyd_node
*dnode
,
1723 union nb_resource
*resource
)
1725 /* TODO: implement me. */
1731 * /frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake
1733 static int lib_interface_isis_disable_three_way_handshake_create(
1734 enum nb_event event
, const struct lyd_node
*dnode
,
1735 union nb_resource
*resource
)
1737 /* TODO: implement me. */
1741 static int lib_interface_isis_disable_three_way_handshake_delete(
1742 enum nb_event event
, const struct lyd_node
*dnode
)
1744 /* TODO: implement me. */
1750 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast
1752 static int lib_interface_isis_multi_topology_ipv4_unicast_modify(
1753 enum nb_event event
, const struct lyd_node
*dnode
,
1754 union nb_resource
*resource
)
1756 /* TODO: implement me. */
1762 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast
1764 static int lib_interface_isis_multi_topology_ipv4_multicast_modify(
1765 enum nb_event event
, const struct lyd_node
*dnode
,
1766 union nb_resource
*resource
)
1768 /* TODO: implement me. */
1774 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management
1776 static int lib_interface_isis_multi_topology_ipv4_management_modify(
1777 enum nb_event event
, const struct lyd_node
*dnode
,
1778 union nb_resource
*resource
)
1780 /* TODO: implement me. */
1786 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast
1788 static int lib_interface_isis_multi_topology_ipv6_unicast_modify(
1789 enum nb_event event
, const struct lyd_node
*dnode
,
1790 union nb_resource
*resource
)
1792 /* TODO: implement me. */
1798 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast
1800 static int lib_interface_isis_multi_topology_ipv6_multicast_modify(
1801 enum nb_event event
, const struct lyd_node
*dnode
,
1802 union nb_resource
*resource
)
1804 /* TODO: implement me. */
1810 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management
1812 static int lib_interface_isis_multi_topology_ipv6_management_modify(
1813 enum nb_event event
, const struct lyd_node
*dnode
,
1814 union nb_resource
*resource
)
1816 /* TODO: implement me. */
1821 * XPath: /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc
1823 static int lib_interface_isis_multi_topology_ipv6_dstsrc_modify(
1824 enum nb_event event
, const struct lyd_node
*dnode
,
1825 union nb_resource
*resource
)
1827 /* TODO: implement me. */
1831 /* clang-format off */
1832 const struct frr_yang_module_info frr_isisd_info
= {
1833 .name
= "frr-isisd",
1836 .xpath
= "/frr-isisd:isis/instance",
1837 .cbs
.create
= isis_instance_create
,
1838 .cbs
.delete = isis_instance_delete
,
1839 .cbs
.cli_show
= cli_show_router_isis
,
1840 .priority
= NB_DFLT_PRIORITY
- 1,
1843 .xpath
= "/frr-isisd:isis/instance/is-type",
1844 .cbs
.modify
= isis_instance_is_type_modify
,
1845 .cbs
.cli_show
= cli_show_isis_is_type
,
1848 .xpath
= "/frr-isisd:isis/instance/area-address",
1849 .cbs
.create
= isis_instance_area_address_create
,
1850 .cbs
.delete = isis_instance_area_address_delete
,
1851 .cbs
.cli_show
= cli_show_isis_area_address
,
1854 .xpath
= "/frr-isisd:isis/instance/dynamic-hostname",
1855 .cbs
.modify
= isis_instance_dynamic_hostname_modify
,
1856 .cbs
.cli_show
= cli_show_isis_dynamic_hostname
,
1859 .xpath
= "/frr-isisd:isis/instance/attached",
1860 .cbs
.create
= isis_instance_attached_create
,
1861 .cbs
.delete = isis_instance_attached_delete
,
1862 .cbs
.cli_show
= cli_show_isis_attached
,
1865 .xpath
= "/frr-isisd:isis/instance/overload",
1866 .cbs
.create
= isis_instance_overload_create
,
1867 .cbs
.delete = isis_instance_overload_delete
,
1868 .cbs
.cli_show
= cli_show_isis_overload
,
1871 .xpath
= "/frr-isisd:isis/instance/metric-style",
1872 .cbs
.modify
= isis_instance_metric_style_modify
,
1873 .cbs
.cli_show
= cli_show_isis_metric_style
,
1876 .xpath
= "/frr-isisd:isis/instance/purge-originator",
1877 .cbs
.create
= isis_instance_purge_originator_create
,
1878 .cbs
.delete = isis_instance_purge_originator_delete
,
1881 .xpath
= "/frr-isisd:isis/instance/lsp/mtu",
1882 .cbs
.modify
= isis_instance_lsp_mtu_modify
,
1885 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval",
1886 .cbs
.cli_show
= cli_show_isis_lsp_ref_interval
,
1889 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval/level-1",
1890 .cbs
.modify
= isis_instance_lsp_refresh_interval_level_1_modify
,
1893 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval/level-2",
1894 .cbs
.modify
= isis_instance_lsp_refresh_interval_level_2_modify
,
1897 .xpath
= "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-1",
1898 .cbs
.modify
= isis_instance_lsp_maximum_lifetime_level_1_modify
,
1901 .xpath
= "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-2",
1902 .cbs
.modify
= isis_instance_lsp_maximum_lifetime_level_2_modify
,
1905 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval",
1906 .cbs
.cli_show
= cli_show_isis_lsp_gen_interval
,
1909 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval/level-1",
1910 .cbs
.modify
= isis_instance_lsp_generation_interval_level_1_modify
,
1913 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval/level-2",
1914 .cbs
.modify
= isis_instance_lsp_generation_interval_level_2_modify
,
1917 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay",
1918 .cbs
.create
= isis_instance_spf_ietf_backoff_delay_create
,
1919 .cbs
.delete = isis_instance_spf_ietf_backoff_delay_delete
,
1922 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay",
1923 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_init_delay_modify
,
1926 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay",
1927 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_short_delay_modify
,
1930 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay",
1931 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_long_delay_modify
,
1934 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down",
1935 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_hold_down_modify
,
1938 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn",
1939 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_time_to_learn_modify
,
1942 .xpath
= "/frr-isisd:isis/instance/spf/minimum-interval/level-1",
1943 .cbs
.modify
= isis_instance_spf_minimum_interval_level_1_modify
,
1946 .xpath
= "/frr-isisd:isis/instance/spf/minimum-interval/level-2",
1947 .cbs
.modify
= isis_instance_spf_minimum_interval_level_2_modify
,
1950 .xpath
= "/frr-isisd:isis/instance/area-password",
1951 .cbs
.create
= isis_instance_area_password_create
,
1952 .cbs
.delete = isis_instance_area_password_delete
,
1953 .cbs
.apply_finish
= area_password_apply_finish
,
1954 .cbs
.cli_show
= cli_show_isis_area_pwd
,
1957 .xpath
= "/frr-isisd:isis/instance/area-password/password",
1958 .cbs
.modify
= isis_instance_area_password_password_modify
,
1961 .xpath
= "/frr-isisd:isis/instance/area-password/password-type",
1962 .cbs
.modify
= isis_instance_area_password_password_type_modify
,
1965 .xpath
= "/frr-isisd:isis/instance/area-password/authenticate-snp",
1966 .cbs
.modify
= isis_instance_area_password_authenticate_snp_modify
,
1969 .xpath
= "/frr-isisd:isis/instance/domain-password",
1970 .cbs
.create
= isis_instance_domain_password_create
,
1971 .cbs
.delete = isis_instance_domain_password_delete
,
1972 .cbs
.apply_finish
= domain_password_apply_finish
,
1973 .cbs
.cli_show
= cli_show_isis_domain_pwd
,
1976 .xpath
= "/frr-isisd:isis/instance/domain-password/password",
1977 .cbs
.modify
= isis_instance_domain_password_password_modify
,
1980 .xpath
= "/frr-isisd:isis/instance/domain-password/password-type",
1981 .cbs
.modify
= isis_instance_domain_password_password_type_modify
,
1984 .xpath
= "/frr-isisd:isis/instance/domain-password/authenticate-snp",
1985 .cbs
.modify
= isis_instance_domain_password_authenticate_snp_modify
,
1988 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4",
1989 .cbs
.create
= isis_instance_default_information_originate_ipv4_create
,
1990 .cbs
.delete = isis_instance_default_information_originate_ipv4_delete
,
1993 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/always",
1994 .cbs
.create
= isis_instance_default_information_originate_ipv4_always_create
,
1995 .cbs
.delete = isis_instance_default_information_originate_ipv4_always_delete
,
1998 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map",
1999 .cbs
.modify
= isis_instance_default_information_originate_ipv4_route_map_modify
,
2000 .cbs
.delete = isis_instance_default_information_originate_ipv4_route_map_delete
,
2003 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/metric",
2004 .cbs
.modify
= isis_instance_default_information_originate_ipv4_metric_modify
,
2005 .cbs
.delete = isis_instance_default_information_originate_ipv4_metric_delete
,
2008 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6",
2009 .cbs
.create
= isis_instance_default_information_originate_ipv6_create
,
2010 .cbs
.delete = isis_instance_default_information_originate_ipv6_delete
,
2013 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/always",
2014 .cbs
.create
= isis_instance_default_information_originate_ipv6_always_create
,
2015 .cbs
.delete = isis_instance_default_information_originate_ipv6_always_delete
,
2018 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map",
2019 .cbs
.modify
= isis_instance_default_information_originate_ipv6_route_map_modify
,
2020 .cbs
.delete = isis_instance_default_information_originate_ipv6_route_map_delete
,
2023 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/metric",
2024 .cbs
.modify
= isis_instance_default_information_originate_ipv6_metric_modify
,
2025 .cbs
.delete = isis_instance_default_information_originate_ipv6_metric_delete
,
2028 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4",
2029 .cbs
.create
= isis_instance_redistribute_ipv4_create
,
2030 .cbs
.delete = isis_instance_redistribute_ipv4_delete
,
2033 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4/route-map",
2034 .cbs
.modify
= isis_instance_redistribute_ipv4_route_map_modify
,
2035 .cbs
.delete = isis_instance_redistribute_ipv4_route_map_delete
,
2038 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4/metric",
2039 .cbs
.modify
= isis_instance_redistribute_ipv4_metric_modify
,
2040 .cbs
.delete = isis_instance_redistribute_ipv4_metric_delete
,
2043 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6",
2044 .cbs
.create
= isis_instance_redistribute_ipv6_create
,
2045 .cbs
.delete = isis_instance_redistribute_ipv6_delete
,
2048 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6/route-map",
2049 .cbs
.modify
= isis_instance_redistribute_ipv6_route_map_modify
,
2050 .cbs
.delete = isis_instance_redistribute_ipv6_route_map_delete
,
2053 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6/metric",
2054 .cbs
.modify
= isis_instance_redistribute_ipv6_metric_modify
,
2055 .cbs
.delete = isis_instance_redistribute_ipv6_metric_delete
,
2058 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-multicast",
2059 .cbs
.create
= isis_instance_multi_topology_ipv4_multicast_create
,
2060 .cbs
.delete = isis_instance_multi_topology_ipv4_multicast_delete
,
2063 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload",
2064 .cbs
.create
= isis_instance_multi_topology_ipv4_multicast_overload_create
,
2065 .cbs
.delete = isis_instance_multi_topology_ipv4_multicast_overload_delete
,
2068 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-management",
2069 .cbs
.create
= isis_instance_multi_topology_ipv4_management_create
,
2070 .cbs
.delete = isis_instance_multi_topology_ipv4_management_delete
,
2073 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload",
2074 .cbs
.create
= isis_instance_multi_topology_ipv4_management_overload_create
,
2075 .cbs
.delete = isis_instance_multi_topology_ipv4_management_overload_delete
,
2078 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-unicast",
2079 .cbs
.create
= isis_instance_multi_topology_ipv6_unicast_create
,
2080 .cbs
.delete = isis_instance_multi_topology_ipv6_unicast_delete
,
2083 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload",
2084 .cbs
.create
= isis_instance_multi_topology_ipv6_unicast_overload_create
,
2085 .cbs
.delete = isis_instance_multi_topology_ipv6_unicast_overload_delete
,
2088 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-multicast",
2089 .cbs
.create
= isis_instance_multi_topology_ipv6_multicast_create
,
2090 .cbs
.delete = isis_instance_multi_topology_ipv6_multicast_delete
,
2093 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload",
2094 .cbs
.create
= isis_instance_multi_topology_ipv6_multicast_overload_create
,
2095 .cbs
.delete = isis_instance_multi_topology_ipv6_multicast_overload_delete
,
2098 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-management",
2099 .cbs
.create
= isis_instance_multi_topology_ipv6_management_create
,
2100 .cbs
.delete = isis_instance_multi_topology_ipv6_management_delete
,
2103 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload",
2104 .cbs
.create
= isis_instance_multi_topology_ipv6_management_overload_create
,
2105 .cbs
.delete = isis_instance_multi_topology_ipv6_management_overload_delete
,
2108 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc",
2109 .cbs
.create
= isis_instance_multi_topology_ipv6_dstsrc_create
,
2110 .cbs
.delete = isis_instance_multi_topology_ipv6_dstsrc_delete
,
2113 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload",
2114 .cbs
.create
= isis_instance_multi_topology_ipv6_dstsrc_overload_create
,
2115 .cbs
.delete = isis_instance_multi_topology_ipv6_dstsrc_overload_delete
,
2118 .xpath
= "/frr-isisd:isis/instance/log-adjacency-changes",
2119 .cbs
.create
= isis_instance_log_adjacency_changes_create
,
2120 .cbs
.delete = isis_instance_log_adjacency_changes_delete
,
2123 .xpath
= "/frr-isisd:isis/mpls-te",
2124 .cbs
.create
= isis_mpls_te_create
,
2125 .cbs
.delete = isis_mpls_te_delete
,
2128 .xpath
= "/frr-isisd:isis/mpls-te/router-address",
2129 .cbs
.modify
= isis_mpls_te_router_address_modify
,
2130 .cbs
.delete = isis_mpls_te_router_address_delete
,
2133 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis",
2134 .cbs
.create
= lib_interface_isis_create
,
2135 .cbs
.delete = lib_interface_isis_delete
,
2138 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/area-tag",
2139 .cbs
.modify
= lib_interface_isis_area_tag_modify
,
2142 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/circuit-type",
2143 .cbs
.modify
= lib_interface_isis_circuit_type_modify
,
2146 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing",
2147 .cbs
.create
= lib_interface_isis_ipv4_routing_create
,
2148 .cbs
.delete = lib_interface_isis_ipv4_routing_delete
,
2149 .cbs
.cli_show
= cli_show_ip_isis_ipv4
,
2152 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing",
2153 .cbs
.create
= lib_interface_isis_ipv6_routing_create
,
2154 .cbs
.delete = lib_interface_isis_ipv6_routing_delete
,
2155 .cbs
.cli_show
= cli_show_ip_isis_ipv6
,
2158 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1",
2159 .cbs
.modify
= lib_interface_isis_csnp_interval_level_1_modify
,
2162 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2",
2163 .cbs
.modify
= lib_interface_isis_csnp_interval_level_2_modify
,
2166 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1",
2167 .cbs
.modify
= lib_interface_isis_psnp_interval_level_1_modify
,
2170 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2",
2171 .cbs
.modify
= lib_interface_isis_psnp_interval_level_2_modify
,
2174 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/padding",
2175 .cbs
.modify
= lib_interface_isis_hello_padding_modify
,
2178 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1",
2179 .cbs
.modify
= lib_interface_isis_hello_interval_level_1_modify
,
2182 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2",
2183 .cbs
.modify
= lib_interface_isis_hello_interval_level_2_modify
,
2186 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1",
2187 .cbs
.modify
= lib_interface_isis_hello_multiplier_level_1_modify
,
2190 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2",
2191 .cbs
.modify
= lib_interface_isis_hello_multiplier_level_2_modify
,
2194 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/metric/level-1",
2195 .cbs
.modify
= lib_interface_isis_metric_level_1_modify
,
2198 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/metric/level-2",
2199 .cbs
.modify
= lib_interface_isis_metric_level_2_modify
,
2202 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/priority/level-1",
2203 .cbs
.modify
= lib_interface_isis_priority_level_1_modify
,
2206 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/priority/level-2",
2207 .cbs
.modify
= lib_interface_isis_priority_level_2_modify
,
2210 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/network-type",
2211 .cbs
.modify
= lib_interface_isis_network_type_modify
,
2212 .cbs
.delete = lib_interface_isis_network_type_delete
,
2215 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/passive",
2216 .cbs
.create
= lib_interface_isis_passive_create
,
2217 .cbs
.delete = lib_interface_isis_passive_delete
,
2220 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password",
2221 .cbs
.create
= lib_interface_isis_password_create
,
2222 .cbs
.delete = lib_interface_isis_password_delete
,
2225 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password/password",
2226 .cbs
.modify
= lib_interface_isis_password_password_modify
,
2229 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password/password-type",
2230 .cbs
.modify
= lib_interface_isis_password_password_type_modify
,
2233 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake",
2234 .cbs
.create
= lib_interface_isis_disable_three_way_handshake_create
,
2235 .cbs
.delete = lib_interface_isis_disable_three_way_handshake_delete
,
2238 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast",
2239 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_unicast_modify
,
2242 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast",
2243 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_multicast_modify
,
2246 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management",
2247 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_management_modify
,
2250 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast",
2251 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_unicast_modify
,
2254 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast",
2255 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_multicast_modify
,
2258 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management",
2259 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_management_modify
,
2262 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc",
2263 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_dstsrc_modify
,