aboutsummaryrefslogtreecommitdiffstats
path: root/capture_opts.c
diff options
context:
space:
mode:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2010-05-07 08:06:25 +0000
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2010-05-07 08:06:25 +0000
commit201c0874833f535f70bc6a1e6ee4f0e47c3dd729 (patch)
tree211917813f771c8c7799bf5cc322e7a61f7bac39 /capture_opts.c
parent322dd1f8cba46346b6fd97a1daedd7405b402da2 (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.c55
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. */