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