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 struct isis_area
*area
;
348 if (event
!= NB_EV_APPLY
)
351 area
= yang_dnode_get_entry(dnode
, true);
352 area
->purge_originator
= true;
357 static int isis_instance_purge_originator_delete(enum nb_event event
,
358 const struct lyd_node
*dnode
)
360 struct isis_area
*area
;
362 if (event
!= NB_EV_APPLY
)
365 area
= yang_dnode_get_entry(dnode
, true);
366 area
->purge_originator
= false;
372 * XPath: /frr-isisd:isis/instance/lsp/mtu
374 static int isis_instance_lsp_mtu_modify(enum nb_event event
,
375 const struct lyd_node
*dnode
,
376 union nb_resource
*resource
)
378 struct listnode
*node
;
379 struct isis_circuit
*circuit
;
380 uint16_t lsp_mtu
= yang_dnode_get_uint16(dnode
, NULL
);
381 struct isis_area
*area
;
385 area
= yang_dnode_get_entry(dnode
, false);
388 for (ALL_LIST_ELEMENTS_RO(area
->circuit_list
, node
, circuit
)) {
389 if (circuit
->state
!= C_STATE_INIT
390 && circuit
->state
!= C_STATE_UP
)
392 if (lsp_mtu
> isis_circuit_pdu_size(circuit
)) {
394 EC_LIB_NB_CB_CONFIG_VALIDATE
,
395 "ISIS area contains circuit %s, which has a maximum PDU size of %zu",
396 circuit
->interface
->name
,
397 isis_circuit_pdu_size(circuit
));
398 return NB_ERR_VALIDATION
;
406 area
= yang_dnode_get_entry(dnode
, true);
407 isis_area_lsp_mtu_set(area
, lsp_mtu
);
415 * XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-1
418 isis_instance_lsp_refresh_interval_level_1_modify(enum nb_event event
,
419 const struct lyd_node
*dnode
,
420 union nb_resource
*resource
)
422 struct isis_area
*area
;
425 if (event
!= NB_EV_APPLY
)
428 refr_int
= yang_dnode_get_uint16(dnode
, NULL
);
429 area
= yang_dnode_get_entry(dnode
, true);
430 isis_area_lsp_refresh_set(area
, IS_LEVEL_1
, refr_int
);
436 * XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-2
439 isis_instance_lsp_refresh_interval_level_2_modify(enum nb_event event
,
440 const struct lyd_node
*dnode
,
441 union nb_resource
*resource
)
443 struct isis_area
*area
;
446 if (event
!= NB_EV_APPLY
)
449 refr_int
= yang_dnode_get_uint16(dnode
, NULL
);
450 area
= yang_dnode_get_entry(dnode
, true);
451 isis_area_lsp_refresh_set(area
, IS_LEVEL_2
, refr_int
);
457 * XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-1
460 isis_instance_lsp_maximum_lifetime_level_1_modify(enum nb_event event
,
461 const struct lyd_node
*dnode
,
462 union nb_resource
*resource
)
464 struct isis_area
*area
;
467 if (event
!= NB_EV_APPLY
)
470 max_lt
= yang_dnode_get_uint16(dnode
, NULL
);
471 area
= yang_dnode_get_entry(dnode
, true);
472 isis_area_max_lsp_lifetime_set(area
, IS_LEVEL_1
, max_lt
);
478 * XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-2
481 isis_instance_lsp_maximum_lifetime_level_2_modify(enum nb_event event
,
482 const struct lyd_node
*dnode
,
483 union nb_resource
*resource
)
485 struct isis_area
*area
;
488 if (event
!= NB_EV_APPLY
)
491 max_lt
= yang_dnode_get_uint16(dnode
, NULL
);
492 area
= yang_dnode_get_entry(dnode
, true);
493 isis_area_max_lsp_lifetime_set(area
, IS_LEVEL_2
, max_lt
);
499 * XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-1
501 static int isis_instance_lsp_generation_interval_level_1_modify(
502 enum nb_event event
, const struct lyd_node
*dnode
,
503 union nb_resource
*resource
)
505 struct isis_area
*area
;
508 if (event
!= NB_EV_APPLY
)
511 gen_int
= yang_dnode_get_uint16(dnode
, NULL
);
512 area
= yang_dnode_get_entry(dnode
, true);
513 area
->lsp_gen_interval
[0] = gen_int
;
519 * XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-2
521 static int isis_instance_lsp_generation_interval_level_2_modify(
522 enum nb_event event
, const struct lyd_node
*dnode
,
523 union nb_resource
*resource
)
525 struct isis_area
*area
;
528 if (event
!= NB_EV_APPLY
)
531 gen_int
= yang_dnode_get_uint16(dnode
, NULL
);
532 area
= yang_dnode_get_entry(dnode
, true);
533 area
->lsp_gen_interval
[1] = gen_int
;
539 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay
541 static void ietf_backoff_delay_apply_finish(const struct lyd_node
*dnode
)
543 long init_delay
= yang_dnode_get_uint16(dnode
, "./init-delay");
544 long short_delay
= yang_dnode_get_uint16(dnode
, "./short-delay");
545 long long_delay
= yang_dnode_get_uint16(dnode
, "./long-delay");
546 long holddown
= yang_dnode_get_uint16(dnode
, "./hold-down");
547 long timetolearn
= yang_dnode_get_uint16(dnode
, "./time-to-learn");
548 struct isis_area
*area
= yang_dnode_get_entry(dnode
, true);
549 size_t bufsiz
= strlen(area
->area_tag
) + sizeof("IS-IS Lx");
550 char *buf
= XCALLOC(MTYPE_TMP
, bufsiz
);
552 snprintf(buf
, bufsiz
, "IS-IS %s L1", area
->area_tag
);
553 spf_backoff_free(area
->spf_delay_ietf
[0]);
554 area
->spf_delay_ietf
[0] =
555 spf_backoff_new(master
, buf
, init_delay
, short_delay
,
556 long_delay
, holddown
, timetolearn
);
558 snprintf(buf
, bufsiz
, "IS-IS %s L2", area
->area_tag
);
559 spf_backoff_free(area
->spf_delay_ietf
[1]);
560 area
->spf_delay_ietf
[1] =
561 spf_backoff_new(master
, buf
, init_delay
, short_delay
,
562 long_delay
, holddown
, timetolearn
);
564 XFREE(MTYPE_TMP
, buf
);
568 isis_instance_spf_ietf_backoff_delay_create(enum nb_event event
,
569 const struct lyd_node
*dnode
,
570 union nb_resource
*resource
)
572 /* All the work is done in the apply_finish */
577 isis_instance_spf_ietf_backoff_delay_delete(enum nb_event event
,
578 const struct lyd_node
*dnode
)
580 struct isis_area
*area
;
582 if (event
!= NB_EV_APPLY
)
585 area
= yang_dnode_get_entry(dnode
, true);
586 spf_backoff_free(area
->spf_delay_ietf
[0]);
587 spf_backoff_free(area
->spf_delay_ietf
[1]);
588 area
->spf_delay_ietf
[0] = NULL
;
589 area
->spf_delay_ietf
[1] = NULL
;
595 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay
597 static int isis_instance_spf_ietf_backoff_delay_init_delay_modify(
598 enum nb_event event
, const struct lyd_node
*dnode
,
599 union nb_resource
*resource
)
601 /* All the work is done in the apply_finish */
606 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay
608 static int isis_instance_spf_ietf_backoff_delay_short_delay_modify(
609 enum nb_event event
, const struct lyd_node
*dnode
,
610 union nb_resource
*resource
)
612 /* All the work is done in the apply_finish */
617 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay
619 static int isis_instance_spf_ietf_backoff_delay_long_delay_modify(
620 enum nb_event event
, const struct lyd_node
*dnode
,
621 union nb_resource
*resource
)
623 /* All the work is done in the apply_finish */
628 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down
630 static int isis_instance_spf_ietf_backoff_delay_hold_down_modify(
631 enum nb_event event
, const struct lyd_node
*dnode
,
632 union nb_resource
*resource
)
634 /* All the work is done in the apply_finish */
639 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn
641 static int isis_instance_spf_ietf_backoff_delay_time_to_learn_modify(
642 enum nb_event event
, const struct lyd_node
*dnode
,
643 union nb_resource
*resource
)
645 /* All the work is done in the apply_finish */
650 * XPath: /frr-isisd:isis/instance/spf/minimum-interval/level-1
653 isis_instance_spf_minimum_interval_level_1_modify(enum nb_event event
,
654 const struct lyd_node
*dnode
,
655 union nb_resource
*resource
)
657 struct isis_area
*area
;
659 if (event
!= NB_EV_APPLY
)
662 area
= yang_dnode_get_entry(dnode
, true);
663 area
->min_spf_interval
[0] = yang_dnode_get_uint16(dnode
, NULL
);
669 * XPath: /frr-isisd:isis/instance/spf/minimum-interval/level-2
672 isis_instance_spf_minimum_interval_level_2_modify(enum nb_event event
,
673 const struct lyd_node
*dnode
,
674 union nb_resource
*resource
)
676 struct isis_area
*area
;
678 if (event
!= NB_EV_APPLY
)
681 area
= yang_dnode_get_entry(dnode
, true);
682 area
->min_spf_interval
[1] = yang_dnode_get_uint16(dnode
, NULL
);
688 * XPath: /frr-isisd:isis/instance/area-password
690 static void area_password_apply_finish(const struct lyd_node
*dnode
)
692 const char *password
= yang_dnode_get_string(dnode
, "./password");
693 struct isis_area
*area
= yang_dnode_get_entry(dnode
, true);
694 int pass_type
= yang_dnode_get_enum(dnode
, "./password-type");
695 uint8_t snp_auth
= yang_dnode_get_enum(dnode
, "./authenticate-snp");
698 case ISIS_PASSWD_TYPE_CLEARTXT
:
699 isis_area_passwd_cleartext_set(area
, IS_LEVEL_1
, password
,
702 case ISIS_PASSWD_TYPE_HMAC_MD5
:
703 isis_area_passwd_hmac_md5_set(area
, IS_LEVEL_1
, password
,
709 static int isis_instance_area_password_create(enum nb_event event
,
710 const struct lyd_node
*dnode
,
711 union nb_resource
*resource
)
713 /* actual setting is done in apply_finish */
717 static int isis_instance_area_password_delete(enum nb_event event
,
718 const struct lyd_node
*dnode
)
720 struct isis_area
*area
;
722 if (event
!= NB_EV_APPLY
)
725 area
= yang_dnode_get_entry(dnode
, true);
726 isis_area_passwd_unset(area
, IS_LEVEL_1
);
732 * XPath: /frr-isisd:isis/instance/area-password/password
735 isis_instance_area_password_password_modify(enum nb_event event
,
736 const struct lyd_node
*dnode
,
737 union nb_resource
*resource
)
739 /* actual setting is done in apply_finish */
744 * XPath: /frr-isisd:isis/instance/area-password/password-type
747 isis_instance_area_password_password_type_modify(enum nb_event event
,
748 const struct lyd_node
*dnode
,
749 union nb_resource
*resource
)
751 /* actual setting is done in apply_finish */
756 * XPath: /frr-isisd:isis/instance/area-password/authenticate-snp
758 static int isis_instance_area_password_authenticate_snp_modify(
759 enum nb_event event
, const struct lyd_node
*dnode
,
760 union nb_resource
*resource
)
762 /* actual setting is done in apply_finish */
767 * XPath: /frr-isisd:isis/instance/domain-password
769 static void domain_password_apply_finish(const struct lyd_node
*dnode
)
771 const char *password
= yang_dnode_get_string(dnode
, "./password");
772 struct isis_area
*area
= yang_dnode_get_entry(dnode
, true);
773 int pass_type
= yang_dnode_get_enum(dnode
, "./password-type");
774 uint8_t snp_auth
= yang_dnode_get_enum(dnode
, "./authenticate-snp");
777 case ISIS_PASSWD_TYPE_CLEARTXT
:
778 isis_area_passwd_cleartext_set(area
, IS_LEVEL_2
, password
,
781 case ISIS_PASSWD_TYPE_HMAC_MD5
:
782 isis_area_passwd_hmac_md5_set(area
, IS_LEVEL_2
, password
,
788 static int isis_instance_domain_password_create(enum nb_event event
,
789 const struct lyd_node
*dnode
,
790 union nb_resource
*resource
)
792 /* actual setting is done in apply_finish */
796 static int isis_instance_domain_password_delete(enum nb_event event
,
797 const struct lyd_node
*dnode
)
799 struct isis_area
*area
;
801 if (event
!= NB_EV_APPLY
)
804 area
= yang_dnode_get_entry(dnode
, true);
805 isis_area_passwd_unset(area
, IS_LEVEL_2
);
811 * XPath: /frr-isisd:isis/instance/domain-password/password
814 isis_instance_domain_password_password_modify(enum nb_event event
,
815 const struct lyd_node
*dnode
,
816 union nb_resource
*resource
)
818 /* actual setting is done in apply_finish */
823 * XPath: /frr-isisd:isis/instance/domain-password/password-type
826 isis_instance_domain_password_password_type_modify(enum nb_event event
,
827 const struct lyd_node
*dnode
,
828 union nb_resource
*resource
)
830 /* actual setting is done in apply_finish */
835 * XPath: /frr-isisd:isis/instance/domain-password/authenticate-snp
837 static int isis_instance_domain_password_authenticate_snp_modify(
838 enum nb_event event
, const struct lyd_node
*dnode
,
839 union nb_resource
*resource
)
841 /* actual setting is done in apply_finish */
846 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4
848 static int isis_instance_default_information_originate_ipv4_create(
849 enum nb_event event
, const struct lyd_node
*dnode
,
850 union nb_resource
*resource
)
852 /* TODO: implement me. */
856 static int isis_instance_default_information_originate_ipv4_delete(
857 enum nb_event event
, const struct lyd_node
*dnode
)
859 /* TODO: implement me. */
864 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/always
866 static int isis_instance_default_information_originate_ipv4_always_create(
867 enum nb_event event
, const struct lyd_node
*dnode
,
868 union nb_resource
*resource
)
870 /* TODO: implement me. */
874 static int isis_instance_default_information_originate_ipv4_always_delete(
875 enum nb_event event
, const struct lyd_node
*dnode
)
877 /* TODO: implement me. */
882 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/route-map
884 static int isis_instance_default_information_originate_ipv4_route_map_modify(
885 enum nb_event event
, const struct lyd_node
*dnode
,
886 union nb_resource
*resource
)
888 /* TODO: implement me. */
892 static int isis_instance_default_information_originate_ipv4_route_map_delete(
893 enum nb_event event
, const struct lyd_node
*dnode
)
895 /* TODO: implement me. */
900 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/metric
902 static int isis_instance_default_information_originate_ipv4_metric_modify(
903 enum nb_event event
, const struct lyd_node
*dnode
,
904 union nb_resource
*resource
)
906 /* TODO: implement me. */
910 static int isis_instance_default_information_originate_ipv4_metric_delete(
911 enum nb_event event
, const struct lyd_node
*dnode
)
913 /* TODO: implement me. */
918 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6
920 static int isis_instance_default_information_originate_ipv6_create(
921 enum nb_event event
, const struct lyd_node
*dnode
,
922 union nb_resource
*resource
)
924 /* TODO: implement me. */
928 static int isis_instance_default_information_originate_ipv6_delete(
929 enum nb_event event
, const struct lyd_node
*dnode
)
931 /* TODO: implement me. */
936 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/always
938 static int isis_instance_default_information_originate_ipv6_always_create(
939 enum nb_event event
, const struct lyd_node
*dnode
,
940 union nb_resource
*resource
)
942 /* TODO: implement me. */
946 static int isis_instance_default_information_originate_ipv6_always_delete(
947 enum nb_event event
, const struct lyd_node
*dnode
)
949 /* TODO: implement me. */
954 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/route-map
956 static int isis_instance_default_information_originate_ipv6_route_map_modify(
957 enum nb_event event
, const struct lyd_node
*dnode
,
958 union nb_resource
*resource
)
960 /* TODO: implement me. */
964 static int isis_instance_default_information_originate_ipv6_route_map_delete(
965 enum nb_event event
, const struct lyd_node
*dnode
)
967 /* TODO: implement me. */
972 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/metric
974 static int isis_instance_default_information_originate_ipv6_metric_modify(
975 enum nb_event event
, const struct lyd_node
*dnode
,
976 union nb_resource
*resource
)
978 /* TODO: implement me. */
982 static int isis_instance_default_information_originate_ipv6_metric_delete(
983 enum nb_event event
, const struct lyd_node
*dnode
)
985 /* TODO: implement me. */
990 * XPath: /frr-isisd:isis/instance/redistribute/ipv4
992 static int isis_instance_redistribute_ipv4_create(enum nb_event event
,
993 const struct lyd_node
*dnode
,
994 union nb_resource
*resource
)
996 /* TODO: implement me. */
1000 static int isis_instance_redistribute_ipv4_delete(enum nb_event event
,
1001 const struct lyd_node
*dnode
)
1003 /* TODO: implement me. */
1008 * XPath: /frr-isisd:isis/instance/redistribute/ipv4/route-map
1011 isis_instance_redistribute_ipv4_route_map_modify(enum nb_event event
,
1012 const struct lyd_node
*dnode
,
1013 union nb_resource
*resource
)
1015 /* TODO: implement me. */
1020 isis_instance_redistribute_ipv4_route_map_delete(enum nb_event event
,
1021 const struct lyd_node
*dnode
)
1023 /* TODO: implement me. */
1028 * XPath: /frr-isisd:isis/instance/redistribute/ipv4/metric
1031 isis_instance_redistribute_ipv4_metric_modify(enum nb_event event
,
1032 const struct lyd_node
*dnode
,
1033 union nb_resource
*resource
)
1035 /* TODO: implement me. */
1040 isis_instance_redistribute_ipv4_metric_delete(enum nb_event event
,
1041 const struct lyd_node
*dnode
)
1043 /* TODO: implement me. */
1048 * XPath: /frr-isisd:isis/instance/redistribute/ipv6
1050 static int isis_instance_redistribute_ipv6_create(enum nb_event event
,
1051 const struct lyd_node
*dnode
,
1052 union nb_resource
*resource
)
1054 /* TODO: implement me. */
1058 static int isis_instance_redistribute_ipv6_delete(enum nb_event event
,
1059 const struct lyd_node
*dnode
)
1061 /* TODO: implement me. */
1066 * XPath: /frr-isisd:isis/instance/redistribute/ipv6/route-map
1069 isis_instance_redistribute_ipv6_route_map_modify(enum nb_event event
,
1070 const struct lyd_node
*dnode
,
1071 union nb_resource
*resource
)
1073 /* TODO: implement me. */
1078 isis_instance_redistribute_ipv6_route_map_delete(enum nb_event event
,
1079 const struct lyd_node
*dnode
)
1081 /* TODO: implement me. */
1086 * XPath: /frr-isisd:isis/instance/redistribute/ipv6/metric
1089 isis_instance_redistribute_ipv6_metric_modify(enum nb_event event
,
1090 const struct lyd_node
*dnode
,
1091 union nb_resource
*resource
)
1093 /* TODO: implement me. */
1098 isis_instance_redistribute_ipv6_metric_delete(enum nb_event event
,
1099 const struct lyd_node
*dnode
)
1101 /* TODO: implement me. */
1106 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast
1109 isis_instance_multi_topology_ipv4_multicast_create(enum nb_event event
,
1110 const struct lyd_node
*dnode
,
1111 union nb_resource
*resource
)
1113 /* TODO: implement me. */
1118 isis_instance_multi_topology_ipv4_multicast_delete(enum nb_event event
,
1119 const struct lyd_node
*dnode
)
1121 /* TODO: implement me. */
1126 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload
1128 static int isis_instance_multi_topology_ipv4_multicast_overload_create(
1129 enum nb_event event
, const struct lyd_node
*dnode
,
1130 union nb_resource
*resource
)
1132 /* TODO: implement me. */
1136 static int isis_instance_multi_topology_ipv4_multicast_overload_delete(
1137 enum nb_event event
, const struct lyd_node
*dnode
)
1139 /* TODO: implement me. */
1144 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management
1146 static int isis_instance_multi_topology_ipv4_management_create(
1147 enum nb_event event
, const struct lyd_node
*dnode
,
1148 union nb_resource
*resource
)
1150 /* TODO: implement me. */
1154 static int isis_instance_multi_topology_ipv4_management_delete(
1155 enum nb_event event
, const struct lyd_node
*dnode
)
1157 /* TODO: implement me. */
1162 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management/overload
1164 static int isis_instance_multi_topology_ipv4_management_overload_create(
1165 enum nb_event event
, const struct lyd_node
*dnode
,
1166 union nb_resource
*resource
)
1168 /* TODO: implement me. */
1172 static int isis_instance_multi_topology_ipv4_management_overload_delete(
1173 enum nb_event event
, const struct lyd_node
*dnode
)
1175 /* TODO: implement me. */
1180 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast
1183 isis_instance_multi_topology_ipv6_unicast_create(enum nb_event event
,
1184 const struct lyd_node
*dnode
,
1185 union nb_resource
*resource
)
1187 /* TODO: implement me. */
1192 isis_instance_multi_topology_ipv6_unicast_delete(enum nb_event event
,
1193 const struct lyd_node
*dnode
)
1195 /* TODO: implement me. */
1200 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload
1202 static int isis_instance_multi_topology_ipv6_unicast_overload_create(
1203 enum nb_event event
, const struct lyd_node
*dnode
,
1204 union nb_resource
*resource
)
1206 /* TODO: implement me. */
1210 static int isis_instance_multi_topology_ipv6_unicast_overload_delete(
1211 enum nb_event event
, const struct lyd_node
*dnode
)
1213 /* TODO: implement me. */
1218 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast
1221 isis_instance_multi_topology_ipv6_multicast_create(enum nb_event event
,
1222 const struct lyd_node
*dnode
,
1223 union nb_resource
*resource
)
1225 /* TODO: implement me. */
1230 isis_instance_multi_topology_ipv6_multicast_delete(enum nb_event event
,
1231 const struct lyd_node
*dnode
)
1233 /* TODO: implement me. */
1238 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload
1240 static int isis_instance_multi_topology_ipv6_multicast_overload_create(
1241 enum nb_event event
, const struct lyd_node
*dnode
,
1242 union nb_resource
*resource
)
1244 /* TODO: implement me. */
1248 static int isis_instance_multi_topology_ipv6_multicast_overload_delete(
1249 enum nb_event event
, const struct lyd_node
*dnode
)
1251 /* TODO: implement me. */
1256 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management
1258 static int isis_instance_multi_topology_ipv6_management_create(
1259 enum nb_event event
, const struct lyd_node
*dnode
,
1260 union nb_resource
*resource
)
1262 /* TODO: implement me. */
1266 static int isis_instance_multi_topology_ipv6_management_delete(
1267 enum nb_event event
, const struct lyd_node
*dnode
)
1269 /* TODO: implement me. */
1274 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management/overload
1276 static int isis_instance_multi_topology_ipv6_management_overload_create(
1277 enum nb_event event
, const struct lyd_node
*dnode
,
1278 union nb_resource
*resource
)
1280 /* TODO: implement me. */
1284 static int isis_instance_multi_topology_ipv6_management_overload_delete(
1285 enum nb_event event
, const struct lyd_node
*dnode
)
1287 /* TODO: implement me. */
1292 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc
1295 isis_instance_multi_topology_ipv6_dstsrc_create(enum nb_event event
,
1296 const struct lyd_node
*dnode
,
1297 union nb_resource
*resource
)
1299 /* TODO: implement me. */
1304 isis_instance_multi_topology_ipv6_dstsrc_delete(enum nb_event event
,
1305 const struct lyd_node
*dnode
)
1307 /* TODO: implement me. */
1312 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload
1314 static int isis_instance_multi_topology_ipv6_dstsrc_overload_create(
1315 enum nb_event event
, const struct lyd_node
*dnode
,
1316 union nb_resource
*resource
)
1318 /* TODO: implement me. */
1322 static int isis_instance_multi_topology_ipv6_dstsrc_overload_delete(
1323 enum nb_event event
, const struct lyd_node
*dnode
)
1325 /* TODO: implement me. */
1330 * XPath: /frr-isisd:isis/instance/log-adjacency-changes
1333 isis_instance_log_adjacency_changes_create(enum nb_event event
,
1334 const struct lyd_node
*dnode
,
1335 union nb_resource
*resource
)
1337 /* TODO: implement me. */
1342 isis_instance_log_adjacency_changes_delete(enum nb_event event
,
1343 const struct lyd_node
*dnode
)
1345 /* TODO: implement me. */
1350 * XPath: /frr-isisd:isis/mpls-te
1352 static int isis_mpls_te_create(enum nb_event event
,
1353 const struct lyd_node
*dnode
,
1354 union nb_resource
*resource
)
1356 struct listnode
*node
;
1357 struct isis_circuit
*circuit
;
1359 if (event
!= NB_EV_APPLY
)
1362 isisMplsTE
.status
= enable
;
1365 * Following code is intended to handle two cases;
1367 * 1) MPLS-TE was disabled at startup time, but now become enabled.
1368 * In this case, we must enable MPLS-TE Circuit regarding interface
1370 * 2) MPLS-TE was once enabled then disabled, and now enabled again.
1372 for (ALL_LIST_ELEMENTS_RO(isisMplsTE
.cir_list
, node
, circuit
)) {
1373 if (circuit
->mtc
== NULL
|| IS_FLOOD_AS(circuit
->mtc
->type
))
1376 if ((circuit
->mtc
->status
== disable
)
1377 && HAS_LINK_PARAMS(circuit
->interface
))
1378 circuit
->mtc
->status
= enable
;
1382 /* Reoriginate STD_TE & GMPLS circuits */
1384 lsp_regenerate_schedule(circuit
->area
, circuit
->is_type
,
1391 static int isis_mpls_te_delete(enum nb_event event
,
1392 const struct lyd_node
*dnode
)
1394 struct listnode
*node
;
1395 struct isis_circuit
*circuit
;
1397 if (event
!= NB_EV_APPLY
)
1400 isisMplsTE
.status
= disable
;
1402 /* Flush LSP if circuit engage */
1403 for (ALL_LIST_ELEMENTS_RO(isisMplsTE
.cir_list
, node
, circuit
)) {
1404 if (circuit
->mtc
== NULL
|| (circuit
->mtc
->status
== disable
))
1407 /* disable MPLS_TE Circuit */
1408 circuit
->mtc
->status
= disable
;
1410 /* Re-originate circuit without STD_TE & GMPLS parameters */
1412 lsp_regenerate_schedule(circuit
->area
, circuit
->is_type
,
1420 * XPath: /frr-isisd:isis/mpls-te/router-address
1422 static int isis_mpls_te_router_address_modify(enum nb_event event
,
1423 const struct lyd_node
*dnode
,
1424 union nb_resource
*resource
)
1426 struct in_addr value
;
1427 struct listnode
*node
;
1428 struct isis_area
*area
;
1430 if (event
!= NB_EV_APPLY
)
1433 yang_dnode_get_ipv4(&value
, dnode
, NULL
);
1434 isisMplsTE
.router_id
.s_addr
= value
.s_addr
;
1435 /* only proceed if MPLS-TE is enabled */
1436 if (isisMplsTE
.status
== disable
)
1439 /* Update main Router ID in isis global structure */
1440 isis
->router_id
= value
.s_addr
;
1441 /* And re-schedule LSP update */
1442 for (ALL_LIST_ELEMENTS_RO(isis
->area_list
, node
, area
))
1443 if (listcount(area
->area_addrs
) > 0)
1444 lsp_regenerate_schedule(area
, area
->is_type
, 0);
1449 static int isis_mpls_te_router_address_delete(enum nb_event event
,
1450 const struct lyd_node
*dnode
)
1452 struct listnode
*node
;
1453 struct isis_area
*area
;
1455 if (event
!= NB_EV_APPLY
)
1458 isisMplsTE
.router_id
.s_addr
= INADDR_ANY
;
1459 /* only proceed if MPLS-TE is enabled */
1460 if (isisMplsTE
.status
== disable
)
1463 /* Update main Router ID in isis global structure */
1464 isis
->router_id
= 0;
1465 /* And re-schedule LSP update */
1466 for (ALL_LIST_ELEMENTS_RO(isis
->area_list
, node
, area
))
1467 if (listcount(area
->area_addrs
) > 0)
1468 lsp_regenerate_schedule(area
, area
->is_type
, 0);
1474 * XPath: /frr-interface:lib/interface/frr-isisd:isis
1476 static int lib_interface_isis_create(enum nb_event event
,
1477 const struct lyd_node
*dnode
,
1478 union nb_resource
*resource
)
1480 struct isis_area
*area
;
1481 struct interface
*ifp
;
1482 struct isis_circuit
*circuit
;
1483 const char *area_tag
= yang_dnode_get_string(dnode
, "./area-tag");
1485 if (event
!= NB_EV_APPLY
)
1488 area
= isis_area_lookup(area_tag
);
1489 /* The area should have already be created. We are
1490 * setting the priority of the global isis area creation
1491 * slightly lower, so it should be executed first, but I
1492 * cannot rely on that so here I have to check.
1496 EC_LIB_NB_CB_CONFIG_APPLY
,
1497 "%s: attempt to create circuit for area %s before the area has been created",
1498 __func__
, area_tag
);
1502 ifp
= yang_dnode_get_entry(dnode
, true);
1503 circuit
= isis_circuit_create(area
, ifp
);
1504 assert(circuit
->state
== C_STATE_CONF
|| circuit
->state
== C_STATE_UP
);
1505 yang_dnode_set_entry(dnode
, circuit
);
1510 static int lib_interface_isis_delete(enum nb_event event
,
1511 const struct lyd_node
*dnode
)
1513 struct isis_circuit
*circuit
;
1515 if (event
!= NB_EV_APPLY
)
1518 circuit
= yang_dnode_get_entry(dnode
, true);
1520 return NB_ERR_INCONSISTENCY
;
1521 /* delete circuit through csm changes */
1522 switch (circuit
->state
) {
1524 isis_csm_state_change(IF_DOWN_FROM_Z
, circuit
,
1525 circuit
->interface
);
1526 isis_csm_state_change(ISIS_DISABLE
, circuit
, circuit
->area
);
1529 isis_csm_state_change(ISIS_DISABLE
, circuit
, circuit
->area
);
1532 isis_csm_state_change(IF_DOWN_FROM_Z
, circuit
,
1533 circuit
->interface
);
1541 * XPath: /frr-interface:lib/interface/frr-isisd:isis/area-tag
1543 static int lib_interface_isis_area_tag_modify(enum nb_event event
,
1544 const struct lyd_node
*dnode
,
1545 union nb_resource
*resource
)
1547 struct isis_circuit
*circuit
;
1548 struct interface
*ifp
;
1550 const char *area_tag
, *ifname
, *vrfname
;
1552 if (event
== NB_EV_VALIDATE
) {
1553 /* libyang doesn't like relative paths across module boundaries
1555 ifname
= yang_dnode_get_string(dnode
->parent
->parent
, "./name");
1556 vrfname
= yang_dnode_get_string(dnode
->parent
->parent
, "./vrf");
1557 vrf
= vrf_lookup_by_name(vrfname
);
1559 ifp
= if_lookup_by_name(ifname
, vrf
->vrf_id
);
1562 circuit
= circuit_lookup_by_ifp(ifp
, isis
->init_circ_list
);
1563 area_tag
= yang_dnode_get_string(dnode
, NULL
);
1564 if (circuit
&& circuit
->area
&& circuit
->area
->area_tag
1565 && strcmp(circuit
->area
->area_tag
, area_tag
)) {
1566 flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE
,
1567 "ISIS circuit is already defined on %s",
1568 circuit
->area
->area_tag
);
1569 return NB_ERR_VALIDATION
;
1577 * XPath: /frr-interface:lib/interface/frr-isisd:isis/circuit-type
1579 static int lib_interface_isis_circuit_type_modify(enum nb_event event
,
1580 const struct lyd_node
*dnode
,
1581 union nb_resource
*resource
)
1583 int circ_type
= yang_dnode_get_enum(dnode
, NULL
);
1584 struct isis_circuit
*circuit
;
1585 struct interface
*ifp
;
1587 const char *ifname
, *vrfname
;
1590 case NB_EV_VALIDATE
:
1591 /* libyang doesn't like relative paths across module boundaries
1593 ifname
= yang_dnode_get_string(dnode
->parent
->parent
, "./name");
1594 vrfname
= yang_dnode_get_string(dnode
->parent
->parent
, "./vrf");
1595 vrf
= vrf_lookup_by_name(vrfname
);
1597 ifp
= if_lookup_by_name(ifname
, vrf
->vrf_id
);
1600 circuit
= circuit_lookup_by_ifp(ifp
, isis
->init_circ_list
);
1601 if (circuit
&& circuit
->state
== C_STATE_UP
1602 && circuit
->area
->is_type
!= IS_LEVEL_1_AND_2
1603 && circuit
->area
->is_type
!= circ_type
) {
1604 flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE
,
1605 "Invalid circuit level for area %s",
1606 circuit
->area
->area_tag
);
1607 return NB_ERR_VALIDATION
;
1614 circuit
= yang_dnode_get_entry(dnode
, true);
1615 isis_circuit_is_type_set(circuit
, circ_type
);
1623 * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv4-routing
1625 static int lib_interface_isis_ipv4_routing_create(enum nb_event event
,
1626 const struct lyd_node
*dnode
,
1627 union nb_resource
*resource
)
1630 struct isis_circuit
*circuit
;
1632 if (event
!= NB_EV_APPLY
)
1635 circuit
= yang_dnode_get_entry(dnode
, true);
1636 ipv6
= yang_dnode_exists(dnode
, "../ipv6-routing");
1637 isis_circuit_af_set(circuit
, true, ipv6
);
1642 static int lib_interface_isis_ipv4_routing_delete(enum nb_event event
,
1643 const struct lyd_node
*dnode
)
1646 struct isis_circuit
*circuit
;
1648 if (event
!= NB_EV_APPLY
)
1651 circuit
= yang_dnode_get_entry(dnode
, true);
1652 if (circuit
&& circuit
->area
) {
1653 ipv6
= yang_dnode_exists(dnode
, "../ipv6-routing");
1654 isis_circuit_af_set(circuit
, false, ipv6
);
1661 * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv6-routing
1663 static int lib_interface_isis_ipv6_routing_create(enum nb_event event
,
1664 const struct lyd_node
*dnode
,
1665 union nb_resource
*resource
)
1668 struct isis_circuit
*circuit
;
1670 if (event
!= NB_EV_APPLY
)
1673 circuit
= yang_dnode_get_entry(dnode
, true);
1674 ipv4
= yang_dnode_exists(dnode
, "../ipv6-routing");
1675 isis_circuit_af_set(circuit
, ipv4
, true);
1680 static int lib_interface_isis_ipv6_routing_delete(enum nb_event event
,
1681 const struct lyd_node
*dnode
)
1684 struct isis_circuit
*circuit
;
1686 if (event
!= NB_EV_APPLY
)
1689 circuit
= yang_dnode_get_entry(dnode
, true);
1690 if (circuit
->area
) {
1691 ipv4
= yang_dnode_exists(dnode
, "../ipv4-routing");
1692 isis_circuit_af_set(circuit
, ipv4
, false);
1699 * XPath: /frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1
1702 lib_interface_isis_csnp_interval_level_1_modify(enum nb_event event
,
1703 const struct lyd_node
*dnode
,
1704 union nb_resource
*resource
)
1706 /* TODO: implement me. */
1711 * XPath: /frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2
1714 lib_interface_isis_csnp_interval_level_2_modify(enum nb_event event
,
1715 const struct lyd_node
*dnode
,
1716 union nb_resource
*resource
)
1718 /* TODO: implement me. */
1723 * XPath: /frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1
1726 lib_interface_isis_psnp_interval_level_1_modify(enum nb_event event
,
1727 const struct lyd_node
*dnode
,
1728 union nb_resource
*resource
)
1730 /* TODO: implement me. */
1735 * XPath: /frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2
1738 lib_interface_isis_psnp_interval_level_2_modify(enum nb_event event
,
1739 const struct lyd_node
*dnode
,
1740 union nb_resource
*resource
)
1742 /* TODO: implement me. */
1747 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/padding
1749 static int lib_interface_isis_hello_padding_modify(enum nb_event event
,
1750 const struct lyd_node
*dnode
,
1751 union nb_resource
*resource
)
1753 /* TODO: implement me. */
1758 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1
1761 lib_interface_isis_hello_interval_level_1_modify(enum nb_event event
,
1762 const struct lyd_node
*dnode
,
1763 union nb_resource
*resource
)
1765 /* TODO: implement me. */
1770 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2
1773 lib_interface_isis_hello_interval_level_2_modify(enum nb_event event
,
1774 const struct lyd_node
*dnode
,
1775 union nb_resource
*resource
)
1777 /* TODO: implement me. */
1782 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1
1785 lib_interface_isis_hello_multiplier_level_1_modify(enum nb_event event
,
1786 const struct lyd_node
*dnode
,
1787 union nb_resource
*resource
)
1789 /* TODO: implement me. */
1794 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2
1797 lib_interface_isis_hello_multiplier_level_2_modify(enum nb_event event
,
1798 const struct lyd_node
*dnode
,
1799 union nb_resource
*resource
)
1801 /* TODO: implement me. */
1806 * XPath: /frr-interface:lib/interface/frr-isisd:isis/metric/level-1
1809 lib_interface_isis_metric_level_1_modify(enum nb_event event
,
1810 const struct lyd_node
*dnode
,
1811 union nb_resource
*resource
)
1813 /* TODO: implement me. */
1818 * XPath: /frr-interface:lib/interface/frr-isisd:isis/metric/level-2
1821 lib_interface_isis_metric_level_2_modify(enum nb_event event
,
1822 const struct lyd_node
*dnode
,
1823 union nb_resource
*resource
)
1825 /* TODO: implement me. */
1830 * XPath: /frr-interface:lib/interface/frr-isisd:isis/priority/level-1
1833 lib_interface_isis_priority_level_1_modify(enum nb_event event
,
1834 const struct lyd_node
*dnode
,
1835 union nb_resource
*resource
)
1837 /* TODO: implement me. */
1842 * XPath: /frr-interface:lib/interface/frr-isisd:isis/priority/level-2
1845 lib_interface_isis_priority_level_2_modify(enum nb_event event
,
1846 const struct lyd_node
*dnode
,
1847 union nb_resource
*resource
)
1849 /* TODO: implement me. */
1854 * XPath: /frr-interface:lib/interface/frr-isisd:isis/network-type
1856 static int lib_interface_isis_network_type_modify(enum nb_event event
,
1857 const struct lyd_node
*dnode
,
1858 union nb_resource
*resource
)
1860 /* TODO: implement me. */
1864 static int lib_interface_isis_network_type_delete(enum nb_event event
,
1865 const struct lyd_node
*dnode
)
1867 /* TODO: implement me. */
1872 * XPath: /frr-interface:lib/interface/frr-isisd:isis/passive
1874 static int lib_interface_isis_passive_create(enum nb_event event
,
1875 const struct lyd_node
*dnode
,
1876 union nb_resource
*resource
)
1878 /* TODO: implement me. */
1882 static int lib_interface_isis_passive_delete(enum nb_event event
,
1883 const struct lyd_node
*dnode
)
1885 /* TODO: implement me. */
1890 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password
1892 static int lib_interface_isis_password_create(enum nb_event event
,
1893 const struct lyd_node
*dnode
,
1894 union nb_resource
*resource
)
1896 /* TODO: implement me. */
1900 static int lib_interface_isis_password_delete(enum nb_event event
,
1901 const struct lyd_node
*dnode
)
1903 /* TODO: implement me. */
1908 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password/password
1911 lib_interface_isis_password_password_modify(enum nb_event event
,
1912 const struct lyd_node
*dnode
,
1913 union nb_resource
*resource
)
1915 /* TODO: implement me. */
1920 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password/password-type
1923 lib_interface_isis_password_password_type_modify(enum nb_event event
,
1924 const struct lyd_node
*dnode
,
1925 union nb_resource
*resource
)
1927 /* TODO: implement me. */
1933 * /frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake
1935 static int lib_interface_isis_disable_three_way_handshake_create(
1936 enum nb_event event
, const struct lyd_node
*dnode
,
1937 union nb_resource
*resource
)
1939 /* TODO: implement me. */
1943 static int lib_interface_isis_disable_three_way_handshake_delete(
1944 enum nb_event event
, const struct lyd_node
*dnode
)
1946 /* TODO: implement me. */
1952 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast
1954 static int lib_interface_isis_multi_topology_ipv4_unicast_modify(
1955 enum nb_event event
, const struct lyd_node
*dnode
,
1956 union nb_resource
*resource
)
1958 /* TODO: implement me. */
1964 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast
1966 static int lib_interface_isis_multi_topology_ipv4_multicast_modify(
1967 enum nb_event event
, const struct lyd_node
*dnode
,
1968 union nb_resource
*resource
)
1970 /* TODO: implement me. */
1976 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management
1978 static int lib_interface_isis_multi_topology_ipv4_management_modify(
1979 enum nb_event event
, const struct lyd_node
*dnode
,
1980 union nb_resource
*resource
)
1982 /* TODO: implement me. */
1988 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast
1990 static int lib_interface_isis_multi_topology_ipv6_unicast_modify(
1991 enum nb_event event
, const struct lyd_node
*dnode
,
1992 union nb_resource
*resource
)
1994 /* TODO: implement me. */
2000 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast
2002 static int lib_interface_isis_multi_topology_ipv6_multicast_modify(
2003 enum nb_event event
, const struct lyd_node
*dnode
,
2004 union nb_resource
*resource
)
2006 /* TODO: implement me. */
2012 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management
2014 static int lib_interface_isis_multi_topology_ipv6_management_modify(
2015 enum nb_event event
, const struct lyd_node
*dnode
,
2016 union nb_resource
*resource
)
2018 /* TODO: implement me. */
2023 * XPath: /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc
2025 static int lib_interface_isis_multi_topology_ipv6_dstsrc_modify(
2026 enum nb_event event
, const struct lyd_node
*dnode
,
2027 union nb_resource
*resource
)
2029 /* TODO: implement me. */
2033 /* clang-format off */
2034 const struct frr_yang_module_info frr_isisd_info
= {
2035 .name
= "frr-isisd",
2038 .xpath
= "/frr-isisd:isis/instance",
2039 .cbs
.create
= isis_instance_create
,
2040 .cbs
.delete = isis_instance_delete
,
2041 .cbs
.cli_show
= cli_show_router_isis
,
2042 .priority
= NB_DFLT_PRIORITY
- 1,
2045 .xpath
= "/frr-isisd:isis/instance/is-type",
2046 .cbs
.modify
= isis_instance_is_type_modify
,
2047 .cbs
.cli_show
= cli_show_isis_is_type
,
2050 .xpath
= "/frr-isisd:isis/instance/area-address",
2051 .cbs
.create
= isis_instance_area_address_create
,
2052 .cbs
.delete = isis_instance_area_address_delete
,
2053 .cbs
.cli_show
= cli_show_isis_area_address
,
2056 .xpath
= "/frr-isisd:isis/instance/dynamic-hostname",
2057 .cbs
.modify
= isis_instance_dynamic_hostname_modify
,
2058 .cbs
.cli_show
= cli_show_isis_dynamic_hostname
,
2061 .xpath
= "/frr-isisd:isis/instance/attached",
2062 .cbs
.create
= isis_instance_attached_create
,
2063 .cbs
.delete = isis_instance_attached_delete
,
2064 .cbs
.cli_show
= cli_show_isis_attached
,
2067 .xpath
= "/frr-isisd:isis/instance/overload",
2068 .cbs
.create
= isis_instance_overload_create
,
2069 .cbs
.delete = isis_instance_overload_delete
,
2070 .cbs
.cli_show
= cli_show_isis_overload
,
2073 .xpath
= "/frr-isisd:isis/instance/metric-style",
2074 .cbs
.modify
= isis_instance_metric_style_modify
,
2075 .cbs
.cli_show
= cli_show_isis_metric_style
,
2078 .xpath
= "/frr-isisd:isis/instance/purge-originator",
2079 .cbs
.create
= isis_instance_purge_originator_create
,
2080 .cbs
.delete = isis_instance_purge_originator_delete
,
2081 .cbs
.cli_show
= cli_show_isis_purge_origin
,
2084 .xpath
= "/frr-isisd:isis/instance/lsp/mtu",
2085 .cbs
.modify
= isis_instance_lsp_mtu_modify
,
2086 .cbs
.cli_show
= cli_show_isis_lsp_mtu
,
2089 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval",
2090 .cbs
.cli_show
= cli_show_isis_lsp_ref_interval
,
2093 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval/level-1",
2094 .cbs
.modify
= isis_instance_lsp_refresh_interval_level_1_modify
,
2097 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval/level-2",
2098 .cbs
.modify
= isis_instance_lsp_refresh_interval_level_2_modify
,
2101 .xpath
= "/frr-isisd:isis/instance/lsp/maximum-lifetime",
2102 .cbs
.cli_show
= cli_show_isis_lsp_max_lifetime
,
2105 .xpath
= "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-1",
2106 .cbs
.modify
= isis_instance_lsp_maximum_lifetime_level_1_modify
,
2109 .xpath
= "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-2",
2110 .cbs
.modify
= isis_instance_lsp_maximum_lifetime_level_2_modify
,
2113 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval",
2114 .cbs
.cli_show
= cli_show_isis_lsp_gen_interval
,
2117 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval/level-1",
2118 .cbs
.modify
= isis_instance_lsp_generation_interval_level_1_modify
,
2121 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval/level-2",
2122 .cbs
.modify
= isis_instance_lsp_generation_interval_level_2_modify
,
2125 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay",
2126 .cbs
.create
= isis_instance_spf_ietf_backoff_delay_create
,
2127 .cbs
.delete = isis_instance_spf_ietf_backoff_delay_delete
,
2128 .cbs
.apply_finish
= ietf_backoff_delay_apply_finish
,
2129 .cbs
.cli_show
= cli_show_isis_spf_ietf_backoff
,
2132 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay",
2133 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_init_delay_modify
,
2136 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay",
2137 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_short_delay_modify
,
2140 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay",
2141 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_long_delay_modify
,
2144 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down",
2145 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_hold_down_modify
,
2148 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn",
2149 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_time_to_learn_modify
,
2152 .xpath
= "/frr-isisd:isis/instance/spf/minimum-interval",
2153 .cbs
.cli_show
= cli_show_isis_spf_min_interval
,
2156 .xpath
= "/frr-isisd:isis/instance/spf/minimum-interval/level-1",
2157 .cbs
.modify
= isis_instance_spf_minimum_interval_level_1_modify
,
2160 .xpath
= "/frr-isisd:isis/instance/spf/minimum-interval/level-2",
2161 .cbs
.modify
= isis_instance_spf_minimum_interval_level_2_modify
,
2164 .xpath
= "/frr-isisd:isis/instance/area-password",
2165 .cbs
.create
= isis_instance_area_password_create
,
2166 .cbs
.delete = isis_instance_area_password_delete
,
2167 .cbs
.apply_finish
= area_password_apply_finish
,
2168 .cbs
.cli_show
= cli_show_isis_area_pwd
,
2171 .xpath
= "/frr-isisd:isis/instance/area-password/password",
2172 .cbs
.modify
= isis_instance_area_password_password_modify
,
2175 .xpath
= "/frr-isisd:isis/instance/area-password/password-type",
2176 .cbs
.modify
= isis_instance_area_password_password_type_modify
,
2179 .xpath
= "/frr-isisd:isis/instance/area-password/authenticate-snp",
2180 .cbs
.modify
= isis_instance_area_password_authenticate_snp_modify
,
2183 .xpath
= "/frr-isisd:isis/instance/domain-password",
2184 .cbs
.create
= isis_instance_domain_password_create
,
2185 .cbs
.delete = isis_instance_domain_password_delete
,
2186 .cbs
.apply_finish
= domain_password_apply_finish
,
2187 .cbs
.cli_show
= cli_show_isis_domain_pwd
,
2190 .xpath
= "/frr-isisd:isis/instance/domain-password/password",
2191 .cbs
.modify
= isis_instance_domain_password_password_modify
,
2194 .xpath
= "/frr-isisd:isis/instance/domain-password/password-type",
2195 .cbs
.modify
= isis_instance_domain_password_password_type_modify
,
2198 .xpath
= "/frr-isisd:isis/instance/domain-password/authenticate-snp",
2199 .cbs
.modify
= isis_instance_domain_password_authenticate_snp_modify
,
2202 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4",
2203 .cbs
.create
= isis_instance_default_information_originate_ipv4_create
,
2204 .cbs
.delete = isis_instance_default_information_originate_ipv4_delete
,
2207 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/always",
2208 .cbs
.create
= isis_instance_default_information_originate_ipv4_always_create
,
2209 .cbs
.delete = isis_instance_default_information_originate_ipv4_always_delete
,
2212 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map",
2213 .cbs
.modify
= isis_instance_default_information_originate_ipv4_route_map_modify
,
2214 .cbs
.delete = isis_instance_default_information_originate_ipv4_route_map_delete
,
2217 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/metric",
2218 .cbs
.modify
= isis_instance_default_information_originate_ipv4_metric_modify
,
2219 .cbs
.delete = isis_instance_default_information_originate_ipv4_metric_delete
,
2222 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6",
2223 .cbs
.create
= isis_instance_default_information_originate_ipv6_create
,
2224 .cbs
.delete = isis_instance_default_information_originate_ipv6_delete
,
2227 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/always",
2228 .cbs
.create
= isis_instance_default_information_originate_ipv6_always_create
,
2229 .cbs
.delete = isis_instance_default_information_originate_ipv6_always_delete
,
2232 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map",
2233 .cbs
.modify
= isis_instance_default_information_originate_ipv6_route_map_modify
,
2234 .cbs
.delete = isis_instance_default_information_originate_ipv6_route_map_delete
,
2237 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/metric",
2238 .cbs
.modify
= isis_instance_default_information_originate_ipv6_metric_modify
,
2239 .cbs
.delete = isis_instance_default_information_originate_ipv6_metric_delete
,
2242 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4",
2243 .cbs
.create
= isis_instance_redistribute_ipv4_create
,
2244 .cbs
.delete = isis_instance_redistribute_ipv4_delete
,
2247 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4/route-map",
2248 .cbs
.modify
= isis_instance_redistribute_ipv4_route_map_modify
,
2249 .cbs
.delete = isis_instance_redistribute_ipv4_route_map_delete
,
2252 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4/metric",
2253 .cbs
.modify
= isis_instance_redistribute_ipv4_metric_modify
,
2254 .cbs
.delete = isis_instance_redistribute_ipv4_metric_delete
,
2257 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6",
2258 .cbs
.create
= isis_instance_redistribute_ipv6_create
,
2259 .cbs
.delete = isis_instance_redistribute_ipv6_delete
,
2262 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6/route-map",
2263 .cbs
.modify
= isis_instance_redistribute_ipv6_route_map_modify
,
2264 .cbs
.delete = isis_instance_redistribute_ipv6_route_map_delete
,
2267 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6/metric",
2268 .cbs
.modify
= isis_instance_redistribute_ipv6_metric_modify
,
2269 .cbs
.delete = isis_instance_redistribute_ipv6_metric_delete
,
2272 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-multicast",
2273 .cbs
.create
= isis_instance_multi_topology_ipv4_multicast_create
,
2274 .cbs
.delete = isis_instance_multi_topology_ipv4_multicast_delete
,
2277 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload",
2278 .cbs
.create
= isis_instance_multi_topology_ipv4_multicast_overload_create
,
2279 .cbs
.delete = isis_instance_multi_topology_ipv4_multicast_overload_delete
,
2282 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-management",
2283 .cbs
.create
= isis_instance_multi_topology_ipv4_management_create
,
2284 .cbs
.delete = isis_instance_multi_topology_ipv4_management_delete
,
2287 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload",
2288 .cbs
.create
= isis_instance_multi_topology_ipv4_management_overload_create
,
2289 .cbs
.delete = isis_instance_multi_topology_ipv4_management_overload_delete
,
2292 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-unicast",
2293 .cbs
.create
= isis_instance_multi_topology_ipv6_unicast_create
,
2294 .cbs
.delete = isis_instance_multi_topology_ipv6_unicast_delete
,
2297 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload",
2298 .cbs
.create
= isis_instance_multi_topology_ipv6_unicast_overload_create
,
2299 .cbs
.delete = isis_instance_multi_topology_ipv6_unicast_overload_delete
,
2302 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-multicast",
2303 .cbs
.create
= isis_instance_multi_topology_ipv6_multicast_create
,
2304 .cbs
.delete = isis_instance_multi_topology_ipv6_multicast_delete
,
2307 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload",
2308 .cbs
.create
= isis_instance_multi_topology_ipv6_multicast_overload_create
,
2309 .cbs
.delete = isis_instance_multi_topology_ipv6_multicast_overload_delete
,
2312 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-management",
2313 .cbs
.create
= isis_instance_multi_topology_ipv6_management_create
,
2314 .cbs
.delete = isis_instance_multi_topology_ipv6_management_delete
,
2317 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload",
2318 .cbs
.create
= isis_instance_multi_topology_ipv6_management_overload_create
,
2319 .cbs
.delete = isis_instance_multi_topology_ipv6_management_overload_delete
,
2322 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc",
2323 .cbs
.create
= isis_instance_multi_topology_ipv6_dstsrc_create
,
2324 .cbs
.delete = isis_instance_multi_topology_ipv6_dstsrc_delete
,
2327 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload",
2328 .cbs
.create
= isis_instance_multi_topology_ipv6_dstsrc_overload_create
,
2329 .cbs
.delete = isis_instance_multi_topology_ipv6_dstsrc_overload_delete
,
2332 .xpath
= "/frr-isisd:isis/instance/log-adjacency-changes",
2333 .cbs
.create
= isis_instance_log_adjacency_changes_create
,
2334 .cbs
.delete = isis_instance_log_adjacency_changes_delete
,
2337 .xpath
= "/frr-isisd:isis/mpls-te",
2338 .cbs
.create
= isis_mpls_te_create
,
2339 .cbs
.delete = isis_mpls_te_delete
,
2340 .cbs
.cli_show
= cli_show_isis_mpls_te
,
2343 .xpath
= "/frr-isisd:isis/mpls-te/router-address",
2344 .cbs
.modify
= isis_mpls_te_router_address_modify
,
2345 .cbs
.delete = isis_mpls_te_router_address_delete
,
2346 .cbs
.cli_show
= cli_show_isis_mpls_te_router_addr
,
2349 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis",
2350 .cbs
.create
= lib_interface_isis_create
,
2351 .cbs
.delete = lib_interface_isis_delete
,
2354 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/area-tag",
2355 .cbs
.modify
= lib_interface_isis_area_tag_modify
,
2358 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/circuit-type",
2359 .cbs
.modify
= lib_interface_isis_circuit_type_modify
,
2362 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing",
2363 .cbs
.create
= lib_interface_isis_ipv4_routing_create
,
2364 .cbs
.delete = lib_interface_isis_ipv4_routing_delete
,
2365 .cbs
.cli_show
= cli_show_ip_isis_ipv4
,
2368 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing",
2369 .cbs
.create
= lib_interface_isis_ipv6_routing_create
,
2370 .cbs
.delete = lib_interface_isis_ipv6_routing_delete
,
2371 .cbs
.cli_show
= cli_show_ip_isis_ipv6
,
2374 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1",
2375 .cbs
.modify
= lib_interface_isis_csnp_interval_level_1_modify
,
2378 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2",
2379 .cbs
.modify
= lib_interface_isis_csnp_interval_level_2_modify
,
2382 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1",
2383 .cbs
.modify
= lib_interface_isis_psnp_interval_level_1_modify
,
2386 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2",
2387 .cbs
.modify
= lib_interface_isis_psnp_interval_level_2_modify
,
2390 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/padding",
2391 .cbs
.modify
= lib_interface_isis_hello_padding_modify
,
2394 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1",
2395 .cbs
.modify
= lib_interface_isis_hello_interval_level_1_modify
,
2398 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2",
2399 .cbs
.modify
= lib_interface_isis_hello_interval_level_2_modify
,
2402 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1",
2403 .cbs
.modify
= lib_interface_isis_hello_multiplier_level_1_modify
,
2406 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2",
2407 .cbs
.modify
= lib_interface_isis_hello_multiplier_level_2_modify
,
2410 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/metric/level-1",
2411 .cbs
.modify
= lib_interface_isis_metric_level_1_modify
,
2414 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/metric/level-2",
2415 .cbs
.modify
= lib_interface_isis_metric_level_2_modify
,
2418 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/priority/level-1",
2419 .cbs
.modify
= lib_interface_isis_priority_level_1_modify
,
2422 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/priority/level-2",
2423 .cbs
.modify
= lib_interface_isis_priority_level_2_modify
,
2426 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/network-type",
2427 .cbs
.modify
= lib_interface_isis_network_type_modify
,
2428 .cbs
.delete = lib_interface_isis_network_type_delete
,
2431 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/passive",
2432 .cbs
.create
= lib_interface_isis_passive_create
,
2433 .cbs
.delete = lib_interface_isis_passive_delete
,
2436 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password",
2437 .cbs
.create
= lib_interface_isis_password_create
,
2438 .cbs
.delete = lib_interface_isis_password_delete
,
2441 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password/password",
2442 .cbs
.modify
= lib_interface_isis_password_password_modify
,
2445 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password/password-type",
2446 .cbs
.modify
= lib_interface_isis_password_password_type_modify
,
2449 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake",
2450 .cbs
.create
= lib_interface_isis_disable_three_way_handshake_create
,
2451 .cbs
.delete = lib_interface_isis_disable_three_way_handshake_delete
,
2454 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast",
2455 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_unicast_modify
,
2458 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast",
2459 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_multicast_modify
,
2462 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management",
2463 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_management_modify
,
2466 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast",
2467 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_unicast_modify
,
2470 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast",
2471 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_multicast_modify
,
2474 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management",
2475 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_management_modify
,
2478 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc",
2479 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_dstsrc_modify
,