3 * Copyright (C) 2022 Vmware, Inc.
4 * Mobashshera Rasool <mrasool@vmware.com>
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.
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.
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
36 #include "pim_cmd_common.h"
38 #include "lib/northbound_cli.h"
39 #include "pim_errors.h"
44 #include "pim_iface.h"
45 #include "pim_zebra.h"
46 #include "pim_instance.h"
48 #include "pimd/pim6_cmd_clippy.c"
50 static struct cmd_node debug_node
= {
54 .config_write
= pim_debug_config_write
,
57 DEFPY (ipv6_pim_joinprune_time
,
58 ipv6_pim_joinprune_time_cmd
,
59 "ipv6 pim join-prune-interval (1-65535)$jpi",
62 "Join Prune Send Interval\n"
65 return pim_process_join_prune_cmd(vty
, jpi_str
);
68 DEFPY (no_ipv6_pim_joinprune_time
,
69 no_ipv6_pim_joinprune_time_cmd
,
70 "no ipv6 pim join-prune-interval [(1-65535)]",
74 "Join Prune Send Interval\n"
77 return pim_process_no_join_prune_cmd(vty
);
80 DEFPY (ipv6_pim_spt_switchover_infinity
,
81 ipv6_pim_spt_switchover_infinity_cmd
,
82 "ipv6 pim spt-switchover infinity-and-beyond",
86 "Never switch to SPT Tree\n")
88 return pim_process_spt_switchover_infinity_cmd(vty
);
91 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",
97 "Never switch to SPT Tree\n"
98 "Prefix-List to control which groups to switch\n"
101 return pim_process_spt_switchover_prefixlist_cmd(vty
, plist
);
104 DEFPY (no_ipv6_pim_spt_switchover_infinity
,
105 no_ipv6_pim_spt_switchover_infinity_cmd
,
106 "no ipv6 pim spt-switchover infinity-and-beyond",
111 "Never switch to SPT Tree\n")
113 return pim_process_no_spt_switchover_cmd(vty
);
116 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",
123 "Never switch to SPT Tree\n"
124 "Prefix-List to control which groups to switch\n"
125 "Prefix-List name\n")
127 return pim_process_no_spt_switchover_cmd(vty
);
130 DEFPY (ipv6_pim_packets
,
131 ipv6_pim_packets_cmd
,
132 "ipv6 pim packets (1-255)",
135 "packets to process at one time per fd\n"
136 "Number of packets\n")
138 return pim_process_pim_packet_cmd(vty
, packets_str
);
141 DEFPY (no_ipv6_pim_packets
,
142 no_ipv6_pim_packets_cmd
,
143 "no ipv6 pim packets [(1-255)]",
147 "packets to process at one time per fd\n"
150 return pim_process_no_pim_packet_cmd(vty
);
153 DEFPY (ipv6_pim_keep_alive
,
154 ipv6_pim_keep_alive_cmd
,
155 "ipv6 pim keep-alive-timer (1-65535)$kat",
161 return pim_process_keepalivetimer_cmd(vty
, kat_str
);
164 DEFPY (no_ipv6_pim_keep_alive
,
165 no_ipv6_pim_keep_alive_cmd
,
166 "no ipv6 pim keep-alive-timer [(1-65535)]",
173 return pim_process_no_keepalivetimer_cmd(vty
);
176 DEFPY (ipv6_pim_rp_keep_alive
,
177 ipv6_pim_rp_keep_alive_cmd
,
178 "ipv6 pim rp keep-alive-timer (1-65535)$kat",
185 return pim_process_rp_kat_cmd(vty
, kat_str
);
188 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)]",
198 return pim_process_no_rp_kat_cmd(vty
);
201 DEFPY (ipv6_pim_register_suppress
,
202 ipv6_pim_register_suppress_cmd
,
203 "ipv6 pim register-suppress-time (1-65535)$rst",
206 "Register Suppress Timer\n"
209 return pim_process_register_suppress_cmd(vty
, rst_str
);
212 DEFPY (no_ipv6_pim_register_suppress
,
213 no_ipv6_pim_register_suppress_cmd
,
214 "no ipv6 pim register-suppress-time [(1-65535)]",
218 "Register Suppress Timer\n"
221 return pim_process_no_register_suppress_cmd(vty
);
224 DEFPY (interface_ipv6_pim
,
225 interface_ipv6_pim_cmd
,
226 "ipv6 pim [passive$passive]",
229 "Disable exchange of protocol packets\n")
233 ret
= pim_process_ip_pim_cmd(vty
);
239 return pim_process_ip_pim_passive_cmd(vty
, true);
244 DEFPY (interface_no_ipv6_pim
,
245 interface_no_ipv6_pim_cmd
,
246 "no ipv6 pim [passive$passive]",
250 "Disable exchange of protocol packets\n")
253 return pim_process_ip_pim_passive_cmd(vty
, false);
255 return pim_process_no_ip_pim_cmd(vty
);
258 DEFPY (interface_ipv6_pim_drprio
,
259 interface_ipv6_pim_drprio_cmd
,
260 "ipv6 pim drpriority (1-4294967295)",
263 "Set the Designated Router Election Priority\n"
264 "Value of the new DR Priority\n")
266 return pim_process_ip_pim_drprio_cmd(vty
, drpriority_str
);
269 DEFPY (interface_no_ipv6_pim_drprio
,
270 interface_no_ipv6_pim_drprio_cmd
,
271 "no ipv6 pim drpriority [(1-4294967295)]",
275 "Revert the Designated Router Priority to default\n"
276 "Old Value of the Priority\n")
278 return pim_process_no_ip_pim_drprio_cmd(vty
);
281 DEFPY (interface_ipv6_pim_hello
,
282 interface_ipv6_pim_hello_cmd
,
283 "ipv6 pim hello (1-65535) [(1-65535)]$hold",
287 IFACE_PIM_HELLO_TIME_STR
288 IFACE_PIM_HELLO_HOLD_STR
)
290 return pim_process_ip_pim_hello_cmd(vty
, hello_str
, hold_str
);
293 DEFPY (interface_no_ipv6_pim_hello
,
294 interface_no_ipv6_pim_hello_cmd
,
295 "no ipv6 pim hello [(1-65535) [(1-65535)]]",
303 return pim_process_no_ip_pim_hello_cmd(vty
);
306 DEFPY (interface_ipv6_pim_activeactive
,
307 interface_ipv6_pim_activeactive_cmd
,
308 "[no] ipv6 pim active-active",
312 "Mark interface as Active-Active for MLAG operations\n")
314 return pim_process_ip_pim_activeactive_cmd(vty
, no
);
317 DEFPY_HIDDEN (interface_ipv6_pim_ssm
,
318 interface_ipv6_pim_ssm_cmd
,
326 ret
= pim_process_ip_pim_cmd(vty
);
332 "Enabled PIM SM on interface; configure PIM SSM range if needed\n");
337 DEFPY_HIDDEN (interface_no_ipv6_pim_ssm
,
338 interface_no_ipv6_pim_ssm_cmd
,
345 return pim_process_no_ip_pim_cmd(vty
);
348 DEFPY_HIDDEN (interface_ipv6_pim_sm
,
349 interface_ipv6_pim_sm_cmd
,
355 return pim_process_ip_pim_cmd(vty
);
358 DEFPY_HIDDEN (interface_no_ipv6_pim_sm
,
359 interface_no_ipv6_pim_sm_cmd
,
366 return pim_process_no_ip_pim_cmd(vty
);
370 DEFPY (interface_ipv6_pim_boundary_oil
,
371 interface_ipv6_pim_boundary_oil_cmd
,
372 "ipv6 multicast boundary oil WORD",
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")
379 return pim_process_ip_pim_boundary_oil_cmd(vty
, oil
);
382 DEFPY (interface_no_ipv6_pim_boundary_oil
,
383 interface_no_ipv6_pim_boundary_oil_cmd
,
384 "no ipv6 multicast boundary oil [WORD]",
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")
392 return pim_process_no_ip_pim_boundary_oil_cmd(vty
);
395 DEFPY (interface_ipv6_mroute
,
396 interface_ipv6_mroute_cmd
,
397 "ipv6 mroute INTERFACE X:X::X:X$group [X:X::X:X]$source",
399 "Add multicast route\n"
400 "Outgoing interface name\n"
404 return pim_process_ip_mroute_cmd(vty
, interface
, group_str
, source_str
);
407 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",
412 "Add multicast route\n"
413 "Outgoing interface name\n"
417 return pim_process_no_ip_mroute_cmd(vty
, interface
, group_str
,
423 "ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
427 "ipv6 address of RP\n"
428 "Group Address range to cover\n")
430 const char *group_str
= (gp_str
) ? gp_str
: "FF00::0/8";
432 return pim_process_rp_cmd(vty
, rp_str
, group_str
);
435 DEFPY (no_ipv6_pim_rp
,
437 "no ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
442 "ipv6 address of RP\n"
443 "Group Address range to cover\n")
445 const char *group_str
= (gp_str
) ? gp_str
: "FF00::0/8";
447 return pim_process_no_rp_cmd(vty
, rp_str
, group_str
);
450 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",
456 "ipv6 address of RP\n"
457 "group prefix-list filter\n"
458 "Name of a prefix-list\n")
460 return pim_process_rp_plist_cmd(vty
, rp_str
, plist
);
463 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",
470 "ipv6 address of RP\n"
471 "group prefix-list filter\n"
472 "Name of a prefix-list\n")
474 return pim_process_no_rp_plist_cmd(vty
, rp_str
, plist
);
482 "Enable BSM support on the interface\n")
484 return pim_process_bsm_cmd(vty
);
487 DEFPY (no_ipv6_pim_bsm
,
493 "Enable BSM support on the interface\n")
495 return pim_process_no_bsm_cmd(vty
);
498 DEFPY (ipv6_pim_ucast_bsm
,
499 ipv6_pim_ucast_bsm_cmd
,
500 "ipv6 pim unicast-bsm",
503 "Accept/Send unicast BSM on the interface\n")
505 return pim_process_unicast_bsm_cmd(vty
);
508 DEFPY (no_ipv6_pim_ucast_bsm
,
509 no_ipv6_pim_ucast_bsm_cmd
,
510 "no ipv6 pim unicast-bsm",
514 "Accept/Send unicast BSM on the interface\n")
516 return pim_process_no_unicast_bsm_cmd(vty
);
519 DEFPY (ipv6_ssmpingd
,
521 "ipv6 ssmpingd [X:X::X:X]$source",
526 const char *src_str
= (source_str
) ? source_str
: "::";
528 return pim_process_ssmpingd_cmd(vty
, NB_OP_CREATE
, src_str
);
532 DEFPY (no_ipv6_ssmpingd
,
533 no_ipv6_ssmpingd_cmd
,
534 "no ipv6 ssmpingd [X:X::X:X]$source",
540 const char *src_str
= (source_str
) ? source_str
: "::";
542 return pim_process_ssmpingd_cmd(vty
, NB_OP_DESTROY
, src_str
);
545 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]",
550 "MLD join multicast group\n"
551 "Multicast group address\n"
554 char xpath
[XPATH_MAXLEN
];
557 if (IPV6_ADDR_SAME(&source
, &in6addr_any
)) {
558 vty_out(vty
, "Bad source address %s\n", source_str
);
559 return CMD_WARNING_CONFIG_FAILED
;
564 snprintf(xpath
, sizeof(xpath
), FRR_GMP_JOIN_XPATH
, "frr-routing:ipv6",
565 group_str
, source_str
);
567 nb_cli_enqueue_change(vty
, xpath
, NB_OP_CREATE
, NULL
);
569 return nb_cli_apply_changes(vty
, NULL
);
572 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]",
578 "MLD join multicast group\n"
579 "Multicast group address\n"
582 char xpath
[XPATH_MAXLEN
];
585 if (IPV6_ADDR_SAME(&source
, &in6addr_any
)) {
586 vty_out(vty
, "Bad source address %s\n", source_str
);
587 return CMD_WARNING_CONFIG_FAILED
;
592 snprintf(xpath
, sizeof(xpath
), FRR_GMP_JOIN_XPATH
, "frr-routing:ipv6",
593 group_str
, source_str
);
595 nb_cli_enqueue_change(vty
, xpath
, NB_OP_DESTROY
, NULL
);
597 return nb_cli_apply_changes(vty
, NULL
);
600 DEFPY (interface_ipv6_mld
,
601 interface_ipv6_mld_cmd
,
606 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
608 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
612 DEFPY (interface_no_ipv6_mld
,
613 interface_no_ipv6_mld_cmd
,
619 const struct lyd_node
*pim_enable_dnode
;
620 char pim_if_xpath
[XPATH_MAXLEN
+ 64];
622 snprintf(pim_if_xpath
, sizeof(pim_if_xpath
),
623 "%s/frr-pim:pim/address-family[address-family='%s']",
624 VTY_CURR_XPATH
, "frr-routing:ipv6");
626 pim_enable_dnode
= yang_dnode_getf(vty
->candidate_config
->dnode
,
627 FRR_PIM_ENABLE_XPATH
, VTY_CURR_XPATH
,
629 if (!pim_enable_dnode
) {
630 nb_cli_enqueue_change(vty
, pim_if_xpath
, NB_OP_DESTROY
, NULL
);
631 nb_cli_enqueue_change(vty
, ".", NB_OP_DESTROY
, NULL
);
633 if (!yang_dnode_get_bool(pim_enable_dnode
, ".")) {
634 nb_cli_enqueue_change(vty
, pim_if_xpath
, NB_OP_DESTROY
,
636 nb_cli_enqueue_change(vty
, ".", NB_OP_DESTROY
, NULL
);
638 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
,
642 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
646 DEFPY (interface_ipv6_mld_version
,
647 interface_ipv6_mld_version_cmd
,
648 "ipv6 mld version (1-2)$version",
652 "MLD version number\n")
654 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
655 nb_cli_enqueue_change(vty
, "./mld-version", NB_OP_MODIFY
, version_str
);
657 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
661 DEFPY (interface_no_ipv6_mld_version
,
662 interface_no_ipv6_mld_version_cmd
,
663 "no ipv6 mld version [(1-2)]",
668 "MLD version number\n")
670 nb_cli_enqueue_change(vty
, "./mld-version", NB_OP_DESTROY
, NULL
);
672 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
676 DEFPY (interface_ipv6_mld_query_interval
,
677 interface_ipv6_mld_query_interval_cmd
,
678 "ipv6 mld query-interval (1-65535)$q_interval",
681 IFACE_MLD_QUERY_INTERVAL_STR
682 "Query interval in seconds\n")
684 const struct lyd_node
*pim_enable_dnode
;
686 pim_enable_dnode
= yang_dnode_getf(vty
->candidate_config
->dnode
,
687 FRR_PIM_ENABLE_XPATH
, VTY_CURR_XPATH
,
689 if (!pim_enable_dnode
) {
690 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
692 if (!yang_dnode_get_bool(pim_enable_dnode
, "."))
693 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
,
697 nb_cli_enqueue_change(vty
, "./query-interval", NB_OP_MODIFY
,
700 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
704 DEFPY (interface_no_ipv6_mld_query_interval
,
705 interface_no_ipv6_mld_query_interval_cmd
,
706 "no ipv6 mld query-interval [(1-65535)]",
710 IFACE_MLD_QUERY_INTERVAL_STR
713 nb_cli_enqueue_change(vty
, "./query-interval", NB_OP_DESTROY
, NULL
);
715 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
719 DEFPY (ipv6_mld_group_watermark
,
720 ipv6_mld_group_watermark_cmd
,
721 "ipv6 mld watermark-warn (1-65535)$limit",
724 "Configure group limit for watermark warning\n"
725 "Group count to generate watermark warning\n")
727 PIM_DECLVAR_CONTEXT_VRF(vrf
, pim
);
728 pim
->gm_watermark_limit
= limit
;
733 DEFPY (no_ipv6_mld_group_watermark
,
734 no_ipv6_mld_group_watermark_cmd
,
735 "no ipv6 mld watermark-warn [(1-65535)$limit]",
739 "Unconfigure group limit for watermark warning\n"
742 PIM_DECLVAR_CONTEXT_VRF(vrf
, pim
);
743 pim
->gm_watermark_limit
= 0;
748 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",
753 IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
754 "Query response value in milliseconds\n")
756 return gm_process_query_max_response_time_cmd(vty
, qmrt_str
);
759 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)]",
765 IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
768 return gm_process_no_query_max_response_time_cmd(vty
);
771 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",
776 IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
777 "Last member query count\n")
779 return gm_process_last_member_query_count_cmd(vty
, lmqc_str
);
782 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)]",
788 IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
791 return gm_process_no_last_member_query_count_cmd(vty
);
794 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",
799 IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
800 "Last member query interval in deciseconds\n")
802 return gm_process_last_member_query_interval_cmd(vty
, lmqi_str
);
805 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)]",
811 IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
814 return gm_process_no_last_member_query_interval_cmd(vty
);
817 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]",
824 "PIM RP information\n"
825 "Multicast Group range\n"
828 return pim_show_rp_helper(vrf
, vty
, group_str
, (struct prefix
*)group
,
832 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]",
839 "PIM RP information\n"
840 "Multicast Group range\n"
843 return pim_show_rp_vrf_all_helper(vty
, group_str
,
844 (struct prefix
*)group
, !!json
);
847 DEFPY (show_ipv6_pim_rpf
,
848 show_ipv6_pim_rpf_cmd
,
849 "show ipv6 pim [vrf NAME] rpf [json$json]",
854 "PIM cached source rpf information\n"
857 return pim_show_rpf_helper(vrf
, vty
, !!json
);
860 DEFPY (show_ipv6_pim_rpf_vrf_all
,
861 show_ipv6_pim_rpf_vrf_all_cmd
,
862 "show ipv6 pim vrf all rpf [json$json]",
867 "PIM cached source rpf information\n"
870 return pim_show_rpf_vrf_all_helper(vty
, !!json
);
873 DEFPY (show_ipv6_pim_secondary
,
874 show_ipv6_pim_secondary_cmd
,
875 "show ipv6 pim [vrf NAME] secondary",
880 "PIM neighbor addresses\n")
882 return pim_show_secondary_helper(vrf
, vty
);
885 DEFPY (show_ipv6_pim_statistics
,
886 show_ipv6_pim_statistics_cmd
,
887 "show ipv6 pim [vrf NAME] statistics [interface WORD$word] [json$json]",
897 return pim_show_statistics_helper(vrf
, vty
, word
, !!json
);
900 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]",
907 "PIM upstream information\n"
908 "The Source or Group\n"
912 return pim_show_upstream_helper(vrf
, vty
, s_or_g
, g
, !!json
);
915 DEFPY (show_ipv6_pim_upstream_vrf_all
,
916 show_ipv6_pim_upstream_vrf_all_cmd
,
917 "show ipv6 pim vrf all upstream [json$json]",
922 "PIM upstream information\n"
925 return pim_show_upstream_vrf_all_helper(vty
, !!json
);
928 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]",
935 "PIM upstream join-desired\n"
938 return pim_show_upstream_join_desired_helper(vrf
, vty
, !!json
);
941 DEFPY (show_ipv6_pim_upstream_rpf
,
942 show_ipv6_pim_upstream_rpf_cmd
,
943 "show ipv6 pim [vrf NAME] upstream-rpf [json$json]",
948 "PIM upstream source rpf\n"
951 return pim_show_upstream_rpf_helper(vrf
, vty
, !!json
);
954 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]",
961 "PIM state information\n"
962 "Unicast or Multicast address\n"
963 "Multicast address\n"
966 return pim_show_state_helper(vrf
, vty
, s_or_g_str
, g_str
, !!json
);
969 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]",
976 "PIM state information\n"
977 "Unicast or Multicast address\n"
978 "Multicast address\n"
981 return pim_show_state_vrf_all_helper(vty
, s_or_g_str
, g_str
, !!json
);
984 DEFPY (show_ipv6_pim_channel
,
985 show_ipv6_pim_channel_cmd
,
986 "show ipv6 pim [vrf NAME] channel [json$json]",
991 "PIM downstream channel info\n"
994 return pim_show_channel_cmd_helper(vrf
, vty
, !!json
);
997 DEFPY (show_ipv6_pim_interface
,
998 show_ipv6_pim_interface_cmd
,
999 "show ipv6 pim [vrf NAME] interface [detail|WORD]$interface [json$json]",
1004 "PIM interface information\n"
1009 return pim_show_interface_cmd_helper(vrf
, vty
, !!json
, false,
1013 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]",
1020 "PIM interface information\n"
1025 return pim_show_interface_vrf_all_cmd_helper(vty
, !!json
, false,
1029 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]",
1036 "PIM interface join information\n"
1037 "The Source or Group\n"
1041 return pim_show_join_cmd_helper(vrf
, vty
, s_or_g
, g
, json
);
1044 DEFPY (show_ipv6_pim_join_vrf_all
,
1045 show_ipv6_pim_join_vrf_all_cmd
,
1046 "show ipv6 pim vrf all join [json$json]",
1051 "PIM interface join information\n"
1054 return pim_show_join_vrf_all_cmd_helper(vty
, json
);
1057 DEFPY (show_ipv6_pim_jp_agg
,
1058 show_ipv6_pim_jp_agg_cmd
,
1059 "show ipv6 pim [vrf NAME] jp-agg",
1064 "join prune aggregation list\n")
1066 return pim_show_jp_agg_list_cmd_helper(vrf
, vty
);
1069 DEFPY (show_ipv6_pim_local_membership
,
1070 show_ipv6_pim_local_membership_cmd
,
1071 "show ipv6 pim [vrf NAME] local-membership [json$json]",
1076 "PIM interface local-membership\n"
1079 return pim_show_membership_cmd_helper(vrf
, vty
, !!json
);
1082 DEFPY (show_ipv6_pim_neighbor
,
1083 show_ipv6_pim_neighbor_cmd
,
1084 "show ipv6 pim [vrf NAME] neighbor [detail|WORD]$interface [json$json]",
1089 "PIM neighbor information\n"
1091 "Name of interface or neighbor\n"
1094 return pim_show_neighbors_cmd_helper(vrf
, vty
, json
, interface
);
1097 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]",
1104 "PIM neighbor information\n"
1106 "Name of interface or neighbor\n"
1109 return pim_show_neighbors_vrf_all_cmd_helper(vty
, json
, interface
);
1112 DEFPY (show_ipv6_pim_nexthop
,
1113 show_ipv6_pim_nexthop_cmd
,
1114 "show ipv6 pim [vrf NAME] nexthop [json$json]",
1119 "PIM cached nexthop rpf information\n"
1122 return pim_show_nexthop_cmd_helper(vrf
, vty
, !!json
);
1125 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",
1132 "PIM cached nexthop rpf lookup\n"
1133 "Source/RP address\n"
1134 "Multicast Group address\n")
1136 return pim_show_nexthop_lookup_cmd_helper(vrf
, vty
, source
, group
);
1139 DEFPY (show_ipv6_multicast
,
1140 show_ipv6_multicast_cmd
,
1141 "show ipv6 multicast [vrf NAME]",
1144 "Multicast global information\n"
1147 return pim_show_multicast_helper(vrf
, vty
);
1150 DEFPY (show_ipv6_multicast_vrf_all
,
1151 show_ipv6_multicast_vrf_all_cmd
,
1152 "show ipv6 multicast vrf all",
1155 "Multicast global information\n"
1158 return pim_show_multicast_vrf_all_helper(vty
);
1161 DEFPY (show_ipv6_multicast_count
,
1162 show_ipv6_multicast_count_cmd
,
1163 "show ipv6 multicast count [vrf NAME] [json$json]",
1166 "Multicast global information\n"
1167 "Data packet count\n"
1171 return pim_show_multicast_count_helper(vrf
, vty
, !!json
);
1174 DEFPY (show_ipv6_multicast_count_vrf_all
,
1175 show_ipv6_multicast_count_vrf_all_cmd
,
1176 "show ipv6 multicast count vrf all [json$json]",
1179 "Multicast global information\n"
1180 "Data packet count\n"
1184 return pim_show_multicast_count_vrf_all_helper(vty
, !!json
);
1187 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]",
1194 "The Source or Group\n"
1196 "Fill in Assumed data\n"
1199 return pim_show_mroute_helper(vrf
, vty
, s_or_g
, g
, !!fill
, !!json
);
1202 DEFPY (show_ipv6_mroute_vrf_all
,
1203 show_ipv6_mroute_vrf_all_cmd
,
1204 "show ipv6 mroute vrf all [fill$fill] [json$json]",
1209 "Fill in Assumed data\n"
1212 return pim_show_mroute_vrf_all_helper(vty
, !!fill
, !!json
);
1215 DEFPY (show_ipv6_mroute_count
,
1216 show_ipv6_mroute_count_cmd
,
1217 "show ipv6 mroute [vrf NAME] count [json$json]",
1222 "Route and packet count data\n"
1225 return pim_show_mroute_count_helper(vrf
, vty
, !!json
);
1228 DEFPY (show_ipv6_mroute_count_vrf_all
,
1229 show_ipv6_mroute_count_vrf_all_cmd
,
1230 "show ipv6 mroute vrf all count [json$json]",
1235 "Route and packet count data\n"
1238 return pim_show_mroute_count_vrf_all_helper(vty
, !!json
);
1241 DEFPY (show_ipv6_mroute_summary
,
1242 show_ipv6_mroute_summary_cmd
,
1243 "show ipv6 mroute [vrf NAME] summary [json$json]",
1248 "Summary of all mroutes\n"
1251 return pim_show_mroute_summary_helper(vrf
, vty
, !!json
);
1254 DEFPY (show_ipv6_mroute_summary_vrf_all
,
1255 show_ipv6_mroute_summary_vrf_all_cmd
,
1256 "show ipv6 mroute vrf all summary [json$json]",
1261 "Summary of all mroutes\n"
1264 return pim_show_mroute_summary_vrf_all_helper(vty
, !!json
);
1267 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]",
1274 "PIM interface information\n"
1275 "Protocol Packet counters\n"
1279 return pim_show_interface_traffic_helper(vrf
, if_name
, vty
, !!json
);
1282 DEFPY (show_ipv6_pim_bsr
,
1283 show_ipv6_pim_bsr_cmd
,
1284 "show ipv6 pim bsr [vrf NAME] [json$json]",
1288 "boot-strap router information\n"
1292 return pim_show_bsr_helper(vrf
, vty
, !!json
);
1295 DEFPY (show_ipv6_pim_bsm_db
,
1296 show_ipv6_pim_bsm_db_cmd
,
1297 "show ipv6 pim bsm-database [vrf NAME] [json$json]",
1301 "PIM cached bsm packets information\n"
1305 return pim_show_bsm_db_helper(vrf
, vty
, !!json
);
1308 DEFPY (show_ipv6_pim_bsrp
,
1309 show_ipv6_pim_bsrp_cmd
,
1310 "show ipv6 pim bsrp-info [vrf NAME] [json$json]",
1314 "PIM cached group-rp mappings information\n"
1318 return pim_show_group_rp_mappings_info_helper(vrf
, vty
, !!json
);
1321 DEFPY (clear_ipv6_pim_statistics
,
1322 clear_ipv6_pim_statistics_cmd
,
1323 "clear ipv6 pim statistics [vrf NAME]$name",
1328 "Reset PIM statistics\n")
1330 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1335 clear_pim_statistics(v
->info
);
1340 DEFPY (clear_ipv6_pim_interface_traffic
,
1341 clear_ipv6_pim_interface_traffic_cmd
,
1342 "clear ipv6 pim [vrf NAME] interface traffic",
1347 "Reset PIM interfaces\n"
1348 "Reset Protocol Packet counters\n")
1350 return clear_pim_interface_traffic(vrf
, vty
);
1353 DEFPY (clear_ipv6_mroute
,
1354 clear_ipv6_mroute_cmd
,
1355 "clear ipv6 mroute [vrf NAME]$name",
1361 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1366 clear_mroute(v
->info
);
1371 DEFPY (clear_ipv6_pim_oil
,
1372 clear_ipv6_pim_oil_cmd
,
1373 "clear ipv6 pim [vrf NAME]$name oil",
1378 "Rescan PIMv6 OIL (output interface list)\n")
1380 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1385 pim_scan_oil(v
->info
);
1390 DEFPY (clear_ipv6_mroute_count
,
1391 clear_ipv6_mroute_count_cmd
,
1392 "clear ipv6 mroute [vrf NAME]$name count",
1397 "Route and packet count data\n")
1399 return clear_ip_mroute_count_command(vty
, name
);
1402 DEFPY (clear_ipv6_pim_interfaces
,
1403 clear_ipv6_pim_interfaces_cmd
,
1404 "clear ipv6 pim [vrf NAME] interfaces",
1409 "Reset PIM interfaces\n")
1411 struct vrf
*v
= pim_cmd_lookup(vty
, vrf
);
1416 clear_pim_interfaces(v
->info
);
1421 DEFPY (clear_ipv6_pim_bsr_db
,
1422 clear_ipv6_pim_bsr_db_cmd
,
1423 "clear ipv6 pim [vrf NAME] bsr-data",
1428 "Reset pim bsr data\n")
1432 v
= vrf_lookup_by_name(vrf
? vrf
: VRF_DEFAULT_NAME
);
1436 pim_bsm_clear(v
->info
);
1449 return pim_debug_pim_cmd();
1451 return pim_no_debug_pim_cmd();
1454 DEFPY (debug_pimv6_nht
,
1455 debug_pimv6_nht_cmd
,
1456 "[no] debug pimv6 nht",
1460 "Nexthop Tracking\n")
1463 PIM_DO_DEBUG_PIM_NHT
;
1465 PIM_DONT_DEBUG_PIM_NHT
;
1469 DEFPY (debug_pimv6_nht_det
,
1470 debug_pimv6_nht_det_cmd
,
1471 "[no] debug pimv6 nht detail",
1475 "Nexthop Tracking\n"
1476 "Detailed Information\n")
1479 PIM_DO_DEBUG_PIM_NHT_DETAIL
;
1481 PIM_DONT_DEBUG_PIM_NHT_DETAIL
;
1485 DEFPY (debug_pimv6_events
,
1486 debug_pimv6_events_cmd
,
1487 "[no] debug pimv6 events",
1491 DEBUG_PIMV6_EVENTS_STR
)
1494 PIM_DO_DEBUG_PIM_EVENTS
;
1496 PIM_DONT_DEBUG_PIM_EVENTS
;
1500 DEFPY (debug_pimv6_packets
,
1501 debug_pimv6_packets_cmd
,
1502 "[no] debug pimv6 packets [<hello$hello|joins$joins|register$registers>]",
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
)
1512 return pim_debug_pim_packets_cmd(hello
, joins
, registers
, vty
);
1514 return pim_no_debug_pim_packets_cmd(hello
, joins
, registers
,
1518 DEFPY (debug_pimv6_packetdump_send
,
1519 debug_pimv6_packetdump_send_cmd
,
1520 "[no] debug pimv6 packet-dump send",
1524 DEBUG_PIMV6_PACKETDUMP_STR
1525 DEBUG_PIMV6_PACKETDUMP_SEND_STR
)
1528 PIM_DO_DEBUG_PIM_PACKETDUMP_SEND
;
1530 PIM_DONT_DEBUG_PIM_PACKETDUMP_SEND
;
1534 DEFPY (debug_pimv6_packetdump_recv
,
1535 debug_pimv6_packetdump_recv_cmd
,
1536 "[no] debug pimv6 packet-dump receive",
1540 DEBUG_PIMV6_PACKETDUMP_STR
1541 DEBUG_PIMV6_PACKETDUMP_RECV_STR
)
1544 PIM_DO_DEBUG_PIM_PACKETDUMP_RECV
;
1546 PIM_DONT_DEBUG_PIM_PACKETDUMP_RECV
;
1550 DEFPY (debug_pimv6_trace
,
1551 debug_pimv6_trace_cmd
,
1552 "[no] debug pimv6 trace",
1556 DEBUG_PIMV6_TRACE_STR
)
1559 PIM_DO_DEBUG_PIM_TRACE
;
1561 PIM_DONT_DEBUG_PIM_TRACE
;
1565 DEFPY (debug_pimv6_trace_detail
,
1566 debug_pimv6_trace_detail_cmd
,
1567 "[no] debug pimv6 trace detail",
1571 DEBUG_PIMV6_TRACE_STR
1572 "Detailed Information\n")
1575 PIM_DO_DEBUG_PIM_TRACE_DETAIL
;
1577 PIM_DONT_DEBUG_PIM_TRACE_DETAIL
;
1581 DEFPY (debug_pimv6_zebra
,
1582 debug_pimv6_zebra_cmd
,
1583 "[no] debug pimv6 zebra",
1587 DEBUG_PIMV6_ZEBRA_STR
)
1592 PIM_DONT_DEBUG_ZEBRA
;
1596 DEFPY (debug_mroute6
,
1598 "[no] debug mroute6",
1604 PIM_DO_DEBUG_MROUTE
;
1606 PIM_DONT_DEBUG_MROUTE
;
1611 DEFPY (debug_mroute6_detail
,
1612 debug_mroute6_detail_cmd
,
1613 "[no] debug mroute6 detail",
1620 PIM_DO_DEBUG_MROUTE_DETAIL
;
1622 PIM_DONT_DEBUG_MROUTE_DETAIL
;
1627 DEFUN_NOSH (show_debugging_pimv6
,
1628 show_debugging_pimv6_cmd
,
1629 "show debugging [pimv6]",
1632 "PIMv6 Information\n")
1634 vty_out(vty
, "PIMv6 debugging status\n");
1636 pim_debug_config_write(vty
);
1638 cmd_show_lib_debugs(vty
);
1651 PIM_DO_DEBUG_GM_EVENTS
;
1652 PIM_DO_DEBUG_GM_PACKETS
;
1653 PIM_DO_DEBUG_GM_TRACE
;
1655 PIM_DONT_DEBUG_GM_EVENTS
;
1656 PIM_DONT_DEBUG_GM_PACKETS
;
1657 PIM_DONT_DEBUG_GM_TRACE
;
1663 DEFPY (debug_mld_events
,
1664 debug_mld_events_cmd
,
1665 "[no] debug mld events",
1669 DEBUG_MLD_EVENTS_STR
)
1672 PIM_DO_DEBUG_GM_EVENTS
;
1674 PIM_DONT_DEBUG_GM_EVENTS
;
1679 DEFPY (debug_mld_packets
,
1680 debug_mld_packets_cmd
,
1681 "[no] debug mld packets",
1685 DEBUG_MLD_PACKETS_STR
)
1688 PIM_DO_DEBUG_GM_PACKETS
;
1690 PIM_DONT_DEBUG_GM_PACKETS
;
1695 DEFPY (debug_mld_trace
,
1696 debug_mld_trace_cmd
,
1697 "[no] debug mld trace",
1701 DEBUG_MLD_TRACE_STR
)
1704 PIM_DO_DEBUG_GM_TRACE
;
1706 PIM_DONT_DEBUG_GM_TRACE
;
1711 DEFPY (debug_mld_trace_detail
,
1712 debug_mld_trace_detail_cmd
,
1713 "[no] debug mld trace detail",
1721 PIM_DO_DEBUG_GM_TRACE_DETAIL
;
1723 PIM_DONT_DEBUG_GM_TRACE_DETAIL
;
1728 DEFPY (debug_pimv6_bsm
,
1729 debug_pimv6_bsm_cmd
,
1730 "[no] debug pimv6 bsm",
1734 DEBUG_PIMV6_BSM_STR
)
1744 void pim_cmd_init(void)
1746 if_cmd_init(pim_interface_config_write
);
1748 install_node(&debug_node
);
1750 install_element(CONFIG_NODE
, &ipv6_pim_joinprune_time_cmd
);
1751 install_element(CONFIG_NODE
, &no_ipv6_pim_joinprune_time_cmd
);
1752 install_element(CONFIG_NODE
, &ipv6_pim_spt_switchover_infinity_cmd
);
1753 install_element(CONFIG_NODE
, &ipv6_pim_spt_switchover_infinity_plist_cmd
);
1754 install_element(CONFIG_NODE
, &no_ipv6_pim_spt_switchover_infinity_cmd
);
1755 install_element(CONFIG_NODE
, &no_ipv6_pim_spt_switchover_infinity_plist_cmd
);
1756 install_element(CONFIG_NODE
, &ipv6_pim_packets_cmd
);
1757 install_element(CONFIG_NODE
, &no_ipv6_pim_packets_cmd
);
1758 install_element(CONFIG_NODE
, &ipv6_pim_keep_alive_cmd
);
1759 install_element(CONFIG_NODE
, &no_ipv6_pim_keep_alive_cmd
);
1760 install_element(CONFIG_NODE
, &ipv6_pim_rp_keep_alive_cmd
);
1761 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_keep_alive_cmd
);
1762 install_element(CONFIG_NODE
, &ipv6_pim_register_suppress_cmd
);
1763 install_element(CONFIG_NODE
, &no_ipv6_pim_register_suppress_cmd
);
1764 install_element(INTERFACE_NODE
, &interface_ipv6_pim_cmd
);
1765 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_cmd
);
1766 install_element(INTERFACE_NODE
, &interface_ipv6_pim_drprio_cmd
);
1767 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_drprio_cmd
);
1768 install_element(INTERFACE_NODE
, &interface_ipv6_pim_hello_cmd
);
1769 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_hello_cmd
);
1770 install_element(INTERFACE_NODE
, &interface_ipv6_pim_activeactive_cmd
);
1771 install_element(INTERFACE_NODE
, &interface_ipv6_pim_ssm_cmd
);
1772 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_ssm_cmd
);
1773 install_element(INTERFACE_NODE
, &interface_ipv6_pim_sm_cmd
);
1774 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_sm_cmd
);
1775 install_element(INTERFACE_NODE
,
1776 &interface_ipv6_pim_boundary_oil_cmd
);
1777 install_element(INTERFACE_NODE
,
1778 &interface_no_ipv6_pim_boundary_oil_cmd
);
1779 install_element(INTERFACE_NODE
, &interface_ipv6_mroute_cmd
);
1780 install_element(INTERFACE_NODE
, &interface_no_ipv6_mroute_cmd
);
1781 /* Install BSM command */
1782 install_element(INTERFACE_NODE
, &ipv6_pim_bsm_cmd
);
1783 install_element(INTERFACE_NODE
, &no_ipv6_pim_bsm_cmd
);
1784 install_element(INTERFACE_NODE
, &ipv6_pim_ucast_bsm_cmd
);
1785 install_element(INTERFACE_NODE
, &no_ipv6_pim_ucast_bsm_cmd
);
1786 install_element(CONFIG_NODE
, &ipv6_pim_rp_cmd
);
1787 install_element(VRF_NODE
, &ipv6_pim_rp_cmd
);
1788 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_cmd
);
1789 install_element(VRF_NODE
, &no_ipv6_pim_rp_cmd
);
1790 install_element(CONFIG_NODE
, &ipv6_pim_rp_prefix_list_cmd
);
1791 install_element(VRF_NODE
, &ipv6_pim_rp_prefix_list_cmd
);
1792 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_prefix_list_cmd
);
1793 install_element(VRF_NODE
, &no_ipv6_pim_rp_prefix_list_cmd
);
1794 install_element(CONFIG_NODE
, &ipv6_ssmpingd_cmd
);
1795 install_element(VRF_NODE
, &ipv6_ssmpingd_cmd
);
1796 install_element(CONFIG_NODE
, &no_ipv6_ssmpingd_cmd
);
1797 install_element(VRF_NODE
, &no_ipv6_ssmpingd_cmd
);
1798 install_element(INTERFACE_NODE
, &interface_ipv6_mld_cmd
);
1799 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_cmd
);
1800 install_element(INTERFACE_NODE
, &interface_ipv6_mld_join_cmd
);
1801 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_join_cmd
);
1802 install_element(INTERFACE_NODE
, &interface_ipv6_mld_version_cmd
);
1803 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_version_cmd
);
1804 install_element(INTERFACE_NODE
, &interface_ipv6_mld_query_interval_cmd
);
1805 install_element(INTERFACE_NODE
,
1806 &interface_no_ipv6_mld_query_interval_cmd
);
1807 install_element(CONFIG_NODE
, &ipv6_mld_group_watermark_cmd
);
1808 install_element(VRF_NODE
, &ipv6_mld_group_watermark_cmd
);
1809 install_element(CONFIG_NODE
, &no_ipv6_mld_group_watermark_cmd
);
1810 install_element(VRF_NODE
, &no_ipv6_mld_group_watermark_cmd
);
1811 install_element(INTERFACE_NODE
,
1812 &interface_ipv6_mld_query_max_response_time_cmd
);
1813 install_element(INTERFACE_NODE
,
1814 &interface_no_ipv6_mld_query_max_response_time_cmd
);
1815 install_element(INTERFACE_NODE
,
1816 &interface_ipv6_mld_last_member_query_count_cmd
);
1817 install_element(INTERFACE_NODE
,
1818 &interface_no_ipv6_mld_last_member_query_count_cmd
);
1819 install_element(INTERFACE_NODE
,
1820 &interface_ipv6_mld_last_member_query_interval_cmd
);
1821 install_element(INTERFACE_NODE
,
1822 &interface_no_ipv6_mld_last_member_query_interval_cmd
);
1824 install_element(VIEW_NODE
, &show_ipv6_pim_rp_cmd
);
1825 install_element(VIEW_NODE
, &show_ipv6_pim_rp_vrf_all_cmd
);
1826 install_element(VIEW_NODE
, &show_ipv6_pim_rpf_cmd
);
1827 install_element(VIEW_NODE
, &show_ipv6_pim_rpf_vrf_all_cmd
);
1828 install_element(VIEW_NODE
, &show_ipv6_pim_secondary_cmd
);
1829 install_element(VIEW_NODE
, &show_ipv6_pim_statistics_cmd
);
1830 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_cmd
);
1831 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_vrf_all_cmd
);
1832 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_join_desired_cmd
);
1833 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_rpf_cmd
);
1834 install_element(VIEW_NODE
, &show_ipv6_pim_state_cmd
);
1835 install_element(VIEW_NODE
, &show_ipv6_pim_state_vrf_all_cmd
);
1836 install_element(VIEW_NODE
, &show_ipv6_pim_channel_cmd
);
1837 install_element(VIEW_NODE
, &show_ipv6_pim_interface_cmd
);
1838 install_element(VIEW_NODE
, &show_ipv6_pim_interface_vrf_all_cmd
);
1839 install_element(VIEW_NODE
, &show_ipv6_pim_join_cmd
);
1840 install_element(VIEW_NODE
, &show_ipv6_pim_join_vrf_all_cmd
);
1841 install_element(VIEW_NODE
, &show_ipv6_pim_jp_agg_cmd
);
1842 install_element(VIEW_NODE
, &show_ipv6_pim_local_membership_cmd
);
1843 install_element(VIEW_NODE
, &show_ipv6_pim_neighbor_cmd
);
1844 install_element(VIEW_NODE
, &show_ipv6_pim_neighbor_vrf_all_cmd
);
1845 install_element(VIEW_NODE
, &show_ipv6_pim_nexthop_cmd
);
1846 install_element(VIEW_NODE
, &show_ipv6_pim_nexthop_lookup_cmd
);
1847 install_element(VIEW_NODE
, &show_ipv6_multicast_cmd
);
1848 install_element(VIEW_NODE
, &show_ipv6_multicast_vrf_all_cmd
);
1849 install_element(VIEW_NODE
, &show_ipv6_multicast_count_cmd
);
1850 install_element(VIEW_NODE
, &show_ipv6_multicast_count_vrf_all_cmd
);
1851 install_element(VIEW_NODE
, &show_ipv6_mroute_cmd
);
1852 install_element(VIEW_NODE
, &show_ipv6_mroute_vrf_all_cmd
);
1853 install_element(VIEW_NODE
, &show_ipv6_mroute_count_cmd
);
1854 install_element(VIEW_NODE
, &show_ipv6_mroute_count_vrf_all_cmd
);
1855 install_element(VIEW_NODE
, &show_ipv6_mroute_summary_cmd
);
1856 install_element(VIEW_NODE
, &show_ipv6_mroute_summary_vrf_all_cmd
);
1857 install_element(VIEW_NODE
, &show_ipv6_pim_interface_traffic_cmd
);
1858 install_element(VIEW_NODE
, &show_ipv6_pim_bsr_cmd
);
1859 install_element(VIEW_NODE
, &show_ipv6_pim_bsm_db_cmd
);
1860 install_element(VIEW_NODE
, &show_ipv6_pim_bsrp_cmd
);
1861 install_element(ENABLE_NODE
, &clear_ipv6_pim_statistics_cmd
);
1862 install_element(ENABLE_NODE
, &clear_ipv6_mroute_cmd
);
1863 install_element(ENABLE_NODE
, &clear_ipv6_pim_oil_cmd
);
1864 install_element(ENABLE_NODE
, &clear_ipv6_mroute_count_cmd
);
1865 install_element(ENABLE_NODE
, &clear_ipv6_pim_bsr_db_cmd
);
1866 install_element(ENABLE_NODE
, &clear_ipv6_pim_interfaces_cmd
);
1867 install_element(ENABLE_NODE
, &clear_ipv6_pim_interface_traffic_cmd
);
1869 install_element(ENABLE_NODE
, &show_debugging_pimv6_cmd
);
1871 install_element(ENABLE_NODE
, &debug_pimv6_cmd
);
1872 install_element(ENABLE_NODE
, &debug_pimv6_nht_cmd
);
1873 install_element(ENABLE_NODE
, &debug_pimv6_nht_det_cmd
);
1874 install_element(ENABLE_NODE
, &debug_pimv6_events_cmd
);
1875 install_element(ENABLE_NODE
, &debug_pimv6_packets_cmd
);
1876 install_element(ENABLE_NODE
, &debug_pimv6_packetdump_send_cmd
);
1877 install_element(ENABLE_NODE
, &debug_pimv6_packetdump_recv_cmd
);
1878 install_element(ENABLE_NODE
, &debug_pimv6_trace_cmd
);
1879 install_element(ENABLE_NODE
, &debug_pimv6_trace_detail_cmd
);
1880 install_element(ENABLE_NODE
, &debug_pimv6_zebra_cmd
);
1881 install_element(ENABLE_NODE
, &debug_mroute6_cmd
);
1882 install_element(ENABLE_NODE
, &debug_mroute6_detail_cmd
);
1883 install_element(ENABLE_NODE
, &debug_mld_cmd
);
1884 install_element(ENABLE_NODE
, &debug_mld_events_cmd
);
1885 install_element(ENABLE_NODE
, &debug_mld_packets_cmd
);
1886 install_element(ENABLE_NODE
, &debug_mld_trace_cmd
);
1887 install_element(ENABLE_NODE
, &debug_mld_trace_detail_cmd
);
1888 install_element(ENABLE_NODE
, &debug_pimv6_bsm_cmd
);
1890 install_element(CONFIG_NODE
, &debug_pimv6_cmd
);
1891 install_element(CONFIG_NODE
, &debug_pimv6_nht_cmd
);
1892 install_element(CONFIG_NODE
, &debug_pimv6_nht_det_cmd
);
1893 install_element(CONFIG_NODE
, &debug_pimv6_events_cmd
);
1894 install_element(CONFIG_NODE
, &debug_pimv6_packets_cmd
);
1895 install_element(CONFIG_NODE
, &debug_pimv6_packetdump_send_cmd
);
1896 install_element(CONFIG_NODE
, &debug_pimv6_packetdump_recv_cmd
);
1897 install_element(CONFIG_NODE
, &debug_pimv6_trace_cmd
);
1898 install_element(CONFIG_NODE
, &debug_pimv6_trace_detail_cmd
);
1899 install_element(CONFIG_NODE
, &debug_pimv6_zebra_cmd
);
1900 install_element(CONFIG_NODE
, &debug_mroute6_cmd
);
1901 install_element(CONFIG_NODE
, &debug_mroute6_detail_cmd
);
1902 install_element(CONFIG_NODE
, &debug_mld_cmd
);
1903 install_element(CONFIG_NODE
, &debug_mld_events_cmd
);
1904 install_element(CONFIG_NODE
, &debug_mld_packets_cmd
);
1905 install_element(CONFIG_NODE
, &debug_mld_trace_cmd
);
1906 install_element(CONFIG_NODE
, &debug_mld_trace_detail_cmd
);
1907 install_element(CONFIG_NODE
, &debug_pimv6_bsm_cmd
);