3 * Wireshark - Network traffic analyzer
4 * By Gerald Combs <gerald@wireshark.org>
5 * Copyright 1998 Gerald Combs
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 #ifndef __EXTCAP_PARSER_H__
23 #define __EXTCAP_PARSER_H__
32 EXTCAP_SENTENCE_UNKNOWN,
34 EXTCAP_SENTENCE_VALUE,
35 EXTCAP_SENTENCE_EXTCAP,
36 EXTCAP_SENTENCE_INTERFACE,
38 EXTCAP_SENTENCE_CONTROL
39 } extcap_sentence_type;
52 /* Complex GUI types which are populated with value sentences */
55 EXTCAP_ARG_MULTICHECK,
56 EXTCAP_ARG_FILESELECT,
72 EXTCAP_PARAM_PLACEHOLDER,
75 EXTCAP_PARAM_FILE_MUSTEXIST,
76 EXTCAP_PARAM_FILE_EXTENSION,
78 EXTCAP_PARAM_REQUIRED,
80 EXTCAP_PARAM_VALIDATION,
87 #define ENUM_KEY(s) GUINT_TO_POINTER((guint)s)
89 /* Values for a given sentence; values are all stored as a call
90 * and a value string, or a valid range, so we only need to store
91 * those and repeat them */
92 typedef struct _extcap_value {
102 /* Complex-ish struct for storing complex values */
103 typedef struct _extcap_complex {
104 extcap_arg_type complex_type;
108 /* An argument sentence and accompanying options */
109 typedef struct _extcap_arg {
117 gchar * fileextension;
120 gboolean is_required;
125 extcap_arg_type arg_type;
127 extcap_complex *range_start;
128 extcap_complex *range_end;
129 extcap_complex *default_complex;
131 gchar ** pref_valptr; /**< A copy of the pointer containing the current preference value. */
137 typedef struct _extcap_interface {
144 extcap_sentence_type if_type;
147 typedef struct _extcap_dlt {
153 typedef struct _extcap_token_sentence {
156 GHashTable *param_list;
157 } extcap_token_sentence;
163 /* Parse a string into a complex type */
164 extcap_complex *extcap_parse_complex(extcap_arg_type complex_type,
168 void extcap_free_complex(extcap_complex *comp);
170 /* Print a complex value out for debug */
171 void extcap_printf_complex(extcap_complex *comp);
174 * Return a string representation of a complex type
175 * Caller is responsible for calling g_free on the returned string
177 gchar *extcap_get_complex_as_string(extcap_complex *comp);
179 gint extcap_complex_get_int(extcap_complex *comp);
180 guint extcap_complex_get_uint(extcap_complex *comp);
181 gint64 extcap_complex_get_long(extcap_complex *comp);
182 gdouble extcap_complex_get_double(extcap_complex *comp);
183 gboolean extcap_complex_get_bool(extcap_complex *comp);
184 gchar *extcap_complex_get_string(extcap_complex *comp);
186 /* compares the default value of an element with a given parameter */
187 gboolean extcap_compare_is_default(extcap_arg *element, extcap_complex *test);
190 /* Free a single argument */
191 void extcap_free_arg(extcap_arg *a);
193 /* Free an entire arg list */
194 void extcap_free_arg_list(GList *a);
197 /** Parser for extcap data */
199 /* Parse all sentences for args and values */
200 GList * extcap_parse_args(gchar *output);
202 /* Parse all sentences for interfaces */
203 GList * extcap_parse_interfaces(gchar *output, GList **control_items);
205 /* Parse all sentences for DLTs */
206 GList * extcap_parse_dlts(gchar *output);
215 * Editor modelines - http://www.wireshark.org/tools/modelines.html
220 * indent-tabs-mode: nil
223 * vi: set shiftwidth=4 tabstop=8 expandtab:
224 * :indentSize=4:tabSize=8:noTabs=true: