diff options
author | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-05-07 08:06:25 +0000 |
---|---|---|
committer | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-05-07 08:06:25 +0000 |
commit | 201c0874833f535f70bc6a1e6ee4f0e47c3dd729 (patch) | |
tree | 211917813f771c8c7799bf5cc322e7a61f7bac39 /capture_opts.c | |
parent | 322dd1f8cba46346b6fd97a1daedd7405b402da2 (diff) |
For TShark and Wireshark, get the list of link-layer types for an
interface by running dumpcap, so that if you need privileges to open an
interface, and dumpcap has those privileges, neither TShark nor
Wireshark need them.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@32710 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'capture_opts.c')
-rw-r--r-- | capture_opts.c | 55 |
1 files changed, 11 insertions, 44 deletions
diff --git a/capture_opts.c b/capture_opts.c index 60bccf06de..67d4237a80 100644 --- a/capture_opts.c +++ b/capture_opts.c @@ -571,56 +571,23 @@ capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg_ return 0; } -/* - * If you change the output format of this function, you MUST update - * capture_sync.c:sync_linktype_list_open() accordingly! - */ -int -capture_opts_list_link_layer_types(capture_options *capture_opts, gboolean machine_readable) +void +capture_opts_print_link_layer_types(GList *lt_list) { - gchar *err_str; - const gchar *desc_str; - GList *lt_list, *lt_entry; + GList *lt_entry; data_link_info_t *data_link_info; - /* Get the list of link-layer types for the capture device. */ - lt_list = get_pcap_linktype_list(capture_opts->iface, &err_str); - if (lt_list == NULL) { - if (err_str != NULL) { - cmdarg_err("The list of data link types for the capture device \"%s\" could not be obtained (%s)." - "Please check to make sure you have sufficient permissions, and that\n" - "you have the proper interface or pipe specified.\n", capture_opts->iface, err_str); - g_free(err_str); - } else - cmdarg_err("The capture device \"%s\" has no data link types.", capture_opts->iface); - return 2; - } - if (machine_readable) { /* tab-separated values to stdout */ - for (lt_entry = lt_list; lt_entry != NULL; lt_entry = g_list_next(lt_entry)) { - data_link_info = (data_link_info_t *)lt_entry->data; - if (data_link_info->description != NULL) - desc_str = data_link_info->description; - else - desc_str = "(not supported)"; - printf("%d\t%s\t%s\n", data_link_info->dlt, data_link_info->name, - desc_str); - } - } else { - cmdarg_err_cont("Data link types (use option -y to set):"); - for (lt_entry = lt_list; lt_entry != NULL; - lt_entry = g_list_next(lt_entry)) { - data_link_info = (data_link_info_t *)lt_entry->data; - cmdarg_err_cont(" %s", data_link_info->name); - if (data_link_info->description != NULL) + cmdarg_err_cont("Data link types (use option -y to set):"); + for (lt_entry = lt_list; lt_entry != NULL; + lt_entry = g_list_next(lt_entry)) { + data_link_info = (data_link_info_t *)lt_entry->data; + cmdarg_err_cont(" %s", data_link_info->name); + if (data_link_info->description != NULL) cmdarg_err_cont(" (%s)", data_link_info->description); - else + else cmdarg_err_cont(" (not supported)"); - putchar('\n'); - } + putchar('\n'); } - free_pcap_linktype_list(lt_list); - - return 0; } /* Return an ASCII-formatted list of interfaces. */ |