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 /* TODO: implement me. */
329 * XPath: /frr-isisd:isis/instance/purge-originator
331 static int isis_instance_purge_originator_create(enum nb_event event
,
332 const struct lyd_node
*dnode
,
333 union nb_resource
*resource
)
335 /* TODO: implement me. */
339 static int isis_instance_purge_originator_delete(enum nb_event event
,
340 const struct lyd_node
*dnode
)
342 /* TODO: implement me. */
347 * XPath: /frr-isisd:isis/instance/lsp/mtu
349 static int isis_instance_lsp_mtu_modify(enum nb_event event
,
350 const struct lyd_node
*dnode
,
351 union nb_resource
*resource
)
353 /* TODO: implement me. */
358 * XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-1
361 isis_instance_lsp_refresh_interval_level_1_modify(enum nb_event event
,
362 const struct lyd_node
*dnode
,
363 union nb_resource
*resource
)
365 /* TODO: implement me. */
370 * XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-2
373 isis_instance_lsp_refresh_interval_level_2_modify(enum nb_event event
,
374 const struct lyd_node
*dnode
,
375 union nb_resource
*resource
)
377 /* TODO: implement me. */
382 * XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-1
385 isis_instance_lsp_maximum_lifetime_level_1_modify(enum nb_event event
,
386 const struct lyd_node
*dnode
,
387 union nb_resource
*resource
)
389 /* TODO: implement me. */
394 * XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-2
397 isis_instance_lsp_maximum_lifetime_level_2_modify(enum nb_event event
,
398 const struct lyd_node
*dnode
,
399 union nb_resource
*resource
)
401 /* TODO: implement me. */
406 * XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-1
408 static int isis_instance_lsp_generation_interval_level_1_modify(
409 enum nb_event event
, const struct lyd_node
*dnode
,
410 union nb_resource
*resource
)
412 /* TODO: implement me. */
417 * XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-2
419 static int isis_instance_lsp_generation_interval_level_2_modify(
420 enum nb_event event
, const struct lyd_node
*dnode
,
421 union nb_resource
*resource
)
423 /* TODO: implement me. */
428 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay
431 isis_instance_spf_ietf_backoff_delay_create(enum nb_event event
,
432 const struct lyd_node
*dnode
,
433 union nb_resource
*resource
)
435 /* TODO: implement me. */
440 isis_instance_spf_ietf_backoff_delay_delete(enum nb_event event
,
441 const struct lyd_node
*dnode
)
443 /* TODO: implement me. */
448 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay
450 static int isis_instance_spf_ietf_backoff_delay_init_delay_modify(
451 enum nb_event event
, const struct lyd_node
*dnode
,
452 union nb_resource
*resource
)
454 /* TODO: implement me. */
459 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay
461 static int isis_instance_spf_ietf_backoff_delay_short_delay_modify(
462 enum nb_event event
, const struct lyd_node
*dnode
,
463 union nb_resource
*resource
)
465 /* TODO: implement me. */
470 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay
472 static int isis_instance_spf_ietf_backoff_delay_long_delay_modify(
473 enum nb_event event
, const struct lyd_node
*dnode
,
474 union nb_resource
*resource
)
476 /* TODO: implement me. */
481 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down
483 static int isis_instance_spf_ietf_backoff_delay_hold_down_modify(
484 enum nb_event event
, const struct lyd_node
*dnode
,
485 union nb_resource
*resource
)
487 /* TODO: implement me. */
492 * XPath: /frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn
494 static int isis_instance_spf_ietf_backoff_delay_time_to_learn_modify(
495 enum nb_event event
, const struct lyd_node
*dnode
,
496 union nb_resource
*resource
)
498 /* TODO: implement me. */
503 * XPath: /frr-isisd:isis/instance/spf/minimum-interval/level-1
506 isis_instance_spf_minimum_interval_level_1_modify(enum nb_event event
,
507 const struct lyd_node
*dnode
,
508 union nb_resource
*resource
)
510 /* TODO: implement me. */
515 * XPath: /frr-isisd:isis/instance/spf/minimum-interval/level-2
518 isis_instance_spf_minimum_interval_level_2_modify(enum nb_event event
,
519 const struct lyd_node
*dnode
,
520 union nb_resource
*resource
)
522 /* TODO: implement me. */
527 * XPath: /frr-isisd:isis/instance/area-password
529 static int isis_instance_area_password_create(enum nb_event event
,
530 const struct lyd_node
*dnode
,
531 union nb_resource
*resource
)
533 /* TODO: implement me. */
537 static int isis_instance_area_password_delete(enum nb_event event
,
538 const struct lyd_node
*dnode
)
540 /* TODO: implement me. */
545 * XPath: /frr-isisd:isis/instance/area-password/password
548 isis_instance_area_password_password_modify(enum nb_event event
,
549 const struct lyd_node
*dnode
,
550 union nb_resource
*resource
)
552 /* TODO: implement me. */
557 * XPath: /frr-isisd:isis/instance/area-password/password-type
560 isis_instance_area_password_password_type_modify(enum nb_event event
,
561 const struct lyd_node
*dnode
,
562 union nb_resource
*resource
)
564 /* TODO: implement me. */
569 * XPath: /frr-isisd:isis/instance/area-password/authenticate-snp
571 static int isis_instance_area_password_authenticate_snp_modify(
572 enum nb_event event
, const struct lyd_node
*dnode
,
573 union nb_resource
*resource
)
575 /* TODO: implement me. */
580 * XPath: /frr-isisd:isis/instance/domain-password
582 static int isis_instance_domain_password_create(enum nb_event event
,
583 const struct lyd_node
*dnode
,
584 union nb_resource
*resource
)
586 /* TODO: implement me. */
590 static int isis_instance_domain_password_delete(enum nb_event event
,
591 const struct lyd_node
*dnode
)
593 /* TODO: implement me. */
598 * XPath: /frr-isisd:isis/instance/domain-password/password
601 isis_instance_domain_password_password_modify(enum nb_event event
,
602 const struct lyd_node
*dnode
,
603 union nb_resource
*resource
)
605 /* TODO: implement me. */
610 * XPath: /frr-isisd:isis/instance/domain-password/password-type
613 isis_instance_domain_password_password_type_modify(enum nb_event event
,
614 const struct lyd_node
*dnode
,
615 union nb_resource
*resource
)
617 /* TODO: implement me. */
622 * XPath: /frr-isisd:isis/instance/domain-password/authenticate-snp
624 static int isis_instance_domain_password_authenticate_snp_modify(
625 enum nb_event event
, const struct lyd_node
*dnode
,
626 union nb_resource
*resource
)
628 /* TODO: implement me. */
633 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4
635 static int isis_instance_default_information_originate_ipv4_create(
636 enum nb_event event
, const struct lyd_node
*dnode
,
637 union nb_resource
*resource
)
639 /* TODO: implement me. */
643 static int isis_instance_default_information_originate_ipv4_delete(
644 enum nb_event event
, const struct lyd_node
*dnode
)
646 /* TODO: implement me. */
651 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/always
653 static int isis_instance_default_information_originate_ipv4_always_create(
654 enum nb_event event
, const struct lyd_node
*dnode
,
655 union nb_resource
*resource
)
657 /* TODO: implement me. */
661 static int isis_instance_default_information_originate_ipv4_always_delete(
662 enum nb_event event
, const struct lyd_node
*dnode
)
664 /* TODO: implement me. */
669 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/route-map
671 static int isis_instance_default_information_originate_ipv4_route_map_modify(
672 enum nb_event event
, const struct lyd_node
*dnode
,
673 union nb_resource
*resource
)
675 /* TODO: implement me. */
679 static int isis_instance_default_information_originate_ipv4_route_map_delete(
680 enum nb_event event
, const struct lyd_node
*dnode
)
682 /* TODO: implement me. */
687 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv4/metric
689 static int isis_instance_default_information_originate_ipv4_metric_modify(
690 enum nb_event event
, const struct lyd_node
*dnode
,
691 union nb_resource
*resource
)
693 /* TODO: implement me. */
697 static int isis_instance_default_information_originate_ipv4_metric_delete(
698 enum nb_event event
, const struct lyd_node
*dnode
)
700 /* TODO: implement me. */
705 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6
707 static int isis_instance_default_information_originate_ipv6_create(
708 enum nb_event event
, const struct lyd_node
*dnode
,
709 union nb_resource
*resource
)
711 /* TODO: implement me. */
715 static int isis_instance_default_information_originate_ipv6_delete(
716 enum nb_event event
, const struct lyd_node
*dnode
)
718 /* TODO: implement me. */
723 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/always
725 static int isis_instance_default_information_originate_ipv6_always_create(
726 enum nb_event event
, const struct lyd_node
*dnode
,
727 union nb_resource
*resource
)
729 /* TODO: implement me. */
733 static int isis_instance_default_information_originate_ipv6_always_delete(
734 enum nb_event event
, const struct lyd_node
*dnode
)
736 /* TODO: implement me. */
741 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/route-map
743 static int isis_instance_default_information_originate_ipv6_route_map_modify(
744 enum nb_event event
, const struct lyd_node
*dnode
,
745 union nb_resource
*resource
)
747 /* TODO: implement me. */
751 static int isis_instance_default_information_originate_ipv6_route_map_delete(
752 enum nb_event event
, const struct lyd_node
*dnode
)
754 /* TODO: implement me. */
759 * XPath: /frr-isisd:isis/instance/default-information-originate/ipv6/metric
761 static int isis_instance_default_information_originate_ipv6_metric_modify(
762 enum nb_event event
, const struct lyd_node
*dnode
,
763 union nb_resource
*resource
)
765 /* TODO: implement me. */
769 static int isis_instance_default_information_originate_ipv6_metric_delete(
770 enum nb_event event
, const struct lyd_node
*dnode
)
772 /* TODO: implement me. */
777 * XPath: /frr-isisd:isis/instance/redistribute/ipv4
779 static int isis_instance_redistribute_ipv4_create(enum nb_event event
,
780 const struct lyd_node
*dnode
,
781 union nb_resource
*resource
)
783 /* TODO: implement me. */
787 static int isis_instance_redistribute_ipv4_delete(enum nb_event event
,
788 const struct lyd_node
*dnode
)
790 /* TODO: implement me. */
795 * XPath: /frr-isisd:isis/instance/redistribute/ipv4/route-map
798 isis_instance_redistribute_ipv4_route_map_modify(enum nb_event event
,
799 const struct lyd_node
*dnode
,
800 union nb_resource
*resource
)
802 /* TODO: implement me. */
807 isis_instance_redistribute_ipv4_route_map_delete(enum nb_event event
,
808 const struct lyd_node
*dnode
)
810 /* TODO: implement me. */
815 * XPath: /frr-isisd:isis/instance/redistribute/ipv4/metric
818 isis_instance_redistribute_ipv4_metric_modify(enum nb_event event
,
819 const struct lyd_node
*dnode
,
820 union nb_resource
*resource
)
822 /* TODO: implement me. */
827 isis_instance_redistribute_ipv4_metric_delete(enum nb_event event
,
828 const struct lyd_node
*dnode
)
830 /* TODO: implement me. */
835 * XPath: /frr-isisd:isis/instance/redistribute/ipv6
837 static int isis_instance_redistribute_ipv6_create(enum nb_event event
,
838 const struct lyd_node
*dnode
,
839 union nb_resource
*resource
)
841 /* TODO: implement me. */
845 static int isis_instance_redistribute_ipv6_delete(enum nb_event event
,
846 const struct lyd_node
*dnode
)
848 /* TODO: implement me. */
853 * XPath: /frr-isisd:isis/instance/redistribute/ipv6/route-map
856 isis_instance_redistribute_ipv6_route_map_modify(enum nb_event event
,
857 const struct lyd_node
*dnode
,
858 union nb_resource
*resource
)
860 /* TODO: implement me. */
865 isis_instance_redistribute_ipv6_route_map_delete(enum nb_event event
,
866 const struct lyd_node
*dnode
)
868 /* TODO: implement me. */
873 * XPath: /frr-isisd:isis/instance/redistribute/ipv6/metric
876 isis_instance_redistribute_ipv6_metric_modify(enum nb_event event
,
877 const struct lyd_node
*dnode
,
878 union nb_resource
*resource
)
880 /* TODO: implement me. */
885 isis_instance_redistribute_ipv6_metric_delete(enum nb_event event
,
886 const struct lyd_node
*dnode
)
888 /* TODO: implement me. */
893 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast
896 isis_instance_multi_topology_ipv4_multicast_create(enum nb_event event
,
897 const struct lyd_node
*dnode
,
898 union nb_resource
*resource
)
900 /* TODO: implement me. */
905 isis_instance_multi_topology_ipv4_multicast_delete(enum nb_event event
,
906 const struct lyd_node
*dnode
)
908 /* TODO: implement me. */
913 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload
915 static int isis_instance_multi_topology_ipv4_multicast_overload_create(
916 enum nb_event event
, const struct lyd_node
*dnode
,
917 union nb_resource
*resource
)
919 /* TODO: implement me. */
923 static int isis_instance_multi_topology_ipv4_multicast_overload_delete(
924 enum nb_event event
, const struct lyd_node
*dnode
)
926 /* TODO: implement me. */
931 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management
933 static int isis_instance_multi_topology_ipv4_management_create(
934 enum nb_event event
, const struct lyd_node
*dnode
,
935 union nb_resource
*resource
)
937 /* TODO: implement me. */
941 static int isis_instance_multi_topology_ipv4_management_delete(
942 enum nb_event event
, const struct lyd_node
*dnode
)
944 /* TODO: implement me. */
949 * XPath: /frr-isisd:isis/instance/multi-topology/ipv4-management/overload
951 static int isis_instance_multi_topology_ipv4_management_overload_create(
952 enum nb_event event
, const struct lyd_node
*dnode
,
953 union nb_resource
*resource
)
955 /* TODO: implement me. */
959 static int isis_instance_multi_topology_ipv4_management_overload_delete(
960 enum nb_event event
, const struct lyd_node
*dnode
)
962 /* TODO: implement me. */
967 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast
970 isis_instance_multi_topology_ipv6_unicast_create(enum nb_event event
,
971 const struct lyd_node
*dnode
,
972 union nb_resource
*resource
)
974 /* TODO: implement me. */
979 isis_instance_multi_topology_ipv6_unicast_delete(enum nb_event event
,
980 const struct lyd_node
*dnode
)
982 /* TODO: implement me. */
987 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload
989 static int isis_instance_multi_topology_ipv6_unicast_overload_create(
990 enum nb_event event
, const struct lyd_node
*dnode
,
991 union nb_resource
*resource
)
993 /* TODO: implement me. */
997 static int isis_instance_multi_topology_ipv6_unicast_overload_delete(
998 enum nb_event event
, const struct lyd_node
*dnode
)
1000 /* TODO: implement me. */
1005 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast
1008 isis_instance_multi_topology_ipv6_multicast_create(enum nb_event event
,
1009 const struct lyd_node
*dnode
,
1010 union nb_resource
*resource
)
1012 /* TODO: implement me. */
1017 isis_instance_multi_topology_ipv6_multicast_delete(enum nb_event event
,
1018 const struct lyd_node
*dnode
)
1020 /* TODO: implement me. */
1025 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload
1027 static int isis_instance_multi_topology_ipv6_multicast_overload_create(
1028 enum nb_event event
, const struct lyd_node
*dnode
,
1029 union nb_resource
*resource
)
1031 /* TODO: implement me. */
1035 static int isis_instance_multi_topology_ipv6_multicast_overload_delete(
1036 enum nb_event event
, const struct lyd_node
*dnode
)
1038 /* TODO: implement me. */
1043 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management
1045 static int isis_instance_multi_topology_ipv6_management_create(
1046 enum nb_event event
, const struct lyd_node
*dnode
,
1047 union nb_resource
*resource
)
1049 /* TODO: implement me. */
1053 static int isis_instance_multi_topology_ipv6_management_delete(
1054 enum nb_event event
, const struct lyd_node
*dnode
)
1056 /* TODO: implement me. */
1061 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-management/overload
1063 static int isis_instance_multi_topology_ipv6_management_overload_create(
1064 enum nb_event event
, const struct lyd_node
*dnode
,
1065 union nb_resource
*resource
)
1067 /* TODO: implement me. */
1071 static int isis_instance_multi_topology_ipv6_management_overload_delete(
1072 enum nb_event event
, const struct lyd_node
*dnode
)
1074 /* TODO: implement me. */
1079 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc
1082 isis_instance_multi_topology_ipv6_dstsrc_create(enum nb_event event
,
1083 const struct lyd_node
*dnode
,
1084 union nb_resource
*resource
)
1086 /* TODO: implement me. */
1091 isis_instance_multi_topology_ipv6_dstsrc_delete(enum nb_event event
,
1092 const struct lyd_node
*dnode
)
1094 /* TODO: implement me. */
1099 * XPath: /frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload
1101 static int isis_instance_multi_topology_ipv6_dstsrc_overload_create(
1102 enum nb_event event
, const struct lyd_node
*dnode
,
1103 union nb_resource
*resource
)
1105 /* TODO: implement me. */
1109 static int isis_instance_multi_topology_ipv6_dstsrc_overload_delete(
1110 enum nb_event event
, const struct lyd_node
*dnode
)
1112 /* TODO: implement me. */
1117 * XPath: /frr-isisd:isis/instance/log-adjacency-changes
1120 isis_instance_log_adjacency_changes_create(enum nb_event event
,
1121 const struct lyd_node
*dnode
,
1122 union nb_resource
*resource
)
1124 /* TODO: implement me. */
1129 isis_instance_log_adjacency_changes_delete(enum nb_event event
,
1130 const struct lyd_node
*dnode
)
1132 /* TODO: implement me. */
1137 * XPath: /frr-isisd:isis/mpls-te
1139 static int isis_mpls_te_create(enum nb_event event
,
1140 const struct lyd_node
*dnode
,
1141 union nb_resource
*resource
)
1143 /* TODO: implement me. */
1147 static int isis_mpls_te_delete(enum nb_event event
,
1148 const struct lyd_node
*dnode
)
1150 /* TODO: implement me. */
1155 * XPath: /frr-isisd:isis/mpls-te/router-address
1157 static int isis_mpls_te_router_address_modify(enum nb_event event
,
1158 const struct lyd_node
*dnode
,
1159 union nb_resource
*resource
)
1161 /* TODO: implement me. */
1165 static int isis_mpls_te_router_address_delete(enum nb_event event
,
1166 const struct lyd_node
*dnode
)
1168 /* TODO: implement me. */
1173 * XPath: /frr-interface:lib/interface/frr-isisd:isis
1175 static int lib_interface_isis_create(enum nb_event event
,
1176 const struct lyd_node
*dnode
,
1177 union nb_resource
*resource
)
1179 struct isis_area
*area
;
1180 struct interface
*ifp
;
1181 struct isis_circuit
*circuit
;
1182 const char *area_tag
= yang_dnode_get_string(dnode
, "./area-tag");
1184 if (event
!= NB_EV_APPLY
)
1187 area
= isis_area_lookup(area_tag
);
1188 /* The area should have already be created. We are
1189 * setting the priority of the global isis area creation
1190 * slightly lower, so it should be executed first, but I
1191 * cannot rely on that so here I have to check.
1195 EC_LIB_NB_CB_CONFIG_APPLY
,
1196 "%s: attempt to create circuit for area %s before the area has been created",
1197 __func__
, area_tag
);
1201 ifp
= yang_dnode_get_entry(dnode
, true);
1202 circuit
= isis_circuit_create(area
, ifp
);
1203 assert(circuit
->state
== C_STATE_CONF
|| circuit
->state
== C_STATE_UP
);
1204 yang_dnode_set_entry(dnode
, circuit
);
1209 static int lib_interface_isis_delete(enum nb_event event
,
1210 const struct lyd_node
*dnode
)
1212 struct isis_circuit
*circuit
;
1214 if (event
!= NB_EV_APPLY
)
1217 circuit
= yang_dnode_get_entry(dnode
, true);
1219 return NB_ERR_INCONSISTENCY
;
1220 /* delete circuit through csm changes */
1221 switch (circuit
->state
) {
1223 isis_csm_state_change(IF_DOWN_FROM_Z
, circuit
,
1224 circuit
->interface
);
1225 isis_csm_state_change(ISIS_DISABLE
, circuit
, circuit
->area
);
1228 isis_csm_state_change(ISIS_DISABLE
, circuit
, circuit
->area
);
1231 isis_csm_state_change(IF_DOWN_FROM_Z
, circuit
,
1232 circuit
->interface
);
1240 * XPath: /frr-interface:lib/interface/frr-isisd:isis/area-tag
1242 static int lib_interface_isis_area_tag_modify(enum nb_event event
,
1243 const struct lyd_node
*dnode
,
1244 union nb_resource
*resource
)
1246 struct isis_circuit
*circuit
;
1247 struct interface
*ifp
;
1249 const char *area_tag
, *ifname
, *vrfname
;
1251 if (event
== NB_EV_VALIDATE
) {
1252 /* libyang doesn't like relative paths across module boundaries
1254 ifname
= yang_dnode_get_string(dnode
->parent
->parent
, "./name");
1255 vrfname
= yang_dnode_get_string(dnode
->parent
->parent
, "./vrf");
1256 vrf
= vrf_lookup_by_name(vrfname
);
1258 ifp
= if_lookup_by_name(ifname
, vrf
->vrf_id
);
1261 circuit
= circuit_lookup_by_ifp(ifp
, isis
->init_circ_list
);
1262 area_tag
= yang_dnode_get_string(dnode
, NULL
);
1263 if (circuit
&& circuit
->area
&& circuit
->area
->area_tag
1264 && strcmp(circuit
->area
->area_tag
, area_tag
)) {
1265 flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE
,
1266 "ISIS circuit is already defined on %s",
1267 circuit
->area
->area_tag
);
1268 return NB_ERR_VALIDATION
;
1276 * XPath: /frr-interface:lib/interface/frr-isisd:isis/circuit-type
1278 static int lib_interface_isis_circuit_type_modify(enum nb_event event
,
1279 const struct lyd_node
*dnode
,
1280 union nb_resource
*resource
)
1282 int circ_type
= yang_dnode_get_enum(dnode
, NULL
);
1283 struct isis_circuit
*circuit
;
1284 struct interface
*ifp
;
1286 const char *ifname
, *vrfname
;
1289 case NB_EV_VALIDATE
:
1290 /* libyang doesn't like relative paths across module boundaries
1292 ifname
= yang_dnode_get_string(dnode
->parent
->parent
, "./name");
1293 vrfname
= yang_dnode_get_string(dnode
->parent
->parent
, "./vrf");
1294 vrf
= vrf_lookup_by_name(vrfname
);
1296 ifp
= if_lookup_by_name(ifname
, vrf
->vrf_id
);
1299 circuit
= circuit_lookup_by_ifp(ifp
, isis
->init_circ_list
);
1300 if (circuit
&& circuit
->state
== C_STATE_UP
1301 && circuit
->area
->is_type
!= IS_LEVEL_1_AND_2
1302 && circuit
->area
->is_type
!= circ_type
) {
1303 flog_warn(EC_LIB_NB_CB_CONFIG_VALIDATE
,
1304 "Invalid circuit level for area %s",
1305 circuit
->area
->area_tag
);
1306 return NB_ERR_VALIDATION
;
1313 circuit
= yang_dnode_get_entry(dnode
, true);
1314 isis_circuit_is_type_set(circuit
, circ_type
);
1322 * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv4-routing
1324 static int lib_interface_isis_ipv4_routing_create(enum nb_event event
,
1325 const struct lyd_node
*dnode
,
1326 union nb_resource
*resource
)
1329 struct isis_circuit
*circuit
;
1331 if (event
!= NB_EV_APPLY
)
1334 circuit
= yang_dnode_get_entry(dnode
, true);
1335 ipv6
= yang_dnode_exists(dnode
, "../ipv6-routing");
1336 isis_circuit_af_set(circuit
, true, ipv6
);
1341 static int lib_interface_isis_ipv4_routing_delete(enum nb_event event
,
1342 const struct lyd_node
*dnode
)
1345 struct isis_circuit
*circuit
;
1347 if (event
!= NB_EV_APPLY
)
1350 circuit
= yang_dnode_get_entry(dnode
, true);
1351 if (circuit
&& circuit
->area
) {
1352 ipv6
= yang_dnode_exists(dnode
, "../ipv6-routing");
1353 isis_circuit_af_set(circuit
, false, ipv6
);
1360 * XPath: /frr-interface:lib/interface/frr-isisd:isis/ipv6-routing
1362 static int lib_interface_isis_ipv6_routing_create(enum nb_event event
,
1363 const struct lyd_node
*dnode
,
1364 union nb_resource
*resource
)
1367 struct isis_circuit
*circuit
;
1369 if (event
!= NB_EV_APPLY
)
1372 circuit
= yang_dnode_get_entry(dnode
, true);
1373 ipv4
= yang_dnode_exists(dnode
, "../ipv6-routing");
1374 isis_circuit_af_set(circuit
, ipv4
, true);
1379 static int lib_interface_isis_ipv6_routing_delete(enum nb_event event
,
1380 const struct lyd_node
*dnode
)
1383 struct isis_circuit
*circuit
;
1385 if (event
!= NB_EV_APPLY
)
1388 circuit
= yang_dnode_get_entry(dnode
, true);
1389 if (circuit
->area
) {
1390 ipv4
= yang_dnode_exists(dnode
, "../ipv4-routing");
1391 isis_circuit_af_set(circuit
, ipv4
, false);
1398 * XPath: /frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1
1401 lib_interface_isis_csnp_interval_level_1_modify(enum nb_event event
,
1402 const struct lyd_node
*dnode
,
1403 union nb_resource
*resource
)
1405 /* TODO: implement me. */
1410 * XPath: /frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2
1413 lib_interface_isis_csnp_interval_level_2_modify(enum nb_event event
,
1414 const struct lyd_node
*dnode
,
1415 union nb_resource
*resource
)
1417 /* TODO: implement me. */
1422 * XPath: /frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1
1425 lib_interface_isis_psnp_interval_level_1_modify(enum nb_event event
,
1426 const struct lyd_node
*dnode
,
1427 union nb_resource
*resource
)
1429 /* TODO: implement me. */
1434 * XPath: /frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2
1437 lib_interface_isis_psnp_interval_level_2_modify(enum nb_event event
,
1438 const struct lyd_node
*dnode
,
1439 union nb_resource
*resource
)
1441 /* TODO: implement me. */
1446 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/padding
1448 static int lib_interface_isis_hello_padding_modify(enum nb_event event
,
1449 const struct lyd_node
*dnode
,
1450 union nb_resource
*resource
)
1452 /* TODO: implement me. */
1457 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1
1460 lib_interface_isis_hello_interval_level_1_modify(enum nb_event event
,
1461 const struct lyd_node
*dnode
,
1462 union nb_resource
*resource
)
1464 /* TODO: implement me. */
1469 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2
1472 lib_interface_isis_hello_interval_level_2_modify(enum nb_event event
,
1473 const struct lyd_node
*dnode
,
1474 union nb_resource
*resource
)
1476 /* TODO: implement me. */
1481 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1
1484 lib_interface_isis_hello_multiplier_level_1_modify(enum nb_event event
,
1485 const struct lyd_node
*dnode
,
1486 union nb_resource
*resource
)
1488 /* TODO: implement me. */
1493 * XPath: /frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2
1496 lib_interface_isis_hello_multiplier_level_2_modify(enum nb_event event
,
1497 const struct lyd_node
*dnode
,
1498 union nb_resource
*resource
)
1500 /* TODO: implement me. */
1505 * XPath: /frr-interface:lib/interface/frr-isisd:isis/metric/level-1
1508 lib_interface_isis_metric_level_1_modify(enum nb_event event
,
1509 const struct lyd_node
*dnode
,
1510 union nb_resource
*resource
)
1512 /* TODO: implement me. */
1517 * XPath: /frr-interface:lib/interface/frr-isisd:isis/metric/level-2
1520 lib_interface_isis_metric_level_2_modify(enum nb_event event
,
1521 const struct lyd_node
*dnode
,
1522 union nb_resource
*resource
)
1524 /* TODO: implement me. */
1529 * XPath: /frr-interface:lib/interface/frr-isisd:isis/priority/level-1
1532 lib_interface_isis_priority_level_1_modify(enum nb_event event
,
1533 const struct lyd_node
*dnode
,
1534 union nb_resource
*resource
)
1536 /* TODO: implement me. */
1541 * XPath: /frr-interface:lib/interface/frr-isisd:isis/priority/level-2
1544 lib_interface_isis_priority_level_2_modify(enum nb_event event
,
1545 const struct lyd_node
*dnode
,
1546 union nb_resource
*resource
)
1548 /* TODO: implement me. */
1553 * XPath: /frr-interface:lib/interface/frr-isisd:isis/network-type
1555 static int lib_interface_isis_network_type_modify(enum nb_event event
,
1556 const struct lyd_node
*dnode
,
1557 union nb_resource
*resource
)
1559 /* TODO: implement me. */
1563 static int lib_interface_isis_network_type_delete(enum nb_event event
,
1564 const struct lyd_node
*dnode
)
1566 /* TODO: implement me. */
1571 * XPath: /frr-interface:lib/interface/frr-isisd:isis/passive
1573 static int lib_interface_isis_passive_create(enum nb_event event
,
1574 const struct lyd_node
*dnode
,
1575 union nb_resource
*resource
)
1577 /* TODO: implement me. */
1581 static int lib_interface_isis_passive_delete(enum nb_event event
,
1582 const struct lyd_node
*dnode
)
1584 /* TODO: implement me. */
1589 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password
1591 static int lib_interface_isis_password_create(enum nb_event event
,
1592 const struct lyd_node
*dnode
,
1593 union nb_resource
*resource
)
1595 /* TODO: implement me. */
1599 static int lib_interface_isis_password_delete(enum nb_event event
,
1600 const struct lyd_node
*dnode
)
1602 /* TODO: implement me. */
1607 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password/password
1610 lib_interface_isis_password_password_modify(enum nb_event event
,
1611 const struct lyd_node
*dnode
,
1612 union nb_resource
*resource
)
1614 /* TODO: implement me. */
1619 * XPath: /frr-interface:lib/interface/frr-isisd:isis/password/password-type
1622 lib_interface_isis_password_password_type_modify(enum nb_event event
,
1623 const struct lyd_node
*dnode
,
1624 union nb_resource
*resource
)
1626 /* TODO: implement me. */
1632 * /frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake
1634 static int lib_interface_isis_disable_three_way_handshake_create(
1635 enum nb_event event
, const struct lyd_node
*dnode
,
1636 union nb_resource
*resource
)
1638 /* TODO: implement me. */
1642 static int lib_interface_isis_disable_three_way_handshake_delete(
1643 enum nb_event event
, const struct lyd_node
*dnode
)
1645 /* TODO: implement me. */
1651 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast
1653 static int lib_interface_isis_multi_topology_ipv4_unicast_modify(
1654 enum nb_event event
, const struct lyd_node
*dnode
,
1655 union nb_resource
*resource
)
1657 /* TODO: implement me. */
1663 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast
1665 static int lib_interface_isis_multi_topology_ipv4_multicast_modify(
1666 enum nb_event event
, const struct lyd_node
*dnode
,
1667 union nb_resource
*resource
)
1669 /* TODO: implement me. */
1675 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management
1677 static int lib_interface_isis_multi_topology_ipv4_management_modify(
1678 enum nb_event event
, const struct lyd_node
*dnode
,
1679 union nb_resource
*resource
)
1681 /* TODO: implement me. */
1687 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast
1689 static int lib_interface_isis_multi_topology_ipv6_unicast_modify(
1690 enum nb_event event
, const struct lyd_node
*dnode
,
1691 union nb_resource
*resource
)
1693 /* TODO: implement me. */
1699 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast
1701 static int lib_interface_isis_multi_topology_ipv6_multicast_modify(
1702 enum nb_event event
, const struct lyd_node
*dnode
,
1703 union nb_resource
*resource
)
1705 /* TODO: implement me. */
1711 * /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management
1713 static int lib_interface_isis_multi_topology_ipv6_management_modify(
1714 enum nb_event event
, const struct lyd_node
*dnode
,
1715 union nb_resource
*resource
)
1717 /* TODO: implement me. */
1722 * XPath: /frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc
1724 static int lib_interface_isis_multi_topology_ipv6_dstsrc_modify(
1725 enum nb_event event
, const struct lyd_node
*dnode
,
1726 union nb_resource
*resource
)
1728 /* TODO: implement me. */
1732 /* clang-format off */
1733 const struct frr_yang_module_info frr_isisd_info
= {
1734 .name
= "frr-isisd",
1737 .xpath
= "/frr-isisd:isis/instance",
1738 .cbs
.create
= isis_instance_create
,
1739 .cbs
.delete = isis_instance_delete
,
1740 .cbs
.cli_show
= cli_show_router_isis
,
1741 .priority
= NB_DFLT_PRIORITY
- 1,
1744 .xpath
= "/frr-isisd:isis/instance/is-type",
1745 .cbs
.modify
= isis_instance_is_type_modify
,
1746 .cbs
.cli_show
= cli_show_isis_is_type
,
1749 .xpath
= "/frr-isisd:isis/instance/area-address",
1750 .cbs
.create
= isis_instance_area_address_create
,
1751 .cbs
.delete = isis_instance_area_address_delete
,
1752 .cbs
.cli_show
= cli_show_isis_area_address
,
1755 .xpath
= "/frr-isisd:isis/instance/dynamic-hostname",
1756 .cbs
.modify
= isis_instance_dynamic_hostname_modify
,
1757 .cbs
.cli_show
= cli_show_isis_dynamic_hostname
,
1760 .xpath
= "/frr-isisd:isis/instance/attached",
1761 .cbs
.create
= isis_instance_attached_create
,
1762 .cbs
.delete = isis_instance_attached_delete
,
1763 .cbs
.cli_show
= cli_show_isis_attached
,
1766 .xpath
= "/frr-isisd:isis/instance/overload",
1767 .cbs
.create
= isis_instance_overload_create
,
1768 .cbs
.delete = isis_instance_overload_delete
,
1769 .cbs
.cli_show
= cli_show_isis_overload
,
1772 .xpath
= "/frr-isisd:isis/instance/metric-style",
1773 .cbs
.modify
= isis_instance_metric_style_modify
,
1776 .xpath
= "/frr-isisd:isis/instance/purge-originator",
1777 .cbs
.create
= isis_instance_purge_originator_create
,
1778 .cbs
.delete = isis_instance_purge_originator_delete
,
1781 .xpath
= "/frr-isisd:isis/instance/lsp/mtu",
1782 .cbs
.modify
= isis_instance_lsp_mtu_modify
,
1785 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval/level-1",
1786 .cbs
.modify
= isis_instance_lsp_refresh_interval_level_1_modify
,
1789 .xpath
= "/frr-isisd:isis/instance/lsp/refresh-interval/level-2",
1790 .cbs
.modify
= isis_instance_lsp_refresh_interval_level_2_modify
,
1793 .xpath
= "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-1",
1794 .cbs
.modify
= isis_instance_lsp_maximum_lifetime_level_1_modify
,
1797 .xpath
= "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-2",
1798 .cbs
.modify
= isis_instance_lsp_maximum_lifetime_level_2_modify
,
1801 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval/level-1",
1802 .cbs
.modify
= isis_instance_lsp_generation_interval_level_1_modify
,
1805 .xpath
= "/frr-isisd:isis/instance/lsp/generation-interval/level-2",
1806 .cbs
.modify
= isis_instance_lsp_generation_interval_level_2_modify
,
1809 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay",
1810 .cbs
.create
= isis_instance_spf_ietf_backoff_delay_create
,
1811 .cbs
.delete = isis_instance_spf_ietf_backoff_delay_delete
,
1814 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay",
1815 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_init_delay_modify
,
1818 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay",
1819 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_short_delay_modify
,
1822 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay",
1823 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_long_delay_modify
,
1826 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down",
1827 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_hold_down_modify
,
1830 .xpath
= "/frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn",
1831 .cbs
.modify
= isis_instance_spf_ietf_backoff_delay_time_to_learn_modify
,
1834 .xpath
= "/frr-isisd:isis/instance/spf/minimum-interval/level-1",
1835 .cbs
.modify
= isis_instance_spf_minimum_interval_level_1_modify
,
1838 .xpath
= "/frr-isisd:isis/instance/spf/minimum-interval/level-2",
1839 .cbs
.modify
= isis_instance_spf_minimum_interval_level_2_modify
,
1842 .xpath
= "/frr-isisd:isis/instance/area-password",
1843 .cbs
.create
= isis_instance_area_password_create
,
1844 .cbs
.delete = isis_instance_area_password_delete
,
1847 .xpath
= "/frr-isisd:isis/instance/area-password/password",
1848 .cbs
.modify
= isis_instance_area_password_password_modify
,
1851 .xpath
= "/frr-isisd:isis/instance/area-password/password-type",
1852 .cbs
.modify
= isis_instance_area_password_password_type_modify
,
1855 .xpath
= "/frr-isisd:isis/instance/area-password/authenticate-snp",
1856 .cbs
.modify
= isis_instance_area_password_authenticate_snp_modify
,
1859 .xpath
= "/frr-isisd:isis/instance/domain-password",
1860 .cbs
.create
= isis_instance_domain_password_create
,
1861 .cbs
.delete = isis_instance_domain_password_delete
,
1864 .xpath
= "/frr-isisd:isis/instance/domain-password/password",
1865 .cbs
.modify
= isis_instance_domain_password_password_modify
,
1868 .xpath
= "/frr-isisd:isis/instance/domain-password/password-type",
1869 .cbs
.modify
= isis_instance_domain_password_password_type_modify
,
1872 .xpath
= "/frr-isisd:isis/instance/domain-password/authenticate-snp",
1873 .cbs
.modify
= isis_instance_domain_password_authenticate_snp_modify
,
1876 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4",
1877 .cbs
.create
= isis_instance_default_information_originate_ipv4_create
,
1878 .cbs
.delete = isis_instance_default_information_originate_ipv4_delete
,
1881 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/always",
1882 .cbs
.create
= isis_instance_default_information_originate_ipv4_always_create
,
1883 .cbs
.delete = isis_instance_default_information_originate_ipv4_always_delete
,
1886 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map",
1887 .cbs
.modify
= isis_instance_default_information_originate_ipv4_route_map_modify
,
1888 .cbs
.delete = isis_instance_default_information_originate_ipv4_route_map_delete
,
1891 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv4/metric",
1892 .cbs
.modify
= isis_instance_default_information_originate_ipv4_metric_modify
,
1893 .cbs
.delete = isis_instance_default_information_originate_ipv4_metric_delete
,
1896 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6",
1897 .cbs
.create
= isis_instance_default_information_originate_ipv6_create
,
1898 .cbs
.delete = isis_instance_default_information_originate_ipv6_delete
,
1901 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/always",
1902 .cbs
.create
= isis_instance_default_information_originate_ipv6_always_create
,
1903 .cbs
.delete = isis_instance_default_information_originate_ipv6_always_delete
,
1906 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map",
1907 .cbs
.modify
= isis_instance_default_information_originate_ipv6_route_map_modify
,
1908 .cbs
.delete = isis_instance_default_information_originate_ipv6_route_map_delete
,
1911 .xpath
= "/frr-isisd:isis/instance/default-information-originate/ipv6/metric",
1912 .cbs
.modify
= isis_instance_default_information_originate_ipv6_metric_modify
,
1913 .cbs
.delete = isis_instance_default_information_originate_ipv6_metric_delete
,
1916 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4",
1917 .cbs
.create
= isis_instance_redistribute_ipv4_create
,
1918 .cbs
.delete = isis_instance_redistribute_ipv4_delete
,
1921 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4/route-map",
1922 .cbs
.modify
= isis_instance_redistribute_ipv4_route_map_modify
,
1923 .cbs
.delete = isis_instance_redistribute_ipv4_route_map_delete
,
1926 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv4/metric",
1927 .cbs
.modify
= isis_instance_redistribute_ipv4_metric_modify
,
1928 .cbs
.delete = isis_instance_redistribute_ipv4_metric_delete
,
1931 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6",
1932 .cbs
.create
= isis_instance_redistribute_ipv6_create
,
1933 .cbs
.delete = isis_instance_redistribute_ipv6_delete
,
1936 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6/route-map",
1937 .cbs
.modify
= isis_instance_redistribute_ipv6_route_map_modify
,
1938 .cbs
.delete = isis_instance_redistribute_ipv6_route_map_delete
,
1941 .xpath
= "/frr-isisd:isis/instance/redistribute/ipv6/metric",
1942 .cbs
.modify
= isis_instance_redistribute_ipv6_metric_modify
,
1943 .cbs
.delete = isis_instance_redistribute_ipv6_metric_delete
,
1946 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-multicast",
1947 .cbs
.create
= isis_instance_multi_topology_ipv4_multicast_create
,
1948 .cbs
.delete = isis_instance_multi_topology_ipv4_multicast_delete
,
1951 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload",
1952 .cbs
.create
= isis_instance_multi_topology_ipv4_multicast_overload_create
,
1953 .cbs
.delete = isis_instance_multi_topology_ipv4_multicast_overload_delete
,
1956 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-management",
1957 .cbs
.create
= isis_instance_multi_topology_ipv4_management_create
,
1958 .cbs
.delete = isis_instance_multi_topology_ipv4_management_delete
,
1961 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload",
1962 .cbs
.create
= isis_instance_multi_topology_ipv4_management_overload_create
,
1963 .cbs
.delete = isis_instance_multi_topology_ipv4_management_overload_delete
,
1966 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-unicast",
1967 .cbs
.create
= isis_instance_multi_topology_ipv6_unicast_create
,
1968 .cbs
.delete = isis_instance_multi_topology_ipv6_unicast_delete
,
1971 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload",
1972 .cbs
.create
= isis_instance_multi_topology_ipv6_unicast_overload_create
,
1973 .cbs
.delete = isis_instance_multi_topology_ipv6_unicast_overload_delete
,
1976 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-multicast",
1977 .cbs
.create
= isis_instance_multi_topology_ipv6_multicast_create
,
1978 .cbs
.delete = isis_instance_multi_topology_ipv6_multicast_delete
,
1981 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload",
1982 .cbs
.create
= isis_instance_multi_topology_ipv6_multicast_overload_create
,
1983 .cbs
.delete = isis_instance_multi_topology_ipv6_multicast_overload_delete
,
1986 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-management",
1987 .cbs
.create
= isis_instance_multi_topology_ipv6_management_create
,
1988 .cbs
.delete = isis_instance_multi_topology_ipv6_management_delete
,
1991 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload",
1992 .cbs
.create
= isis_instance_multi_topology_ipv6_management_overload_create
,
1993 .cbs
.delete = isis_instance_multi_topology_ipv6_management_overload_delete
,
1996 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc",
1997 .cbs
.create
= isis_instance_multi_topology_ipv6_dstsrc_create
,
1998 .cbs
.delete = isis_instance_multi_topology_ipv6_dstsrc_delete
,
2001 .xpath
= "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload",
2002 .cbs
.create
= isis_instance_multi_topology_ipv6_dstsrc_overload_create
,
2003 .cbs
.delete = isis_instance_multi_topology_ipv6_dstsrc_overload_delete
,
2006 .xpath
= "/frr-isisd:isis/instance/log-adjacency-changes",
2007 .cbs
.create
= isis_instance_log_adjacency_changes_create
,
2008 .cbs
.delete = isis_instance_log_adjacency_changes_delete
,
2011 .xpath
= "/frr-isisd:isis/mpls-te",
2012 .cbs
.create
= isis_mpls_te_create
,
2013 .cbs
.delete = isis_mpls_te_delete
,
2016 .xpath
= "/frr-isisd:isis/mpls-te/router-address",
2017 .cbs
.modify
= isis_mpls_te_router_address_modify
,
2018 .cbs
.delete = isis_mpls_te_router_address_delete
,
2021 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis",
2022 .cbs
.create
= lib_interface_isis_create
,
2023 .cbs
.delete = lib_interface_isis_delete
,
2026 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/area-tag",
2027 .cbs
.modify
= lib_interface_isis_area_tag_modify
,
2030 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/circuit-type",
2031 .cbs
.modify
= lib_interface_isis_circuit_type_modify
,
2034 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing",
2035 .cbs
.create
= lib_interface_isis_ipv4_routing_create
,
2036 .cbs
.delete = lib_interface_isis_ipv4_routing_delete
,
2037 .cbs
.cli_show
= cli_show_ip_isis_ipv4
,
2040 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing",
2041 .cbs
.create
= lib_interface_isis_ipv6_routing_create
,
2042 .cbs
.delete = lib_interface_isis_ipv6_routing_delete
,
2043 .cbs
.cli_show
= cli_show_ip_isis_ipv6
,
2046 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1",
2047 .cbs
.modify
= lib_interface_isis_csnp_interval_level_1_modify
,
2050 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2",
2051 .cbs
.modify
= lib_interface_isis_csnp_interval_level_2_modify
,
2054 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1",
2055 .cbs
.modify
= lib_interface_isis_psnp_interval_level_1_modify
,
2058 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2",
2059 .cbs
.modify
= lib_interface_isis_psnp_interval_level_2_modify
,
2062 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/padding",
2063 .cbs
.modify
= lib_interface_isis_hello_padding_modify
,
2066 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1",
2067 .cbs
.modify
= lib_interface_isis_hello_interval_level_1_modify
,
2070 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2",
2071 .cbs
.modify
= lib_interface_isis_hello_interval_level_2_modify
,
2074 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1",
2075 .cbs
.modify
= lib_interface_isis_hello_multiplier_level_1_modify
,
2078 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2",
2079 .cbs
.modify
= lib_interface_isis_hello_multiplier_level_2_modify
,
2082 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/metric/level-1",
2083 .cbs
.modify
= lib_interface_isis_metric_level_1_modify
,
2086 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/metric/level-2",
2087 .cbs
.modify
= lib_interface_isis_metric_level_2_modify
,
2090 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/priority/level-1",
2091 .cbs
.modify
= lib_interface_isis_priority_level_1_modify
,
2094 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/priority/level-2",
2095 .cbs
.modify
= lib_interface_isis_priority_level_2_modify
,
2098 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/network-type",
2099 .cbs
.modify
= lib_interface_isis_network_type_modify
,
2100 .cbs
.delete = lib_interface_isis_network_type_delete
,
2103 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/passive",
2104 .cbs
.create
= lib_interface_isis_passive_create
,
2105 .cbs
.delete = lib_interface_isis_passive_delete
,
2108 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password",
2109 .cbs
.create
= lib_interface_isis_password_create
,
2110 .cbs
.delete = lib_interface_isis_password_delete
,
2113 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password/password",
2114 .cbs
.modify
= lib_interface_isis_password_password_modify
,
2117 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/password/password-type",
2118 .cbs
.modify
= lib_interface_isis_password_password_type_modify
,
2121 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake",
2122 .cbs
.create
= lib_interface_isis_disable_three_way_handshake_create
,
2123 .cbs
.delete = lib_interface_isis_disable_three_way_handshake_delete
,
2126 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast",
2127 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_unicast_modify
,
2130 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast",
2131 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_multicast_modify
,
2134 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management",
2135 .cbs
.modify
= lib_interface_isis_multi_topology_ipv4_management_modify
,
2138 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast",
2139 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_unicast_modify
,
2142 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast",
2143 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_multicast_modify
,
2146 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management",
2147 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_management_modify
,
2150 .xpath
= "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc",
2151 .cbs
.modify
= lib_interface_isis_multi_topology_ipv6_dstsrc_modify
,