1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Copyright (C) 2022 Vmware, Inc.
5 * Mobashshera Rasool <mrasool@vmware.com>
23 #include "pim_cmd_common.h"
25 #include "lib/northbound_cli.h"
26 #include "pim_errors.h"
31 #include "pim_iface.h"
32 #include "pim_zebra.h"
33 #include "pim_instance.h"
35 #include "pimd/pim6_cmd_clippy.c"
37 static struct cmd_node debug_node
= {
41 .config_write
= pim_debug_config_write
,
44 DEFPY (ipv6_pim_joinprune_time
,
45 ipv6_pim_joinprune_time_cmd
,
46 "ipv6 pim join-prune-interval (1-65535)$jpi",
49 "Join Prune Send Interval\n"
52 return pim_process_join_prune_cmd(vty
, jpi_str
);
55 DEFPY (no_ipv6_pim_joinprune_time
,
56 no_ipv6_pim_joinprune_time_cmd
,
57 "no ipv6 pim join-prune-interval [(1-65535)]",
61 "Join Prune Send Interval\n"
64 return pim_process_no_join_prune_cmd(vty
);
67 DEFPY (ipv6_pim_spt_switchover_infinity
,
68 ipv6_pim_spt_switchover_infinity_cmd
,
69 "ipv6 pim spt-switchover infinity-and-beyond",
73 "Never switch to SPT Tree\n")
75 return pim_process_spt_switchover_infinity_cmd(vty
);
78 DEFPY (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",
84 "Never switch to SPT Tree\n"
85 "Prefix-List to control which groups to switch\n"
88 return pim_process_spt_switchover_prefixlist_cmd(vty
, plist
);
91 DEFPY (no_ipv6_pim_spt_switchover_infinity
,
92 no_ipv6_pim_spt_switchover_infinity_cmd
,
93 "no ipv6 pim spt-switchover infinity-and-beyond",
98 "Never switch to SPT Tree\n")
100 return pim_process_no_spt_switchover_cmd(vty
);
103 DEFPY (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",
110 "Never switch to SPT Tree\n"
111 "Prefix-List to control which groups to switch\n"
112 "Prefix-List name\n")
114 return pim_process_no_spt_switchover_cmd(vty
);
117 DEFPY (ipv6_pim_packets
,
118 ipv6_pim_packets_cmd
,
119 "ipv6 pim packets (1-255)",
122 "packets to process at one time per fd\n"
123 "Number of packets\n")
125 return pim_process_pim_packet_cmd(vty
, packets_str
);
128 DEFPY (no_ipv6_pim_packets
,
129 no_ipv6_pim_packets_cmd
,
130 "no ipv6 pim packets [(1-255)]",
134 "packets to process at one time per fd\n"
137 return pim_process_no_pim_packet_cmd(vty
);
140 DEFPY (ipv6_pim_keep_alive
,
141 ipv6_pim_keep_alive_cmd
,
142 "ipv6 pim keep-alive-timer (1-65535)$kat",
148 return pim_process_keepalivetimer_cmd(vty
, kat_str
);
151 DEFPY (no_ipv6_pim_keep_alive
,
152 no_ipv6_pim_keep_alive_cmd
,
153 "no ipv6 pim keep-alive-timer [(1-65535)]",
160 return pim_process_no_keepalivetimer_cmd(vty
);
163 DEFPY (ipv6_pim_rp_keep_alive
,
164 ipv6_pim_rp_keep_alive_cmd
,
165 "ipv6 pim rp keep-alive-timer (1-65535)$kat",
172 return pim_process_rp_kat_cmd(vty
, kat_str
);
175 DEFPY (no_ipv6_pim_rp_keep_alive
,
176 no_ipv6_pim_rp_keep_alive_cmd
,
177 "no ipv6 pim rp keep-alive-timer [(1-65535)]",
185 return pim_process_no_rp_kat_cmd(vty
);
188 DEFPY (ipv6_pim_register_suppress
,
189 ipv6_pim_register_suppress_cmd
,
190 "ipv6 pim register-suppress-time (1-65535)$rst",
193 "Register Suppress Timer\n"
196 return pim_process_register_suppress_cmd(vty
, rst_str
);
199 DEFPY (no_ipv6_pim_register_suppress
,
200 no_ipv6_pim_register_suppress_cmd
,
201 "no ipv6 pim register-suppress-time [(1-65535)]",
205 "Register Suppress Timer\n"
208 return pim_process_no_register_suppress_cmd(vty
);
211 DEFPY (interface_ipv6_pim
,
212 interface_ipv6_pim_cmd
,
213 "ipv6 pim [passive$passive]",
216 "Disable exchange of protocol packets\n")
220 ret
= pim_process_ip_pim_cmd(vty
);
226 return pim_process_ip_pim_passive_cmd(vty
, true);
231 DEFPY (interface_no_ipv6_pim
,
232 interface_no_ipv6_pim_cmd
,
233 "no ipv6 pim [passive$passive]",
237 "Disable exchange of protocol packets\n")
240 return pim_process_ip_pim_passive_cmd(vty
, false);
242 return pim_process_no_ip_pim_cmd(vty
);
245 DEFPY (interface_ipv6_pim_drprio
,
246 interface_ipv6_pim_drprio_cmd
,
247 "ipv6 pim drpriority (1-4294967295)",
250 "Set the Designated Router Election Priority\n"
251 "Value of the new DR Priority\n")
253 return pim_process_ip_pim_drprio_cmd(vty
, drpriority_str
);
256 DEFPY (interface_no_ipv6_pim_drprio
,
257 interface_no_ipv6_pim_drprio_cmd
,
258 "no ipv6 pim drpriority [(1-4294967295)]",
262 "Revert the Designated Router Priority to default\n"
263 "Old Value of the Priority\n")
265 return pim_process_no_ip_pim_drprio_cmd(vty
);
268 DEFPY (interface_ipv6_pim_hello
,
269 interface_ipv6_pim_hello_cmd
,
270 "ipv6 pim hello (1-65535) [(1-65535)]$hold",
274 IFACE_PIM_HELLO_TIME_STR
275 IFACE_PIM_HELLO_HOLD_STR
)
277 return pim_process_ip_pim_hello_cmd(vty
, hello_str
, hold_str
);
280 DEFPY (interface_no_ipv6_pim_hello
,
281 interface_no_ipv6_pim_hello_cmd
,
282 "no ipv6 pim hello [(1-65535) [(1-65535)]]",
290 return pim_process_no_ip_pim_hello_cmd(vty
);
293 DEFPY (interface_ipv6_pim_activeactive
,
294 interface_ipv6_pim_activeactive_cmd
,
295 "[no] ipv6 pim active-active",
299 "Mark interface as Active-Active for MLAG operations\n")
301 return pim_process_ip_pim_activeactive_cmd(vty
, no
);
304 DEFPY_HIDDEN (interface_ipv6_pim_ssm
,
305 interface_ipv6_pim_ssm_cmd
,
313 ret
= pim_process_ip_pim_cmd(vty
);
319 "Enabled PIM SM on interface; configure PIM SSM range if needed\n");
324 DEFPY_HIDDEN (interface_no_ipv6_pim_ssm
,
325 interface_no_ipv6_pim_ssm_cmd
,
332 return pim_process_no_ip_pim_cmd(vty
);
335 DEFPY_HIDDEN (interface_ipv6_pim_sm
,
336 interface_ipv6_pim_sm_cmd
,
342 return pim_process_ip_pim_cmd(vty
);
345 DEFPY_HIDDEN (interface_no_ipv6_pim_sm
,
346 interface_no_ipv6_pim_sm_cmd
,
353 return pim_process_no_ip_pim_cmd(vty
);
357 DEFPY (interface_ipv6_pim_boundary_oil
,
358 interface_ipv6_pim_boundary_oil_cmd
,
359 "ipv6 multicast boundary oil WORD",
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")
366 return pim_process_ip_pim_boundary_oil_cmd(vty
, oil
);
369 DEFPY (interface_no_ipv6_pim_boundary_oil
,
370 interface_no_ipv6_pim_boundary_oil_cmd
,
371 "no 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_no_ip_pim_boundary_oil_cmd(vty
);
382 DEFPY (interface_ipv6_mroute
,
383 interface_ipv6_mroute_cmd
,
384 "ipv6 mroute INTERFACE X:X::X:X$group [X:X::X:X]$source",
386 "Add multicast route\n"
387 "Outgoing interface name\n"
391 return pim_process_ip_mroute_cmd(vty
, interface
, group_str
, source_str
);
394 DEFPY (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",
399 "Add multicast route\n"
400 "Outgoing interface name\n"
404 return pim_process_no_ip_mroute_cmd(vty
, interface
, group_str
,
410 "ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
414 "ipv6 address of RP\n"
415 "Group Address range to cover\n")
417 const char *group_str
= (gp_str
) ? gp_str
: "FF00::0/8";
419 return pim_process_rp_cmd(vty
, rp_str
, group_str
);
422 DEFPY (no_ipv6_pim_rp
,
424 "no ipv6 pim rp X:X::X:X$rp [X:X::X:X/M]$gp",
429 "ipv6 address of RP\n"
430 "Group Address range to cover\n")
432 const char *group_str
= (gp_str
) ? gp_str
: "FF00::0/8";
434 return pim_process_no_rp_cmd(vty
, rp_str
, group_str
);
437 DEFPY (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",
443 "ipv6 address of RP\n"
444 "group prefix-list filter\n"
445 "Name of a prefix-list\n")
447 return pim_process_rp_plist_cmd(vty
, rp_str
, plist
);
450 DEFPY (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",
457 "ipv6 address of RP\n"
458 "group prefix-list filter\n"
459 "Name of a prefix-list\n")
461 return pim_process_no_rp_plist_cmd(vty
, rp_str
, plist
);
469 "Enable BSM support on the interface\n")
471 return pim_process_bsm_cmd(vty
);
474 DEFPY (no_ipv6_pim_bsm
,
480 "Enable BSM support on the interface\n")
482 return pim_process_no_bsm_cmd(vty
);
485 DEFPY (ipv6_pim_ucast_bsm
,
486 ipv6_pim_ucast_bsm_cmd
,
487 "ipv6 pim unicast-bsm",
490 "Accept/Send unicast BSM on the interface\n")
492 return pim_process_unicast_bsm_cmd(vty
);
495 DEFPY (no_ipv6_pim_ucast_bsm
,
496 no_ipv6_pim_ucast_bsm_cmd
,
497 "no ipv6 pim unicast-bsm",
501 "Accept/Send unicast BSM on the interface\n")
503 return pim_process_no_unicast_bsm_cmd(vty
);
506 DEFPY (ipv6_ssmpingd
,
508 "ipv6 ssmpingd [X:X::X:X]$source",
513 const char *src_str
= (source_str
) ? source_str
: "::";
515 return pim_process_ssmpingd_cmd(vty
, NB_OP_CREATE
, src_str
);
519 DEFPY (no_ipv6_ssmpingd
,
520 no_ipv6_ssmpingd_cmd
,
521 "no ipv6 ssmpingd [X:X::X:X]$source",
527 const char *src_str
= (source_str
) ? source_str
: "::";
529 return pim_process_ssmpingd_cmd(vty
, NB_OP_DESTROY
, src_str
);
532 DEFPY (interface_ipv6_mld_join
,
533 interface_ipv6_mld_join_cmd
,
534 "ipv6 mld join X:X::X:X$group [X:X::X:X$source]",
537 "MLD join multicast group\n"
538 "Multicast group address\n"
541 char xpath
[XPATH_MAXLEN
];
544 if (IPV6_ADDR_SAME(&source
, &in6addr_any
)) {
545 vty_out(vty
, "Bad source address %s\n", source_str
);
546 return CMD_WARNING_CONFIG_FAILED
;
551 snprintf(xpath
, sizeof(xpath
), FRR_GMP_JOIN_XPATH
, "frr-routing:ipv6",
552 group_str
, source_str
);
554 nb_cli_enqueue_change(vty
, xpath
, NB_OP_CREATE
, NULL
);
556 return nb_cli_apply_changes(vty
, NULL
);
559 DEFPY (interface_no_ipv6_mld_join
,
560 interface_no_ipv6_mld_join_cmd
,
561 "no ipv6 mld join X:X::X:X$group [X:X::X:X$source]",
565 "MLD join multicast group\n"
566 "Multicast group address\n"
569 char xpath
[XPATH_MAXLEN
];
572 if (IPV6_ADDR_SAME(&source
, &in6addr_any
)) {
573 vty_out(vty
, "Bad source address %s\n", source_str
);
574 return CMD_WARNING_CONFIG_FAILED
;
579 snprintf(xpath
, sizeof(xpath
), FRR_GMP_JOIN_XPATH
, "frr-routing:ipv6",
580 group_str
, source_str
);
582 nb_cli_enqueue_change(vty
, xpath
, NB_OP_DESTROY
, NULL
);
584 return nb_cli_apply_changes(vty
, NULL
);
587 DEFPY (interface_ipv6_mld
,
588 interface_ipv6_mld_cmd
,
593 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
595 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
599 DEFPY (interface_no_ipv6_mld
,
600 interface_no_ipv6_mld_cmd
,
606 const struct lyd_node
*pim_enable_dnode
;
607 char pim_if_xpath
[XPATH_MAXLEN
+ 64];
609 snprintf(pim_if_xpath
, sizeof(pim_if_xpath
),
610 "%s/frr-pim:pim/address-family[address-family='%s']",
611 VTY_CURR_XPATH
, "frr-routing:ipv6");
613 pim_enable_dnode
= yang_dnode_getf(vty
->candidate_config
->dnode
,
614 FRR_PIM_ENABLE_XPATH
, VTY_CURR_XPATH
,
616 if (!pim_enable_dnode
) {
617 nb_cli_enqueue_change(vty
, pim_if_xpath
, NB_OP_DESTROY
, NULL
);
618 nb_cli_enqueue_change(vty
, ".", NB_OP_DESTROY
, NULL
);
620 if (!yang_dnode_get_bool(pim_enable_dnode
, ".")) {
621 nb_cli_enqueue_change(vty
, pim_if_xpath
, NB_OP_DESTROY
,
623 nb_cli_enqueue_change(vty
, ".", NB_OP_DESTROY
, NULL
);
625 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
,
629 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
633 DEFPY (interface_ipv6_mld_version
,
634 interface_ipv6_mld_version_cmd
,
635 "ipv6 mld version (1-2)$version",
639 "MLD version number\n")
641 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
642 nb_cli_enqueue_change(vty
, "./mld-version", NB_OP_MODIFY
, version_str
);
644 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
648 DEFPY (interface_no_ipv6_mld_version
,
649 interface_no_ipv6_mld_version_cmd
,
650 "no ipv6 mld version [(1-2)]",
655 "MLD version number\n")
657 nb_cli_enqueue_change(vty
, "./mld-version", NB_OP_DESTROY
, NULL
);
659 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
663 DEFPY (interface_ipv6_mld_query_interval
,
664 interface_ipv6_mld_query_interval_cmd
,
665 "ipv6 mld query-interval (1-65535)$q_interval",
668 IFACE_MLD_QUERY_INTERVAL_STR
669 "Query interval in seconds\n")
671 const struct lyd_node
*pim_enable_dnode
;
673 pim_enable_dnode
= yang_dnode_getf(vty
->candidate_config
->dnode
,
674 FRR_PIM_ENABLE_XPATH
, VTY_CURR_XPATH
,
676 if (!pim_enable_dnode
) {
677 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
679 if (!yang_dnode_get_bool(pim_enable_dnode
, "."))
680 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
,
684 nb_cli_enqueue_change(vty
, "./query-interval", NB_OP_MODIFY
,
687 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
691 DEFPY (interface_no_ipv6_mld_query_interval
,
692 interface_no_ipv6_mld_query_interval_cmd
,
693 "no ipv6 mld query-interval [(1-65535)]",
697 IFACE_MLD_QUERY_INTERVAL_STR
700 nb_cli_enqueue_change(vty
, "./query-interval", NB_OP_DESTROY
, NULL
);
702 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
706 DEFPY (ipv6_mld_group_watermark
,
707 ipv6_mld_group_watermark_cmd
,
708 "ipv6 mld watermark-warn (1-65535)$limit",
711 "Configure group limit for watermark warning\n"
712 "Group count to generate watermark warning\n")
714 PIM_DECLVAR_CONTEXT_VRF(vrf
, pim
);
715 pim
->gm_watermark_limit
= limit
;
720 DEFPY (no_ipv6_mld_group_watermark
,
721 no_ipv6_mld_group_watermark_cmd
,
722 "no ipv6 mld watermark-warn [(1-65535)$limit]",
726 "Unconfigure group limit for watermark warning\n"
729 PIM_DECLVAR_CONTEXT_VRF(vrf
, pim
);
730 pim
->gm_watermark_limit
= 0;
735 DEFPY (interface_ipv6_mld_query_max_response_time
,
736 interface_ipv6_mld_query_max_response_time_cmd
,
737 "ipv6 mld query-max-response-time (1-65535)$qmrt",
740 IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
741 "Query response value in milliseconds\n")
743 return gm_process_query_max_response_time_cmd(vty
, qmrt_str
);
746 DEFPY (interface_no_ipv6_mld_query_max_response_time
,
747 interface_no_ipv6_mld_query_max_response_time_cmd
,
748 "no ipv6 mld query-max-response-time [(1-65535)]",
752 IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
755 return gm_process_no_query_max_response_time_cmd(vty
);
758 DEFPY (interface_ipv6_mld_last_member_query_count
,
759 interface_ipv6_mld_last_member_query_count_cmd
,
760 "ipv6 mld last-member-query-count (1-255)$lmqc",
763 IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
764 "Last member query count\n")
766 return gm_process_last_member_query_count_cmd(vty
, lmqc_str
);
769 DEFPY (interface_no_ipv6_mld_last_member_query_count
,
770 interface_no_ipv6_mld_last_member_query_count_cmd
,
771 "no ipv6 mld last-member-query-count [(1-255)]",
775 IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
778 return gm_process_no_last_member_query_count_cmd(vty
);
781 DEFPY (interface_ipv6_mld_last_member_query_interval
,
782 interface_ipv6_mld_last_member_query_interval_cmd
,
783 "ipv6 mld last-member-query-interval (1-65535)$lmqi",
786 IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
787 "Last member query interval in deciseconds\n")
789 return gm_process_last_member_query_interval_cmd(vty
, lmqi_str
);
792 DEFPY (interface_no_ipv6_mld_last_member_query_interval
,
793 interface_no_ipv6_mld_last_member_query_interval_cmd
,
794 "no ipv6 mld last-member-query-interval [(1-65535)]",
798 IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
801 return gm_process_no_last_member_query_interval_cmd(vty
);
804 DEFPY (show_ipv6_pim_rp
,
805 show_ipv6_pim_rp_cmd
,
806 "show ipv6 pim [vrf NAME] rp-info [X:X::X:X/M$group] [json$json]",
811 "PIM RP information\n"
812 "Multicast Group range\n"
815 return pim_show_rp_helper(vrf
, vty
, group_str
, (struct prefix
*)group
,
819 DEFPY (show_ipv6_pim_rp_vrf_all
,
820 show_ipv6_pim_rp_vrf_all_cmd
,
821 "show ipv6 pim vrf all rp-info [X:X::X:X/M$group] [json$json]",
826 "PIM RP information\n"
827 "Multicast Group range\n"
830 return pim_show_rp_vrf_all_helper(vty
, group_str
,
831 (struct prefix
*)group
, !!json
);
834 DEFPY (show_ipv6_pim_rpf
,
835 show_ipv6_pim_rpf_cmd
,
836 "show ipv6 pim [vrf NAME] rpf [json$json]",
841 "PIM cached source rpf information\n"
844 return pim_show_rpf_helper(vrf
, vty
, !!json
);
847 DEFPY (show_ipv6_pim_rpf_vrf_all
,
848 show_ipv6_pim_rpf_vrf_all_cmd
,
849 "show ipv6 pim vrf all rpf [json$json]",
854 "PIM cached source rpf information\n"
857 return pim_show_rpf_vrf_all_helper(vty
, !!json
);
860 DEFPY (show_ipv6_pim_secondary
,
861 show_ipv6_pim_secondary_cmd
,
862 "show ipv6 pim [vrf NAME] secondary",
867 "PIM neighbor addresses\n")
869 return pim_show_secondary_helper(vrf
, vty
);
872 DEFPY (show_ipv6_pim_statistics
,
873 show_ipv6_pim_statistics_cmd
,
874 "show ipv6 pim [vrf NAME] statistics [interface WORD$word] [json$json]",
884 return pim_show_statistics_helper(vrf
, vty
, word
, !!json
);
887 DEFPY (show_ipv6_pim_upstream
,
888 show_ipv6_pim_upstream_cmd
,
889 "show ipv6 pim [vrf NAME] upstream [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
894 "PIM upstream information\n"
895 "The Source or Group\n"
899 return pim_show_upstream_helper(vrf
, vty
, s_or_g
, g
, !!json
);
902 DEFPY (show_ipv6_pim_upstream_vrf_all
,
903 show_ipv6_pim_upstream_vrf_all_cmd
,
904 "show ipv6 pim vrf all upstream [json$json]",
909 "PIM upstream information\n"
912 return pim_show_upstream_vrf_all_helper(vty
, !!json
);
915 DEFPY (show_ipv6_pim_upstream_join_desired
,
916 show_ipv6_pim_upstream_join_desired_cmd
,
917 "show ipv6 pim [vrf NAME] upstream-join-desired [json$json]",
922 "PIM upstream join-desired\n"
925 return pim_show_upstream_join_desired_helper(vrf
, vty
, !!json
);
928 DEFPY (show_ipv6_pim_upstream_rpf
,
929 show_ipv6_pim_upstream_rpf_cmd
,
930 "show ipv6 pim [vrf NAME] upstream-rpf [json$json]",
935 "PIM upstream source rpf\n"
938 return pim_show_upstream_rpf_helper(vrf
, vty
, !!json
);
941 DEFPY (show_ipv6_pim_state
,
942 show_ipv6_pim_state_cmd
,
943 "show ipv6 pim [vrf NAME] state [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
948 "PIM state information\n"
949 "Unicast or Multicast address\n"
950 "Multicast address\n"
953 return pim_show_state_helper(vrf
, vty
, s_or_g_str
, g_str
, !!json
);
956 DEFPY (show_ipv6_pim_state_vrf_all
,
957 show_ipv6_pim_state_vrf_all_cmd
,
958 "show ipv6 pim vrf all state [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
963 "PIM state information\n"
964 "Unicast or Multicast address\n"
965 "Multicast address\n"
968 return pim_show_state_vrf_all_helper(vty
, s_or_g_str
, g_str
, !!json
);
971 DEFPY (show_ipv6_pim_channel
,
972 show_ipv6_pim_channel_cmd
,
973 "show ipv6 pim [vrf NAME] channel [json$json]",
978 "PIM downstream channel info\n"
981 return pim_show_channel_cmd_helper(vrf
, vty
, !!json
);
984 DEFPY (show_ipv6_pim_interface
,
985 show_ipv6_pim_interface_cmd
,
986 "show ipv6 pim [vrf NAME] interface [detail|WORD]$interface [json$json]",
991 "PIM interface information\n"
996 return pim_show_interface_cmd_helper(vrf
, vty
, !!json
, false,
1000 DEFPY (show_ipv6_pim_interface_vrf_all
,
1001 show_ipv6_pim_interface_vrf_all_cmd
,
1002 "show ipv6 pim vrf all interface [detail|WORD]$interface [json$json]",
1007 "PIM interface information\n"
1012 return pim_show_interface_vrf_all_cmd_helper(vty
, !!json
, false,
1016 DEFPY (show_ipv6_pim_join
,
1017 show_ipv6_pim_join_cmd
,
1018 "show ipv6 pim [vrf NAME] join [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
1023 "PIM interface join information\n"
1024 "The Source or Group\n"
1028 return pim_show_join_cmd_helper(vrf
, vty
, s_or_g
, g
, json
);
1031 DEFPY (show_ipv6_pim_join_vrf_all
,
1032 show_ipv6_pim_join_vrf_all_cmd
,
1033 "show ipv6 pim vrf all join [json$json]",
1038 "PIM interface join information\n"
1041 return pim_show_join_vrf_all_cmd_helper(vty
, json
);
1044 DEFPY (show_ipv6_pim_jp_agg
,
1045 show_ipv6_pim_jp_agg_cmd
,
1046 "show ipv6 pim [vrf NAME] jp-agg",
1051 "join prune aggregation list\n")
1053 return pim_show_jp_agg_list_cmd_helper(vrf
, vty
);
1056 DEFPY (show_ipv6_pim_local_membership
,
1057 show_ipv6_pim_local_membership_cmd
,
1058 "show ipv6 pim [vrf NAME] local-membership [json$json]",
1063 "PIM interface local-membership\n"
1066 return pim_show_membership_cmd_helper(vrf
, vty
, !!json
);
1069 DEFPY (show_ipv6_pim_neighbor
,
1070 show_ipv6_pim_neighbor_cmd
,
1071 "show ipv6 pim [vrf NAME] neighbor [detail|WORD]$interface [json$json]",
1076 "PIM neighbor information\n"
1078 "Name of interface or neighbor\n"
1081 return pim_show_neighbors_cmd_helper(vrf
, vty
, json
, interface
);
1084 DEFPY (show_ipv6_pim_neighbor_vrf_all
,
1085 show_ipv6_pim_neighbor_vrf_all_cmd
,
1086 "show ipv6 pim vrf all neighbor [detail|WORD]$interface [json$json]",
1091 "PIM neighbor information\n"
1093 "Name of interface or neighbor\n"
1096 return pim_show_neighbors_vrf_all_cmd_helper(vty
, json
, interface
);
1099 DEFPY (show_ipv6_pim_nexthop
,
1100 show_ipv6_pim_nexthop_cmd
,
1101 "show ipv6 pim [vrf NAME] nexthop [json$json]",
1106 "PIM cached nexthop rpf information\n"
1109 return pim_show_nexthop_cmd_helper(vrf
, vty
, !!json
);
1112 DEFPY (show_ipv6_pim_nexthop_lookup
,
1113 show_ipv6_pim_nexthop_lookup_cmd
,
1114 "show ipv6 pim [vrf NAME] nexthop-lookup X:X::X:X$source X:X::X:X$group",
1119 "PIM cached nexthop rpf lookup\n"
1120 "Source/RP address\n"
1121 "Multicast Group address\n")
1123 return pim_show_nexthop_lookup_cmd_helper(vrf
, vty
, source
, group
);
1126 DEFPY (show_ipv6_multicast
,
1127 show_ipv6_multicast_cmd
,
1128 "show ipv6 multicast [vrf NAME]",
1131 "Multicast global information\n"
1134 return pim_show_multicast_helper(vrf
, vty
);
1137 DEFPY (show_ipv6_multicast_vrf_all
,
1138 show_ipv6_multicast_vrf_all_cmd
,
1139 "show ipv6 multicast vrf all",
1142 "Multicast global information\n"
1145 return pim_show_multicast_vrf_all_helper(vty
);
1148 DEFPY (show_ipv6_multicast_count
,
1149 show_ipv6_multicast_count_cmd
,
1150 "show ipv6 multicast count [vrf NAME] [json$json]",
1153 "Multicast global information\n"
1154 "Data packet count\n"
1158 return pim_show_multicast_count_helper(vrf
, vty
, !!json
);
1161 DEFPY (show_ipv6_multicast_count_vrf_all
,
1162 show_ipv6_multicast_count_vrf_all_cmd
,
1163 "show ipv6 multicast count vrf all [json$json]",
1166 "Multicast global information\n"
1167 "Data packet count\n"
1171 return pim_show_multicast_count_vrf_all_helper(vty
, !!json
);
1174 DEFPY (show_ipv6_mroute
,
1175 show_ipv6_mroute_cmd
,
1176 "show ipv6 mroute [vrf NAME] [X:X::X:X$s_or_g [X:X::X:X$g]] [fill$fill] [json$json]",
1181 "The Source or Group\n"
1183 "Fill in Assumed data\n"
1186 return pim_show_mroute_helper(vrf
, vty
, s_or_g
, g
, !!fill
, !!json
);
1189 DEFPY (show_ipv6_mroute_vrf_all
,
1190 show_ipv6_mroute_vrf_all_cmd
,
1191 "show ipv6 mroute vrf all [fill$fill] [json$json]",
1196 "Fill in Assumed data\n"
1199 return pim_show_mroute_vrf_all_helper(vty
, !!fill
, !!json
);
1202 DEFPY (show_ipv6_mroute_count
,
1203 show_ipv6_mroute_count_cmd
,
1204 "show ipv6 mroute [vrf NAME] count [json$json]",
1209 "Route and packet count data\n"
1212 return pim_show_mroute_count_helper(vrf
, vty
, !!json
);
1215 DEFPY (show_ipv6_mroute_count_vrf_all
,
1216 show_ipv6_mroute_count_vrf_all_cmd
,
1217 "show ipv6 mroute vrf all count [json$json]",
1222 "Route and packet count data\n"
1225 return pim_show_mroute_count_vrf_all_helper(vty
, !!json
);
1228 DEFPY (show_ipv6_mroute_summary
,
1229 show_ipv6_mroute_summary_cmd
,
1230 "show ipv6 mroute [vrf NAME] summary [json$json]",
1235 "Summary of all mroutes\n"
1238 return pim_show_mroute_summary_helper(vrf
, vty
, !!json
);
1241 DEFPY (show_ipv6_mroute_summary_vrf_all
,
1242 show_ipv6_mroute_summary_vrf_all_cmd
,
1243 "show ipv6 mroute vrf all summary [json$json]",
1248 "Summary of all mroutes\n"
1251 return pim_show_mroute_summary_vrf_all_helper(vty
, !!json
);
1254 DEFPY (show_ipv6_pim_interface_traffic
,
1255 show_ipv6_pim_interface_traffic_cmd
,
1256 "show ipv6 pim [vrf NAME] interface traffic [WORD$if_name] [json$json]",
1261 "PIM interface information\n"
1262 "Protocol Packet counters\n"
1266 return pim_show_interface_traffic_helper(vrf
, if_name
, vty
, !!json
);
1269 DEFPY (show_ipv6_pim_bsr
,
1270 show_ipv6_pim_bsr_cmd
,
1271 "show ipv6 pim bsr [vrf NAME] [json$json]",
1275 "boot-strap router information\n"
1279 return pim_show_bsr_helper(vrf
, vty
, !!json
);
1282 DEFPY (show_ipv6_pim_bsm_db
,
1283 show_ipv6_pim_bsm_db_cmd
,
1284 "show ipv6 pim bsm-database [vrf NAME] [json$json]",
1288 "PIM cached bsm packets information\n"
1292 return pim_show_bsm_db_helper(vrf
, vty
, !!json
);
1295 DEFPY (show_ipv6_pim_bsrp
,
1296 show_ipv6_pim_bsrp_cmd
,
1297 "show ipv6 pim bsrp-info [vrf NAME] [json$json]",
1301 "PIM cached group-rp mappings information\n"
1305 return pim_show_group_rp_mappings_info_helper(vrf
, vty
, !!json
);
1308 DEFPY (clear_ipv6_pim_statistics
,
1309 clear_ipv6_pim_statistics_cmd
,
1310 "clear ipv6 pim statistics [vrf NAME]$name",
1315 "Reset PIM statistics\n")
1317 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1322 clear_pim_statistics(v
->info
);
1327 DEFPY (clear_ipv6_pim_interface_traffic
,
1328 clear_ipv6_pim_interface_traffic_cmd
,
1329 "clear ipv6 pim [vrf NAME] interface traffic",
1334 "Reset PIM interfaces\n"
1335 "Reset Protocol Packet counters\n")
1337 return clear_pim_interface_traffic(vrf
, vty
);
1340 DEFPY (clear_ipv6_mroute
,
1341 clear_ipv6_mroute_cmd
,
1342 "clear ipv6 mroute [vrf NAME]$name",
1348 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1353 clear_mroute(v
->info
);
1358 DEFPY (clear_ipv6_pim_oil
,
1359 clear_ipv6_pim_oil_cmd
,
1360 "clear ipv6 pim [vrf NAME]$name oil",
1365 "Rescan PIMv6 OIL (output interface list)\n")
1367 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1372 pim_scan_oil(v
->info
);
1377 DEFPY (clear_ipv6_mroute_count
,
1378 clear_ipv6_mroute_count_cmd
,
1379 "clear ipv6 mroute [vrf NAME]$name count",
1384 "Route and packet count data\n")
1386 return clear_ip_mroute_count_command(vty
, name
);
1389 DEFPY (clear_ipv6_pim_interfaces
,
1390 clear_ipv6_pim_interfaces_cmd
,
1391 "clear ipv6 pim [vrf NAME] interfaces",
1396 "Reset PIM interfaces\n")
1398 struct vrf
*v
= pim_cmd_lookup(vty
, vrf
);
1403 clear_pim_interfaces(v
->info
);
1408 DEFPY (clear_ipv6_pim_bsr_db
,
1409 clear_ipv6_pim_bsr_db_cmd
,
1410 "clear ipv6 pim [vrf NAME] bsr-data",
1415 "Reset pim bsr data\n")
1419 v
= vrf_lookup_by_name(vrf
? vrf
: VRF_DEFAULT_NAME
);
1423 pim_bsm_clear(v
->info
);
1436 return pim_debug_pim_cmd();
1438 return pim_no_debug_pim_cmd();
1441 DEFPY (debug_pimv6_nht
,
1442 debug_pimv6_nht_cmd
,
1443 "[no] debug pimv6 nht",
1447 "Nexthop Tracking\n")
1450 PIM_DO_DEBUG_PIM_NHT
;
1452 PIM_DONT_DEBUG_PIM_NHT
;
1456 DEFPY (debug_pimv6_nht_det
,
1457 debug_pimv6_nht_det_cmd
,
1458 "[no] debug pimv6 nht detail",
1462 "Nexthop Tracking\n"
1463 "Detailed Information\n")
1466 PIM_DO_DEBUG_PIM_NHT_DETAIL
;
1468 PIM_DONT_DEBUG_PIM_NHT_DETAIL
;
1472 DEFPY (debug_pimv6_events
,
1473 debug_pimv6_events_cmd
,
1474 "[no] debug pimv6 events",
1478 DEBUG_PIMV6_EVENTS_STR
)
1481 PIM_DO_DEBUG_PIM_EVENTS
;
1483 PIM_DONT_DEBUG_PIM_EVENTS
;
1487 DEFPY (debug_pimv6_packets
,
1488 debug_pimv6_packets_cmd
,
1489 "[no] debug pimv6 packets [<hello$hello|joins$joins|register$registers>]",
1493 DEBUG_PIMV6_PACKETS_STR
1494 DEBUG_PIMV6_HELLO_PACKETS_STR
1495 DEBUG_PIMV6_J_P_PACKETS_STR
1496 DEBUG_PIMV6_PIM_REG_PACKETS_STR
)
1499 return pim_debug_pim_packets_cmd(hello
, joins
, registers
, vty
);
1501 return pim_no_debug_pim_packets_cmd(hello
, joins
, registers
,
1505 DEFPY (debug_pimv6_packetdump_send
,
1506 debug_pimv6_packetdump_send_cmd
,
1507 "[no] debug pimv6 packet-dump send",
1511 DEBUG_PIMV6_PACKETDUMP_STR
1512 DEBUG_PIMV6_PACKETDUMP_SEND_STR
)
1515 PIM_DO_DEBUG_PIM_PACKETDUMP_SEND
;
1517 PIM_DONT_DEBUG_PIM_PACKETDUMP_SEND
;
1521 DEFPY (debug_pimv6_packetdump_recv
,
1522 debug_pimv6_packetdump_recv_cmd
,
1523 "[no] debug pimv6 packet-dump receive",
1527 DEBUG_PIMV6_PACKETDUMP_STR
1528 DEBUG_PIMV6_PACKETDUMP_RECV_STR
)
1531 PIM_DO_DEBUG_PIM_PACKETDUMP_RECV
;
1533 PIM_DONT_DEBUG_PIM_PACKETDUMP_RECV
;
1537 DEFPY (debug_pimv6_trace
,
1538 debug_pimv6_trace_cmd
,
1539 "[no] debug pimv6 trace",
1543 DEBUG_PIMV6_TRACE_STR
)
1546 PIM_DO_DEBUG_PIM_TRACE
;
1548 PIM_DONT_DEBUG_PIM_TRACE
;
1552 DEFPY (debug_pimv6_trace_detail
,
1553 debug_pimv6_trace_detail_cmd
,
1554 "[no] debug pimv6 trace detail",
1558 DEBUG_PIMV6_TRACE_STR
1559 "Detailed Information\n")
1562 PIM_DO_DEBUG_PIM_TRACE_DETAIL
;
1564 PIM_DONT_DEBUG_PIM_TRACE_DETAIL
;
1568 DEFPY (debug_pimv6_zebra
,
1569 debug_pimv6_zebra_cmd
,
1570 "[no] debug pimv6 zebra",
1574 DEBUG_PIMV6_ZEBRA_STR
)
1579 PIM_DONT_DEBUG_ZEBRA
;
1583 DEFPY (debug_mroute6
,
1585 "[no] debug mroute6",
1591 PIM_DO_DEBUG_MROUTE
;
1593 PIM_DONT_DEBUG_MROUTE
;
1598 DEFPY (debug_mroute6_detail
,
1599 debug_mroute6_detail_cmd
,
1600 "[no] debug mroute6 detail",
1607 PIM_DO_DEBUG_MROUTE_DETAIL
;
1609 PIM_DONT_DEBUG_MROUTE_DETAIL
;
1614 DEFUN_NOSH (show_debugging_pimv6
,
1615 show_debugging_pimv6_cmd
,
1616 "show debugging [pimv6]",
1619 "PIMv6 Information\n")
1621 vty_out(vty
, "PIMv6 debugging status\n");
1623 pim_debug_config_write(vty
);
1625 cmd_show_lib_debugs(vty
);
1638 PIM_DO_DEBUG_GM_EVENTS
;
1639 PIM_DO_DEBUG_GM_PACKETS
;
1640 PIM_DO_DEBUG_GM_TRACE
;
1642 PIM_DONT_DEBUG_GM_EVENTS
;
1643 PIM_DONT_DEBUG_GM_PACKETS
;
1644 PIM_DONT_DEBUG_GM_TRACE
;
1650 DEFPY (debug_mld_events
,
1651 debug_mld_events_cmd
,
1652 "[no] debug mld events",
1656 DEBUG_MLD_EVENTS_STR
)
1659 PIM_DO_DEBUG_GM_EVENTS
;
1661 PIM_DONT_DEBUG_GM_EVENTS
;
1666 DEFPY (debug_mld_packets
,
1667 debug_mld_packets_cmd
,
1668 "[no] debug mld packets",
1672 DEBUG_MLD_PACKETS_STR
)
1675 PIM_DO_DEBUG_GM_PACKETS
;
1677 PIM_DONT_DEBUG_GM_PACKETS
;
1682 DEFPY (debug_mld_trace
,
1683 debug_mld_trace_cmd
,
1684 "[no] debug mld trace",
1688 DEBUG_MLD_TRACE_STR
)
1691 PIM_DO_DEBUG_GM_TRACE
;
1693 PIM_DONT_DEBUG_GM_TRACE
;
1698 DEFPY (debug_mld_trace_detail
,
1699 debug_mld_trace_detail_cmd
,
1700 "[no] debug mld trace detail",
1708 PIM_DO_DEBUG_GM_TRACE_DETAIL
;
1710 PIM_DONT_DEBUG_GM_TRACE_DETAIL
;
1715 DEFPY (debug_pimv6_bsm
,
1716 debug_pimv6_bsm_cmd
,
1717 "[no] debug pimv6 bsm",
1721 DEBUG_PIMV6_BSM_STR
)
1731 void pim_cmd_init(void)
1733 if_cmd_init(pim_interface_config_write
);
1735 install_node(&debug_node
);
1737 install_element(CONFIG_NODE
, &ipv6_pim_joinprune_time_cmd
);
1738 install_element(CONFIG_NODE
, &no_ipv6_pim_joinprune_time_cmd
);
1739 install_element(CONFIG_NODE
, &ipv6_pim_spt_switchover_infinity_cmd
);
1740 install_element(CONFIG_NODE
, &ipv6_pim_spt_switchover_infinity_plist_cmd
);
1741 install_element(CONFIG_NODE
, &no_ipv6_pim_spt_switchover_infinity_cmd
);
1742 install_element(CONFIG_NODE
, &no_ipv6_pim_spt_switchover_infinity_plist_cmd
);
1743 install_element(CONFIG_NODE
, &ipv6_pim_packets_cmd
);
1744 install_element(CONFIG_NODE
, &no_ipv6_pim_packets_cmd
);
1745 install_element(CONFIG_NODE
, &ipv6_pim_keep_alive_cmd
);
1746 install_element(CONFIG_NODE
, &no_ipv6_pim_keep_alive_cmd
);
1747 install_element(CONFIG_NODE
, &ipv6_pim_rp_keep_alive_cmd
);
1748 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_keep_alive_cmd
);
1749 install_element(CONFIG_NODE
, &ipv6_pim_register_suppress_cmd
);
1750 install_element(CONFIG_NODE
, &no_ipv6_pim_register_suppress_cmd
);
1751 install_element(INTERFACE_NODE
, &interface_ipv6_pim_cmd
);
1752 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_cmd
);
1753 install_element(INTERFACE_NODE
, &interface_ipv6_pim_drprio_cmd
);
1754 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_drprio_cmd
);
1755 install_element(INTERFACE_NODE
, &interface_ipv6_pim_hello_cmd
);
1756 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_hello_cmd
);
1757 install_element(INTERFACE_NODE
, &interface_ipv6_pim_activeactive_cmd
);
1758 install_element(INTERFACE_NODE
, &interface_ipv6_pim_ssm_cmd
);
1759 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_ssm_cmd
);
1760 install_element(INTERFACE_NODE
, &interface_ipv6_pim_sm_cmd
);
1761 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_sm_cmd
);
1762 install_element(INTERFACE_NODE
,
1763 &interface_ipv6_pim_boundary_oil_cmd
);
1764 install_element(INTERFACE_NODE
,
1765 &interface_no_ipv6_pim_boundary_oil_cmd
);
1766 install_element(INTERFACE_NODE
, &interface_ipv6_mroute_cmd
);
1767 install_element(INTERFACE_NODE
, &interface_no_ipv6_mroute_cmd
);
1768 /* Install BSM command */
1769 install_element(INTERFACE_NODE
, &ipv6_pim_bsm_cmd
);
1770 install_element(INTERFACE_NODE
, &no_ipv6_pim_bsm_cmd
);
1771 install_element(INTERFACE_NODE
, &ipv6_pim_ucast_bsm_cmd
);
1772 install_element(INTERFACE_NODE
, &no_ipv6_pim_ucast_bsm_cmd
);
1773 install_element(CONFIG_NODE
, &ipv6_pim_rp_cmd
);
1774 install_element(VRF_NODE
, &ipv6_pim_rp_cmd
);
1775 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_cmd
);
1776 install_element(VRF_NODE
, &no_ipv6_pim_rp_cmd
);
1777 install_element(CONFIG_NODE
, &ipv6_pim_rp_prefix_list_cmd
);
1778 install_element(VRF_NODE
, &ipv6_pim_rp_prefix_list_cmd
);
1779 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_prefix_list_cmd
);
1780 install_element(VRF_NODE
, &no_ipv6_pim_rp_prefix_list_cmd
);
1781 install_element(CONFIG_NODE
, &ipv6_ssmpingd_cmd
);
1782 install_element(VRF_NODE
, &ipv6_ssmpingd_cmd
);
1783 install_element(CONFIG_NODE
, &no_ipv6_ssmpingd_cmd
);
1784 install_element(VRF_NODE
, &no_ipv6_ssmpingd_cmd
);
1785 install_element(INTERFACE_NODE
, &interface_ipv6_mld_cmd
);
1786 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_cmd
);
1787 install_element(INTERFACE_NODE
, &interface_ipv6_mld_join_cmd
);
1788 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_join_cmd
);
1789 install_element(INTERFACE_NODE
, &interface_ipv6_mld_version_cmd
);
1790 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_version_cmd
);
1791 install_element(INTERFACE_NODE
, &interface_ipv6_mld_query_interval_cmd
);
1792 install_element(INTERFACE_NODE
,
1793 &interface_no_ipv6_mld_query_interval_cmd
);
1794 install_element(CONFIG_NODE
, &ipv6_mld_group_watermark_cmd
);
1795 install_element(VRF_NODE
, &ipv6_mld_group_watermark_cmd
);
1796 install_element(CONFIG_NODE
, &no_ipv6_mld_group_watermark_cmd
);
1797 install_element(VRF_NODE
, &no_ipv6_mld_group_watermark_cmd
);
1798 install_element(INTERFACE_NODE
,
1799 &interface_ipv6_mld_query_max_response_time_cmd
);
1800 install_element(INTERFACE_NODE
,
1801 &interface_no_ipv6_mld_query_max_response_time_cmd
);
1802 install_element(INTERFACE_NODE
,
1803 &interface_ipv6_mld_last_member_query_count_cmd
);
1804 install_element(INTERFACE_NODE
,
1805 &interface_no_ipv6_mld_last_member_query_count_cmd
);
1806 install_element(INTERFACE_NODE
,
1807 &interface_ipv6_mld_last_member_query_interval_cmd
);
1808 install_element(INTERFACE_NODE
,
1809 &interface_no_ipv6_mld_last_member_query_interval_cmd
);
1811 install_element(VIEW_NODE
, &show_ipv6_pim_rp_cmd
);
1812 install_element(VIEW_NODE
, &show_ipv6_pim_rp_vrf_all_cmd
);
1813 install_element(VIEW_NODE
, &show_ipv6_pim_rpf_cmd
);
1814 install_element(VIEW_NODE
, &show_ipv6_pim_rpf_vrf_all_cmd
);
1815 install_element(VIEW_NODE
, &show_ipv6_pim_secondary_cmd
);
1816 install_element(VIEW_NODE
, &show_ipv6_pim_statistics_cmd
);
1817 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_cmd
);
1818 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_vrf_all_cmd
);
1819 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_join_desired_cmd
);
1820 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_rpf_cmd
);
1821 install_element(VIEW_NODE
, &show_ipv6_pim_state_cmd
);
1822 install_element(VIEW_NODE
, &show_ipv6_pim_state_vrf_all_cmd
);
1823 install_element(VIEW_NODE
, &show_ipv6_pim_channel_cmd
);
1824 install_element(VIEW_NODE
, &show_ipv6_pim_interface_cmd
);
1825 install_element(VIEW_NODE
, &show_ipv6_pim_interface_vrf_all_cmd
);
1826 install_element(VIEW_NODE
, &show_ipv6_pim_join_cmd
);
1827 install_element(VIEW_NODE
, &show_ipv6_pim_join_vrf_all_cmd
);
1828 install_element(VIEW_NODE
, &show_ipv6_pim_jp_agg_cmd
);
1829 install_element(VIEW_NODE
, &show_ipv6_pim_local_membership_cmd
);
1830 install_element(VIEW_NODE
, &show_ipv6_pim_neighbor_cmd
);
1831 install_element(VIEW_NODE
, &show_ipv6_pim_neighbor_vrf_all_cmd
);
1832 install_element(VIEW_NODE
, &show_ipv6_pim_nexthop_cmd
);
1833 install_element(VIEW_NODE
, &show_ipv6_pim_nexthop_lookup_cmd
);
1834 install_element(VIEW_NODE
, &show_ipv6_multicast_cmd
);
1835 install_element(VIEW_NODE
, &show_ipv6_multicast_vrf_all_cmd
);
1836 install_element(VIEW_NODE
, &show_ipv6_multicast_count_cmd
);
1837 install_element(VIEW_NODE
, &show_ipv6_multicast_count_vrf_all_cmd
);
1838 install_element(VIEW_NODE
, &show_ipv6_mroute_cmd
);
1839 install_element(VIEW_NODE
, &show_ipv6_mroute_vrf_all_cmd
);
1840 install_element(VIEW_NODE
, &show_ipv6_mroute_count_cmd
);
1841 install_element(VIEW_NODE
, &show_ipv6_mroute_count_vrf_all_cmd
);
1842 install_element(VIEW_NODE
, &show_ipv6_mroute_summary_cmd
);
1843 install_element(VIEW_NODE
, &show_ipv6_mroute_summary_vrf_all_cmd
);
1844 install_element(VIEW_NODE
, &show_ipv6_pim_interface_traffic_cmd
);
1845 install_element(VIEW_NODE
, &show_ipv6_pim_bsr_cmd
);
1846 install_element(VIEW_NODE
, &show_ipv6_pim_bsm_db_cmd
);
1847 install_element(VIEW_NODE
, &show_ipv6_pim_bsrp_cmd
);
1848 install_element(ENABLE_NODE
, &clear_ipv6_pim_statistics_cmd
);
1849 install_element(ENABLE_NODE
, &clear_ipv6_mroute_cmd
);
1850 install_element(ENABLE_NODE
, &clear_ipv6_pim_oil_cmd
);
1851 install_element(ENABLE_NODE
, &clear_ipv6_mroute_count_cmd
);
1852 install_element(ENABLE_NODE
, &clear_ipv6_pim_bsr_db_cmd
);
1853 install_element(ENABLE_NODE
, &clear_ipv6_pim_interfaces_cmd
);
1854 install_element(ENABLE_NODE
, &clear_ipv6_pim_interface_traffic_cmd
);
1856 install_element(ENABLE_NODE
, &show_debugging_pimv6_cmd
);
1858 install_element(ENABLE_NODE
, &debug_pimv6_cmd
);
1859 install_element(ENABLE_NODE
, &debug_pimv6_nht_cmd
);
1860 install_element(ENABLE_NODE
, &debug_pimv6_nht_det_cmd
);
1861 install_element(ENABLE_NODE
, &debug_pimv6_events_cmd
);
1862 install_element(ENABLE_NODE
, &debug_pimv6_packets_cmd
);
1863 install_element(ENABLE_NODE
, &debug_pimv6_packetdump_send_cmd
);
1864 install_element(ENABLE_NODE
, &debug_pimv6_packetdump_recv_cmd
);
1865 install_element(ENABLE_NODE
, &debug_pimv6_trace_cmd
);
1866 install_element(ENABLE_NODE
, &debug_pimv6_trace_detail_cmd
);
1867 install_element(ENABLE_NODE
, &debug_pimv6_zebra_cmd
);
1868 install_element(ENABLE_NODE
, &debug_mroute6_cmd
);
1869 install_element(ENABLE_NODE
, &debug_mroute6_detail_cmd
);
1870 install_element(ENABLE_NODE
, &debug_mld_cmd
);
1871 install_element(ENABLE_NODE
, &debug_mld_events_cmd
);
1872 install_element(ENABLE_NODE
, &debug_mld_packets_cmd
);
1873 install_element(ENABLE_NODE
, &debug_mld_trace_cmd
);
1874 install_element(ENABLE_NODE
, &debug_mld_trace_detail_cmd
);
1875 install_element(ENABLE_NODE
, &debug_pimv6_bsm_cmd
);
1877 install_element(CONFIG_NODE
, &debug_pimv6_cmd
);
1878 install_element(CONFIG_NODE
, &debug_pimv6_nht_cmd
);
1879 install_element(CONFIG_NODE
, &debug_pimv6_nht_det_cmd
);
1880 install_element(CONFIG_NODE
, &debug_pimv6_events_cmd
);
1881 install_element(CONFIG_NODE
, &debug_pimv6_packets_cmd
);
1882 install_element(CONFIG_NODE
, &debug_pimv6_packetdump_send_cmd
);
1883 install_element(CONFIG_NODE
, &debug_pimv6_packetdump_recv_cmd
);
1884 install_element(CONFIG_NODE
, &debug_pimv6_trace_cmd
);
1885 install_element(CONFIG_NODE
, &debug_pimv6_trace_detail_cmd
);
1886 install_element(CONFIG_NODE
, &debug_pimv6_zebra_cmd
);
1887 install_element(CONFIG_NODE
, &debug_mroute6_cmd
);
1888 install_element(CONFIG_NODE
, &debug_mroute6_detail_cmd
);
1889 install_element(CONFIG_NODE
, &debug_mld_cmd
);
1890 install_element(CONFIG_NODE
, &debug_mld_events_cmd
);
1891 install_element(CONFIG_NODE
, &debug_mld_packets_cmd
);
1892 install_element(CONFIG_NODE
, &debug_mld_trace_cmd
);
1893 install_element(CONFIG_NODE
, &debug_mld_trace_detail_cmd
);
1894 install_element(CONFIG_NODE
, &debug_pimv6_bsm_cmd
);