diff options
Diffstat (limited to 'extcap/extcap-base.h')
-rw-r--r-- | extcap/extcap-base.h | 123 |
1 files changed, 70 insertions, 53 deletions
diff --git a/extcap/extcap-base.h b/extcap/extcap-base.h index 2bc74f656a..b0fa872b96 100644 --- a/extcap/extcap-base.h +++ b/extcap/extcap-base.h @@ -1,4 +1,5 @@ -/* extcap_base.h +/** @file + * * Base function for extcaps * * Copyright 2016, Dario Lombardo @@ -12,75 +13,87 @@ #ifndef __EXTCAP_BASE_H__ #define __EXTCAP_BASE_H__ - #include <glib.h> #include <glib/gprintf.h> #include <stdlib.h> #include <stdint.h> +#include <stdbool.h> #include <wsutil/ws_getopt.h> #ifdef _WIN32 - #include <io.h> +#include <io.h> #endif #include <wsutil/socket.h> +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + #define EXTCAP_BASE_OPTIONS_ENUM \ - EXTCAP_OPT_LIST_INTERFACES, \ - EXTCAP_OPT_VERSION, \ - EXTCAP_OPT_LIST_DLTS, \ - EXTCAP_OPT_INTERFACE, \ - EXTCAP_OPT_CONFIG, \ - EXTCAP_OPT_CAPTURE, \ - EXTCAP_OPT_CAPTURE_FILTER, \ - EXTCAP_OPT_FIFO, \ - EXTCAP_OPT_DEBUG, \ - EXTCAP_OPT_DEBUG_FILE + EXTCAP_OPT_LIST_INTERFACES, \ + EXTCAP_OPT_VERSION, \ + EXTCAP_OPT_LIST_DLTS, \ + EXTCAP_OPT_INTERFACE, \ + EXTCAP_OPT_CONFIG, \ + EXTCAP_OPT_CAPTURE, \ + EXTCAP_OPT_CAPTURE_FILTER, \ + EXTCAP_OPT_FIFO, \ + EXTCAP_OPT_LOG_LEVEL, \ + EXTCAP_OPT_LOG_FILE #define EXTCAP_BASE_OPTIONS \ - { "extcap-interfaces", ws_no_argument, NULL, EXTCAP_OPT_LIST_INTERFACES}, \ - { "extcap-version", ws_optional_argument, NULL, EXTCAP_OPT_VERSION}, \ - { "extcap-dlts", ws_no_argument, NULL, EXTCAP_OPT_LIST_DLTS}, \ - { "extcap-interface", ws_required_argument, NULL, EXTCAP_OPT_INTERFACE}, \ - { "extcap-config", ws_no_argument, NULL, EXTCAP_OPT_CONFIG}, \ - { "capture", ws_no_argument, NULL, EXTCAP_OPT_CAPTURE}, \ - { "extcap-capture-filter", ws_required_argument, NULL, EXTCAP_OPT_CAPTURE_FILTER}, \ - { "fifo", ws_required_argument, NULL, EXTCAP_OPT_FIFO}, \ - { "debug", ws_no_argument, NULL, EXTCAP_OPT_DEBUG}, \ - { "debug-file", ws_required_argument, NULL, EXTCAP_OPT_DEBUG_FILE} + { "extcap-interfaces", ws_no_argument, NULL, EXTCAP_OPT_LIST_INTERFACES}, \ + { "extcap-version", ws_optional_argument, NULL, EXTCAP_OPT_VERSION}, \ + { "extcap-dlts", ws_no_argument, NULL, EXTCAP_OPT_LIST_DLTS}, \ + { "extcap-interface", ws_required_argument, NULL, EXTCAP_OPT_INTERFACE}, \ + { "extcap-config", ws_no_argument, NULL, EXTCAP_OPT_CONFIG}, \ + { "capture", ws_no_argument, NULL, EXTCAP_OPT_CAPTURE}, \ + { "extcap-capture-filter", ws_required_argument, NULL, EXTCAP_OPT_CAPTURE_FILTER}, \ + { "fifo", ws_required_argument, NULL, EXTCAP_OPT_FIFO}, \ + { "log-level", ws_required_argument, NULL, EXTCAP_OPT_LOG_LEVEL}, \ + { "log-file", ws_required_argument, NULL, EXTCAP_OPT_LOG_FILE} typedef struct _extcap_parameters { - char * exename; - char * fifo; - char * interface; - char * capture_filter; - - char * version; - char * compiled_with; - char * running_with; - char * helppage; - uint8_t capture; - uint8_t show_config; - - char * ws_version; - - /* private content */ - GList * interfaces; - uint8_t do_version; - uint8_t do_list_dlts; - uint8_t do_list_interfaces; - - char * help_header; - GList * help_options; - - gboolean debug; + char * exename; + char * fifo; + char * interface; + char * capture_filter; + + char * version; + char * compiled_with; + char * running_with; + char * helppage; + uint8_t capture; + uint8_t show_config; + + char * ws_version; + + /* private content */ + GList * interfaces; + uint8_t do_version; + uint8_t do_list_dlts; + uint8_t do_list_interfaces; + + char * help_header; + GList * help_options; + + enum ws_log_level debug; } extcap_parameters; +/* used to inform to extcap application that end of application is requested */ +extern bool extcap_end_application; + void extcap_base_register_interface(extcap_parameters * extcap, const char * interface, const char * ifdescription, uint16_t dlt, const char * dltdescription ); void extcap_base_register_interface_ext(extcap_parameters * extcap, const char * interface, const char * ifdescription, uint16_t dlt, const char * dltname, const char * dltdescription ); + +/* used to inform extcap framework that graceful shutdown supported by the extcap + */ +bool extcap_base_register_graceful_shutdown_cb(extcap_parameters * extcap, void (*callback)(void)); + void extcap_base_set_util_info(extcap_parameters * extcap, const char * exename, const char * major, const char * minor, const char * release, const char * helppage); void extcap_base_set_compiled_with(extcap_parameters * extcap, const char *fmt, ...); void extcap_base_set_running_with(extcap_parameters * extcap, const char *fmt, ...); @@ -92,21 +105,25 @@ void extcap_help_add_option(extcap_parameters * extcap, const char * help_option void extcap_version_print(extcap_parameters * extcap); void extcap_help_print(extcap_parameters * extcap); void extcap_cmdline_debug(char** ar, const unsigned n); -void extcap_init_custom_log(const char* filename); void extcap_config_debug(unsigned* count); void extcap_base_help(void); +void extcap_log_init(const char *progname); -#endif +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // __EXTCAP_BASE_H__ /* * Editor modelines - https://www.wireshark.org/tools/modelines.html * * Local variables: - * c-basic-offset: 8 + * c-basic-offset: 4 * tab-width: 8 - * indent-tabs-mode: t + * indent-tabs-mode: nil * End: * - * vi: set shiftwidth=8 tabstop=8 noexpandtab: - * :indentSize=8:tabSize=8:noTabs=false: + * vi: set shiftwidth=4 tabstop=8 expandtab: + * :indentSize=4:tabSize=8:noTabs=true: */ |