]> git.proxmox.com Git - mirror_frr.git/blob - pimd/pim_cmd_common.h
pimd, pim6d: Adding json support for show ipv6 nexthop
[mirror_frr.git] / pimd / pim_cmd_common.h
1 /*
2 * PIM for IPv6 FRR
3 * Copyright (C) 2022 Vmware, Inc.
4 * Mobashshera Rasool <mrasool@vmware.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; see the file COPYING; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20 #ifndef PIM_CMD_COMMON_H
21 #define PIM_CMD_COMMON_H
22
23 struct pim_upstream;
24 struct pim_instance;
25
26 /* duplicated from pim_instance.h - needed to avoid dependency mess */
27 struct pim_instance *pim_get_pim_instance(vrf_id_t vrf_id);
28
29 const char *pim_cli_get_vrf_name(struct vty *vty);
30 int pim_process_join_prune_cmd(struct vty *vty, const char *jpi_str);
31 int pim_process_no_join_prune_cmd(struct vty *vty);
32 int pim_process_spt_switchover_infinity_cmd(struct vty *vty);
33 int pim_process_spt_switchover_prefixlist_cmd(struct vty *vty,
34 const char *plist);
35 int pim_process_no_spt_switchover_cmd(struct vty *vty);
36 int pim_process_pim_packet_cmd(struct vty *vty, const char *packet);
37 int pim_process_no_pim_packet_cmd(struct vty *vty);
38 int pim_process_keepalivetimer_cmd(struct vty *vty, const char *kat);
39 int pim_process_no_keepalivetimer_cmd(struct vty *vty);
40 int pim_process_rp_kat_cmd(struct vty *vty, const char *rpkat);
41 int pim_process_no_rp_kat_cmd(struct vty *vty);
42 int pim_process_register_suppress_cmd(struct vty *vty, const char *rst);
43 int pim_process_no_register_suppress_cmd(struct vty *vty);
44 int pim_process_rp_cmd(struct vty *vty, const char *rp_str,
45 const char *group_str);
46 int pim_process_no_rp_cmd(struct vty *vty, const char *rp_str,
47 const char *group_str);
48 int pim_process_rp_plist_cmd(struct vty *vty, const char *rp_str,
49 const char *prefix_list);
50 int pim_process_no_rp_plist_cmd(struct vty *vty, const char *rp_str,
51 const char *prefix_list);
52
53 int pim_process_ip_pim_cmd(struct vty *vty);
54 int pim_process_no_ip_pim_cmd(struct vty *vty);
55 int pim_process_ip_pim_passive_cmd(struct vty *vty, bool enable);
56 int pim_process_ip_pim_drprio_cmd(struct vty *vty, const char *drpriority_str);
57 int pim_process_no_ip_pim_drprio_cmd(struct vty *vty);
58 int pim_process_ip_pim_hello_cmd(struct vty *vty, const char *hello_str,
59 const char *hold_str);
60 int pim_process_no_ip_pim_hello_cmd(struct vty *vty);
61 int pim_process_ip_pim_activeactive_cmd(struct vty *vty, const char *no);
62 int pim_process_ip_pim_boundary_oil_cmd(struct vty *vty, const char *oil);
63 int pim_process_no_ip_pim_boundary_oil_cmd(struct vty *vty);
64 int pim_process_ip_mroute_cmd(struct vty *vty, const char *interface,
65 const char *group_str, const char *source_str);
66 int pim_process_no_ip_mroute_cmd(struct vty *vty, const char *interface,
67 const char *group_str, const char *src_str);
68 void json_object_pim_upstream_add(json_object *json, struct pim_upstream *up);
69 void pim_show_rpf(struct pim_instance *pim, struct vty *vty, json_object *json);
70 void pim_show_neighbors_secondary(struct pim_instance *pim, struct vty *vty);
71 void pim_show_state(struct pim_instance *pim, struct vty *vty,
72 const char *src_or_group, const char *group,
73 json_object *json);
74 void pim_show_statistics(struct pim_instance *pim, struct vty *vty,
75 const char *ifname, bool uj);
76 void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
77 pim_sgaddr *sg, json_object *json);
78 void pim_show_join_desired(struct pim_instance *pim, struct vty *vty, bool uj);
79 void pim_show_upstream_rpf(struct pim_instance *pim, struct vty *vty, bool uj);
80 void pim_show_rpf_refresh_stats(struct vty *vty, struct pim_instance *pim,
81 time_t now, json_object *json);
82 bool pim_sgaddr_match(pim_sgaddr item, pim_sgaddr match);
83 void json_object_pim_ifp_add(struct json_object *json, struct interface *ifp);
84 void pim_print_ifp_flags(struct vty *vty, struct interface *ifp);
85 void json_object_pim_upstream_add(json_object *json, struct pim_upstream *up);
86 int pim_show_join_cmd_helper(const char *vrf, struct vty *vty, pim_addr s_or_g,
87 pim_addr g, const char *json);
88 int pim_show_join_vrf_all_cmd_helper(struct vty *vty, const char *json);
89 void pim_show_join(struct pim_instance *pim, struct vty *vty, pim_sgaddr *sg,
90 json_object *json);
91 int pim_show_jp_agg_list_cmd_helper(const char *vrf, struct vty *vty);
92 void pim_show_jp_agg_list(struct pim_instance *pim, struct vty *vty);
93 int pim_show_membership_cmd_helper(const char *vrf, struct vty *vty, bool uj);
94 void pim_show_membership(struct pim_instance *pim, struct vty *vty, bool uj);
95 void pim_show_channel(struct pim_instance *pim, struct vty *vty, bool uj);
96 int pim_show_channel_cmd_helper(const char *vrf, struct vty *vty, bool uj);
97 int pim_show_interface_cmd_helper(const char *vrf, struct vty *vty, bool uj,
98 bool mlag, const char *interface);
99 int pim_show_interface_vrf_all_cmd_helper(struct vty *vty, bool uj, bool mlag,
100 const char *interface);
101 void pim_show_interfaces(struct pim_instance *pim, struct vty *vty, bool mlag,
102 json_object *json);
103 void pim_show_interfaces_single(struct pim_instance *pim, struct vty *vty,
104 const char *ifname, bool mlag,
105 json_object *json);
106 void ip_pim_ssm_show_group_range(struct pim_instance *pim, struct vty *vty,
107 bool uj);
108 int pim_show_nexthop_lookup_cmd_helper(const char *vrf, struct vty *vty,
109 pim_addr source, pim_addr group);
110 int pim_show_nexthop_cmd_helper(const char *vrf, struct vty *vty, bool uj);
111 void pim_show_nexthop(struct pim_instance *pim, struct vty *vty, bool uj);
112 int pim_show_neighbors_cmd_helper(const char *vrf, struct vty *vty,
113 const char *json, const char *interface);
114 int pim_show_neighbors_vrf_all_cmd_helper(struct vty *vty, const char *json,
115 const char *interface);
116 void pim_show_neighbors_single(struct pim_instance *pim, struct vty *vty,
117 const char *neighbor, json_object *json);
118 void pim_show_neighbors(struct pim_instance *pim, struct vty *vty,
119 json_object *json);
120 int gm_process_query_max_response_time_cmd(struct vty *vty,
121 const char *qmrt_str);
122 int gm_process_no_query_max_response_time_cmd(struct vty *vty);
123 int gm_process_last_member_query_count_cmd(struct vty *vty,
124 const char *lmqc_str);
125 int gm_process_no_last_member_query_count_cmd(struct vty *vty);
126 int gm_process_last_member_query_interval_cmd(struct vty *vty,
127 const char *lmqi_str);
128 int gm_process_no_last_member_query_interval_cmd(struct vty *vty);
129 int pim_process_ssmpingd_cmd(struct vty *vty, enum nb_operation operation,
130 const char *src_str);
131 void pim_cmd_show_ip_multicast_helper(struct pim_instance *pim,
132 struct vty *vty);
133 void show_multicast_interfaces(struct pim_instance *pim, struct vty *vty,
134 json_object *json);
135 void show_mroute(struct pim_instance *pim, struct vty *vty, pim_sgaddr *sg,
136 bool fill, json_object *json);
137 void show_mroute_count(struct pim_instance *pim, struct vty *vty,
138 json_object *json);
139 void show_mroute_summary(struct pim_instance *pim, struct vty *vty,
140 json_object *json);
141 int clear_ip_mroute_count_command(struct vty *vty, const char *name);
142 struct vrf *pim_cmd_lookup(struct vty *vty, const char *name);
143 void clear_mroute(struct pim_instance *pim);
144 void clear_pim_statistics(struct pim_instance *pim);
145 int pim_debug_pim_cmd(void);
146 int pim_no_debug_pim_cmd(void);
147 int pim_debug_pim_packets_cmd(const char *hello, const char *joins,
148 const char *registers, struct vty *vty);
149 int pim_no_debug_pim_packets_cmd(const char *hello, const char *joins,
150 const char *registers, struct vty *vty);
151 int pim_show_rpf_helper(const char *vrf, struct vty *vty, bool json);
152 int pim_show_rpf_vrf_all_helper(struct vty *vty, bool json);
153 int pim_show_rp_helper(const char *vrf, struct vty *vty, const char *group_str,
154 const struct prefix *group, bool json);
155 int pim_show_rp_vrf_all_helper(struct vty *vty, const char *group_str,
156 const struct prefix *group, bool json);
157 int pim_show_secondary_helper(const char *vrf, struct vty *vty);
158 int pim_show_statistics_helper(const char *vrf, struct vty *vty,
159 const char *word, bool uj);
160 int pim_show_upstream_helper(const char *vrf, struct vty *vty, pim_addr s_or_g,
161 pim_addr g, bool json);
162 int pim_show_upstream_vrf_all_helper(struct vty *vty, bool json);
163 int pim_show_upstream_join_desired_helper(const char *vrf, struct vty *vty,
164 bool uj);
165 int pim_show_upstream_rpf_helper(const char *vrf, struct vty *vty, bool uj);
166 int pim_show_state_helper(const char *vrf, struct vty *vty,
167 const char *s_or_g_str, const char *g_str, bool json);
168 int pim_show_state_vrf_all_helper(struct vty *vty, const char *s_or_g_str,
169 const char *g_str, bool json);
170 int pim_show_multicast_helper(const char *vrf, struct vty *vty);
171 int pim_show_multicast_vrf_all_helper(struct vty *vty);
172 int pim_show_multicast_count_helper(const char *vrf, struct vty *vty,
173 bool json);
174 int pim_show_multicast_count_vrf_all_helper(struct vty *vty, bool json);
175 int pim_show_mroute_helper(const char *vrf, struct vty *vty, pim_addr s_or_g,
176 pim_addr g, bool fill, bool json);
177 int pim_show_mroute_vrf_all_helper(struct vty *vty, bool fill, bool json);
178 int pim_show_mroute_count_helper(const char *vrf, struct vty *vty, bool json);
179 int pim_show_mroute_count_vrf_all_helper(struct vty *vty, bool json);
180 int pim_show_mroute_summary_helper(const char *vrf, struct vty *vty, bool json);
181 int pim_show_mroute_summary_vrf_all_helper(struct vty *vty, bool json);
182
183 void pim_show_interface_traffic_single(struct pim_instance *pim,
184 struct vty *vty, const char *ifname,
185 bool uj);
186 void pim_show_interface_traffic(struct pim_instance *pim, struct vty *vty,
187 bool uj);
188 int pim_show_interface_traffic_helper(const char *vrf, const char *if_name,
189 struct vty *vty, bool uj);
190 /*
191 * Special Macro to allow us to get the correct pim_instance;
192 */
193 #define PIM_DECLVAR_CONTEXT_VRF(vrfptr, pimptr) \
194 VTY_DECLVAR_CONTEXT_VRF(vrfptr); \
195 struct pim_instance *pimptr = vrfptr->info; \
196 MACRO_REQUIRE_SEMICOLON() /* end */
197
198 #endif /* PIM_CMD_COMMON_H */