Line data Source code
1 : /*
2 : * PIM for IPv6 FRR
3 : * Copyright (C) 2022 Vmware, Inc.
4 : * Mobashshera Rasool <mrasool@vmware.com>
5 : *
6 : * This program is free software; you can redistribute it and/or modify
7 : * it under the terms of the GNU General Public License as published by
8 : * the Free Software Foundation; either version 2 of the License, or
9 : * (at your option) any later version.
10 : *
11 : * This program is distributed in the hope that it will be useful, but
12 : * WITHOUT ANY WARRANTY; without even the implied warranty of
13 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 : * General Public License for more details.
15 : *
16 : * You should have received a copy of the GNU General Public License along
17 : * with this program; see the file COPYING; if not, write to the Free Software
18 : * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 : */
20 :
21 : #include <zebra.h>
22 :
23 : #include "lib/json.h"
24 : #include "command.h"
25 : #include "if.h"
26 : #include "prefix.h"
27 : #include "zclient.h"
28 : #include "plist.h"
29 : #include "hash.h"
30 : #include "nexthop.h"
31 : #include "vrf.h"
32 : #include "ferr.h"
33 :
34 : #include "pimd.h"
35 : #include "pim6_cmd.h"
36 : #include "pim_cmd_common.h"
37 : #include "pim_vty.h"
38 : #include "lib/northbound_cli.h"
39 : #include "pim_errors.h"
40 : #include "pim_nb.h"
41 : #include "pim_addr.h"
42 : #include "pim_nht.h"
43 : #include "pim_bsm.h"
44 : #include "pim_iface.h"
45 : #include "pim_zebra.h"
46 : #include "pim_instance.h"
47 :
48 : #include "pimd/pim6_cmd_clippy.c"
49 :
50 : static struct cmd_node debug_node = {
51 : .name = "debug",
52 : .node = DEBUG_NODE,
53 : .prompt = "",
54 : .config_write = pim_debug_config_write,
55 : };
56 :
57 0 : DEFPY (ipv6_pim_joinprune_time,
58 : ipv6_pim_joinprune_time_cmd,
59 : "ipv6 pim join-prune-interval (1-65535)$jpi",
60 : IPV6_STR
61 : PIM_STR
62 : "Join Prune Send Interval\n"
63 : "Seconds\n")
64 : {
65 0 : return pim_process_join_prune_cmd(vty, jpi_str);
66 : }
67 :
68 0 : DEFPY (no_ipv6_pim_joinprune_time,
69 : no_ipv6_pim_joinprune_time_cmd,
70 : "no ipv6 pim join-prune-interval [(1-65535)]",
71 : NO_STR
72 : IPV6_STR
73 : PIM_STR
74 : "Join Prune Send Interval\n"
75 : IGNORED_IN_NO_STR)
76 : {
77 0 : return pim_process_no_join_prune_cmd(vty);
78 : }
79 :
80 0 : DEFPY (ipv6_pim_spt_switchover_infinity,
81 : ipv6_pim_spt_switchover_infinity_cmd,
82 : "ipv6 pim spt-switchover infinity-and-beyond",
83 : IPV6_STR
84 : PIM_STR
85 : "SPT-Switchover\n"
86 : "Never switch to SPT Tree\n")
87 : {
88 0 : return pim_process_spt_switchover_infinity_cmd(vty);
89 : }
90 :
91 0 : DEFPY (ipv6_pim_spt_switchover_infinity_plist,
92 : ipv6_pim_spt_switchover_infinity_plist_cmd,
93 : "ipv6 pim spt-switchover infinity-and-beyond prefix-list WORD$plist",
94 : IPV6_STR
95 : PIM_STR
96 : "SPT-Switchover\n"
97 : "Never switch to SPT Tree\n"
98 : "Prefix-List to control which groups to switch\n"
99 : "Prefix-List name\n")
100 : {
101 0 : return pim_process_spt_switchover_prefixlist_cmd(vty, plist);
102 : }
103 :
104 0 : DEFPY (no_ipv6_pim_spt_switchover_infinity,
105 : no_ipv6_pim_spt_switchover_infinity_cmd,
106 : "no ipv6 pim spt-switchover infinity-and-beyond",
107 : NO_STR
108 : IPV6_STR
109 : PIM_STR
110 : "SPT_Switchover\n"
111 : "Never switch to SPT Tree\n")
112 : {
113 0 : return pim_process_no_spt_switchover_cmd(vty);
114 : }
115 :
116 0 : DEFPY (no_ipv6_pim_spt_switchover_infinity_plist,
117 : no_ipv6_pim_spt_switchover_infinity_plist_cmd,
118 : "no ipv6 pim spt-switchover infinity-and-beyond prefix-list WORD",
119 : NO_STR
120 : IPV6_STR
121 : PIM_STR
122 : "SPT_Switchover\n"
123 : "Never switch to SPT Tree\n"
124 : "Prefix-List to control which groups to switch\n"
125 : "Prefix-List name\n")
126 : {
127 0 : return pim_process_no_spt_switchover_cmd(vty);
128 : }
129 :
130 0 : DEFPY (ipv6_pim_packets,
131 : ipv6_pim_packets_cmd,
132 : "ipv6 pim packets (1-255)",
133 : IPV6_STR
134 : PIM_STR
135 : "packets to process at one time per fd\n"
136 : "Number of packets\n")
137 : {
138 0 : return pim_process_pim_packet_cmd(vty, packets_str);
139 : }
140 :
141 0 : DEFPY (no_ipv6_pim_packets,
142 : no_ipv6_pim_packets_cmd,
143 : "no ipv6 pim packets [(1-255)]",
144 : NO_STR
145 : IPV6_STR
146 : PIM_STR
147 : "packets to process at one time per fd\n"
148 : IGNORED_IN_NO_STR)
149 : {
150 0 : return pim_process_no_pim_packet_cmd(vty);
151 : }
152 :
153 0 : DEFPY (ipv6_pim_keep_alive,
154 : ipv6_pim_keep_alive_cmd,
155 : "ipv6 pim keep-alive-timer (1-65535)$kat",
156 : IPV6_STR
157 : PIM_STR
158 : "Keep alive Timer\n"
159 : "Seconds\n")
160 : {
161 0 : return pim_process_keepalivetimer_cmd(vty, kat_str);
162 : }
163 :
164 0 : DEFPY (no_ipv6_pim_keep_alive,
165 : no_ipv6_pim_keep_alive_cmd,
166 : "no ipv6 pim keep-alive-timer [(1-65535)]",
167 : NO_STR
168 : IPV6_STR
169 : PIM_STR
170 : "Keep alive Timer\n"
171 : IGNORED_IN_NO_STR)
172 : {
173 0 : return pim_process_no_keepalivetimer_cmd(vty);
174 : }
175 :
176 0 : DEFPY (ipv6_pim_rp_keep_alive,
177 : ipv6_pim_rp_keep_alive_cmd,
178 : "ipv6 pim rp keep-alive-timer (1-65535)$kat",
179 : IPV6_STR
180 : PIM_STR
181 : "Rendezvous Point\n"
182 : "Keep alive Timer\n"
183 : "Seconds\n")
184 : {
185 0 : return pim_process_rp_kat_cmd(vty, kat_str);
186 : }
187 :
188 0 : DEFPY (no_ipv6_pim_rp_keep_alive,
189 : no_ipv6_pim_rp_keep_alive_cmd,
190 : "no ipv6 pim rp keep-alive-timer [(1-65535)]",
191 : NO_STR
192 : IPV6_STR
193 : PIM_STR
194 : "Rendezvous Point\n"
195 : "Keep alive Timer\n"
196 : IGNORED_IN_NO_STR)
197 : {
198 0 : return pim_process_no_rp_kat_cmd(vty);
199 : }
200 :
201 0 : DEFPY (ipv6_pim_register_suppress,
202 : ipv6_pim_register_suppress_cmd,
203 : "ipv6 pim register-suppress-time (1-65535)$rst",
204 : IPV6_STR
205 : PIM_STR
206 : "Register Suppress Timer\n"
207 : "Seconds\n")
208 : {
209 0 : return pim_process_register_suppress_cmd(vty, rst_str);
210 : }
211 :
212 0 : DEFPY (no_ipv6_pim_register_suppress,
213 : no_ipv6_pim_register_suppress_cmd,
214 : "no ipv6 pim register-suppress-time [(1-65535)]",
215 : NO_STR
216 : IPV6_STR
217 : PIM_STR
218 : "Register Suppress Timer\n"
219 : IGNORED_IN_NO_STR)
220 : {
221 0 : return pim_process_no_register_suppress_cmd(vty);
222 : }
223 :
224 20 : DEFPY (interface_ipv6_pim,
225 : interface_ipv6_pim_cmd,
226 : "ipv6 pim [passive$passive]",
227 : IPV6_STR
228 : PIM_STR
229 : "Disable exchange of protocol packets\n")
230 : {
231 20 : int ret;
232 :
233 20 : ret = pim_process_ip_pim_cmd(vty);
234 :
235 20 : if (ret != NB_OK)
236 : return ret;
237 :
238 20 : if (passive)
239 0 : return pim_process_ip_pim_passive_cmd(vty, true);
240 :
241 : return CMD_SUCCESS;
242 : }
243 :
244 0 : DEFPY (interface_no_ipv6_pim,
245 : interface_no_ipv6_pim_cmd,
246 : "no ipv6 pim [passive$passive]",
247 : NO_STR
248 : IPV6_STR
249 : PIM_STR
250 : "Disable exchange of protocol packets\n")
251 : {
252 0 : if (passive)
253 0 : return pim_process_ip_pim_passive_cmd(vty, false);
254 :
255 0 : return pim_process_no_ip_pim_cmd(vty);
256 : }
257 :
258 0 : DEFPY (interface_ipv6_pim_drprio,
259 : interface_ipv6_pim_drprio_cmd,
260 : "ipv6 pim drpriority (1-4294967295)",
261 : IPV6_STR
262 : PIM_STR
263 : "Set the Designated Router Election Priority\n"
264 : "Value of the new DR Priority\n")
265 : {
266 0 : return pim_process_ip_pim_drprio_cmd(vty, drpriority_str);
267 : }
268 :
269 0 : DEFPY (interface_no_ipv6_pim_drprio,
270 : interface_no_ipv6_pim_drprio_cmd,
271 : "no ipv6 pim drpriority [(1-4294967295)]",
272 : NO_STR
273 : IPV6_STR
274 : PIM_STR
275 : "Revert the Designated Router Priority to default\n"
276 : "Old Value of the Priority\n")
277 : {
278 0 : return pim_process_no_ip_pim_drprio_cmd(vty);
279 : }
280 :
281 12 : DEFPY (interface_ipv6_pim_hello,
282 : interface_ipv6_pim_hello_cmd,
283 : "ipv6 pim hello (1-65535) [(1-65535)]$hold",
284 : IPV6_STR
285 : PIM_STR
286 : IFACE_PIM_HELLO_STR
287 : IFACE_PIM_HELLO_TIME_STR
288 : IFACE_PIM_HELLO_HOLD_STR)
289 : {
290 12 : return pim_process_ip_pim_hello_cmd(vty, hello_str, hold_str);
291 : }
292 :
293 0 : DEFPY (interface_no_ipv6_pim_hello,
294 : interface_no_ipv6_pim_hello_cmd,
295 : "no ipv6 pim hello [(1-65535) [(1-65535)]]",
296 : NO_STR
297 : IPV6_STR
298 : PIM_STR
299 : IFACE_PIM_HELLO_STR
300 : IGNORED_IN_NO_STR
301 : IGNORED_IN_NO_STR)
302 : {
303 0 : return pim_process_no_ip_pim_hello_cmd(vty);
304 : }
305 :
306 0 : DEFPY (interface_ipv6_pim_activeactive,
307 : interface_ipv6_pim_activeactive_cmd,
308 : "[no] ipv6 pim active-active",
309 : NO_STR
310 : IPV6_STR
311 : PIM_STR
312 : "Mark interface as Active-Active for MLAG operations\n")
313 : {
314 0 : return pim_process_ip_pim_activeactive_cmd(vty, no);
315 : }
316 :
317 0 : DEFPY_HIDDEN (interface_ipv6_pim_ssm,
318 : interface_ipv6_pim_ssm_cmd,
319 : "ipv6 pim ssm",
320 : IPV6_STR
321 : PIM_STR
322 : IFACE_PIM_STR)
323 : {
324 0 : int ret;
325 :
326 0 : ret = pim_process_ip_pim_cmd(vty);
327 :
328 0 : if (ret != NB_OK)
329 : return ret;
330 :
331 0 : vty_out(vty,
332 : "Enabled PIM SM on interface; configure PIM SSM range if needed\n");
333 :
334 0 : return NB_OK;
335 : }
336 :
337 0 : DEFPY_HIDDEN (interface_no_ipv6_pim_ssm,
338 : interface_no_ipv6_pim_ssm_cmd,
339 : "no ipv6 pim ssm",
340 : NO_STR
341 : IPV6_STR
342 : PIM_STR
343 : IFACE_PIM_STR)
344 : {
345 0 : return pim_process_no_ip_pim_cmd(vty);
346 : }
347 :
348 0 : DEFPY_HIDDEN (interface_ipv6_pim_sm,
349 : interface_ipv6_pim_sm_cmd,
350 : "ipv6 pim sm",
351 : IPV6_STR
352 : PIM_STR
353 : IFACE_PIM_SM_STR)
354 : {
355 0 : return pim_process_ip_pim_cmd(vty);
356 : }
357 :
358 0 : DEFPY_HIDDEN (interface_no_ipv6_pim_sm,
359 : interface_no_ipv6_pim_sm_cmd,
360 : "no ipv6 pim sm",
361 : NO_STR
362 : IPV6_STR
363 : PIM_STR
364 : IFACE_PIM_SM_STR)
365 : {
366 0 : return pim_process_no_ip_pim_cmd(vty);
367 : }
368 :
369 : /* boundaries */
370 0 : DEFPY (interface_ipv6_pim_boundary_oil,
371 : interface_ipv6_pim_boundary_oil_cmd,
372 : "ipv6 multicast boundary oil WORD",
373 : IPV6_STR
374 : "Generic multicast configuration options\n"
375 : "Define multicast boundary\n"
376 : "Filter OIL by group using prefix list\n"
377 : "Prefix list to filter OIL with\n")
378 : {
379 0 : return pim_process_ip_pim_boundary_oil_cmd(vty, oil);
380 : }
381 :
382 0 : DEFPY (interface_no_ipv6_pim_boundary_oil,
383 : interface_no_ipv6_pim_boundary_oil_cmd,
384 : "no ipv6 multicast boundary oil [WORD]",
385 : NO_STR
386 : IPV6_STR
387 : "Generic multicast configuration options\n"
388 : "Define multicast boundary\n"
389 : "Filter OIL by group using prefix list\n"
390 : "Prefix list to filter OIL with\n")
391 : {
392 0 : return pim_process_no_ip_pim_boundary_oil_cmd(vty);
393 : }
394 :
395 0 : DEFPY (interface_ipv6_mroute,
396 : interface_ipv6_mroute_cmd,
397 : "ipv6 mroute INTERFACE X:X::X:X$group [X:X::X:X]$source",
398 : IPV6_STR
399 : "Add multicast route\n"
400 : "Outgoing interface name\n"
401 : "Group address\n"
402 : "Source address\n")
403 : {
404 0 : return pim_process_ip_mroute_cmd(vty, interface, group_str, source_str);
405 : }
406 :
407 0 : DEFPY (interface_no_ipv6_mroute,
408 : interface_no_ipv6_mroute_cmd,
409 : "no ipv6 mroute INTERFACE X:X::X:X$group [X:X::X:X]$source",
410 : NO_STR
411 : IPV6_STR
412 : "Add multicast route\n"
413 : "Outgoing interface name\n"
414 : "Group Address\n"
415 : "Source Address\n")
416 : {
417 0 : return pim_process_no_ip_mroute_cmd(vty, interface, group_str,
418 : source_str);
419 : }
420 :
421 2 : DEFPY (ipv6_pim_rp,
422 : ipv6_pim_rp_cmd,
423 : "ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
424 : IPV6_STR
425 : PIM_STR
426 : "Rendezvous Point\n"
427 : "ipv6 address of RP\n"
428 : "Group Address range to cover\n")
429 : {
430 2 : const char *group_str = (gp_str) ? gp_str : "FF00::0/8";
431 :
432 2 : return pim_process_rp_cmd(vty, rp_str, group_str);
433 : }
434 :
435 0 : DEFPY (no_ipv6_pim_rp,
436 : no_ipv6_pim_rp_cmd,
437 : "no ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
438 : NO_STR
439 : IPV6_STR
440 : PIM_STR
441 : "Rendezvous Point\n"
442 : "ipv6 address of RP\n"
443 : "Group Address range to cover\n")
444 : {
445 0 : const char *group_str = (gp_str) ? gp_str : "FF00::0/8";
446 :
447 0 : return pim_process_no_rp_cmd(vty, rp_str, group_str);
448 : }
449 :
450 0 : DEFPY (ipv6_pim_rp_prefix_list,
451 : ipv6_pim_rp_prefix_list_cmd,
452 : "ipv6 pim rp X:X::X:X$rp prefix-list WORD$plist",
453 : IPV6_STR
454 : PIM_STR
455 : "Rendezvous Point\n"
456 : "ipv6 address of RP\n"
457 : "group prefix-list filter\n"
458 : "Name of a prefix-list\n")
459 : {
460 0 : return pim_process_rp_plist_cmd(vty, rp_str, plist);
461 : }
462 :
463 0 : DEFPY (no_ipv6_pim_rp_prefix_list,
464 : no_ipv6_pim_rp_prefix_list_cmd,
465 : "no ipv6 pim rp X:X::X:X$rp prefix-list WORD$plist",
466 : NO_STR
467 : IPV6_STR
468 : PIM_STR
469 : "Rendezvous Point\n"
470 : "ipv6 address of RP\n"
471 : "group prefix-list filter\n"
472 : "Name of a prefix-list\n")
473 : {
474 0 : return pim_process_no_rp_plist_cmd(vty, rp_str, plist);
475 : }
476 :
477 0 : DEFPY (ipv6_pim_bsm,
478 : ipv6_pim_bsm_cmd,
479 : "ipv6 pim bsm",
480 : IPV6_STR
481 : PIM_STR
482 : "Enable BSM support on the interface\n")
483 : {
484 0 : return pim_process_bsm_cmd(vty);
485 : }
486 :
487 0 : DEFPY (no_ipv6_pim_bsm,
488 : no_ipv6_pim_bsm_cmd,
489 : "no ipv6 pim bsm",
490 : NO_STR
491 : IPV6_STR
492 : PIM_STR
493 : "Enable BSM support on the interface\n")
494 : {
495 0 : return pim_process_no_bsm_cmd(vty);
496 : }
497 :
498 0 : DEFPY (ipv6_pim_ucast_bsm,
499 : ipv6_pim_ucast_bsm_cmd,
500 : "ipv6 pim unicast-bsm",
501 : IPV6_STR
502 : PIM_STR
503 : "Accept/Send unicast BSM on the interface\n")
504 : {
505 0 : return pim_process_unicast_bsm_cmd(vty);
506 : }
507 :
508 0 : DEFPY (no_ipv6_pim_ucast_bsm,
509 : no_ipv6_pim_ucast_bsm_cmd,
510 : "no ipv6 pim unicast-bsm",
511 : NO_STR
512 : IPV6_STR
513 : PIM_STR
514 : "Accept/Send unicast BSM on the interface\n")
515 : {
516 0 : return pim_process_no_unicast_bsm_cmd(vty);
517 : }
518 :
519 0 : DEFPY (ipv6_ssmpingd,
520 : ipv6_ssmpingd_cmd,
521 : "ipv6 ssmpingd [X:X::X:X]$source",
522 : IPV6_STR
523 : CONF_SSMPINGD_STR
524 : "Source address\n")
525 : {
526 0 : const char *src_str = (source_str) ? source_str : "::";
527 :
528 0 : return pim_process_ssmpingd_cmd(vty, NB_OP_CREATE, src_str);
529 : }
530 :
531 :
532 0 : DEFPY (no_ipv6_ssmpingd,
533 : no_ipv6_ssmpingd_cmd,
534 : "no ipv6 ssmpingd [X:X::X:X]$source",
535 : NO_STR
536 : IPV6_STR
537 : CONF_SSMPINGD_STR
538 : "Source address\n")
539 : {
540 0 : const char *src_str = (source_str) ? source_str : "::";
541 :
542 0 : return pim_process_ssmpingd_cmd(vty, NB_OP_DESTROY, src_str);
543 : }
544 :
545 0 : DEFPY (interface_ipv6_mld_join,
546 : interface_ipv6_mld_join_cmd,
547 : "ipv6 mld join X:X::X:X$group [X:X::X:X$source]",
548 : IPV6_STR
549 : IFACE_MLD_STR
550 : "MLD join multicast group\n"
551 : "Multicast group address\n"
552 : "Source address\n")
553 : {
554 0 : char xpath[XPATH_MAXLEN];
555 :
556 0 : if (source_str) {
557 0 : if (IPV6_ADDR_SAME(&source, &in6addr_any)) {
558 0 : vty_out(vty, "Bad source address %s\n", source_str);
559 0 : return CMD_WARNING_CONFIG_FAILED;
560 : }
561 : } else
562 : source_str = "::";
563 :
564 0 : snprintf(xpath, sizeof(xpath), FRR_GMP_JOIN_XPATH, "frr-routing:ipv6",
565 : group_str, source_str);
566 :
567 0 : nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
568 :
569 0 : return nb_cli_apply_changes(vty, NULL);
570 : }
571 :
572 0 : DEFPY (interface_no_ipv6_mld_join,
573 : interface_no_ipv6_mld_join_cmd,
574 : "no ipv6 mld join X:X::X:X$group [X:X::X:X$source]",
575 : NO_STR
576 : IPV6_STR
577 : IFACE_MLD_STR
578 : "MLD join multicast group\n"
579 : "Multicast group address\n"
580 : "Source address\n")
581 : {
582 0 : char xpath[XPATH_MAXLEN];
583 :
584 0 : if (source_str) {
585 0 : if (IPV6_ADDR_SAME(&source, &in6addr_any)) {
586 0 : vty_out(vty, "Bad source address %s\n", source_str);
587 0 : return CMD_WARNING_CONFIG_FAILED;
588 : }
589 : } else
590 : source_str = "::";
591 :
592 0 : snprintf(xpath, sizeof(xpath), FRR_GMP_JOIN_XPATH, "frr-routing:ipv6",
593 : group_str, source_str);
594 :
595 0 : nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL);
596 :
597 0 : return nb_cli_apply_changes(vty, NULL);
598 : }
599 :
600 15 : DEFPY (interface_ipv6_mld,
601 : interface_ipv6_mld_cmd,
602 : "ipv6 mld",
603 : IPV6_STR
604 : IFACE_MLD_STR)
605 : {
606 15 : nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true");
607 :
608 15 : return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
609 : "frr-routing:ipv6");
610 : }
611 :
612 0 : DEFPY (interface_no_ipv6_mld,
613 : interface_no_ipv6_mld_cmd,
614 : "no ipv6 mld",
615 : NO_STR
616 : IPV6_STR
617 : IFACE_MLD_STR)
618 : {
619 0 : const struct lyd_node *pim_enable_dnode;
620 0 : char pim_if_xpath[XPATH_MAXLEN + 64];
621 :
622 0 : snprintf(pim_if_xpath, sizeof(pim_if_xpath),
623 : "%s/frr-pim:pim/address-family[address-family='%s']",
624 0 : VTY_CURR_XPATH, "frr-routing:ipv6");
625 :
626 0 : pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
627 0 : FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH,
628 : "frr-routing:ipv6");
629 0 : if (!pim_enable_dnode) {
630 0 : nb_cli_enqueue_change(vty, pim_if_xpath, NB_OP_DESTROY, NULL);
631 0 : nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
632 : } else {
633 0 : if (!yang_dnode_get_bool(pim_enable_dnode, ".")) {
634 0 : nb_cli_enqueue_change(vty, pim_if_xpath, NB_OP_DESTROY,
635 : NULL);
636 0 : nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
637 : } else
638 0 : nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
639 : "false");
640 : }
641 :
642 0 : return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
643 : "frr-routing:ipv6");
644 : }
645 :
646 0 : DEFPY (interface_ipv6_mld_version,
647 : interface_ipv6_mld_version_cmd,
648 : "ipv6 mld version (1-2)$version",
649 : IPV6_STR
650 : IFACE_MLD_STR
651 : "MLD version\n"
652 : "MLD version number\n")
653 : {
654 0 : nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true");
655 0 : nb_cli_enqueue_change(vty, "./mld-version", NB_OP_MODIFY, version_str);
656 :
657 0 : return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
658 : "frr-routing:ipv6");
659 : }
660 :
661 0 : DEFPY (interface_no_ipv6_mld_version,
662 : interface_no_ipv6_mld_version_cmd,
663 : "no ipv6 mld version [(1-2)]",
664 : NO_STR
665 : IPV6_STR
666 : IFACE_MLD_STR
667 : "MLD version\n"
668 : "MLD version number\n")
669 : {
670 0 : nb_cli_enqueue_change(vty, "./mld-version", NB_OP_DESTROY, NULL);
671 :
672 0 : return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
673 : "frr-routing:ipv6");
674 : }
675 :
676 8 : DEFPY (interface_ipv6_mld_query_interval,
677 : interface_ipv6_mld_query_interval_cmd,
678 : "ipv6 mld query-interval (1-65535)$q_interval",
679 : IPV6_STR
680 : IFACE_MLD_STR
681 : IFACE_MLD_QUERY_INTERVAL_STR
682 : "Query interval in seconds\n")
683 : {
684 8 : const struct lyd_node *pim_enable_dnode;
685 :
686 16 : pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
687 8 : FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH,
688 : "frr-routing:ipv6");
689 8 : if (!pim_enable_dnode) {
690 0 : nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true");
691 : } else {
692 8 : if (!yang_dnode_get_bool(pim_enable_dnode, "."))
693 0 : nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
694 : "true");
695 : }
696 :
697 8 : nb_cli_enqueue_change(vty, "./query-interval", NB_OP_MODIFY,
698 : q_interval_str);
699 :
700 8 : return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
701 : "frr-routing:ipv6");
702 : }
703 :
704 0 : DEFPY (interface_no_ipv6_mld_query_interval,
705 : interface_no_ipv6_mld_query_interval_cmd,
706 : "no ipv6 mld query-interval [(1-65535)]",
707 : NO_STR
708 : IPV6_STR
709 : IFACE_MLD_STR
710 : IFACE_MLD_QUERY_INTERVAL_STR
711 : IGNORED_IN_NO_STR)
712 : {
713 0 : nb_cli_enqueue_change(vty, "./query-interval", NB_OP_DESTROY, NULL);
714 :
715 0 : return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
716 : "frr-routing:ipv6");
717 : }
718 :
719 0 : DEFPY (ipv6_mld_group_watermark,
720 : ipv6_mld_group_watermark_cmd,
721 : "ipv6 mld watermark-warn (1-65535)$limit",
722 : IPV6_STR
723 : MLD_STR
724 : "Configure group limit for watermark warning\n"
725 : "Group count to generate watermark warning\n")
726 : {
727 0 : PIM_DECLVAR_CONTEXT_VRF(vrf, pim);
728 0 : pim->gm_watermark_limit = limit;
729 :
730 0 : return CMD_SUCCESS;
731 : }
732 :
733 0 : DEFPY (no_ipv6_mld_group_watermark,
734 : no_ipv6_mld_group_watermark_cmd,
735 : "no ipv6 mld watermark-warn [(1-65535)$limit]",
736 : NO_STR
737 : IPV6_STR
738 : MLD_STR
739 : "Unconfigure group limit for watermark warning\n"
740 : IGNORED_IN_NO_STR)
741 : {
742 0 : PIM_DECLVAR_CONTEXT_VRF(vrf, pim);
743 0 : pim->gm_watermark_limit = 0;
744 :
745 0 : return CMD_SUCCESS;
746 : }
747 :
748 8 : DEFPY (interface_ipv6_mld_query_max_response_time,
749 : interface_ipv6_mld_query_max_response_time_cmd,
750 : "ipv6 mld query-max-response-time (1-65535)$qmrt",
751 : IPV6_STR
752 : IFACE_MLD_STR
753 : IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
754 : "Query response value in milliseconds\n")
755 : {
756 8 : return gm_process_query_max_response_time_cmd(vty, qmrt_str);
757 : }
758 :
759 0 : DEFPY (interface_no_ipv6_mld_query_max_response_time,
760 : interface_no_ipv6_mld_query_max_response_time_cmd,
761 : "no ipv6 mld query-max-response-time [(1-65535)]",
762 : NO_STR
763 : IPV6_STR
764 : IFACE_MLD_STR
765 : IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
766 : IGNORED_IN_NO_STR)
767 : {
768 0 : return gm_process_no_query_max_response_time_cmd(vty);
769 : }
770 :
771 0 : DEFPY (interface_ipv6_mld_last_member_query_count,
772 : interface_ipv6_mld_last_member_query_count_cmd,
773 : "ipv6 mld last-member-query-count (1-255)$lmqc",
774 : IPV6_STR
775 : IFACE_MLD_STR
776 : IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
777 : "Last member query count\n")
778 : {
779 0 : return gm_process_last_member_query_count_cmd(vty, lmqc_str);
780 : }
781 :
782 0 : DEFPY (interface_no_ipv6_mld_last_member_query_count,
783 : interface_no_ipv6_mld_last_member_query_count_cmd,
784 : "no ipv6 mld last-member-query-count [(1-255)]",
785 : NO_STR
786 : IPV6_STR
787 : IFACE_MLD_STR
788 : IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
789 : IGNORED_IN_NO_STR)
790 : {
791 0 : return gm_process_no_last_member_query_count_cmd(vty);
792 : }
793 :
794 0 : DEFPY (interface_ipv6_mld_last_member_query_interval,
795 : interface_ipv6_mld_last_member_query_interval_cmd,
796 : "ipv6 mld last-member-query-interval (1-65535)$lmqi",
797 : IPV6_STR
798 : IFACE_MLD_STR
799 : IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
800 : "Last member query interval in deciseconds\n")
801 : {
802 0 : return gm_process_last_member_query_interval_cmd(vty, lmqi_str);
803 : }
804 :
805 0 : DEFPY (interface_no_ipv6_mld_last_member_query_interval,
806 : interface_no_ipv6_mld_last_member_query_interval_cmd,
807 : "no ipv6 mld last-member-query-interval [(1-65535)]",
808 : NO_STR
809 : IPV6_STR
810 : IFACE_MLD_STR
811 : IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
812 : IGNORED_IN_NO_STR)
813 : {
814 0 : return gm_process_no_last_member_query_interval_cmd(vty);
815 : }
816 :
817 3 : DEFPY (show_ipv6_pim_rp,
818 : show_ipv6_pim_rp_cmd,
819 : "show ipv6 pim [vrf NAME] rp-info [X:X::X:X/M$group] [json$json]",
820 : SHOW_STR
821 : IPV6_STR
822 : PIM_STR
823 : VRF_CMD_HELP_STR
824 : "PIM RP information\n"
825 : "Multicast Group range\n"
826 : JSON_STR)
827 : {
828 3 : return pim_show_rp_helper(vrf, vty, group_str, (struct prefix *)group,
829 : !!json);
830 : }
831 :
832 0 : DEFPY (show_ipv6_pim_rp_vrf_all,
833 : show_ipv6_pim_rp_vrf_all_cmd,
834 : "show ipv6 pim vrf all rp-info [X:X::X:X/M$group] [json$json]",
835 : SHOW_STR
836 : IPV6_STR
837 : PIM_STR
838 : VRF_CMD_HELP_STR
839 : "PIM RP information\n"
840 : "Multicast Group range\n"
841 : JSON_STR)
842 : {
843 0 : return pim_show_rp_vrf_all_helper(vty, group_str,
844 : (struct prefix *)group, !!json);
845 : }
846 :
847 0 : DEFPY (show_ipv6_pim_rpf,
848 : show_ipv6_pim_rpf_cmd,
849 : "show ipv6 pim [vrf NAME] rpf [json$json]",
850 : SHOW_STR
851 : IPV6_STR
852 : PIM_STR
853 : VRF_CMD_HELP_STR
854 : "PIM cached source rpf information\n"
855 : JSON_STR)
856 : {
857 0 : return pim_show_rpf_helper(vrf, vty, !!json);
858 : }
859 :
860 0 : DEFPY (show_ipv6_pim_rpf_vrf_all,
861 : show_ipv6_pim_rpf_vrf_all_cmd,
862 : "show ipv6 pim vrf all rpf [json$json]",
863 : SHOW_STR
864 : IPV6_STR
865 : PIM_STR
866 : VRF_CMD_HELP_STR
867 : "PIM cached source rpf information\n"
868 : JSON_STR)
869 : {
870 0 : return pim_show_rpf_vrf_all_helper(vty, !!json);
871 : }
872 :
873 0 : DEFPY (show_ipv6_pim_secondary,
874 : show_ipv6_pim_secondary_cmd,
875 : "show ipv6 pim [vrf NAME] secondary",
876 : SHOW_STR
877 : IPV6_STR
878 : PIM_STR
879 : VRF_CMD_HELP_STR
880 : "PIM neighbor addresses\n")
881 : {
882 0 : return pim_show_secondary_helper(vrf, vty);
883 : }
884 :
885 0 : DEFPY (show_ipv6_pim_statistics,
886 : show_ipv6_pim_statistics_cmd,
887 : "show ipv6 pim [vrf NAME] statistics [interface WORD$word] [json$json]",
888 : SHOW_STR
889 : IPV6_STR
890 : PIM_STR
891 : VRF_CMD_HELP_STR
892 : "PIM statistics\n"
893 : INTERFACE_STR
894 : "PIM interface\n"
895 : JSON_STR)
896 : {
897 0 : return pim_show_statistics_helper(vrf, vty, word, !!json);
898 : }
899 :
900 0 : DEFPY (show_ipv6_pim_upstream,
901 : show_ipv6_pim_upstream_cmd,
902 : "show ipv6 pim [vrf NAME] upstream [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
903 : SHOW_STR
904 : IPV6_STR
905 : PIM_STR
906 : VRF_CMD_HELP_STR
907 : "PIM upstream information\n"
908 : "The Source or Group\n"
909 : "The Group\n"
910 : JSON_STR)
911 : {
912 0 : return pim_show_upstream_helper(vrf, vty, s_or_g, g, !!json);
913 : }
914 :
915 0 : DEFPY (show_ipv6_pim_upstream_vrf_all,
916 : show_ipv6_pim_upstream_vrf_all_cmd,
917 : "show ipv6 pim vrf all upstream [json$json]",
918 : SHOW_STR
919 : IPV6_STR
920 : PIM_STR
921 : VRF_CMD_HELP_STR
922 : "PIM upstream information\n"
923 : JSON_STR)
924 : {
925 0 : return pim_show_upstream_vrf_all_helper(vty, !!json);
926 : }
927 :
928 0 : DEFPY (show_ipv6_pim_upstream_join_desired,
929 : show_ipv6_pim_upstream_join_desired_cmd,
930 : "show ipv6 pim [vrf NAME] upstream-join-desired [json$json]",
931 : SHOW_STR
932 : IPV6_STR
933 : PIM_STR
934 : VRF_CMD_HELP_STR
935 : "PIM upstream join-desired\n"
936 : JSON_STR)
937 : {
938 0 : return pim_show_upstream_join_desired_helper(vrf, vty, !!json);
939 : }
940 :
941 0 : DEFPY (show_ipv6_pim_upstream_rpf,
942 : show_ipv6_pim_upstream_rpf_cmd,
943 : "show ipv6 pim [vrf NAME] upstream-rpf [json$json]",
944 : SHOW_STR
945 : IPV6_STR
946 : PIM_STR
947 : VRF_CMD_HELP_STR
948 : "PIM upstream source rpf\n"
949 : JSON_STR)
950 : {
951 0 : return pim_show_upstream_rpf_helper(vrf, vty, !!json);
952 : }
953 :
954 0 : DEFPY (show_ipv6_pim_state,
955 : show_ipv6_pim_state_cmd,
956 : "show ipv6 pim [vrf NAME] state [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
957 : SHOW_STR
958 : IPV6_STR
959 : PIM_STR
960 : VRF_CMD_HELP_STR
961 : "PIM state information\n"
962 : "Unicast or Multicast address\n"
963 : "Multicast address\n"
964 : JSON_STR)
965 : {
966 0 : return pim_show_state_helper(vrf, vty, s_or_g_str, g_str, !!json);
967 : }
968 :
969 0 : DEFPY (show_ipv6_pim_state_vrf_all,
970 : show_ipv6_pim_state_vrf_all_cmd,
971 : "show ipv6 pim vrf all state [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
972 : SHOW_STR
973 : IPV6_STR
974 : PIM_STR
975 : VRF_CMD_HELP_STR
976 : "PIM state information\n"
977 : "Unicast or Multicast address\n"
978 : "Multicast address\n"
979 : JSON_STR)
980 : {
981 0 : return pim_show_state_vrf_all_helper(vty, s_or_g_str, g_str, !!json);
982 : }
983 :
984 0 : DEFPY (show_ipv6_pim_channel,
985 : show_ipv6_pim_channel_cmd,
986 : "show ipv6 pim [vrf NAME] channel [json$json]",
987 : SHOW_STR
988 : IPV6_STR
989 : PIM_STR
990 : VRF_CMD_HELP_STR
991 : "PIM downstream channel info\n"
992 : JSON_STR)
993 : {
994 0 : return pim_show_channel_cmd_helper(vrf, vty, !!json);
995 : }
996 :
997 0 : DEFPY (show_ipv6_pim_interface,
998 : show_ipv6_pim_interface_cmd,
999 : "show ipv6 pim [vrf NAME] interface [detail|WORD]$interface [json$json]",
1000 : SHOW_STR
1001 : IPV6_STR
1002 : PIM_STR
1003 : VRF_CMD_HELP_STR
1004 : "PIM interface information\n"
1005 : "Detailed output\n"
1006 : "interface name\n"
1007 : JSON_STR)
1008 : {
1009 0 : return pim_show_interface_cmd_helper(vrf, vty, !!json, false,
1010 : interface);
1011 : }
1012 :
1013 0 : DEFPY (show_ipv6_pim_interface_vrf_all,
1014 : show_ipv6_pim_interface_vrf_all_cmd,
1015 : "show ipv6 pim vrf all interface [detail|WORD]$interface [json$json]",
1016 : SHOW_STR
1017 : IPV6_STR
1018 : PIM_STR
1019 : VRF_CMD_HELP_STR
1020 : "PIM interface information\n"
1021 : "Detailed output\n"
1022 : "interface name\n"
1023 : JSON_STR)
1024 : {
1025 0 : return pim_show_interface_vrf_all_cmd_helper(vty, !!json, false,
1026 : interface);
1027 : }
1028 :
1029 18 : DEFPY (show_ipv6_pim_join,
1030 : show_ipv6_pim_join_cmd,
1031 : "show ipv6 pim [vrf NAME] join [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
1032 : SHOW_STR
1033 : IPV6_STR
1034 : PIM_STR
1035 : VRF_CMD_HELP_STR
1036 : "PIM interface join information\n"
1037 : "The Source or Group\n"
1038 : "The Group\n"
1039 : JSON_STR)
1040 : {
1041 18 : return pim_show_join_cmd_helper(vrf, vty, s_or_g, g, json);
1042 : }
1043 :
1044 0 : DEFPY (show_ipv6_pim_join_vrf_all,
1045 : show_ipv6_pim_join_vrf_all_cmd,
1046 : "show ipv6 pim vrf all join [json$json]",
1047 : SHOW_STR
1048 : IPV6_STR
1049 : PIM_STR
1050 : VRF_CMD_HELP_STR
1051 : "PIM interface join information\n"
1052 : JSON_STR)
1053 : {
1054 0 : return pim_show_join_vrf_all_cmd_helper(vty, json);
1055 : }
1056 :
1057 0 : DEFPY (show_ipv6_pim_jp_agg,
1058 : show_ipv6_pim_jp_agg_cmd,
1059 : "show ipv6 pim [vrf NAME] jp-agg",
1060 : SHOW_STR
1061 : IPV6_STR
1062 : PIM_STR
1063 : VRF_CMD_HELP_STR
1064 : "join prune aggregation list\n")
1065 : {
1066 0 : return pim_show_jp_agg_list_cmd_helper(vrf, vty);
1067 : }
1068 :
1069 0 : DEFPY (show_ipv6_pim_local_membership,
1070 : show_ipv6_pim_local_membership_cmd,
1071 : "show ipv6 pim [vrf NAME] local-membership [json$json]",
1072 : SHOW_STR
1073 : IPV6_STR
1074 : PIM_STR
1075 : VRF_CMD_HELP_STR
1076 : "PIM interface local-membership\n"
1077 : JSON_STR)
1078 : {
1079 0 : return pim_show_membership_cmd_helper(vrf, vty, !!json);
1080 : }
1081 :
1082 10 : DEFPY (show_ipv6_pim_neighbor,
1083 : show_ipv6_pim_neighbor_cmd,
1084 : "show ipv6 pim [vrf NAME] neighbor [detail|WORD]$interface [json$json]",
1085 : SHOW_STR
1086 : IPV6_STR
1087 : PIM_STR
1088 : VRF_CMD_HELP_STR
1089 : "PIM neighbor information\n"
1090 : "Detailed output\n"
1091 : "Name of interface or neighbor\n"
1092 : JSON_STR)
1093 : {
1094 10 : return pim_show_neighbors_cmd_helper(vrf, vty, json, interface);
1095 : }
1096 :
1097 0 : DEFPY (show_ipv6_pim_neighbor_vrf_all,
1098 : show_ipv6_pim_neighbor_vrf_all_cmd,
1099 : "show ipv6 pim vrf all neighbor [detail|WORD]$interface [json$json]",
1100 : SHOW_STR
1101 : IPV6_STR
1102 : PIM_STR
1103 : VRF_CMD_HELP_STR
1104 : "PIM neighbor information\n"
1105 : "Detailed output\n"
1106 : "Name of interface or neighbor\n"
1107 : JSON_STR)
1108 : {
1109 0 : return pim_show_neighbors_vrf_all_cmd_helper(vty, json, interface);
1110 : }
1111 :
1112 0 : DEFPY (show_ipv6_pim_nexthop,
1113 : show_ipv6_pim_nexthop_cmd,
1114 : "show ipv6 pim [vrf NAME] nexthop [json$json]",
1115 : SHOW_STR
1116 : IPV6_STR
1117 : PIM_STR
1118 : VRF_CMD_HELP_STR
1119 : "PIM cached nexthop rpf information\n"
1120 : JSON_STR)
1121 : {
1122 0 : return pim_show_nexthop_cmd_helper(vrf, vty, !!json);
1123 : }
1124 :
1125 0 : DEFPY (show_ipv6_pim_nexthop_lookup,
1126 : show_ipv6_pim_nexthop_lookup_cmd,
1127 : "show ipv6 pim [vrf NAME] nexthop-lookup X:X::X:X$source X:X::X:X$group",
1128 : SHOW_STR
1129 : IPV6_STR
1130 : PIM_STR
1131 : VRF_CMD_HELP_STR
1132 : "PIM cached nexthop rpf lookup\n"
1133 : "Source/RP address\n"
1134 : "Multicast Group address\n")
1135 : {
1136 0 : return pim_show_nexthop_lookup_cmd_helper(vrf, vty, source, group);
1137 : }
1138 :
1139 0 : DEFPY (show_ipv6_multicast,
1140 : show_ipv6_multicast_cmd,
1141 : "show ipv6 multicast [vrf NAME]",
1142 : SHOW_STR
1143 : IPV6_STR
1144 : "Multicast global information\n"
1145 : VRF_CMD_HELP_STR)
1146 : {
1147 0 : return pim_show_multicast_helper(vrf, vty);
1148 : }
1149 :
1150 0 : DEFPY (show_ipv6_multicast_vrf_all,
1151 : show_ipv6_multicast_vrf_all_cmd,
1152 : "show ipv6 multicast vrf all",
1153 : SHOW_STR
1154 : IPV6_STR
1155 : "Multicast global information\n"
1156 : VRF_CMD_HELP_STR)
1157 : {
1158 0 : return pim_show_multicast_vrf_all_helper(vty);
1159 : }
1160 :
1161 0 : DEFPY (show_ipv6_multicast_count,
1162 : show_ipv6_multicast_count_cmd,
1163 : "show ipv6 multicast count [vrf NAME] [json$json]",
1164 : SHOW_STR
1165 : IPV6_STR
1166 : "Multicast global information\n"
1167 : "Data packet count\n"
1168 : VRF_CMD_HELP_STR
1169 : JSON_STR)
1170 : {
1171 0 : return pim_show_multicast_count_helper(vrf, vty, !!json);
1172 : }
1173 :
1174 0 : DEFPY (show_ipv6_multicast_count_vrf_all,
1175 : show_ipv6_multicast_count_vrf_all_cmd,
1176 : "show ipv6 multicast count vrf all [json$json]",
1177 : SHOW_STR
1178 : IPV6_STR
1179 : "Multicast global information\n"
1180 : "Data packet count\n"
1181 : VRF_CMD_HELP_STR
1182 : JSON_STR)
1183 : {
1184 0 : return pim_show_multicast_count_vrf_all_helper(vty, !!json);
1185 : }
1186 :
1187 13 : DEFPY (show_ipv6_mroute,
1188 : show_ipv6_mroute_cmd,
1189 : "show ipv6 mroute [vrf NAME] [X:X::X:X$s_or_g [X:X::X:X$g]] [fill$fill] [json$json]",
1190 : SHOW_STR
1191 : IPV6_STR
1192 : MROUTE_STR
1193 : VRF_CMD_HELP_STR
1194 : "The Source or Group\n"
1195 : "The Group\n"
1196 : "Fill in Assumed data\n"
1197 : JSON_STR)
1198 : {
1199 13 : return pim_show_mroute_helper(vrf, vty, s_or_g, g, !!fill, !!json);
1200 : }
1201 :
1202 0 : DEFPY (show_ipv6_mroute_vrf_all,
1203 : show_ipv6_mroute_vrf_all_cmd,
1204 : "show ipv6 mroute vrf all [fill$fill] [json$json]",
1205 : SHOW_STR
1206 : IPV6_STR
1207 : MROUTE_STR
1208 : VRF_CMD_HELP_STR
1209 : "Fill in Assumed data\n"
1210 : JSON_STR)
1211 : {
1212 0 : return pim_show_mroute_vrf_all_helper(vty, !!fill, !!json);
1213 : }
1214 :
1215 0 : DEFPY (show_ipv6_mroute_count,
1216 : show_ipv6_mroute_count_cmd,
1217 : "show ipv6 mroute [vrf NAME] count [json$json]",
1218 : SHOW_STR
1219 : IPV6_STR
1220 : MROUTE_STR
1221 : VRF_CMD_HELP_STR
1222 : "Route and packet count data\n"
1223 : JSON_STR)
1224 : {
1225 0 : return pim_show_mroute_count_helper(vrf, vty, !!json);
1226 : }
1227 :
1228 0 : DEFPY (show_ipv6_mroute_count_vrf_all,
1229 : show_ipv6_mroute_count_vrf_all_cmd,
1230 : "show ipv6 mroute vrf all count [json$json]",
1231 : SHOW_STR
1232 : IPV6_STR
1233 : MROUTE_STR
1234 : VRF_CMD_HELP_STR
1235 : "Route and packet count data\n"
1236 : JSON_STR)
1237 : {
1238 0 : return pim_show_mroute_count_vrf_all_helper(vty, !!json);
1239 : }
1240 :
1241 0 : DEFPY (show_ipv6_mroute_summary,
1242 : show_ipv6_mroute_summary_cmd,
1243 : "show ipv6 mroute [vrf NAME] summary [json$json]",
1244 : SHOW_STR
1245 : IPV6_STR
1246 : MROUTE_STR
1247 : VRF_CMD_HELP_STR
1248 : "Summary of all mroutes\n"
1249 : JSON_STR)
1250 : {
1251 0 : return pim_show_mroute_summary_helper(vrf, vty, !!json);
1252 : }
1253 :
1254 0 : DEFPY (show_ipv6_mroute_summary_vrf_all,
1255 : show_ipv6_mroute_summary_vrf_all_cmd,
1256 : "show ipv6 mroute vrf all summary [json$json]",
1257 : SHOW_STR
1258 : IPV6_STR
1259 : MROUTE_STR
1260 : VRF_CMD_HELP_STR
1261 : "Summary of all mroutes\n"
1262 : JSON_STR)
1263 : {
1264 0 : return pim_show_mroute_summary_vrf_all_helper(vty, !!json);
1265 : }
1266 :
1267 0 : DEFPY (show_ipv6_pim_interface_traffic,
1268 : show_ipv6_pim_interface_traffic_cmd,
1269 : "show ipv6 pim [vrf NAME] interface traffic [WORD$if_name] [json$json]",
1270 : SHOW_STR
1271 : IPV6_STR
1272 : PIM_STR
1273 : VRF_CMD_HELP_STR
1274 : "PIM interface information\n"
1275 : "Protocol Packet counters\n"
1276 : "Interface name\n"
1277 : JSON_STR)
1278 : {
1279 0 : return pim_show_interface_traffic_helper(vrf, if_name, vty, !!json);
1280 : }
1281 :
1282 0 : DEFPY (show_ipv6_pim_bsr,
1283 : show_ipv6_pim_bsr_cmd,
1284 : "show ipv6 pim bsr [vrf NAME] [json$json]",
1285 : SHOW_STR
1286 : IPV6_STR
1287 : PIM_STR
1288 : "boot-strap router information\n"
1289 : VRF_CMD_HELP_STR
1290 : JSON_STR)
1291 : {
1292 0 : return pim_show_bsr_helper(vrf, vty, !!json);
1293 : }
1294 :
1295 0 : DEFPY (show_ipv6_pim_bsm_db,
1296 : show_ipv6_pim_bsm_db_cmd,
1297 : "show ipv6 pim bsm-database [vrf NAME] [json$json]",
1298 : SHOW_STR
1299 : IPV6_STR
1300 : PIM_STR
1301 : "PIM cached bsm packets information\n"
1302 : VRF_CMD_HELP_STR
1303 : JSON_STR)
1304 : {
1305 0 : return pim_show_bsm_db_helper(vrf, vty, !!json);
1306 : }
1307 :
1308 0 : DEFPY (show_ipv6_pim_bsrp,
1309 : show_ipv6_pim_bsrp_cmd,
1310 : "show ipv6 pim bsrp-info [vrf NAME] [json$json]",
1311 : SHOW_STR
1312 : IPV6_STR
1313 : PIM_STR
1314 : "PIM cached group-rp mappings information\n"
1315 : VRF_CMD_HELP_STR
1316 : JSON_STR)
1317 : {
1318 0 : return pim_show_group_rp_mappings_info_helper(vrf, vty, !!json);
1319 : }
1320 :
1321 0 : DEFPY (clear_ipv6_pim_statistics,
1322 : clear_ipv6_pim_statistics_cmd,
1323 : "clear ipv6 pim statistics [vrf NAME]$name",
1324 : CLEAR_STR
1325 : IPV6_STR
1326 : CLEAR_IP_PIM_STR
1327 : VRF_CMD_HELP_STR
1328 : "Reset PIM statistics\n")
1329 : {
1330 0 : struct vrf *v = pim_cmd_lookup(vty, name);
1331 :
1332 0 : if (!v)
1333 : return CMD_WARNING;
1334 :
1335 0 : clear_pim_statistics(v->info);
1336 :
1337 0 : return CMD_SUCCESS;
1338 : }
1339 :
1340 0 : DEFPY (clear_ipv6_pim_interface_traffic,
1341 : clear_ipv6_pim_interface_traffic_cmd,
1342 : "clear ipv6 pim [vrf NAME] interface traffic",
1343 : CLEAR_STR
1344 : IPV6_STR
1345 : CLEAR_IP_PIM_STR
1346 : VRF_CMD_HELP_STR
1347 : "Reset PIM interfaces\n"
1348 : "Reset Protocol Packet counters\n")
1349 : {
1350 0 : return clear_pim_interface_traffic(vrf, vty);
1351 : }
1352 :
1353 0 : DEFPY (clear_ipv6_mroute,
1354 : clear_ipv6_mroute_cmd,
1355 : "clear ipv6 mroute [vrf NAME]$name",
1356 : CLEAR_STR
1357 : IPV6_STR
1358 : MROUTE_STR
1359 : VRF_CMD_HELP_STR)
1360 : {
1361 0 : struct vrf *v = pim_cmd_lookup(vty, name);
1362 :
1363 0 : if (!v)
1364 : return CMD_WARNING;
1365 :
1366 0 : clear_mroute(v->info);
1367 :
1368 0 : return CMD_SUCCESS;
1369 : }
1370 :
1371 0 : DEFPY (clear_ipv6_pim_oil,
1372 : clear_ipv6_pim_oil_cmd,
1373 : "clear ipv6 pim [vrf NAME]$name oil",
1374 : CLEAR_STR
1375 : IPV6_STR
1376 : CLEAR_IP_PIM_STR
1377 : VRF_CMD_HELP_STR
1378 : "Rescan PIMv6 OIL (output interface list)\n")
1379 : {
1380 0 : struct vrf *v = pim_cmd_lookup(vty, name);
1381 :
1382 0 : if (!v)
1383 : return CMD_WARNING;
1384 :
1385 0 : pim_scan_oil(v->info);
1386 :
1387 0 : return CMD_SUCCESS;
1388 : }
1389 :
1390 0 : DEFPY (clear_ipv6_mroute_count,
1391 : clear_ipv6_mroute_count_cmd,
1392 : "clear ipv6 mroute [vrf NAME]$name count",
1393 : CLEAR_STR
1394 : IPV6_STR
1395 : MROUTE_STR
1396 : VRF_CMD_HELP_STR
1397 : "Route and packet count data\n")
1398 : {
1399 0 : return clear_ip_mroute_count_command(vty, name);
1400 : }
1401 :
1402 0 : DEFPY (clear_ipv6_pim_interfaces,
1403 : clear_ipv6_pim_interfaces_cmd,
1404 : "clear ipv6 pim [vrf NAME] interfaces",
1405 : CLEAR_STR
1406 : IPV6_STR
1407 : CLEAR_IP_PIM_STR
1408 : VRF_CMD_HELP_STR
1409 : "Reset PIM interfaces\n")
1410 : {
1411 0 : struct vrf *v = pim_cmd_lookup(vty, vrf);
1412 :
1413 0 : if (!v)
1414 : return CMD_WARNING;
1415 :
1416 0 : clear_pim_interfaces(v->info);
1417 :
1418 0 : return CMD_SUCCESS;
1419 : }
1420 :
1421 0 : DEFPY (clear_ipv6_pim_bsr_db,
1422 : clear_ipv6_pim_bsr_db_cmd,
1423 : "clear ipv6 pim [vrf NAME] bsr-data",
1424 : CLEAR_STR
1425 : IPV6_STR
1426 : CLEAR_IP_PIM_STR
1427 : VRF_CMD_HELP_STR
1428 : "Reset pim bsr data\n")
1429 : {
1430 0 : struct vrf *v;
1431 :
1432 0 : v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
1433 0 : if (!v)
1434 : return CMD_WARNING;
1435 :
1436 0 : pim_bsm_clear(v->info);
1437 :
1438 0 : return CMD_SUCCESS;
1439 : }
1440 :
1441 0 : DEFPY (debug_pimv6,
1442 : debug_pimv6_cmd,
1443 : "[no] debug pimv6",
1444 : NO_STR
1445 : DEBUG_STR
1446 : DEBUG_PIMV6_STR)
1447 : {
1448 0 : if (!no)
1449 0 : return pim_debug_pim_cmd();
1450 : else
1451 0 : return pim_no_debug_pim_cmd();
1452 : }
1453 :
1454 0 : DEFPY (debug_pimv6_nht,
1455 : debug_pimv6_nht_cmd,
1456 : "[no] debug pimv6 nht",
1457 : NO_STR
1458 : DEBUG_STR
1459 : DEBUG_PIMV6_STR
1460 : "Nexthop Tracking\n")
1461 : {
1462 0 : if (!no)
1463 0 : PIM_DO_DEBUG_PIM_NHT;
1464 : else
1465 0 : PIM_DONT_DEBUG_PIM_NHT;
1466 0 : return CMD_SUCCESS;
1467 : }
1468 :
1469 0 : DEFPY (debug_pimv6_nht_det,
1470 : debug_pimv6_nht_det_cmd,
1471 : "[no] debug pimv6 nht detail",
1472 : NO_STR
1473 : DEBUG_STR
1474 : DEBUG_PIMV6_STR
1475 : "Nexthop Tracking\n"
1476 : "Detailed Information\n")
1477 : {
1478 0 : if (!no)
1479 0 : PIM_DO_DEBUG_PIM_NHT_DETAIL;
1480 : else
1481 0 : PIM_DONT_DEBUG_PIM_NHT_DETAIL;
1482 0 : return CMD_SUCCESS;
1483 : }
1484 :
1485 0 : DEFPY (debug_pimv6_events,
1486 : debug_pimv6_events_cmd,
1487 : "[no] debug pimv6 events",
1488 : NO_STR
1489 : DEBUG_STR
1490 : DEBUG_PIMV6_STR
1491 : DEBUG_PIMV6_EVENTS_STR)
1492 : {
1493 0 : if (!no)
1494 0 : PIM_DO_DEBUG_PIM_EVENTS;
1495 : else
1496 0 : PIM_DONT_DEBUG_PIM_EVENTS;
1497 0 : return CMD_SUCCESS;
1498 : }
1499 :
1500 0 : DEFPY (debug_pimv6_packets,
1501 : debug_pimv6_packets_cmd,
1502 : "[no] debug pimv6 packets [<hello$hello|joins$joins|register$registers>]",
1503 : NO_STR
1504 : DEBUG_STR
1505 : DEBUG_PIMV6_STR
1506 : DEBUG_PIMV6_PACKETS_STR
1507 : DEBUG_PIMV6_HELLO_PACKETS_STR
1508 : DEBUG_PIMV6_J_P_PACKETS_STR
1509 : DEBUG_PIMV6_PIM_REG_PACKETS_STR)
1510 : {
1511 0 : if (!no)
1512 0 : return pim_debug_pim_packets_cmd(hello, joins, registers, vty);
1513 : else
1514 0 : return pim_no_debug_pim_packets_cmd(hello, joins, registers,
1515 : vty);
1516 : }
1517 :
1518 0 : DEFPY (debug_pimv6_packetdump_send,
1519 : debug_pimv6_packetdump_send_cmd,
1520 : "[no] debug pimv6 packet-dump send",
1521 : NO_STR
1522 : DEBUG_STR
1523 : DEBUG_PIMV6_STR
1524 : DEBUG_PIMV6_PACKETDUMP_STR
1525 : DEBUG_PIMV6_PACKETDUMP_SEND_STR)
1526 : {
1527 0 : if (!no)
1528 0 : PIM_DO_DEBUG_PIM_PACKETDUMP_SEND;
1529 : else
1530 0 : PIM_DONT_DEBUG_PIM_PACKETDUMP_SEND;
1531 0 : return CMD_SUCCESS;
1532 : }
1533 :
1534 0 : DEFPY (debug_pimv6_packetdump_recv,
1535 : debug_pimv6_packetdump_recv_cmd,
1536 : "[no] debug pimv6 packet-dump receive",
1537 : NO_STR
1538 : DEBUG_STR
1539 : DEBUG_PIMV6_STR
1540 : DEBUG_PIMV6_PACKETDUMP_STR
1541 : DEBUG_PIMV6_PACKETDUMP_RECV_STR)
1542 : {
1543 0 : if (!no)
1544 0 : PIM_DO_DEBUG_PIM_PACKETDUMP_RECV;
1545 : else
1546 0 : PIM_DONT_DEBUG_PIM_PACKETDUMP_RECV;
1547 0 : return CMD_SUCCESS;
1548 : }
1549 :
1550 0 : DEFPY (debug_pimv6_trace,
1551 : debug_pimv6_trace_cmd,
1552 : "[no] debug pimv6 trace",
1553 : NO_STR
1554 : DEBUG_STR
1555 : DEBUG_PIMV6_STR
1556 : DEBUG_PIMV6_TRACE_STR)
1557 : {
1558 0 : if (!no)
1559 0 : PIM_DO_DEBUG_PIM_TRACE;
1560 : else
1561 0 : PIM_DONT_DEBUG_PIM_TRACE;
1562 0 : return CMD_SUCCESS;
1563 : }
1564 :
1565 0 : DEFPY (debug_pimv6_trace_detail,
1566 : debug_pimv6_trace_detail_cmd,
1567 : "[no] debug pimv6 trace detail",
1568 : NO_STR
1569 : DEBUG_STR
1570 : DEBUG_PIMV6_STR
1571 : DEBUG_PIMV6_TRACE_STR
1572 : "Detailed Information\n")
1573 : {
1574 0 : if (!no)
1575 0 : PIM_DO_DEBUG_PIM_TRACE_DETAIL;
1576 : else
1577 0 : PIM_DONT_DEBUG_PIM_TRACE_DETAIL;
1578 0 : return CMD_SUCCESS;
1579 : }
1580 :
1581 0 : DEFPY (debug_pimv6_zebra,
1582 : debug_pimv6_zebra_cmd,
1583 : "[no] debug pimv6 zebra",
1584 : NO_STR
1585 : DEBUG_STR
1586 : DEBUG_PIMV6_STR
1587 : DEBUG_PIMV6_ZEBRA_STR)
1588 : {
1589 0 : if (!no)
1590 0 : PIM_DO_DEBUG_ZEBRA;
1591 : else
1592 0 : PIM_DONT_DEBUG_ZEBRA;
1593 0 : return CMD_SUCCESS;
1594 : }
1595 :
1596 0 : DEFPY (debug_mroute6,
1597 : debug_mroute6_cmd,
1598 : "[no] debug mroute6",
1599 : NO_STR
1600 : DEBUG_STR
1601 : DEBUG_MROUTE6_STR)
1602 : {
1603 0 : if (!no)
1604 0 : PIM_DO_DEBUG_MROUTE;
1605 : else
1606 0 : PIM_DONT_DEBUG_MROUTE;
1607 :
1608 0 : return CMD_SUCCESS;
1609 : }
1610 :
1611 0 : DEFPY (debug_mroute6_detail,
1612 : debug_mroute6_detail_cmd,
1613 : "[no] debug mroute6 detail",
1614 : NO_STR
1615 : DEBUG_STR
1616 : DEBUG_MROUTE6_STR
1617 : "detailed\n")
1618 : {
1619 0 : if (!no)
1620 0 : PIM_DO_DEBUG_MROUTE_DETAIL;
1621 : else
1622 0 : PIM_DONT_DEBUG_MROUTE_DETAIL;
1623 :
1624 0 : return CMD_SUCCESS;
1625 : }
1626 :
1627 0 : DEFUN_NOSH (show_debugging_pimv6,
1628 : show_debugging_pimv6_cmd,
1629 : "show debugging [pimv6]",
1630 : SHOW_STR
1631 : DEBUG_STR
1632 : "PIMv6 Information\n")
1633 : {
1634 0 : vty_out(vty, "PIMv6 debugging status\n");
1635 :
1636 0 : pim_debug_config_write(vty);
1637 :
1638 0 : cmd_show_lib_debugs(vty);
1639 :
1640 0 : return CMD_SUCCESS;
1641 : }
1642 :
1643 7 : DEFPY (debug_mld,
1644 : debug_mld_cmd,
1645 : "[no] debug mld",
1646 : NO_STR
1647 : DEBUG_STR
1648 : DEBUG_MLD_STR)
1649 : {
1650 7 : if (!no) {
1651 7 : PIM_DO_DEBUG_GM_EVENTS;
1652 7 : PIM_DO_DEBUG_GM_PACKETS;
1653 7 : PIM_DO_DEBUG_GM_TRACE;
1654 : } else {
1655 0 : PIM_DONT_DEBUG_GM_EVENTS;
1656 0 : PIM_DONT_DEBUG_GM_PACKETS;
1657 0 : PIM_DONT_DEBUG_GM_TRACE;
1658 : }
1659 :
1660 7 : return CMD_SUCCESS;
1661 : }
1662 :
1663 0 : DEFPY (debug_mld_events,
1664 : debug_mld_events_cmd,
1665 : "[no] debug mld events",
1666 : NO_STR
1667 : DEBUG_STR
1668 : DEBUG_MLD_STR
1669 : DEBUG_MLD_EVENTS_STR)
1670 : {
1671 0 : if (!no)
1672 0 : PIM_DO_DEBUG_GM_EVENTS;
1673 : else
1674 0 : PIM_DONT_DEBUG_GM_EVENTS;
1675 :
1676 0 : return CMD_SUCCESS;
1677 : }
1678 :
1679 0 : DEFPY (debug_mld_packets,
1680 : debug_mld_packets_cmd,
1681 : "[no] debug mld packets",
1682 : NO_STR
1683 : DEBUG_STR
1684 : DEBUG_MLD_STR
1685 : DEBUG_MLD_PACKETS_STR)
1686 : {
1687 0 : if (!no)
1688 0 : PIM_DO_DEBUG_GM_PACKETS;
1689 : else
1690 0 : PIM_DONT_DEBUG_GM_PACKETS;
1691 :
1692 0 : return CMD_SUCCESS;
1693 : }
1694 :
1695 0 : DEFPY (debug_mld_trace,
1696 : debug_mld_trace_cmd,
1697 : "[no] debug mld trace",
1698 : NO_STR
1699 : DEBUG_STR
1700 : DEBUG_MLD_STR
1701 : DEBUG_MLD_TRACE_STR)
1702 : {
1703 0 : if (!no)
1704 0 : PIM_DO_DEBUG_GM_TRACE;
1705 : else
1706 0 : PIM_DONT_DEBUG_GM_TRACE;
1707 :
1708 0 : return CMD_SUCCESS;
1709 : }
1710 :
1711 0 : DEFPY (debug_mld_trace_detail,
1712 : debug_mld_trace_detail_cmd,
1713 : "[no] debug mld trace detail",
1714 : NO_STR
1715 : DEBUG_STR
1716 : DEBUG_MLD_STR
1717 : DEBUG_MLD_TRACE_STR
1718 : "detailed\n")
1719 : {
1720 0 : if (!no)
1721 0 : PIM_DO_DEBUG_GM_TRACE_DETAIL;
1722 : else
1723 0 : PIM_DONT_DEBUG_GM_TRACE_DETAIL;
1724 :
1725 0 : return CMD_SUCCESS;
1726 : }
1727 :
1728 0 : DEFPY (debug_pimv6_bsm,
1729 : debug_pimv6_bsm_cmd,
1730 : "[no] debug pimv6 bsm",
1731 : NO_STR
1732 : DEBUG_STR
1733 : DEBUG_PIMV6_STR
1734 : DEBUG_PIMV6_BSM_STR)
1735 : {
1736 0 : if (!no)
1737 0 : PIM_DO_DEBUG_BSM;
1738 : else
1739 0 : PIM_DONT_DEBUG_BSM;
1740 :
1741 0 : return CMD_SUCCESS;
1742 : }
1743 :
1744 8 : void pim_cmd_init(void)
1745 : {
1746 8 : if_cmd_init(pim_interface_config_write);
1747 :
1748 8 : install_node(&debug_node);
1749 :
1750 8 : install_element(CONFIG_NODE, &ipv6_pim_joinprune_time_cmd);
1751 8 : install_element(CONFIG_NODE, &no_ipv6_pim_joinprune_time_cmd);
1752 8 : install_element(CONFIG_NODE, &ipv6_pim_spt_switchover_infinity_cmd);
1753 8 : install_element(CONFIG_NODE, &ipv6_pim_spt_switchover_infinity_plist_cmd);
1754 8 : install_element(CONFIG_NODE, &no_ipv6_pim_spt_switchover_infinity_cmd);
1755 8 : install_element(CONFIG_NODE, &no_ipv6_pim_spt_switchover_infinity_plist_cmd);
1756 8 : install_element(CONFIG_NODE, &ipv6_pim_packets_cmd);
1757 8 : install_element(CONFIG_NODE, &no_ipv6_pim_packets_cmd);
1758 8 : install_element(CONFIG_NODE, &ipv6_pim_keep_alive_cmd);
1759 8 : install_element(CONFIG_NODE, &no_ipv6_pim_keep_alive_cmd);
1760 8 : install_element(CONFIG_NODE, &ipv6_pim_rp_keep_alive_cmd);
1761 8 : install_element(CONFIG_NODE, &no_ipv6_pim_rp_keep_alive_cmd);
1762 8 : install_element(CONFIG_NODE, &ipv6_pim_register_suppress_cmd);
1763 8 : install_element(CONFIG_NODE, &no_ipv6_pim_register_suppress_cmd);
1764 8 : install_element(INTERFACE_NODE, &interface_ipv6_pim_cmd);
1765 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_pim_cmd);
1766 8 : install_element(INTERFACE_NODE, &interface_ipv6_pim_drprio_cmd);
1767 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_pim_drprio_cmd);
1768 8 : install_element(INTERFACE_NODE, &interface_ipv6_pim_hello_cmd);
1769 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_pim_hello_cmd);
1770 8 : install_element(INTERFACE_NODE, &interface_ipv6_pim_activeactive_cmd);
1771 8 : install_element(INTERFACE_NODE, &interface_ipv6_pim_ssm_cmd);
1772 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_pim_ssm_cmd);
1773 8 : install_element(INTERFACE_NODE, &interface_ipv6_pim_sm_cmd);
1774 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_pim_sm_cmd);
1775 8 : install_element(INTERFACE_NODE,
1776 : &interface_ipv6_pim_boundary_oil_cmd);
1777 8 : install_element(INTERFACE_NODE,
1778 : &interface_no_ipv6_pim_boundary_oil_cmd);
1779 8 : install_element(INTERFACE_NODE, &interface_ipv6_mroute_cmd);
1780 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_mroute_cmd);
1781 : /* Install BSM command */
1782 8 : install_element(INTERFACE_NODE, &ipv6_pim_bsm_cmd);
1783 8 : install_element(INTERFACE_NODE, &no_ipv6_pim_bsm_cmd);
1784 8 : install_element(INTERFACE_NODE, &ipv6_pim_ucast_bsm_cmd);
1785 8 : install_element(INTERFACE_NODE, &no_ipv6_pim_ucast_bsm_cmd);
1786 8 : install_element(CONFIG_NODE, &ipv6_pim_rp_cmd);
1787 8 : install_element(VRF_NODE, &ipv6_pim_rp_cmd);
1788 8 : install_element(CONFIG_NODE, &no_ipv6_pim_rp_cmd);
1789 8 : install_element(VRF_NODE, &no_ipv6_pim_rp_cmd);
1790 8 : install_element(CONFIG_NODE, &ipv6_pim_rp_prefix_list_cmd);
1791 8 : install_element(VRF_NODE, &ipv6_pim_rp_prefix_list_cmd);
1792 8 : install_element(CONFIG_NODE, &no_ipv6_pim_rp_prefix_list_cmd);
1793 8 : install_element(VRF_NODE, &no_ipv6_pim_rp_prefix_list_cmd);
1794 8 : install_element(CONFIG_NODE, &ipv6_ssmpingd_cmd);
1795 8 : install_element(VRF_NODE, &ipv6_ssmpingd_cmd);
1796 8 : install_element(CONFIG_NODE, &no_ipv6_ssmpingd_cmd);
1797 8 : install_element(VRF_NODE, &no_ipv6_ssmpingd_cmd);
1798 8 : install_element(INTERFACE_NODE, &interface_ipv6_mld_cmd);
1799 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_mld_cmd);
1800 8 : install_element(INTERFACE_NODE, &interface_ipv6_mld_join_cmd);
1801 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_mld_join_cmd);
1802 8 : install_element(INTERFACE_NODE, &interface_ipv6_mld_version_cmd);
1803 8 : install_element(INTERFACE_NODE, &interface_no_ipv6_mld_version_cmd);
1804 8 : install_element(INTERFACE_NODE, &interface_ipv6_mld_query_interval_cmd);
1805 8 : install_element(INTERFACE_NODE,
1806 : &interface_no_ipv6_mld_query_interval_cmd);
1807 8 : install_element(CONFIG_NODE, &ipv6_mld_group_watermark_cmd);
1808 8 : install_element(VRF_NODE, &ipv6_mld_group_watermark_cmd);
1809 8 : install_element(CONFIG_NODE, &no_ipv6_mld_group_watermark_cmd);
1810 8 : install_element(VRF_NODE, &no_ipv6_mld_group_watermark_cmd);
1811 8 : install_element(INTERFACE_NODE,
1812 : &interface_ipv6_mld_query_max_response_time_cmd);
1813 8 : install_element(INTERFACE_NODE,
1814 : &interface_no_ipv6_mld_query_max_response_time_cmd);
1815 8 : install_element(INTERFACE_NODE,
1816 : &interface_ipv6_mld_last_member_query_count_cmd);
1817 8 : install_element(INTERFACE_NODE,
1818 : &interface_no_ipv6_mld_last_member_query_count_cmd);
1819 8 : install_element(INTERFACE_NODE,
1820 : &interface_ipv6_mld_last_member_query_interval_cmd);
1821 8 : install_element(INTERFACE_NODE,
1822 : &interface_no_ipv6_mld_last_member_query_interval_cmd);
1823 :
1824 8 : install_element(VIEW_NODE, &show_ipv6_pim_rp_cmd);
1825 8 : install_element(VIEW_NODE, &show_ipv6_pim_rp_vrf_all_cmd);
1826 8 : install_element(VIEW_NODE, &show_ipv6_pim_rpf_cmd);
1827 8 : install_element(VIEW_NODE, &show_ipv6_pim_rpf_vrf_all_cmd);
1828 8 : install_element(VIEW_NODE, &show_ipv6_pim_secondary_cmd);
1829 8 : install_element(VIEW_NODE, &show_ipv6_pim_statistics_cmd);
1830 8 : install_element(VIEW_NODE, &show_ipv6_pim_upstream_cmd);
1831 8 : install_element(VIEW_NODE, &show_ipv6_pim_upstream_vrf_all_cmd);
1832 8 : install_element(VIEW_NODE, &show_ipv6_pim_upstream_join_desired_cmd);
1833 8 : install_element(VIEW_NODE, &show_ipv6_pim_upstream_rpf_cmd);
1834 8 : install_element(VIEW_NODE, &show_ipv6_pim_state_cmd);
1835 8 : install_element(VIEW_NODE, &show_ipv6_pim_state_vrf_all_cmd);
1836 8 : install_element(VIEW_NODE, &show_ipv6_pim_channel_cmd);
1837 8 : install_element(VIEW_NODE, &show_ipv6_pim_interface_cmd);
1838 8 : install_element(VIEW_NODE, &show_ipv6_pim_interface_vrf_all_cmd);
1839 8 : install_element(VIEW_NODE, &show_ipv6_pim_join_cmd);
1840 8 : install_element(VIEW_NODE, &show_ipv6_pim_join_vrf_all_cmd);
1841 8 : install_element(VIEW_NODE, &show_ipv6_pim_jp_agg_cmd);
1842 8 : install_element(VIEW_NODE, &show_ipv6_pim_local_membership_cmd);
1843 8 : install_element(VIEW_NODE, &show_ipv6_pim_neighbor_cmd);
1844 8 : install_element(VIEW_NODE, &show_ipv6_pim_neighbor_vrf_all_cmd);
1845 8 : install_element(VIEW_NODE, &show_ipv6_pim_nexthop_cmd);
1846 8 : install_element(VIEW_NODE, &show_ipv6_pim_nexthop_lookup_cmd);
1847 8 : install_element(VIEW_NODE, &show_ipv6_multicast_cmd);
1848 8 : install_element(VIEW_NODE, &show_ipv6_multicast_vrf_all_cmd);
1849 8 : install_element(VIEW_NODE, &show_ipv6_multicast_count_cmd);
1850 8 : install_element(VIEW_NODE, &show_ipv6_multicast_count_vrf_all_cmd);
1851 8 : install_element(VIEW_NODE, &show_ipv6_mroute_cmd);
1852 8 : install_element(VIEW_NODE, &show_ipv6_mroute_vrf_all_cmd);
1853 8 : install_element(VIEW_NODE, &show_ipv6_mroute_count_cmd);
1854 8 : install_element(VIEW_NODE, &show_ipv6_mroute_count_vrf_all_cmd);
1855 8 : install_element(VIEW_NODE, &show_ipv6_mroute_summary_cmd);
1856 8 : install_element(VIEW_NODE, &show_ipv6_mroute_summary_vrf_all_cmd);
1857 8 : install_element(VIEW_NODE, &show_ipv6_pim_interface_traffic_cmd);
1858 8 : install_element(VIEW_NODE, &show_ipv6_pim_bsr_cmd);
1859 8 : install_element(VIEW_NODE, &show_ipv6_pim_bsm_db_cmd);
1860 8 : install_element(VIEW_NODE, &show_ipv6_pim_bsrp_cmd);
1861 8 : install_element(ENABLE_NODE, &clear_ipv6_pim_statistics_cmd);
1862 8 : install_element(ENABLE_NODE, &clear_ipv6_mroute_cmd);
1863 8 : install_element(ENABLE_NODE, &clear_ipv6_pim_oil_cmd);
1864 8 : install_element(ENABLE_NODE, &clear_ipv6_mroute_count_cmd);
1865 8 : install_element(ENABLE_NODE, &clear_ipv6_pim_bsr_db_cmd);
1866 8 : install_element(ENABLE_NODE, &clear_ipv6_pim_interfaces_cmd);
1867 8 : install_element(ENABLE_NODE, &clear_ipv6_pim_interface_traffic_cmd);
1868 :
1869 8 : install_element(ENABLE_NODE, &show_debugging_pimv6_cmd);
1870 :
1871 8 : install_element(ENABLE_NODE, &debug_pimv6_cmd);
1872 8 : install_element(ENABLE_NODE, &debug_pimv6_nht_cmd);
1873 8 : install_element(ENABLE_NODE, &debug_pimv6_nht_det_cmd);
1874 8 : install_element(ENABLE_NODE, &debug_pimv6_events_cmd);
1875 8 : install_element(ENABLE_NODE, &debug_pimv6_packets_cmd);
1876 8 : install_element(ENABLE_NODE, &debug_pimv6_packetdump_send_cmd);
1877 8 : install_element(ENABLE_NODE, &debug_pimv6_packetdump_recv_cmd);
1878 8 : install_element(ENABLE_NODE, &debug_pimv6_trace_cmd);
1879 8 : install_element(ENABLE_NODE, &debug_pimv6_trace_detail_cmd);
1880 8 : install_element(ENABLE_NODE, &debug_pimv6_zebra_cmd);
1881 8 : install_element(ENABLE_NODE, &debug_mroute6_cmd);
1882 8 : install_element(ENABLE_NODE, &debug_mroute6_detail_cmd);
1883 8 : install_element(ENABLE_NODE, &debug_mld_cmd);
1884 8 : install_element(ENABLE_NODE, &debug_mld_events_cmd);
1885 8 : install_element(ENABLE_NODE, &debug_mld_packets_cmd);
1886 8 : install_element(ENABLE_NODE, &debug_mld_trace_cmd);
1887 8 : install_element(ENABLE_NODE, &debug_mld_trace_detail_cmd);
1888 8 : install_element(ENABLE_NODE, &debug_pimv6_bsm_cmd);
1889 :
1890 8 : install_element(CONFIG_NODE, &debug_pimv6_cmd);
1891 8 : install_element(CONFIG_NODE, &debug_pimv6_nht_cmd);
1892 8 : install_element(CONFIG_NODE, &debug_pimv6_nht_det_cmd);
1893 8 : install_element(CONFIG_NODE, &debug_pimv6_events_cmd);
1894 8 : install_element(CONFIG_NODE, &debug_pimv6_packets_cmd);
1895 8 : install_element(CONFIG_NODE, &debug_pimv6_packetdump_send_cmd);
1896 8 : install_element(CONFIG_NODE, &debug_pimv6_packetdump_recv_cmd);
1897 8 : install_element(CONFIG_NODE, &debug_pimv6_trace_cmd);
1898 8 : install_element(CONFIG_NODE, &debug_pimv6_trace_detail_cmd);
1899 8 : install_element(CONFIG_NODE, &debug_pimv6_zebra_cmd);
1900 8 : install_element(CONFIG_NODE, &debug_mroute6_cmd);
1901 8 : install_element(CONFIG_NODE, &debug_mroute6_detail_cmd);
1902 8 : install_element(CONFIG_NODE, &debug_mld_cmd);
1903 8 : install_element(CONFIG_NODE, &debug_mld_events_cmd);
1904 8 : install_element(CONFIG_NODE, &debug_mld_packets_cmd);
1905 8 : install_element(CONFIG_NODE, &debug_mld_trace_cmd);
1906 8 : install_element(CONFIG_NODE, &debug_mld_trace_detail_cmd);
1907 8 : install_element(CONFIG_NODE, &debug_pimv6_bsm_cmd);
1908 8 : }
|