1/*
2 * Copyright (c) 2013, 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_CONFIG_H_
18#define _SHELL_CONFIG_H_
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#include "sw.h"
25#include "sw_ioctl.h"
26#include "sw_api.h"
27
28#define SW_CMD_SET_DEVID       (SW_API_MAX + 1)
29#define SW_CMD_VLAN_SHOW       (SW_API_MAX + 2)
30#define SW_CMD_FDB_SHOW        (SW_API_MAX + 3)
31#define SW_CMD_RESV_FDB_SHOW   (SW_API_MAX + 4)
32#define SW_CMD_HOST_SHOW       (SW_API_MAX + 5)
33#define SW_CMD_NAT_SHOW        (SW_API_MAX + 6)
34#define SW_CMD_NAPT_SHOW       (SW_API_MAX + 7)
35#define SW_CMD_INTFMAC_SHOW    (SW_API_MAX + 8)
36#define SW_CMD_PUBADDR_SHOW    (SW_API_MAX + 9)
37#define SW_CMD_FLOW_SHOW       (SW_API_MAX + 10)
38#define SW_CMD_MAX             (SW_API_MAX + 11)
39
40#define MAX_SUB_CMD_DES_NUM  80
41
42    struct sub_cmd_des_t
43    {
44        char *sub_name;
45        char *sub_act;
46        char *sub_memo;
47        char *sub_usage;
48        int   sub_api;
49        sw_error_t (*sub_func) ();
50    };
51    struct cmd_des_t
52    {
53        char *name;
54        char *memo;
55        struct sub_cmd_des_t sub_cmd_des[MAX_SUB_CMD_DES_NUM];
56    };
57    extern struct cmd_des_t gcmd_des[];
58
59#define GCMD_DES gcmd_des
60
61#define GCMD_NAME(cmd_nr)  GCMD_DES[cmd_nr].name
62#define GCMD_MEMO(cmd_nr)  GCMD_DES[cmd_nr].memo
63
64#define GCMD_SUB_NAME(cmd_nr, sub_cmd_nr)  GCMD_DES[cmd_nr].sub_cmd_des[sub_cmd_nr].sub_name
65#define GCMD_SUB_ACT(cmd_nr, sub_cmd_nr)  GCMD_DES[cmd_nr].sub_cmd_des[sub_cmd_nr].sub_act
66#define GCMD_SUB_MEMO(cmd_nr, sub_cmd_nr)  GCMD_DES[cmd_nr].sub_cmd_des[sub_cmd_nr].sub_memo
67#define GCMD_SUB_USAGE(cmd_nr, sub_cmd_nr)  GCMD_DES[cmd_nr].sub_cmd_des[sub_cmd_nr].sub_usage
68#define GCMD_SUB_API(cmd_nr, sub_cmd_nr)  GCMD_DES[cmd_nr].sub_cmd_des[sub_cmd_nr].sub_api
69#define GCMD_SUB_FUNC(cmd_nr, sub_cmd_nr)  GCMD_DES[cmd_nr].sub_cmd_des[sub_cmd_nr].sub_func
70
71#define GCMD_DESC_VALID(cmd_nr)                    GCMD_NAME(cmd_nr)
72#define GCMD_SUB_DESC_VALID(cmd_nr, sub_cmd_nr)    GCMD_SUB_API(cmd_nr, sub_cmd_nr)
73
74
75#define GCMD_DESC_NO_MATCH      0xffffffff
76
77#ifdef __cplusplus
78}
79#endif                          /* __cplusplus */
80
81#endif                          /* _SHELL_CONFIG_H_ */
82