1 /*
2  * Copyright (C) 2018        Volta Networks
3  *                           Emanuele Di Pascale
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License as published by the Free
7  * Software Foundation; either version 2 of the License, or (at your option)
8  * any later version.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; see the file COPYING; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 #include <zebra.h>
21 
22 #include "northbound.h"
23 #include "libfrr.h"
24 
25 #include "isisd/isis_nb.h"
26 
27 /* clang-format off */
28 const struct frr_yang_module_info frr_isisd_info = {
29 	.name = "frr-isisd",
30 	.nodes = {
31 		{
32 			.xpath = "/frr-isisd:isis/instance",
33 			.cbs = {
34 				.cli_show = cli_show_router_isis,
35 				.create = isis_instance_create,
36 				.destroy = isis_instance_destroy,
37 			},
38 			.priority = NB_DFLT_PRIORITY - 1,
39 		},
40 		{
41 			.xpath = "/frr-isisd:isis/instance/is-type",
42 			.cbs = {
43 				.cli_show = cli_show_isis_is_type,
44 				.modify = isis_instance_is_type_modify,
45 			},
46 		},
47 		{
48 			.xpath = "/frr-isisd:isis/instance/area-address",
49 			.cbs = {
50 				.cli_show = cli_show_isis_area_address,
51 				.create = isis_instance_area_address_create,
52 				.destroy = isis_instance_area_address_destroy,
53 			},
54 		},
55 		{
56 			.xpath = "/frr-isisd:isis/instance/dynamic-hostname",
57 			.cbs = {
58 				.cli_show = cli_show_isis_dynamic_hostname,
59 				.modify = isis_instance_dynamic_hostname_modify,
60 			},
61 		},
62 		{
63 			.xpath = "/frr-isisd:isis/instance/attached",
64 			.cbs = {
65 				.cli_show = cli_show_isis_attached,
66 				.modify = isis_instance_attached_modify,
67 			},
68 		},
69 		{
70 			.xpath = "/frr-isisd:isis/instance/overload",
71 			.cbs = {
72 				.cli_show = cli_show_isis_overload,
73 				.modify = isis_instance_overload_modify,
74 			},
75 		},
76 		{
77 			.xpath = "/frr-isisd:isis/instance/metric-style",
78 			.cbs = {
79 				.cli_show = cli_show_isis_metric_style,
80 				.modify = isis_instance_metric_style_modify,
81 			},
82 		},
83 		{
84 			.xpath = "/frr-isisd:isis/instance/purge-originator",
85 			.cbs = {
86 				.cli_show = cli_show_isis_purge_origin,
87 				.modify = isis_instance_purge_originator_modify,
88 			},
89 		},
90 		{
91 			.xpath = "/frr-isisd:isis/instance/lsp/mtu",
92 			.cbs = {
93 				.cli_show = cli_show_isis_lsp_mtu,
94 				.modify = isis_instance_lsp_mtu_modify,
95 			},
96 		},
97 		{
98 			.xpath = "/frr-isisd:isis/instance/lsp/timers",
99 			.cbs = {
100 				.cli_show = cli_show_isis_lsp_timers,
101 			},
102 		},
103 		{
104 			.xpath = "/frr-isisd:isis/instance/lsp/timers/level-1/refresh-interval",
105 			.cbs = {
106 				.modify = isis_instance_lsp_refresh_interval_level_1_modify,
107 			},
108 		},
109 		{
110 			.xpath = "/frr-isisd:isis/instance/lsp/timers/level-1/maximum-lifetime",
111 			.cbs = {
112 				.modify = isis_instance_lsp_maximum_lifetime_level_1_modify,
113 			},
114 		},
115 		{
116 			.xpath = "/frr-isisd:isis/instance/lsp/timers/level-1/generation-interval",
117 			.cbs = {
118 				.modify = isis_instance_lsp_generation_interval_level_1_modify,
119 			},
120 		},
121 		{
122 			.xpath = "/frr-isisd:isis/instance/lsp/timers/level-2/refresh-interval",
123 			.cbs = {
124 				.modify = isis_instance_lsp_refresh_interval_level_2_modify,
125 			},
126 		},
127 		{
128 			.xpath = "/frr-isisd:isis/instance/lsp/timers/level-2/maximum-lifetime",
129 			.cbs = {
130 				.modify = isis_instance_lsp_maximum_lifetime_level_2_modify,
131 			},
132 		},
133 		{
134 			.xpath = "/frr-isisd:isis/instance/lsp/timers/level-2/generation-interval",
135 			.cbs = {
136 				.modify = isis_instance_lsp_generation_interval_level_2_modify,
137 			},
138 		},
139 		{
140 			.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay",
141 			.cbs = {
142 				.apply_finish = ietf_backoff_delay_apply_finish,
143 				.cli_show = cli_show_isis_spf_ietf_backoff,
144 				.create = isis_instance_spf_ietf_backoff_delay_create,
145 				.destroy = isis_instance_spf_ietf_backoff_delay_destroy,
146 			},
147 		},
148 		{
149 			.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay",
150 			.cbs = {
151 				.modify = isis_instance_spf_ietf_backoff_delay_init_delay_modify,
152 			},
153 		},
154 		{
155 			.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay",
156 			.cbs = {
157 				.modify = isis_instance_spf_ietf_backoff_delay_short_delay_modify,
158 			},
159 		},
160 		{
161 			.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay",
162 			.cbs = {
163 				.modify = isis_instance_spf_ietf_backoff_delay_long_delay_modify,
164 			},
165 		},
166 		{
167 			.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down",
168 			.cbs = {
169 				.modify = isis_instance_spf_ietf_backoff_delay_hold_down_modify,
170 			},
171 		},
172 		{
173 			.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn",
174 			.cbs = {
175 				.modify = isis_instance_spf_ietf_backoff_delay_time_to_learn_modify,
176 			},
177 		},
178 		{
179 			.xpath = "/frr-isisd:isis/instance/spf/minimum-interval",
180 			.cbs = {
181 				.cli_show = cli_show_isis_spf_min_interval,
182 			},
183 		},
184 		{
185 			.xpath = "/frr-isisd:isis/instance/spf/minimum-interval/level-1",
186 			.cbs = {
187 				.modify = isis_instance_spf_minimum_interval_level_1_modify,
188 			},
189 		},
190 		{
191 			.xpath = "/frr-isisd:isis/instance/spf/minimum-interval/level-2",
192 			.cbs = {
193 				.modify = isis_instance_spf_minimum_interval_level_2_modify,
194 			},
195 		},
196 		{
197 			.xpath = "/frr-isisd:isis/instance/area-password",
198 			.cbs = {
199 				.apply_finish = area_password_apply_finish,
200 				.cli_show = cli_show_isis_area_pwd,
201 				.create = isis_instance_area_password_create,
202 				.destroy = isis_instance_area_password_destroy,
203 			},
204 		},
205 		{
206 			.xpath = "/frr-isisd:isis/instance/area-password/password",
207 			.cbs = {
208 				.modify = isis_instance_area_password_password_modify,
209 			},
210 		},
211 		{
212 			.xpath = "/frr-isisd:isis/instance/area-password/password-type",
213 			.cbs = {
214 				.modify = isis_instance_area_password_password_type_modify,
215 			},
216 		},
217 		{
218 			.xpath = "/frr-isisd:isis/instance/area-password/authenticate-snp",
219 			.cbs = {
220 				.modify = isis_instance_area_password_authenticate_snp_modify,
221 			},
222 		},
223 		{
224 			.xpath = "/frr-isisd:isis/instance/domain-password",
225 			.cbs = {
226 				.apply_finish = domain_password_apply_finish,
227 				.cli_show = cli_show_isis_domain_pwd,
228 				.create = isis_instance_domain_password_create,
229 				.destroy = isis_instance_domain_password_destroy,
230 			},
231 		},
232 		{
233 			.xpath = "/frr-isisd:isis/instance/domain-password/password",
234 			.cbs = {
235 				.modify = isis_instance_domain_password_password_modify,
236 			},
237 		},
238 		{
239 			.xpath = "/frr-isisd:isis/instance/domain-password/password-type",
240 			.cbs = {
241 				.modify = isis_instance_domain_password_password_type_modify,
242 			},
243 		},
244 		{
245 			.xpath = "/frr-isisd:isis/instance/domain-password/authenticate-snp",
246 			.cbs = {
247 				.modify = isis_instance_domain_password_authenticate_snp_modify,
248 			},
249 		},
250 		{
251 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4",
252 			.cbs = {
253 				.apply_finish = default_info_origin_ipv4_apply_finish,
254 				.cli_show = cli_show_isis_def_origin_ipv4,
255 				.create = isis_instance_default_information_originate_ipv4_create,
256 				.destroy = isis_instance_default_information_originate_ipv4_destroy,
257 			},
258 		},
259 		{
260 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/always",
261 			.cbs = {
262 				.modify = isis_instance_default_information_originate_ipv4_always_modify,
263 			},
264 		},
265 		{
266 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map",
267 			.cbs = {
268 				.destroy = isis_instance_default_information_originate_ipv4_route_map_destroy,
269 				.modify = isis_instance_default_information_originate_ipv4_route_map_modify,
270 			},
271 		},
272 		{
273 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/metric",
274 			.cbs = {
275 				.modify = isis_instance_default_information_originate_ipv4_metric_modify,
276 			},
277 		},
278 		{
279 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6",
280 			.cbs = {
281 				.apply_finish = default_info_origin_ipv6_apply_finish,
282 				.cli_show = cli_show_isis_def_origin_ipv6,
283 				.create = isis_instance_default_information_originate_ipv6_create,
284 				.destroy = isis_instance_default_information_originate_ipv6_destroy,
285 			},
286 		},
287 		{
288 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/always",
289 			.cbs = {
290 				.modify = isis_instance_default_information_originate_ipv6_always_modify,
291 			},
292 		},
293 		{
294 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map",
295 			.cbs = {
296 				.destroy = isis_instance_default_information_originate_ipv6_route_map_destroy,
297 				.modify = isis_instance_default_information_originate_ipv6_route_map_modify,
298 			},
299 		},
300 		{
301 			.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/metric",
302 			.cbs = {
303 				.modify = isis_instance_default_information_originate_ipv6_metric_modify,
304 			},
305 		},
306 		{
307 			.xpath = "/frr-isisd:isis/instance/redistribute/ipv4",
308 			.cbs = {
309 				.apply_finish = redistribute_ipv4_apply_finish,
310 				.cli_show = cli_show_isis_redistribute_ipv4,
311 				.create = isis_instance_redistribute_ipv4_create,
312 				.destroy = isis_instance_redistribute_ipv4_destroy,
313 			},
314 		},
315 		{
316 			.xpath = "/frr-isisd:isis/instance/redistribute/ipv4/route-map",
317 			.cbs = {
318 				.destroy = isis_instance_redistribute_ipv4_route_map_destroy,
319 				.modify = isis_instance_redistribute_ipv4_route_map_modify,
320 			},
321 		},
322 		{
323 			.xpath = "/frr-isisd:isis/instance/redistribute/ipv4/metric",
324 			.cbs = {
325 				.modify = isis_instance_redistribute_ipv4_metric_modify,
326 			},
327 		},
328 		{
329 			.xpath = "/frr-isisd:isis/instance/redistribute/ipv6",
330 			.cbs = {
331 				.apply_finish = redistribute_ipv6_apply_finish,
332 				.cli_show = cli_show_isis_redistribute_ipv6,
333 				.create = isis_instance_redistribute_ipv6_create,
334 				.destroy = isis_instance_redistribute_ipv6_destroy,
335 			},
336 		},
337 		{
338 			.xpath = "/frr-isisd:isis/instance/redistribute/ipv6/route-map",
339 			.cbs = {
340 				.destroy = isis_instance_redistribute_ipv6_route_map_destroy,
341 				.modify = isis_instance_redistribute_ipv6_route_map_modify,
342 			},
343 		},
344 		{
345 			.xpath = "/frr-isisd:isis/instance/redistribute/ipv6/metric",
346 			.cbs = {
347 				.modify = isis_instance_redistribute_ipv6_metric_modify,
348 			},
349 		},
350 		{
351 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast",
352 			.cbs = {
353 				.cli_show = cli_show_isis_mt_ipv4_multicast,
354 				.create = isis_instance_multi_topology_ipv4_multicast_create,
355 				.destroy = isis_instance_multi_topology_ipv4_multicast_destroy,
356 			},
357 		},
358 		{
359 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload",
360 			.cbs = {
361 				.modify = isis_instance_multi_topology_ipv4_multicast_overload_modify,
362 			},
363 		},
364 		{
365 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management",
366 			.cbs = {
367 				.cli_show = cli_show_isis_mt_ipv4_mgmt,
368 				.create = isis_instance_multi_topology_ipv4_management_create,
369 				.destroy = isis_instance_multi_topology_ipv4_management_destroy,
370 			},
371 		},
372 		{
373 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload",
374 			.cbs = {
375 				.modify = isis_instance_multi_topology_ipv4_management_overload_modify,
376 			},
377 		},
378 		{
379 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast",
380 			.cbs = {
381 				.cli_show = cli_show_isis_mt_ipv6_unicast,
382 				.create = isis_instance_multi_topology_ipv6_unicast_create,
383 				.destroy = isis_instance_multi_topology_ipv6_unicast_destroy,
384 			},
385 		},
386 		{
387 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload",
388 			.cbs = {
389 				.modify = isis_instance_multi_topology_ipv6_unicast_overload_modify,
390 			},
391 		},
392 		{
393 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast",
394 			.cbs = {
395 				.cli_show = cli_show_isis_mt_ipv6_multicast,
396 				.create = isis_instance_multi_topology_ipv6_multicast_create,
397 				.destroy = isis_instance_multi_topology_ipv6_multicast_destroy,
398 			},
399 		},
400 		{
401 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload",
402 			.cbs = {
403 				.modify = isis_instance_multi_topology_ipv6_multicast_overload_modify,
404 			},
405 		},
406 		{
407 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management",
408 			.cbs = {
409 				.cli_show = cli_show_isis_mt_ipv6_mgmt,
410 				.create = isis_instance_multi_topology_ipv6_management_create,
411 				.destroy = isis_instance_multi_topology_ipv6_management_destroy,
412 			},
413 		},
414 		{
415 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload",
416 			.cbs = {
417 				.modify = isis_instance_multi_topology_ipv6_management_overload_modify,
418 			},
419 		},
420 		{
421 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc",
422 			.cbs = {
423 				.cli_show = cli_show_isis_mt_ipv6_dstsrc,
424 				.create = isis_instance_multi_topology_ipv6_dstsrc_create,
425 				.destroy = isis_instance_multi_topology_ipv6_dstsrc_destroy,
426 			},
427 		},
428 		{
429 			.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload",
430 			.cbs = {
431 				.modify = isis_instance_multi_topology_ipv6_dstsrc_overload_modify,
432 			},
433 		},
434 		{
435 			.xpath = "/frr-isisd:isis/instance/log-adjacency-changes",
436 			.cbs = {
437 				.cli_show = cli_show_isis_log_adjacency,
438 				.modify = isis_instance_log_adjacency_changes_modify,
439 			},
440 		},
441 		{
442 			.xpath = "/frr-isisd:isis/instance/mpls-te",
443 			.cbs = {
444 				.cli_show = cli_show_isis_mpls_te,
445 				.create = isis_instance_mpls_te_create,
446 				.destroy = isis_instance_mpls_te_destroy,
447 			},
448 		},
449 		{
450 			.xpath = "/frr-isisd:isis/instance/mpls-te/router-address",
451 			.cbs = {
452 				.cli_show = cli_show_isis_mpls_te_router_addr,
453 				.destroy = isis_instance_mpls_te_router_address_destroy,
454 				.modify = isis_instance_mpls_te_router_address_modify,
455 			},
456 		},
457 		{
458 			.xpath = "/frr-isisd:isis/instance/segment-routing/enabled",
459 			.cbs = {
460 				.modify = isis_instance_segment_routing_enabled_modify,
461 				.cli_show = cli_show_isis_sr_enabled,
462 			},
463 		},
464 		{
465 			.xpath = "/frr-isisd:isis/instance/segment-routing/srgb",
466 			.cbs = {
467 				.apply_finish = isis_instance_segment_routing_srgb_apply_finish,
468 				.pre_validate = isis_instance_segment_routing_srgb_pre_validate,
469 				.cli_show = cli_show_isis_srgb,
470 			},
471 		},
472 		{
473 			.xpath = "/frr-isisd:isis/instance/segment-routing/srgb/lower-bound",
474 			.cbs = {
475 				.modify = isis_instance_segment_routing_srgb_lower_bound_modify,
476 			},
477 		},
478 		{
479 			.xpath = "/frr-isisd:isis/instance/segment-routing/srgb/upper-bound",
480 			.cbs = {
481 				.modify = isis_instance_segment_routing_srgb_upper_bound_modify,
482 			},
483 		},
484 		{
485 			.xpath = "/frr-isisd:isis/instance/segment-routing/srlb",
486 			.cbs = {
487 				.apply_finish = isis_instance_segment_routing_srlb_apply_finish,
488 				.pre_validate = isis_instance_segment_routing_srlb_pre_validate,
489 				.cli_show = cli_show_isis_srlb,
490 			},
491 		},
492 		{
493 			.xpath = "/frr-isisd:isis/instance/segment-routing/srlb/lower-bound",
494 			.cbs = {
495 				.modify = isis_instance_segment_routing_srlb_lower_bound_modify,
496 			},
497 		},
498 		{
499 			.xpath = "/frr-isisd:isis/instance/segment-routing/srlb/upper-bound",
500 			.cbs = {
501 				.modify = isis_instance_segment_routing_srlb_upper_bound_modify,
502 			},
503 		},
504 		{
505 			.xpath = "/frr-isisd:isis/instance/segment-routing/msd/node-msd",
506 			.cbs = {
507 				.modify = isis_instance_segment_routing_msd_node_msd_modify,
508 				.destroy = isis_instance_segment_routing_msd_node_msd_destroy,
509 				.cli_show = cli_show_isis_node_msd,
510 			},
511 		},
512 		{
513 			.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid",
514 			.cbs = {
515 				.create = isis_instance_segment_routing_prefix_sid_map_prefix_sid_create,
516 				.destroy = isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy,
517 				.pre_validate = isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate,
518 				.apply_finish = isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish,
519 				.cli_show = cli_show_isis_prefix_sid,
520 			},
521 		},
522 		{
523 			.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value-type",
524 			.cbs = {
525 				.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify,
526 			},
527 		},
528 		{
529 			.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value",
530 			.cbs = {
531 				.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify,
532 			},
533 		},
534 		{
535 			.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/last-hop-behavior",
536 			.cbs = {
537 				.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify,
538 			},
539 		},
540 		{
541 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis",
542 			.cbs = {
543 				.create = lib_interface_isis_create,
544 				.destroy = lib_interface_isis_destroy,
545 			},
546 		},
547 		{
548 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/area-tag",
549 			.cbs = {
550 				.modify = lib_interface_isis_area_tag_modify,
551 			},
552 		},
553 		{
554 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/vrf",
555 			.cbs = {
556 				.modify = lib_interface_isis_vrf_modify,
557 			},
558 		},
559 
560 		{
561 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/circuit-type",
562 			.cbs = {
563 				.cli_show = cli_show_ip_isis_circ_type,
564 				.modify = lib_interface_isis_circuit_type_modify,
565 			},
566 		},
567 		{
568 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing",
569 			.cbs = {
570 				.cli_show = cli_show_ip_isis_ipv4,
571 				.modify = lib_interface_isis_ipv4_routing_modify,
572 			},
573 		},
574 		{
575 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing",
576 			.cbs = {
577 				.cli_show = cli_show_ip_isis_ipv6,
578 				.modify = lib_interface_isis_ipv6_routing_modify,
579 			},
580 		},
581 		{
582 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/bfd-monitoring",
583 			.cbs = {
584 				.apply_finish = lib_interface_isis_bfd_monitoring_apply_finish,
585 				.cli_show = cli_show_ip_isis_bfd_monitoring,
586 			}
587 		},
588 		{
589 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/bfd-monitoring/enabled",
590 			.cbs = {
591 				.modify = lib_interface_isis_bfd_monitoring_enabled_modify,
592 			}
593 		},
594 		{
595 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/bfd-monitoring/profile",
596 			.cbs = {
597 				.modify = lib_interface_isis_bfd_monitoring_profile_modify,
598 				.destroy = lib_interface_isis_bfd_monitoring_profile_destroy,
599 			}
600 		},
601 		{
602 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval",
603 			.cbs = {
604 				.cli_show = cli_show_ip_isis_csnp_interval,
605 			},
606 		},
607 		{
608 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1",
609 			.cbs = {
610 				.modify = lib_interface_isis_csnp_interval_level_1_modify,
611 			},
612 		},
613 		{
614 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2",
615 			.cbs = {
616 				.modify = lib_interface_isis_csnp_interval_level_2_modify,
617 			},
618 		},
619 		{
620 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval",
621 			.cbs = {
622 				.cli_show = cli_show_ip_isis_psnp_interval,
623 			},
624 		},
625 		{
626 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1",
627 			.cbs = {
628 				.modify = lib_interface_isis_psnp_interval_level_1_modify,
629 			},
630 		},
631 		{
632 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2",
633 			.cbs = {
634 				.modify = lib_interface_isis_psnp_interval_level_2_modify,
635 			},
636 		},
637 		{
638 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/padding",
639 			.cbs = {
640 				.cli_show = cli_show_ip_isis_hello_padding,
641 				.modify = lib_interface_isis_hello_padding_modify,
642 			},
643 		},
644 		{
645 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/interval",
646 			.cbs = {
647 				.cli_show = cli_show_ip_isis_hello_interval,
648 			},
649 		},
650 		{
651 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1",
652 			.cbs = {
653 				.modify = lib_interface_isis_hello_interval_level_1_modify,
654 			},
655 		},
656 		{
657 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2",
658 			.cbs = {
659 				.modify = lib_interface_isis_hello_interval_level_2_modify,
660 			},
661 		},
662 		{
663 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier",
664 			.cbs = {
665 				.cli_show = cli_show_ip_isis_hello_multi,
666 			},
667 		},
668 		{
669 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1",
670 			.cbs = {
671 				.modify = lib_interface_isis_hello_multiplier_level_1_modify,
672 			},
673 		},
674 		{
675 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2",
676 			.cbs = {
677 				.modify = lib_interface_isis_hello_multiplier_level_2_modify,
678 			},
679 		},
680 		{
681 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/metric",
682 			.cbs = {
683 				.cli_show = cli_show_ip_isis_metric,
684 			},
685 		},
686 		{
687 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/metric/level-1",
688 			.cbs = {
689 				.modify = lib_interface_isis_metric_level_1_modify,
690 			},
691 		},
692 		{
693 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/metric/level-2",
694 			.cbs = {
695 				.modify = lib_interface_isis_metric_level_2_modify,
696 			},
697 		},
698 		{
699 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/priority",
700 			.cbs = {
701 				.cli_show = cli_show_ip_isis_priority,
702 			},
703 		},
704 		{
705 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/priority/level-1",
706 			.cbs = {
707 				.modify = lib_interface_isis_priority_level_1_modify,
708 			},
709 		},
710 		{
711 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/priority/level-2",
712 			.cbs = {
713 				.modify = lib_interface_isis_priority_level_2_modify,
714 			},
715 		},
716 		{
717 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/network-type",
718 			.cbs = {
719 				.cli_show = cli_show_ip_isis_network_type,
720 				.modify = lib_interface_isis_network_type_modify,
721 			},
722 		},
723 		{
724 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/passive",
725 			.cbs = {
726 				.cli_show = cli_show_ip_isis_passive,
727 				.modify = lib_interface_isis_passive_modify,
728 			},
729 		},
730 		{
731 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/password",
732 			.cbs = {
733 				.cli_show = cli_show_ip_isis_password,
734 				.create = lib_interface_isis_password_create,
735 				.destroy = lib_interface_isis_password_destroy,
736 			},
737 		},
738 		{
739 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/password/password",
740 			.cbs = {
741 				.modify = lib_interface_isis_password_password_modify,
742 			},
743 		},
744 		{
745 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/password/password-type",
746 			.cbs = {
747 				.modify = lib_interface_isis_password_password_type_modify,
748 			},
749 		},
750 		{
751 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake",
752 			.cbs = {
753 				.cli_show = cli_show_ip_isis_threeway_shake,
754 				.modify = lib_interface_isis_disable_three_way_handshake_modify,
755 			},
756 		},
757 		{
758 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast",
759 			.cbs = {
760 				.cli_show = cli_show_ip_isis_mt_ipv4_unicast,
761 				.modify = lib_interface_isis_multi_topology_ipv4_unicast_modify,
762 			},
763 		},
764 		{
765 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast",
766 			.cbs = {
767 				.cli_show = cli_show_ip_isis_mt_ipv4_multicast,
768 				.modify = lib_interface_isis_multi_topology_ipv4_multicast_modify,
769 			},
770 		},
771 		{
772 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management",
773 			.cbs = {
774 				.cli_show = cli_show_ip_isis_mt_ipv4_mgmt,
775 				.modify = lib_interface_isis_multi_topology_ipv4_management_modify,
776 			},
777 		},
778 		{
779 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast",
780 			.cbs = {
781 				.cli_show = cli_show_ip_isis_mt_ipv6_unicast,
782 				.modify = lib_interface_isis_multi_topology_ipv6_unicast_modify,
783 			},
784 		},
785 		{
786 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast",
787 			.cbs = {
788 				.cli_show = cli_show_ip_isis_mt_ipv6_multicast,
789 				.modify = lib_interface_isis_multi_topology_ipv6_multicast_modify,
790 			},
791 		},
792 		{
793 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management",
794 			.cbs = {
795 				.cli_show = cli_show_ip_isis_mt_ipv6_mgmt,
796 				.modify = lib_interface_isis_multi_topology_ipv6_management_modify,
797 			},
798 		},
799 		{
800 			.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc",
801 			.cbs = {
802 				.cli_show = cli_show_ip_isis_mt_ipv6_dstsrc,
803 				.modify = lib_interface_isis_multi_topology_ipv6_dstsrc_modify,
804 			},
805 		},
806 		{
807 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis",
808 			.cbs = {
809 				.get_elem = lib_interface_state_isis_get_elem,
810 			}
811 		},
812 		{
813 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency",
814 			.cbs = {
815 				.get_next = lib_interface_state_isis_adjacencies_adjacency_get_next,
816 			}
817 		},
818 		{
819 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-sys-type",
820 			.cbs = {
821 				.get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_sys_type_get_elem,
822 			}
823 		},
824 		{
825 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-sysid",
826 			.cbs = {
827 				.get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_sysid_get_elem,
828 			}
829 		},
830 		{
831 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-extended-circuit-id",
832 			.cbs = {
833 				.get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem,
834 			}
835 		},
836 		{
837 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-snpa",
838 			.cbs = {
839 				.get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_snpa_get_elem,
840 			}
841 		},
842 		{
843 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/hold-timer",
844 			.cbs = {
845 				.get_elem = lib_interface_state_isis_adjacencies_adjacency_hold_timer_get_elem,
846 			}
847 		},
848 		{
849 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/neighbor-priority",
850 			.cbs = {
851 				.get_elem = lib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem,
852 			}
853 		},
854 		{
855 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/state",
856 			.cbs = {
857 				.get_elem = lib_interface_state_isis_adjacencies_adjacency_state_get_elem,
858 			}
859 		},
860 		{
861 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-changes",
862 			.cbs = {
863 				.get_elem = lib_interface_state_isis_event_counters_adjacency_changes_get_elem,
864 			}
865 		},
866 		{
867 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-number",
868 			.cbs = {
869 				.get_elem = lib_interface_state_isis_event_counters_adjacency_number_get_elem,
870 			}
871 		},
872 		{
873 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/init-fails",
874 			.cbs = {
875 				.get_elem = lib_interface_state_isis_event_counters_init_fails_get_elem,
876 			}
877 		},
878 		{
879 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-rejects",
880 			.cbs = {
881 				.get_elem = lib_interface_state_isis_event_counters_adjacency_rejects_get_elem,
882 			}
883 		},
884 		{
885 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/id-len-mismatch",
886 			.cbs = {
887 				.get_elem = lib_interface_state_isis_event_counters_id_len_mismatch_get_elem,
888 			}
889 		},
890 		{
891 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/max-area-addresses-mismatch",
892 			.cbs = {
893 				.get_elem = lib_interface_state_isis_event_counters_max_area_addresses_mismatch_get_elem,
894 			}
895 		},
896 		{
897 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/authentication-type-fails",
898 			.cbs = {
899 				.get_elem = lib_interface_state_isis_event_counters_authentication_type_fails_get_elem,
900 			}
901 		},
902 		{
903 			.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/authentication-fails",
904 			.cbs = {
905 				.get_elem = lib_interface_state_isis_event_counters_authentication_fails_get_elem,
906 			}
907 		},
908 		{
909 			.xpath = NULL,
910 		},
911 	}
912 };
913