forked from osmocom/wireshark
Wireshark: fix output of -L and --list-tstamp-types.
Replace the Wireshark code for that with code that matches what TShark does. Update a comment in TShark while we're at it. Fixes #14215. (Still leaves it popping up the full window, but that's a bigger change.)
This commit is contained in:
parent
c9e2d3bc57
commit
d6c3781a7a
5
tshark.c
5
tshark.c
|
@ -2184,7 +2184,10 @@ main(int argc, char *argv[])
|
||||||
goto clean_exit;
|
goto clean_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if requested, list the link layer types and exit */
|
/*
|
||||||
|
* If requested, list the link layer types and/or time stamp types
|
||||||
|
* and exit.
|
||||||
|
*/
|
||||||
if (caps_queries) {
|
if (caps_queries) {
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
|
|
|
@ -884,45 +884,56 @@ int main(int argc, char *qt_argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If requested, list the link layer types and/or time stamp types
|
||||||
|
* and exit.
|
||||||
|
*/
|
||||||
if (caps_queries) {
|
if (caps_queries) {
|
||||||
/* Get the list of link-layer types for the capture devices. */
|
|
||||||
if_capabilities_t *caps;
|
|
||||||
guint i;
|
guint i;
|
||||||
interface_t *device;
|
|
||||||
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
|
/* Get the list of link-layer types for the capture devices. */
|
||||||
|
for (i = 0; i < global_capture_opts.ifaces->len; i++) {
|
||||||
|
interface_options *interface_opts;
|
||||||
|
if_capabilities_t *caps;
|
||||||
|
char *auth_str = NULL;
|
||||||
int if_caps_queries = caps_queries;
|
int if_caps_queries = caps_queries;
|
||||||
device = &g_array_index(global_capture_opts.all_ifaces, interface_t, i);
|
|
||||||
if (device->selected) {
|
interface_opts = &g_array_index(global_capture_opts.ifaces, interface_options, i);
|
||||||
#if defined(HAVE_PCAP_CREATE)
|
#ifdef HAVE_PCAP_REMOTE
|
||||||
caps = capture_get_if_capabilities(device->name, device->monitor_mode_supported, NULL, &err_str, &err_str_secondary, main_window_update);
|
if (interface_opts->auth_type == CAPTURE_AUTH_PWD) {
|
||||||
#else
|
auth_str = g_strdup_printf("%s:%s", interface_opts->auth_username, interface_opts->auth_password);
|
||||||
caps = capture_get_if_capabilities(device->name, FALSE, NULL, &err_str, &err_str_secondary, main_window_update);
|
|
||||||
#endif
|
|
||||||
if (caps == NULL) {
|
|
||||||
cmdarg_err("%s%s%s", err_str, err_str_secondary ? "\n" : "", err_str_secondary ? err_str_secondary : "");
|
|
||||||
g_free(err_str);
|
|
||||||
g_free(err_str_secondary);
|
|
||||||
ret_val = INVALID_CAPABILITY;
|
|
||||||
goto clean_exit;
|
|
||||||
}
|
|
||||||
if (caps->data_link_types == NULL) {
|
|
||||||
cmdarg_err("The capture device \"%s\" has no data link types.", device->name);
|
|
||||||
ret_val = IFACE_HAS_NO_LINK_TYPES;
|
|
||||||
goto clean_exit;
|
|
||||||
}
|
|
||||||
#ifdef _WIN32
|
|
||||||
create_console();
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
#if defined(HAVE_PCAP_CREATE)
|
|
||||||
if (device->monitor_mode_supported)
|
|
||||||
if_caps_queries |= CAPS_MONITOR_MODE;
|
|
||||||
#endif
|
|
||||||
capture_opts_print_if_capabilities(caps, device->name, if_caps_queries);
|
|
||||||
#ifdef _WIN32
|
|
||||||
destroy_console();
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
free_if_capabilities(caps);
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
caps = capture_get_if_capabilities(interface_opts->name, interface_opts->monitor_mode,
|
||||||
|
auth_str, &err_str, &err_str_secondary, NULL);
|
||||||
|
g_free(auth_str);
|
||||||
|
if (caps == NULL) {
|
||||||
|
cmdarg_err("%s%s%s", err_str, err_str_secondary ? "\n" : "", err_str_secondary ? err_str_secondary : "");
|
||||||
|
g_free(err_str);
|
||||||
|
g_free(err_str_secondary);
|
||||||
|
ret_val = INVALID_CAPABILITY;
|
||||||
|
goto clean_exit;
|
||||||
|
}
|
||||||
|
if ((if_caps_queries & CAPS_QUERY_LINK_TYPES) && caps->data_link_types == NULL) {
|
||||||
|
cmdarg_err("The capture device \"%s\" has no data link types.", interface_opts->name);
|
||||||
|
ret_val = IFACE_HAS_NO_LINK_TYPES;
|
||||||
|
goto clean_exit;
|
||||||
|
}
|
||||||
|
if ((if_caps_queries & CAPS_QUERY_TIMESTAMP_TYPES) && caps->timestamp_types == NULL) {
|
||||||
|
cmdarg_err("The capture device \"%s\" has no timestamp types.", interface_opts->name);
|
||||||
|
ret_val = INVALID_TIMESTAMP_TYPE;
|
||||||
|
goto clean_exit;
|
||||||
|
}
|
||||||
|
#ifdef _WIN32
|
||||||
|
create_console();
|
||||||
|
#endif /* _WIN32 */
|
||||||
|
if (interface_opts->monitor_mode)
|
||||||
|
if_caps_queries |= CAPS_MONITOR_MODE;
|
||||||
|
capture_opts_print_if_capabilities(caps, interface_opts->name, if_caps_queries);
|
||||||
|
#ifdef _WIN32
|
||||||
|
destroy_console();
|
||||||
|
#endif /* _WIN32 */
|
||||||
|
free_if_capabilities(caps);
|
||||||
}
|
}
|
||||||
ret_val = EXIT_SUCCESS;
|
ret_val = EXIT_SUCCESS;
|
||||||
goto clean_exit;
|
goto clean_exit;
|
||||||
|
|
Loading…
Reference in New Issue