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
];
543 if (!IN6_IS_ADDR_MULTICAST(&group
)) {
544 vty_out(vty
, "Invalid Multicast Address\n");
545 return CMD_WARNING_CONFIG_FAILED
;
549 if (IPV6_ADDR_SAME(&source
, &in6addr_any
)) {
550 vty_out(vty
, "Bad source address %s\n", source_str
);
551 return CMD_WARNING_CONFIG_FAILED
;
556 snprintf(xpath
, sizeof(xpath
), FRR_GMP_JOIN_XPATH
, "frr-routing:ipv6",
557 group_str
, source_str
);
559 nb_cli_enqueue_change(vty
, xpath
, NB_OP_CREATE
, NULL
);
561 return nb_cli_apply_changes(vty
, NULL
);
564 DEFPY (interface_no_ipv6_mld_join
,
565 interface_no_ipv6_mld_join_cmd
,
566 "no ipv6 mld join X:X::X:X$group [X:X::X:X$source]",
570 "MLD join multicast group\n"
571 "Multicast group address\n"
574 char xpath
[XPATH_MAXLEN
];
577 if (IPV6_ADDR_SAME(&source
, &in6addr_any
)) {
578 vty_out(vty
, "Bad source address %s\n", source_str
);
579 return CMD_WARNING_CONFIG_FAILED
;
584 snprintf(xpath
, sizeof(xpath
), FRR_GMP_JOIN_XPATH
, "frr-routing:ipv6",
585 group_str
, source_str
);
587 nb_cli_enqueue_change(vty
, xpath
, NB_OP_DESTROY
, NULL
);
589 return nb_cli_apply_changes(vty
, NULL
);
592 DEFPY (interface_ipv6_mld
,
593 interface_ipv6_mld_cmd
,
598 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
600 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
604 DEFPY (interface_no_ipv6_mld
,
605 interface_no_ipv6_mld_cmd
,
611 const struct lyd_node
*pim_enable_dnode
;
612 char pim_if_xpath
[XPATH_MAXLEN
+ 64];
614 snprintf(pim_if_xpath
, sizeof(pim_if_xpath
),
615 "%s/frr-pim:pim/address-family[address-family='%s']",
616 VTY_CURR_XPATH
, "frr-routing:ipv6");
618 pim_enable_dnode
= yang_dnode_getf(vty
->candidate_config
->dnode
,
619 FRR_PIM_ENABLE_XPATH
, VTY_CURR_XPATH
,
621 if (!pim_enable_dnode
) {
622 nb_cli_enqueue_change(vty
, pim_if_xpath
, NB_OP_DESTROY
, NULL
);
623 nb_cli_enqueue_change(vty
, ".", NB_OP_DESTROY
, NULL
);
625 if (!yang_dnode_get_bool(pim_enable_dnode
, ".")) {
626 nb_cli_enqueue_change(vty
, pim_if_xpath
, NB_OP_DESTROY
,
628 nb_cli_enqueue_change(vty
, ".", NB_OP_DESTROY
, NULL
);
630 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
,
634 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
638 DEFPY (interface_ipv6_mld_version
,
639 interface_ipv6_mld_version_cmd
,
640 "ipv6 mld version (1-2)$version",
644 "MLD version number\n")
646 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
647 nb_cli_enqueue_change(vty
, "./mld-version", NB_OP_MODIFY
, version_str
);
649 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
653 DEFPY (interface_no_ipv6_mld_version
,
654 interface_no_ipv6_mld_version_cmd
,
655 "no ipv6 mld version [(1-2)]",
660 "MLD version number\n")
662 nb_cli_enqueue_change(vty
, "./mld-version", NB_OP_DESTROY
, NULL
);
664 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
668 DEFPY (interface_ipv6_mld_query_interval
,
669 interface_ipv6_mld_query_interval_cmd
,
670 "ipv6 mld query-interval (1-65535)$q_interval",
673 IFACE_MLD_QUERY_INTERVAL_STR
674 "Query interval in seconds\n")
676 const struct lyd_node
*pim_enable_dnode
;
678 pim_enable_dnode
= yang_dnode_getf(vty
->candidate_config
->dnode
,
679 FRR_PIM_ENABLE_XPATH
, VTY_CURR_XPATH
,
681 if (!pim_enable_dnode
) {
682 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
, "true");
684 if (!yang_dnode_get_bool(pim_enable_dnode
, "."))
685 nb_cli_enqueue_change(vty
, "./enable", NB_OP_MODIFY
,
689 nb_cli_enqueue_change(vty
, "./query-interval", NB_OP_MODIFY
,
692 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
696 DEFPY (interface_no_ipv6_mld_query_interval
,
697 interface_no_ipv6_mld_query_interval_cmd
,
698 "no ipv6 mld query-interval [(1-65535)]",
702 IFACE_MLD_QUERY_INTERVAL_STR
705 nb_cli_enqueue_change(vty
, "./query-interval", NB_OP_DESTROY
, NULL
);
707 return nb_cli_apply_changes(vty
, FRR_GMP_INTERFACE_XPATH
,
711 DEFPY (ipv6_mld_group_watermark
,
712 ipv6_mld_group_watermark_cmd
,
713 "ipv6 mld watermark-warn (1-65535)$limit",
716 "Configure group limit for watermark warning\n"
717 "Group count to generate watermark warning\n")
719 PIM_DECLVAR_CONTEXT_VRF(vrf
, pim
);
720 pim
->gm_watermark_limit
= limit
;
725 DEFPY (no_ipv6_mld_group_watermark
,
726 no_ipv6_mld_group_watermark_cmd
,
727 "no ipv6 mld watermark-warn [(1-65535)$limit]",
731 "Unconfigure group limit for watermark warning\n"
734 PIM_DECLVAR_CONTEXT_VRF(vrf
, pim
);
735 pim
->gm_watermark_limit
= 0;
740 DEFPY (interface_ipv6_mld_query_max_response_time
,
741 interface_ipv6_mld_query_max_response_time_cmd
,
742 "ipv6 mld query-max-response-time (1-65535)$qmrt",
745 IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
746 "Query response value in milliseconds\n")
748 return gm_process_query_max_response_time_cmd(vty
, qmrt_str
);
751 DEFPY (interface_no_ipv6_mld_query_max_response_time
,
752 interface_no_ipv6_mld_query_max_response_time_cmd
,
753 "no ipv6 mld query-max-response-time [(1-65535)]",
757 IFACE_MLD_QUERY_MAX_RESPONSE_TIME_STR
760 return gm_process_no_query_max_response_time_cmd(vty
);
763 DEFPY (interface_ipv6_mld_last_member_query_count
,
764 interface_ipv6_mld_last_member_query_count_cmd
,
765 "ipv6 mld last-member-query-count (1-255)$lmqc",
768 IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
769 "Last member query count\n")
771 return gm_process_last_member_query_count_cmd(vty
, lmqc_str
);
774 DEFPY (interface_no_ipv6_mld_last_member_query_count
,
775 interface_no_ipv6_mld_last_member_query_count_cmd
,
776 "no ipv6 mld last-member-query-count [(1-255)]",
780 IFACE_MLD_LAST_MEMBER_QUERY_COUNT_STR
783 return gm_process_no_last_member_query_count_cmd(vty
);
786 DEFPY (interface_ipv6_mld_last_member_query_interval
,
787 interface_ipv6_mld_last_member_query_interval_cmd
,
788 "ipv6 mld last-member-query-interval (1-65535)$lmqi",
791 IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
792 "Last member query interval in deciseconds\n")
794 return gm_process_last_member_query_interval_cmd(vty
, lmqi_str
);
797 DEFPY (interface_no_ipv6_mld_last_member_query_interval
,
798 interface_no_ipv6_mld_last_member_query_interval_cmd
,
799 "no ipv6 mld last-member-query-interval [(1-65535)]",
803 IFACE_MLD_LAST_MEMBER_QUERY_INTERVAL_STR
806 return gm_process_no_last_member_query_interval_cmd(vty
);
809 DEFPY (show_ipv6_pim_rp
,
810 show_ipv6_pim_rp_cmd
,
811 "show ipv6 pim [vrf NAME] rp-info [X:X::X:X/M$group] [json$json]",
816 "PIM RP information\n"
817 "Multicast Group range\n"
820 return pim_show_rp_helper(vrf
, vty
, group_str
, (struct prefix
*)group
,
824 DEFPY (show_ipv6_pim_rp_vrf_all
,
825 show_ipv6_pim_rp_vrf_all_cmd
,
826 "show ipv6 pim vrf all rp-info [X:X::X:X/M$group] [json$json]",
831 "PIM RP information\n"
832 "Multicast Group range\n"
835 return pim_show_rp_vrf_all_helper(vty
, group_str
,
836 (struct prefix
*)group
, !!json
);
839 DEFPY (show_ipv6_pim_rpf
,
840 show_ipv6_pim_rpf_cmd
,
841 "show ipv6 pim [vrf NAME] rpf [json$json]",
846 "PIM cached source rpf information\n"
849 return pim_show_rpf_helper(vrf
, vty
, !!json
);
852 DEFPY (show_ipv6_pim_rpf_vrf_all
,
853 show_ipv6_pim_rpf_vrf_all_cmd
,
854 "show ipv6 pim vrf all rpf [json$json]",
859 "PIM cached source rpf information\n"
862 return pim_show_rpf_vrf_all_helper(vty
, !!json
);
865 DEFPY (show_ipv6_pim_secondary
,
866 show_ipv6_pim_secondary_cmd
,
867 "show ipv6 pim [vrf NAME] secondary",
872 "PIM neighbor addresses\n")
874 return pim_show_secondary_helper(vrf
, vty
);
877 DEFPY (show_ipv6_pim_statistics
,
878 show_ipv6_pim_statistics_cmd
,
879 "show ipv6 pim [vrf NAME] statistics [interface WORD$word] [json$json]",
889 return pim_show_statistics_helper(vrf
, vty
, word
, !!json
);
892 DEFPY (show_ipv6_pim_upstream
,
893 show_ipv6_pim_upstream_cmd
,
894 "show ipv6 pim [vrf NAME] upstream [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
899 "PIM upstream information\n"
900 "The Source or Group\n"
904 return pim_show_upstream_helper(vrf
, vty
, s_or_g
, g
, !!json
);
907 DEFPY (show_ipv6_pim_upstream_vrf_all
,
908 show_ipv6_pim_upstream_vrf_all_cmd
,
909 "show ipv6 pim vrf all upstream [json$json]",
914 "PIM upstream information\n"
917 return pim_show_upstream_vrf_all_helper(vty
, !!json
);
920 DEFPY (show_ipv6_pim_upstream_join_desired
,
921 show_ipv6_pim_upstream_join_desired_cmd
,
922 "show ipv6 pim [vrf NAME] upstream-join-desired [json$json]",
927 "PIM upstream join-desired\n"
930 return pim_show_upstream_join_desired_helper(vrf
, vty
, !!json
);
933 DEFPY (show_ipv6_pim_upstream_rpf
,
934 show_ipv6_pim_upstream_rpf_cmd
,
935 "show ipv6 pim [vrf NAME] upstream-rpf [json$json]",
940 "PIM upstream source rpf\n"
943 return pim_show_upstream_rpf_helper(vrf
, vty
, !!json
);
946 DEFPY (show_ipv6_pim_state
,
947 show_ipv6_pim_state_cmd
,
948 "show ipv6 pim [vrf NAME] state [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
953 "PIM state information\n"
954 "Unicast or Multicast address\n"
955 "Multicast address\n"
958 return pim_show_state_helper(vrf
, vty
, s_or_g_str
, g_str
, !!json
);
961 DEFPY (show_ipv6_pim_state_vrf_all
,
962 show_ipv6_pim_state_vrf_all_cmd
,
963 "show ipv6 pim vrf all state [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
968 "PIM state information\n"
969 "Unicast or Multicast address\n"
970 "Multicast address\n"
973 return pim_show_state_vrf_all_helper(vty
, s_or_g_str
, g_str
, !!json
);
976 DEFPY (show_ipv6_pim_channel
,
977 show_ipv6_pim_channel_cmd
,
978 "show ipv6 pim [vrf NAME] channel [json$json]",
983 "PIM downstream channel info\n"
986 return pim_show_channel_cmd_helper(vrf
, vty
, !!json
);
989 DEFPY (show_ipv6_pim_interface
,
990 show_ipv6_pim_interface_cmd
,
991 "show ipv6 pim [vrf NAME] interface [detail|WORD]$interface [json$json]",
996 "PIM interface information\n"
1001 return pim_show_interface_cmd_helper(vrf
, vty
, !!json
, false,
1005 DEFPY (show_ipv6_pim_interface_vrf_all
,
1006 show_ipv6_pim_interface_vrf_all_cmd
,
1007 "show ipv6 pim vrf all interface [detail|WORD]$interface [json$json]",
1012 "PIM interface information\n"
1017 return pim_show_interface_vrf_all_cmd_helper(vty
, !!json
, false,
1021 DEFPY (show_ipv6_pim_join
,
1022 show_ipv6_pim_join_cmd
,
1023 "show ipv6 pim [vrf NAME] join [X:X::X:X$s_or_g [X:X::X:X$g]] [json$json]",
1028 "PIM interface join information\n"
1029 "The Source or Group\n"
1033 return pim_show_join_cmd_helper(vrf
, vty
, s_or_g
, g
, json
);
1036 DEFPY (show_ipv6_pim_join_vrf_all
,
1037 show_ipv6_pim_join_vrf_all_cmd
,
1038 "show ipv6 pim vrf all join [json$json]",
1043 "PIM interface join information\n"
1046 return pim_show_join_vrf_all_cmd_helper(vty
, json
);
1049 DEFPY (show_ipv6_pim_jp_agg
,
1050 show_ipv6_pim_jp_agg_cmd
,
1051 "show ipv6 pim [vrf NAME] jp-agg",
1056 "join prune aggregation list\n")
1058 return pim_show_jp_agg_list_cmd_helper(vrf
, vty
);
1061 DEFPY (show_ipv6_pim_local_membership
,
1062 show_ipv6_pim_local_membership_cmd
,
1063 "show ipv6 pim [vrf NAME] local-membership [json$json]",
1068 "PIM interface local-membership\n"
1071 return pim_show_membership_cmd_helper(vrf
, vty
, !!json
);
1074 DEFPY (show_ipv6_pim_neighbor
,
1075 show_ipv6_pim_neighbor_cmd
,
1076 "show ipv6 pim [vrf NAME] neighbor [detail|WORD]$interface [json$json]",
1081 "PIM neighbor information\n"
1083 "Name of interface or neighbor\n"
1086 return pim_show_neighbors_cmd_helper(vrf
, vty
, json
, interface
);
1089 DEFPY (show_ipv6_pim_neighbor_vrf_all
,
1090 show_ipv6_pim_neighbor_vrf_all_cmd
,
1091 "show ipv6 pim vrf all neighbor [detail|WORD]$interface [json$json]",
1096 "PIM neighbor information\n"
1098 "Name of interface or neighbor\n"
1101 return pim_show_neighbors_vrf_all_cmd_helper(vty
, json
, interface
);
1104 DEFPY (show_ipv6_pim_nexthop
,
1105 show_ipv6_pim_nexthop_cmd
,
1106 "show ipv6 pim [vrf NAME] nexthop [json$json]",
1111 "PIM cached nexthop rpf information\n"
1114 return pim_show_nexthop_cmd_helper(vrf
, vty
, !!json
);
1117 DEFPY (show_ipv6_pim_nexthop_lookup
,
1118 show_ipv6_pim_nexthop_lookup_cmd
,
1119 "show ipv6 pim [vrf NAME] nexthop-lookup X:X::X:X$source X:X::X:X$group",
1124 "PIM cached nexthop rpf lookup\n"
1125 "Source/RP address\n"
1126 "Multicast Group address\n")
1128 return pim_show_nexthop_lookup_cmd_helper(vrf
, vty
, source
, group
);
1131 DEFPY (show_ipv6_multicast
,
1132 show_ipv6_multicast_cmd
,
1133 "show ipv6 multicast [vrf NAME]",
1136 "Multicast global information\n"
1139 return pim_show_multicast_helper(vrf
, vty
);
1142 DEFPY (show_ipv6_multicast_vrf_all
,
1143 show_ipv6_multicast_vrf_all_cmd
,
1144 "show ipv6 multicast vrf all",
1147 "Multicast global information\n"
1150 return pim_show_multicast_vrf_all_helper(vty
);
1153 DEFPY (show_ipv6_multicast_count
,
1154 show_ipv6_multicast_count_cmd
,
1155 "show ipv6 multicast count [vrf NAME] [json$json]",
1158 "Multicast global information\n"
1159 "Data packet count\n"
1163 return pim_show_multicast_count_helper(vrf
, vty
, !!json
);
1166 DEFPY (show_ipv6_multicast_count_vrf_all
,
1167 show_ipv6_multicast_count_vrf_all_cmd
,
1168 "show ipv6 multicast count vrf all [json$json]",
1171 "Multicast global information\n"
1172 "Data packet count\n"
1176 return pim_show_multicast_count_vrf_all_helper(vty
, !!json
);
1179 DEFPY (show_ipv6_mroute
,
1180 show_ipv6_mroute_cmd
,
1181 "show ipv6 mroute [vrf NAME] [X:X::X:X$s_or_g [X:X::X:X$g]] [fill$fill] [json$json]",
1186 "The Source or Group\n"
1188 "Fill in Assumed data\n"
1191 return pim_show_mroute_helper(vrf
, vty
, s_or_g
, g
, !!fill
, !!json
);
1194 DEFPY (show_ipv6_mroute_vrf_all
,
1195 show_ipv6_mroute_vrf_all_cmd
,
1196 "show ipv6 mroute vrf all [fill$fill] [json$json]",
1201 "Fill in Assumed data\n"
1204 return pim_show_mroute_vrf_all_helper(vty
, !!fill
, !!json
);
1207 DEFPY (show_ipv6_mroute_count
,
1208 show_ipv6_mroute_count_cmd
,
1209 "show ipv6 mroute [vrf NAME] count [json$json]",
1214 "Route and packet count data\n"
1217 return pim_show_mroute_count_helper(vrf
, vty
, !!json
);
1220 DEFPY (show_ipv6_mroute_count_vrf_all
,
1221 show_ipv6_mroute_count_vrf_all_cmd
,
1222 "show ipv6 mroute vrf all count [json$json]",
1227 "Route and packet count data\n"
1230 return pim_show_mroute_count_vrf_all_helper(vty
, !!json
);
1233 DEFPY (show_ipv6_mroute_summary
,
1234 show_ipv6_mroute_summary_cmd
,
1235 "show ipv6 mroute [vrf NAME] summary [json$json]",
1240 "Summary of all mroutes\n"
1243 return pim_show_mroute_summary_helper(vrf
, vty
, !!json
);
1246 DEFPY (show_ipv6_mroute_summary_vrf_all
,
1247 show_ipv6_mroute_summary_vrf_all_cmd
,
1248 "show ipv6 mroute vrf all summary [json$json]",
1253 "Summary of all mroutes\n"
1256 return pim_show_mroute_summary_vrf_all_helper(vty
, !!json
);
1259 DEFPY (show_ipv6_pim_interface_traffic
,
1260 show_ipv6_pim_interface_traffic_cmd
,
1261 "show ipv6 pim [vrf NAME] interface traffic [WORD$if_name] [json$json]",
1266 "PIM interface information\n"
1267 "Protocol Packet counters\n"
1271 return pim_show_interface_traffic_helper(vrf
, if_name
, vty
, !!json
);
1274 DEFPY (show_ipv6_pim_bsr
,
1275 show_ipv6_pim_bsr_cmd
,
1276 "show ipv6 pim bsr [vrf NAME] [json$json]",
1280 "boot-strap router information\n"
1284 return pim_show_bsr_helper(vrf
, vty
, !!json
);
1287 DEFPY (show_ipv6_pim_bsm_db
,
1288 show_ipv6_pim_bsm_db_cmd
,
1289 "show ipv6 pim bsm-database [vrf NAME] [json$json]",
1293 "PIM cached bsm packets information\n"
1297 return pim_show_bsm_db_helper(vrf
, vty
, !!json
);
1300 DEFPY (show_ipv6_pim_bsrp
,
1301 show_ipv6_pim_bsrp_cmd
,
1302 "show ipv6 pim bsrp-info [vrf NAME] [json$json]",
1306 "PIM cached group-rp mappings information\n"
1310 return pim_show_group_rp_mappings_info_helper(vrf
, vty
, !!json
);
1313 DEFPY (clear_ipv6_pim_statistics
,
1314 clear_ipv6_pim_statistics_cmd
,
1315 "clear ipv6 pim statistics [vrf NAME]$name",
1320 "Reset PIM statistics\n")
1322 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1327 clear_pim_statistics(v
->info
);
1332 DEFPY (clear_ipv6_pim_interface_traffic
,
1333 clear_ipv6_pim_interface_traffic_cmd
,
1334 "clear ipv6 pim [vrf NAME] interface traffic",
1339 "Reset PIM interfaces\n"
1340 "Reset Protocol Packet counters\n")
1342 return clear_pim_interface_traffic(vrf
, vty
);
1345 DEFPY (clear_ipv6_mroute
,
1346 clear_ipv6_mroute_cmd
,
1347 "clear ipv6 mroute [vrf NAME]$name",
1353 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1358 clear_mroute(v
->info
);
1363 DEFPY (clear_ipv6_pim_oil
,
1364 clear_ipv6_pim_oil_cmd
,
1365 "clear ipv6 pim [vrf NAME]$name oil",
1370 "Rescan PIMv6 OIL (output interface list)\n")
1372 struct vrf
*v
= pim_cmd_lookup(vty
, name
);
1377 pim_scan_oil(v
->info
);
1382 DEFPY (clear_ipv6_mroute_count
,
1383 clear_ipv6_mroute_count_cmd
,
1384 "clear ipv6 mroute [vrf NAME]$name count",
1389 "Route and packet count data\n")
1391 return clear_ip_mroute_count_command(vty
, name
);
1394 DEFPY (clear_ipv6_pim_interfaces
,
1395 clear_ipv6_pim_interfaces_cmd
,
1396 "clear ipv6 pim [vrf NAME] interfaces",
1401 "Reset PIM interfaces\n")
1403 struct vrf
*v
= pim_cmd_lookup(vty
, vrf
);
1408 clear_pim_interfaces(v
->info
);
1413 DEFPY (clear_ipv6_pim_bsr_db
,
1414 clear_ipv6_pim_bsr_db_cmd
,
1415 "clear ipv6 pim [vrf NAME] bsr-data",
1420 "Reset pim bsr data\n")
1424 v
= vrf_lookup_by_name(vrf
? vrf
: VRF_DEFAULT_NAME
);
1428 pim_bsm_clear(v
->info
);
1441 return pim_debug_pim_cmd();
1443 return pim_no_debug_pim_cmd();
1446 DEFPY (debug_pimv6_nht
,
1447 debug_pimv6_nht_cmd
,
1448 "[no] debug pimv6 nht",
1452 "Nexthop Tracking\n")
1455 PIM_DO_DEBUG_PIM_NHT
;
1457 PIM_DONT_DEBUG_PIM_NHT
;
1461 DEFPY (debug_pimv6_nht_det
,
1462 debug_pimv6_nht_det_cmd
,
1463 "[no] debug pimv6 nht detail",
1467 "Nexthop Tracking\n"
1468 "Detailed Information\n")
1471 PIM_DO_DEBUG_PIM_NHT_DETAIL
;
1473 PIM_DONT_DEBUG_PIM_NHT_DETAIL
;
1477 DEFPY (debug_pimv6_events
,
1478 debug_pimv6_events_cmd
,
1479 "[no] debug pimv6 events",
1483 DEBUG_PIMV6_EVENTS_STR
)
1486 PIM_DO_DEBUG_PIM_EVENTS
;
1488 PIM_DONT_DEBUG_PIM_EVENTS
;
1492 DEFPY (debug_pimv6_packets
,
1493 debug_pimv6_packets_cmd
,
1494 "[no] debug pimv6 packets [<hello$hello|joins$joins|register$registers>]",
1498 DEBUG_PIMV6_PACKETS_STR
1499 DEBUG_PIMV6_HELLO_PACKETS_STR
1500 DEBUG_PIMV6_J_P_PACKETS_STR
1501 DEBUG_PIMV6_PIM_REG_PACKETS_STR
)
1504 return pim_debug_pim_packets_cmd(hello
, joins
, registers
, vty
);
1506 return pim_no_debug_pim_packets_cmd(hello
, joins
, registers
,
1510 DEFPY (debug_pimv6_packetdump_send
,
1511 debug_pimv6_packetdump_send_cmd
,
1512 "[no] debug pimv6 packet-dump send",
1516 DEBUG_PIMV6_PACKETDUMP_STR
1517 DEBUG_PIMV6_PACKETDUMP_SEND_STR
)
1520 PIM_DO_DEBUG_PIM_PACKETDUMP_SEND
;
1522 PIM_DONT_DEBUG_PIM_PACKETDUMP_SEND
;
1526 DEFPY (debug_pimv6_packetdump_recv
,
1527 debug_pimv6_packetdump_recv_cmd
,
1528 "[no] debug pimv6 packet-dump receive",
1532 DEBUG_PIMV6_PACKETDUMP_STR
1533 DEBUG_PIMV6_PACKETDUMP_RECV_STR
)
1536 PIM_DO_DEBUG_PIM_PACKETDUMP_RECV
;
1538 PIM_DONT_DEBUG_PIM_PACKETDUMP_RECV
;
1542 DEFPY (debug_pimv6_trace
,
1543 debug_pimv6_trace_cmd
,
1544 "[no] debug pimv6 trace",
1548 DEBUG_PIMV6_TRACE_STR
)
1551 PIM_DO_DEBUG_PIM_TRACE
;
1553 PIM_DONT_DEBUG_PIM_TRACE
;
1557 DEFPY (debug_pimv6_trace_detail
,
1558 debug_pimv6_trace_detail_cmd
,
1559 "[no] debug pimv6 trace detail",
1563 DEBUG_PIMV6_TRACE_STR
1564 "Detailed Information\n")
1567 PIM_DO_DEBUG_PIM_TRACE_DETAIL
;
1569 PIM_DONT_DEBUG_PIM_TRACE_DETAIL
;
1573 DEFPY (debug_pimv6_zebra
,
1574 debug_pimv6_zebra_cmd
,
1575 "[no] debug pimv6 zebra",
1579 DEBUG_PIMV6_ZEBRA_STR
)
1584 PIM_DONT_DEBUG_ZEBRA
;
1588 DEFPY (debug_mroute6
,
1590 "[no] debug mroute6",
1596 PIM_DO_DEBUG_MROUTE
;
1598 PIM_DONT_DEBUG_MROUTE
;
1603 DEFPY (debug_mroute6_detail
,
1604 debug_mroute6_detail_cmd
,
1605 "[no] debug mroute6 detail",
1612 PIM_DO_DEBUG_MROUTE_DETAIL
;
1614 PIM_DONT_DEBUG_MROUTE_DETAIL
;
1619 DEFUN_NOSH (show_debugging_pimv6
,
1620 show_debugging_pimv6_cmd
,
1621 "show debugging [pimv6]",
1624 "PIMv6 Information\n")
1626 vty_out(vty
, "PIMv6 debugging status\n");
1628 pim_debug_config_write(vty
);
1630 cmd_show_lib_debugs(vty
);
1643 PIM_DO_DEBUG_GM_EVENTS
;
1644 PIM_DO_DEBUG_GM_PACKETS
;
1645 PIM_DO_DEBUG_GM_TRACE
;
1647 PIM_DONT_DEBUG_GM_EVENTS
;
1648 PIM_DONT_DEBUG_GM_PACKETS
;
1649 PIM_DONT_DEBUG_GM_TRACE
;
1655 DEFPY (debug_mld_events
,
1656 debug_mld_events_cmd
,
1657 "[no] debug mld events",
1661 DEBUG_MLD_EVENTS_STR
)
1664 PIM_DO_DEBUG_GM_EVENTS
;
1666 PIM_DONT_DEBUG_GM_EVENTS
;
1671 DEFPY (debug_mld_packets
,
1672 debug_mld_packets_cmd
,
1673 "[no] debug mld packets",
1677 DEBUG_MLD_PACKETS_STR
)
1680 PIM_DO_DEBUG_GM_PACKETS
;
1682 PIM_DONT_DEBUG_GM_PACKETS
;
1687 DEFPY (debug_mld_trace
,
1688 debug_mld_trace_cmd
,
1689 "[no] debug mld trace",
1693 DEBUG_MLD_TRACE_STR
)
1696 PIM_DO_DEBUG_GM_TRACE
;
1698 PIM_DONT_DEBUG_GM_TRACE
;
1703 DEFPY (debug_mld_trace_detail
,
1704 debug_mld_trace_detail_cmd
,
1705 "[no] debug mld trace detail",
1713 PIM_DO_DEBUG_GM_TRACE_DETAIL
;
1715 PIM_DONT_DEBUG_GM_TRACE_DETAIL
;
1720 DEFPY (debug_pimv6_bsm
,
1721 debug_pimv6_bsm_cmd
,
1722 "[no] debug pimv6 bsm",
1726 DEBUG_PIMV6_BSM_STR
)
1736 void pim_cmd_init(void)
1738 if_cmd_init(pim_interface_config_write
);
1740 install_node(&debug_node
);
1742 install_element(CONFIG_NODE
, &ipv6_pim_joinprune_time_cmd
);
1743 install_element(CONFIG_NODE
, &no_ipv6_pim_joinprune_time_cmd
);
1744 install_element(CONFIG_NODE
, &ipv6_pim_spt_switchover_infinity_cmd
);
1745 install_element(CONFIG_NODE
, &ipv6_pim_spt_switchover_infinity_plist_cmd
);
1746 install_element(CONFIG_NODE
, &no_ipv6_pim_spt_switchover_infinity_cmd
);
1747 install_element(CONFIG_NODE
, &no_ipv6_pim_spt_switchover_infinity_plist_cmd
);
1748 install_element(CONFIG_NODE
, &ipv6_pim_packets_cmd
);
1749 install_element(CONFIG_NODE
, &no_ipv6_pim_packets_cmd
);
1750 install_element(CONFIG_NODE
, &ipv6_pim_keep_alive_cmd
);
1751 install_element(CONFIG_NODE
, &no_ipv6_pim_keep_alive_cmd
);
1752 install_element(CONFIG_NODE
, &ipv6_pim_rp_keep_alive_cmd
);
1753 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_keep_alive_cmd
);
1754 install_element(CONFIG_NODE
, &ipv6_pim_register_suppress_cmd
);
1755 install_element(CONFIG_NODE
, &no_ipv6_pim_register_suppress_cmd
);
1756 install_element(INTERFACE_NODE
, &interface_ipv6_pim_cmd
);
1757 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_cmd
);
1758 install_element(INTERFACE_NODE
, &interface_ipv6_pim_drprio_cmd
);
1759 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_drprio_cmd
);
1760 install_element(INTERFACE_NODE
, &interface_ipv6_pim_hello_cmd
);
1761 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_hello_cmd
);
1762 install_element(INTERFACE_NODE
, &interface_ipv6_pim_activeactive_cmd
);
1763 install_element(INTERFACE_NODE
, &interface_ipv6_pim_ssm_cmd
);
1764 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_ssm_cmd
);
1765 install_element(INTERFACE_NODE
, &interface_ipv6_pim_sm_cmd
);
1766 install_element(INTERFACE_NODE
, &interface_no_ipv6_pim_sm_cmd
);
1767 install_element(INTERFACE_NODE
,
1768 &interface_ipv6_pim_boundary_oil_cmd
);
1769 install_element(INTERFACE_NODE
,
1770 &interface_no_ipv6_pim_boundary_oil_cmd
);
1771 install_element(INTERFACE_NODE
, &interface_ipv6_mroute_cmd
);
1772 install_element(INTERFACE_NODE
, &interface_no_ipv6_mroute_cmd
);
1773 /* Install BSM command */
1774 install_element(INTERFACE_NODE
, &ipv6_pim_bsm_cmd
);
1775 install_element(INTERFACE_NODE
, &no_ipv6_pim_bsm_cmd
);
1776 install_element(INTERFACE_NODE
, &ipv6_pim_ucast_bsm_cmd
);
1777 install_element(INTERFACE_NODE
, &no_ipv6_pim_ucast_bsm_cmd
);
1778 install_element(CONFIG_NODE
, &ipv6_pim_rp_cmd
);
1779 install_element(VRF_NODE
, &ipv6_pim_rp_cmd
);
1780 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_cmd
);
1781 install_element(VRF_NODE
, &no_ipv6_pim_rp_cmd
);
1782 install_element(CONFIG_NODE
, &ipv6_pim_rp_prefix_list_cmd
);
1783 install_element(VRF_NODE
, &ipv6_pim_rp_prefix_list_cmd
);
1784 install_element(CONFIG_NODE
, &no_ipv6_pim_rp_prefix_list_cmd
);
1785 install_element(VRF_NODE
, &no_ipv6_pim_rp_prefix_list_cmd
);
1786 install_element(CONFIG_NODE
, &ipv6_ssmpingd_cmd
);
1787 install_element(VRF_NODE
, &ipv6_ssmpingd_cmd
);
1788 install_element(CONFIG_NODE
, &no_ipv6_ssmpingd_cmd
);
1789 install_element(VRF_NODE
, &no_ipv6_ssmpingd_cmd
);
1790 install_element(INTERFACE_NODE
, &interface_ipv6_mld_cmd
);
1791 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_cmd
);
1792 install_element(INTERFACE_NODE
, &interface_ipv6_mld_join_cmd
);
1793 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_join_cmd
);
1794 install_element(INTERFACE_NODE
, &interface_ipv6_mld_version_cmd
);
1795 install_element(INTERFACE_NODE
, &interface_no_ipv6_mld_version_cmd
);
1796 install_element(INTERFACE_NODE
, &interface_ipv6_mld_query_interval_cmd
);
1797 install_element(INTERFACE_NODE
,
1798 &interface_no_ipv6_mld_query_interval_cmd
);
1799 install_element(CONFIG_NODE
, &ipv6_mld_group_watermark_cmd
);
1800 install_element(VRF_NODE
, &ipv6_mld_group_watermark_cmd
);
1801 install_element(CONFIG_NODE
, &no_ipv6_mld_group_watermark_cmd
);
1802 install_element(VRF_NODE
, &no_ipv6_mld_group_watermark_cmd
);
1803 install_element(INTERFACE_NODE
,
1804 &interface_ipv6_mld_query_max_response_time_cmd
);
1805 install_element(INTERFACE_NODE
,
1806 &interface_no_ipv6_mld_query_max_response_time_cmd
);
1807 install_element(INTERFACE_NODE
,
1808 &interface_ipv6_mld_last_member_query_count_cmd
);
1809 install_element(INTERFACE_NODE
,
1810 &interface_no_ipv6_mld_last_member_query_count_cmd
);
1811 install_element(INTERFACE_NODE
,
1812 &interface_ipv6_mld_last_member_query_interval_cmd
);
1813 install_element(INTERFACE_NODE
,
1814 &interface_no_ipv6_mld_last_member_query_interval_cmd
);
1816 install_element(VIEW_NODE
, &show_ipv6_pim_rp_cmd
);
1817 install_element(VIEW_NODE
, &show_ipv6_pim_rp_vrf_all_cmd
);
1818 install_element(VIEW_NODE
, &show_ipv6_pim_rpf_cmd
);
1819 install_element(VIEW_NODE
, &show_ipv6_pim_rpf_vrf_all_cmd
);
1820 install_element(VIEW_NODE
, &show_ipv6_pim_secondary_cmd
);
1821 install_element(VIEW_NODE
, &show_ipv6_pim_statistics_cmd
);
1822 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_cmd
);
1823 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_vrf_all_cmd
);
1824 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_join_desired_cmd
);
1825 install_element(VIEW_NODE
, &show_ipv6_pim_upstream_rpf_cmd
);
1826 install_element(VIEW_NODE
, &show_ipv6_pim_state_cmd
);
1827 install_element(VIEW_NODE
, &show_ipv6_pim_state_vrf_all_cmd
);
1828 install_element(VIEW_NODE
, &show_ipv6_pim_channel_cmd
);
1829 install_element(VIEW_NODE
, &show_ipv6_pim_interface_cmd
);
1830 install_element(VIEW_NODE
, &show_ipv6_pim_interface_vrf_all_cmd
);
1831 install_element(VIEW_NODE
, &show_ipv6_pim_join_cmd
);
1832 install_element(VIEW_NODE
, &show_ipv6_pim_join_vrf_all_cmd
);
1833 install_element(VIEW_NODE
, &show_ipv6_pim_jp_agg_cmd
);
1834 install_element(VIEW_NODE
, &show_ipv6_pim_local_membership_cmd
);
1835 install_element(VIEW_NODE
, &show_ipv6_pim_neighbor_cmd
);
1836 install_element(VIEW_NODE
, &show_ipv6_pim_neighbor_vrf_all_cmd
);
1837 install_element(VIEW_NODE
, &show_ipv6_pim_nexthop_cmd
);
1838 install_element(VIEW_NODE
, &show_ipv6_pim_nexthop_lookup_cmd
);
1839 install_element(VIEW_NODE
, &show_ipv6_multicast_cmd
);
1840 install_element(VIEW_NODE
, &show_ipv6_multicast_vrf_all_cmd
);
1841 install_element(VIEW_NODE
, &show_ipv6_multicast_count_cmd
);
1842 install_element(VIEW_NODE
, &show_ipv6_multicast_count_vrf_all_cmd
);
1843 install_element(VIEW_NODE
, &show_ipv6_mroute_cmd
);
1844 install_element(VIEW_NODE
, &show_ipv6_mroute_vrf_all_cmd
);
1845 install_element(VIEW_NODE
, &show_ipv6_mroute_count_cmd
);
1846 install_element(VIEW_NODE
, &show_ipv6_mroute_count_vrf_all_cmd
);
1847 install_element(VIEW_NODE
, &show_ipv6_mroute_summary_cmd
);
1848 install_element(VIEW_NODE
, &show_ipv6_mroute_summary_vrf_all_cmd
);
1849 install_element(VIEW_NODE
, &show_ipv6_pim_interface_traffic_cmd
);
1850 install_element(VIEW_NODE
, &show_ipv6_pim_bsr_cmd
);
1851 install_element(VIEW_NODE
, &show_ipv6_pim_bsm_db_cmd
);
1852 install_element(VIEW_NODE
, &show_ipv6_pim_bsrp_cmd
);
1853 install_element(ENABLE_NODE
, &clear_ipv6_pim_statistics_cmd
);
1854 install_element(ENABLE_NODE
, &clear_ipv6_mroute_cmd
);
1855 install_element(ENABLE_NODE
, &clear_ipv6_pim_oil_cmd
);
1856 install_element(ENABLE_NODE
, &clear_ipv6_mroute_count_cmd
);
1857 install_element(ENABLE_NODE
, &clear_ipv6_pim_bsr_db_cmd
);
1858 install_element(ENABLE_NODE
, &clear_ipv6_pim_interfaces_cmd
);
1859 install_element(ENABLE_NODE
, &clear_ipv6_pim_interface_traffic_cmd
);
1861 install_element(ENABLE_NODE
, &show_debugging_pimv6_cmd
);
1863 install_element(ENABLE_NODE
, &debug_pimv6_cmd
);
1864 install_element(ENABLE_NODE
, &debug_pimv6_nht_cmd
);
1865 install_element(ENABLE_NODE
, &debug_pimv6_nht_det_cmd
);
1866 install_element(ENABLE_NODE
, &debug_pimv6_events_cmd
);
1867 install_element(ENABLE_NODE
, &debug_pimv6_packets_cmd
);
1868 install_element(ENABLE_NODE
, &debug_pimv6_packetdump_send_cmd
);
1869 install_element(ENABLE_NODE
, &debug_pimv6_packetdump_recv_cmd
);
1870 install_element(ENABLE_NODE
, &debug_pimv6_trace_cmd
);
1871 install_element(ENABLE_NODE
, &debug_pimv6_trace_detail_cmd
);
1872 install_element(ENABLE_NODE
, &debug_pimv6_zebra_cmd
);
1873 install_element(ENABLE_NODE
, &debug_mroute6_cmd
);
1874 install_element(ENABLE_NODE
, &debug_mroute6_detail_cmd
);
1875 install_element(ENABLE_NODE
, &debug_mld_cmd
);
1876 install_element(ENABLE_NODE
, &debug_mld_events_cmd
);
1877 install_element(ENABLE_NODE
, &debug_mld_packets_cmd
);
1878 install_element(ENABLE_NODE
, &debug_mld_trace_cmd
);
1879 install_element(ENABLE_NODE
, &debug_mld_trace_detail_cmd
);
1880 install_element(ENABLE_NODE
, &debug_pimv6_bsm_cmd
);
1882 install_element(CONFIG_NODE
, &debug_pimv6_cmd
);
1883 install_element(CONFIG_NODE
, &debug_pimv6_nht_cmd
);
1884 install_element(CONFIG_NODE
, &debug_pimv6_nht_det_cmd
);
1885 install_element(CONFIG_NODE
, &debug_pimv6_events_cmd
);
1886 install_element(CONFIG_NODE
, &debug_pimv6_packets_cmd
);
1887 install_element(CONFIG_NODE
, &debug_pimv6_packetdump_send_cmd
);
1888 install_element(CONFIG_NODE
, &debug_pimv6_packetdump_recv_cmd
);
1889 install_element(CONFIG_NODE
, &debug_pimv6_trace_cmd
);
1890 install_element(CONFIG_NODE
, &debug_pimv6_trace_detail_cmd
);
1891 install_element(CONFIG_NODE
, &debug_pimv6_zebra_cmd
);
1892 install_element(CONFIG_NODE
, &debug_mroute6_cmd
);
1893 install_element(CONFIG_NODE
, &debug_mroute6_detail_cmd
);
1894 install_element(CONFIG_NODE
, &debug_mld_cmd
);
1895 install_element(CONFIG_NODE
, &debug_mld_events_cmd
);
1896 install_element(CONFIG_NODE
, &debug_mld_packets_cmd
);
1897 install_element(CONFIG_NODE
, &debug_mld_trace_cmd
);
1898 install_element(CONFIG_NODE
, &debug_mld_trace_detail_cmd
);
1899 install_element(CONFIG_NODE
, &debug_pimv6_bsm_cmd
);