summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-cmd.h
blob: 91d15b7e17028b39bdc936becb8c92863cffbad8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
   Copyright (c) 2006-2012 Red Hat, Inc. <http://www.redhat.com>
   This file is part of GlusterFS.

   This file is licensed to you under your choice of the GNU Lesser
   General Public License, version 3 or any later version (LGPLv3 or
   later), or the GNU General Public License, version 2 (GPLv2), in all
   cases as published by the Free Software Foundation.
*/
#ifndef __CLI_CMD_H__
#define __CLI_CMD_H__

#ifndef _CONFIG_H
#define _CONFIG_H
#include "config.h"
#endif

#include <netdb.h>

#include "cli.h"
#include "list.h"

#define CLI_LOCAL_INIT(local, words, frame, dictionary) \
        do {                                                 \
                local = cli_local_get ();                    \
                                                             \
                if (local) {                                 \
                        local->words = words;                \
                        if (dictionary)                      \
                                local->dict = dictionary;    \
                        if (frame)                           \
                                frame->local = local;        \
                }                                            \
        } while (0)

#define CLI_STACK_DESTROY(_frame)                                       \
        do {                                                            \
                if (_frame) {                                           \
                        if (_frame->local) {                            \
                                gf_log ("cli", GF_LOG_DEBUG, "frame->local " \
                                        "is not NULL (%p)", _frame->local); \
                                cli_local_wipe (_frame->local);         \
                                _frame->local = NULL;                   \
                        }                                               \
                        STACK_DESTROY (_frame->root);                   \
                }                                                       \
        } while (0);

typedef enum {
        GF_ANSWER_YES = 1,
        GF_ANSWER_NO  = 2
} gf_answer_t;

struct cli_cmd {
        const char         *pattern;
        cli_cmd_cbk_t      *cbk;
        const char         *desc;
        cli_cmd_reg_cbk_t  *reg_cbk; /* callback to check in runtime if the   *
                                      * command should be enabled or disabled */
        gf_boolean_t       disable;
};

struct cli_cmd_volume_get_ctx_ {
        char            *volname;
        int             flags;
};

typedef struct cli_profile_info_ {
        uint64_t fop_hits;
        double min_latency;
        double max_latency;
        double avg_latency;
        char   *fop_name;
        double percentage_avg_latency;
} cli_profile_info_t;

typedef struct addrinfo_list {
        struct list_head list;
        struct addrinfo *info;
} addrinfo_list_t;

typedef enum {
        GF_AI_COMPARE_NO_MATCH     = 0,
        GF_AI_COMPARE_MATCH        = 1,
        GF_AI_COMPARE_ERROR        = 2
} gf_ai_compare_t;

typedef struct cli_cmd_volume_get_ctx_ cli_cmd_volume_get_ctx_t;

int cli_cmd_volume_register (struct cli_state *state);

int cli_cmd_probe_register (struct cli_state *state);

int cli_cmd_system_register (struct cli_state *state);

int cli_cmd_snapshot_register (struct cli_state *state);

int cli_cmd_misc_register (struct cli_state *state);

struct cli_cmd_word *cli_cmd_nextword (struct cli_cmd_word *word,
                                       const char *text);
void cli_cmd_tokens_destroy (char **tokens);

int cli_cmd_await_response (unsigned time);

int cli_cmd_broadcast_response (int32_t status);

int cli_cmd_cond_init ();

int cli_cmd_lock ();

int cli_cmd_unlock ();

int
cli_cmd_submit (struct rpc_clnt *rpc, void *req, call_frame_t *frame,
                rpc_clnt_prog_t *prog,
                int procnum, struct iobref *iobref,
                xlator_t *this, fop_cbk_fn_t cbkfn, xdrproc_t xdrproc);

gf_answer_t
cli_cmd_get_confirmation (struct cli_state *state, const char *question);
int cli_cmd_sent_status_get (int *status);

gf_boolean_t
_limits_set_on_volume (char *volname);

gf_boolean_t
_quota_aux_mount_online (char *volname);

#endif /* __CLI_CMD_H__ */