Wireshark 4.5.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
/builds/wireshark/wireshark/extcap_parser.h
Go to the documentation of this file.
1
10#ifndef __EXTCAP_PARSER_H__
11#define __EXTCAP_PARSER_H__
12
13#include <stdio.h>
14#include <glib.h>
15#include <string.h>
16
17#include "ui/iface_toolbar.h"
18
19typedef enum {
20 EXTCAP_SENTENCE_UNKNOWN,
21 EXTCAP_SENTENCE_ARG,
22 EXTCAP_SENTENCE_VALUE,
23 EXTCAP_SENTENCE_EXTCAP,
24 EXTCAP_SENTENCE_INTERFACE,
25 EXTCAP_SENTENCE_DLT,
26 EXTCAP_SENTENCE_CONTROL
27} extcap_sentence_type;
28
29typedef enum {
30 /* Simple types */
31 EXTCAP_ARG_UNKNOWN,
32 EXTCAP_ARG_INTEGER,
33 EXTCAP_ARG_UNSIGNED,
34 EXTCAP_ARG_LONG,
35 EXTCAP_ARG_DOUBLE,
36 EXTCAP_ARG_BOOLEAN,
37 EXTCAP_ARG_BOOLFLAG,
38 EXTCAP_ARG_STRING,
39 EXTCAP_ARG_PASSWORD,
40 /* Complex GUI types which are populated with value sentences */
41 EXTCAP_ARG_SELECTOR,
42 EXTCAP_ARG_EDIT_SELECTOR,
43 EXTCAP_ARG_RADIO,
44 EXTCAP_ARG_MULTICHECK,
45 EXTCAP_ARG_FILESELECT,
46 EXTCAP_ARG_TIMESTAMP
47} extcap_arg_type;
48
49typedef enum {
50 /* value types */
51 EXTCAP_PARAM_UNKNOWN,
52 EXTCAP_PARAM_ARGNUM,
53 EXTCAP_PARAM_CALL,
54 EXTCAP_PARAM_DISPLAY,
55 EXTCAP_PARAM_TYPE,
56 EXTCAP_PARAM_ARG,
57 EXTCAP_PARAM_DEFAULT,
58 EXTCAP_PARAM_VALUE,
59 EXTCAP_PARAM_RANGE,
60 EXTCAP_PARAM_TOOLTIP,
61 EXTCAP_PARAM_PLACEHOLDER,
62 EXTCAP_PARAM_NAME,
63 EXTCAP_PARAM_ENABLED,
64 EXTCAP_PARAM_FILE_MUSTEXIST,
65 EXTCAP_PARAM_FILE_EXTENSION,
66 EXTCAP_PARAM_GROUP,
67 EXTCAP_PARAM_PARENT,
68 EXTCAP_PARAM_REQUIRED,
69 EXTCAP_PARAM_RELOAD,
70 EXTCAP_PARAM_SAVE,
71 EXTCAP_PARAM_VALIDATION,
72 EXTCAP_PARAM_VERSION,
73 EXTCAP_PARAM_HELP,
74 EXTCAP_PARAM_CONTROL,
75 EXTCAP_PARAM_ROLE
76} extcap_param_type;
77
78#define ENUM_KEY(s) GUINT_TO_POINTER((unsigned)s)
79
80/* Values for a given sentence; values are all stored as a call
81 * and a value string, or a valid range, so we only need to store
82 * those and repeat them */
83typedef struct _extcap_value {
84 int arg_num;
85
86 char *call;
87 char *display;
88 bool enabled;
89 bool is_default;
90 char *parent;
92
93/* Complex-ish struct for storing complex values */
94typedef struct _extcap_complex {
95 extcap_arg_type complex_type;
96 char * _val;
98
99/* An argument sentence and accompanying options */
100typedef struct _extcap_arg {
101 int arg_num;
102
103 char *call;
104 char *display;
105 char *tooltip;
106 char *placeholder;
107
108 char * fileextension;
109 bool fileexists;
110
111 bool is_required;
112 bool save;
113
114 bool reload;
115
116 char * regexp;
117
118 char * group;
119
120 extcap_arg_type arg_type;
121
122 extcap_complex *range_start;
123 extcap_complex *range_end;
124 extcap_complex *default_complex;
125
126 char ** pref_valptr;
127 char * device_name;
128
129 GList * values;
130} extcap_arg;
131
132typedef struct _extcap_interface {
133 char * call;
134 char * display;
135 char * version;
136 char * help;
137 char * extcap_path;
138
139 extcap_sentence_type if_type;
141
142typedef struct _extcap_dlt {
143 int number;
144 char *name;
145 char *display;
146} extcap_dlt;
147
149 char *sentence;
150
151 GHashTable *param_list;
153
154#ifdef __cplusplus
155extern "C" {
156#endif
157
158/* Parse a string into a complex type */
159extcap_complex *extcap_parse_complex(extcap_arg_type complex_type,
160 const char *data);
161
162/* Free a complex */
163void extcap_free_complex(extcap_complex *comp);
164
165/* Print a complex value out for debug */
166void extcap_printf_complex(extcap_complex *comp);
167
168/*
169 * Return a string representation of a complex type
170 * Caller is responsible for calling g_free on the returned string
171 */
172char *extcap_get_complex_as_string(extcap_complex *comp);
173
174int extcap_complex_get_int(extcap_complex *comp);
175unsigned extcap_complex_get_uint(extcap_complex *comp);
176int64_t extcap_complex_get_long(extcap_complex *comp);
177double extcap_complex_get_double(extcap_complex *comp);
178bool extcap_complex_get_bool(extcap_complex *comp);
179char *extcap_complex_get_string(extcap_complex *comp);
180
181/* compares the default value of an element with a given parameter */
182bool extcap_compare_is_default(extcap_arg *element, extcap_complex *test);
183
184
185/* Free a single argument */
186void extcap_free_arg(extcap_arg *a);
187
188/* Free entire toolbar control structure */
189void extcap_free_toolbar_control(iface_toolbar_control *control);
190
191/* Free an entire arg list */
192void extcap_free_arg_list(GList *a);
193
194
197/* Parse all sentences for args and values */
198GList * extcap_parse_args(char *output);
199
200/* Parse all sentences for values */
201GList * extcap_parse_values(char *output);
202
203/* Parse all sentences for interfaces */
204GList * extcap_parse_interfaces(char *output, GList **control_items);
205
206/* Parse all sentences for DLTs */
207GList * extcap_parse_dlts(char *output);
208
209#ifdef __cplusplus
210}
211#endif
212
213#endif
214
215/*
216 * Editor modelines - https://www.wireshark.org/tools/modelines.html
217 *
218 * Local variables:
219 * c-basic-offset: 4
220 * tab-width: 8
221 * indent-tabs-mode: nil
222 * End:
223 *
224 * vi: set shiftwidth=4 tabstop=8 expandtab:
225 * :indentSize=4:tabSize=8:noTabs=true:
226 */
GList * extcap_parse_args(char *output)
Definition extcap_parser.c:612
Definition extcap_parser.h:100
char ** pref_valptr
Definition extcap_parser.h:126
Definition extcap_parser.h:94
Definition extcap_parser.h:142
Definition extcap_parser.h:132
Definition extcap_parser.h:148
Definition extcap_parser.h:83
Definition iface_toolbar.h:44