1/*
2 * Copyright (c) 2013, 2015, The Linux Foundation. All rights reserved.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#ifndef _SHELL_IO_H
18#define _SHELL_IO_H
19
20#include "sw.h"
21#include "sw_api.h"
22#include "fal.h"
23
24#define SW_TYPE_DEF(type, parser, show) {type, parser, show}
25typedef struct
26{
27    sw_data_type_e data_type;
28    sw_error_t(*param_check) ();
29    void (*show_func) ();
30} sw_data_type_t;
31
32void  set_talk_mode(int mode);
33int get_talk_mode(void);
34void set_full_cmdstrp(char **cmdstrp);
35sw_data_type_t * cmd_data_type_find(sw_data_type_e type);
36void  cmd_strtol(char *str, a_uint32_t * arg_val);
37
38sw_error_t cmd_data_check_portmap(char *cmdstr, fal_pbmp_t * val, a_uint32_t size);
39sw_error_t cmd_data_check_confirm(char *cmdstr, a_bool_t def, a_bool_t * val, a_uint32_t size);
40
41sw_error_t cmd_data_check_uint32(char *cmd_str, a_uint32_t * arg_val,
42                                 a_uint32_t size);
43sw_error_t cmd_data_check_uint16(char *cmd_str, a_uint32_t * arg_val,
44                                 a_uint32_t size);
45sw_error_t cmd_data_check_uint8(char *cmd_str, a_uint32_t * arg_val,
46                                 a_uint32_t size);
47sw_error_t cmd_data_check_enable(char *cmd_str, a_uint32_t * arg_val,
48                                 a_uint32_t size);
49sw_error_t cmd_data_check_pbmp(char *cmd_str, a_uint32_t * arg_val,
50                               a_uint32_t size);
51sw_error_t cmd_data_check_duplex(char *cmd_str, a_uint32_t * arg_val,
52                                 a_uint32_t size);
53sw_error_t cmd_data_check_speed(char *cmd_str, a_uint32_t * arg_val,
54                                a_uint32_t size);
55sw_error_t cmd_data_check_1qmode(char *cmd_str, a_uint32_t * arg_val,
56                                 a_uint32_t size);
57sw_error_t cmd_data_check_egmode(char *cmd_str, a_uint32_t * arg_val,
58                                 a_uint32_t size);
59sw_error_t cmd_data_check_capable(char *cmd_str, a_uint32_t * arg_val,
60                                  a_uint32_t size);
61sw_error_t cmd_data_check_fdbentry(char *cmdstr, void *val, a_uint32_t size);
62sw_error_t cmd_data_check_macaddr(char *cmdstr, void *val, a_uint32_t size);
63
64sw_error_t cmd_data_check_vlan(char *cmdstr, fal_vlan_t * val, a_uint32_t size);
65sw_error_t cmd_data_check_qos_sch(char *cmdstr, fal_sch_mode_t * val,
66                                  a_uint32_t size);
67sw_error_t cmd_data_check_qos_pt(char *cmdstr, fal_qos_mode_t * val,
68                                 a_uint32_t size);
69sw_error_t cmd_data_check_storm(char *cmdstr, fal_storm_type_t * val,
70                                a_uint32_t size);
71sw_error_t cmd_data_check_stp_state(char *cmdstr, fal_stp_state_t * val,
72                                    a_uint32_t size);
73sw_error_t cmd_data_check_leaky(char *cmdstr, fal_leaky_ctrl_mode_t * val,
74                                a_uint32_t size);
75sw_error_t cmd_data_check_uinta(char *cmdstr, a_uint32_t * val,
76                                a_uint32_t size);
77sw_error_t cmd_data_check_maccmd(char *cmdstr, fal_fwd_cmd_t * val,
78                                 a_uint32_t size);
79sw_error_t cmd_data_check_flowcmd(char *cmdstr, fal_default_flow_cmd_t * val,
80                                 a_uint32_t size);
81sw_error_t cmd_data_check_flowtype(char *cmdstr, fal_flow_type_t * val,
82                                 a_uint32_t size);
83sw_error_t cmd_data_check_ledpattern(char *info, void * val, a_uint32_t size);
84
85
86sw_error_t
87cmd_data_check_invlan_mode(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
88sw_error_t
89cmd_data_check_vlan_propagation(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
90sw_error_t
91cmd_data_check_vlan_translation(char *info, fal_vlan_trans_entry_t *val, a_uint32_t size);
92sw_error_t
93cmd_data_check_qinq_mode(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
94sw_error_t
95cmd_data_check_qinq_role(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
96
97sw_error_t
98cmd_data_check_hdrmode(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
99
100sw_error_t
101cmd_data_check_fdboperation(char *cmd_str, void * val, a_uint32_t size);
102
103sw_error_t
104cmd_data_check_pppoe(char *cmd_str, void * val, a_uint32_t size);
105
106
107sw_error_t
108cmd_data_check_host_entry(char *cmd_str, void * val, a_uint32_t size);
109sw_error_t
110cmd_data_check_arp_learn_mode(char *cmd_str, fal_arp_learn_mode_t * arg_val,
111                              a_uint32_t size);
112
113sw_error_t
114cmd_data_check_ip_guard_mode(char *cmd_str, fal_source_guard_mode_t * arg_val, a_uint32_t size);
115
116
117sw_error_t
118cmd_data_check_nat_entry(char *cmd_str, void * val, a_uint32_t size);
119
120
121sw_error_t
122cmd_data_check_napt_entry(char *cmd_str, void * val, a_uint32_t size);
123
124sw_error_t
125cmd_data_check_flow_entry(char *cmd_str, void * val, a_uint32_t size);
126
127sw_error_t
128cmd_data_check_napt_mode(char *cmd_str, fal_napt_mode_t * arg_val, a_uint32_t size);
129
130
131sw_error_t
132cmd_data_check_intf_mac_entry(char *cmd_str, void * val, a_uint32_t size);
133
134
135sw_error_t
136cmd_data_check_ip4addr(char *cmdstr, void * val, a_uint32_t size);
137
138sw_error_t
139cmd_data_check_ip6addr(char *cmdstr, void * val, a_uint32_t size);
140
141
142sw_error_t
143cmd_data_check_pub_addr_entry(char *cmd_str, void * val, a_uint32_t size);
144
145
146
147sw_error_t
148cmd_data_check_egress_shaper(char *cmd_str, void * val, a_uint32_t size);
149
150
151sw_error_t
152cmd_data_check_port_policer(char *cmd_str, void * val, a_uint32_t size);
153
154sw_error_t
155cmd_data_check_policer_timesslot(char *cmd_str, a_uint32_t * val, a_uint32_t size);
156
157sw_error_t
158cmd_data_check_acl_policer(char *cmd_str, void * val, a_uint32_t size);
159
160
161sw_error_t
162cmd_data_check_fdb_smode(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
163
164
165sw_error_t
166cmd_data_check_multi(char *info, void *val, a_uint32_t size);
167
168sw_error_t
169cmd_data_check_sec_mac(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
170
171sw_error_t
172cmd_data_check_sec_ip(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
173
174sw_error_t
175cmd_data_check_sec_ip4(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
176
177sw_error_t
178cmd_data_check_sec_ip6(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
179
180sw_error_t
181cmd_data_check_sec_tcp(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
182
183sw_error_t
184cmd_data_check_sec_udp(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
185
186sw_error_t
187cmd_data_check_sec_icmp4(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
188
189sw_error_t
190cmd_data_check_sec_icmp6(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
191
192sw_error_t
193cmd_data_check_remark_entry(char *info, void *val, a_uint32_t size);
194
195sw_error_t
196cmd_data_check_default_route_entry(char *cmd_str, void * val, a_uint32_t size);
197
198sw_error_t
199cmd_data_check_host_route_entry(char *cmd_str, void * val, a_uint32_t size);
200
201sw_error_t
202cmd_data_check_ip4_rfs_entry(char *cmd_str, void * val, a_uint32_t size);
203sw_error_t
204cmd_data_check_ip6_rfs_entry(char *cmd_str, void * val, a_uint32_t size);
205sw_error_t
206cmd_data_check_flow_cookie(char *cmd_str, void * val, a_uint32_t size);
207
208sw_error_t
209cmd_data_check_fdb_rfs(char *cmd_str, void * val, a_uint32_t size);
210sw_error_t
211cmd_data_check_flow_rfs(char *cmd_str, void * val, a_uint32_t size);
212
213sw_error_t
214cmd_data_check_crossover_mode(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
215
216sw_error_t
217cmd_data_check_crossover_status(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
218
219sw_error_t
220cmd_data_check_prefer_medium(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
221
222sw_error_t
223cmd_data_check_fiber_mode(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
224
225sw_error_t
226cmd_data_check_interface_mode(char *cmd_str, a_uint32_t * arg_val, a_uint32_t size);
227#endif
228
229