diff options
author | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-12-29 22:49:49 +0000 |
---|---|---|
committer | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-12-29 22:49:49 +0000 |
commit | 76daecec9608bb43cee0a939e1025c96d8d1a053 (patch) | |
tree | d2318cee0e6add2146cf4ae1e06723c92fe291ed | |
parent | a6e63acbaeb5c58c790640e0e035a06efaf1dfe9 (diff) |
Add an additional DONT_HAVE_PCAP return value from get_interface_list()
and capture_interface_list(). Return it if, on Windows, we ask for the
interface list but don't have WinPcap installed. Handle it like
CANT_GET_INTERFACE_LIST.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@40334 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r-- | capture-wpcap.c | 12 | ||||
-rw-r--r-- | capture_ifinfo.h | 1 | ||||
-rw-r--r-- | capture_opts.c | 2 | ||||
-rw-r--r-- | dumpcap.c | 2 | ||||
-rw-r--r-- | gtk/capture_dlg.c | 9 | ||||
-rw-r--r-- | gtk/capture_if_dlg.c | 1 | ||||
-rw-r--r-- | gtk/main.c | 1 | ||||
-rw-r--r-- | gtk/main_welcome.c | 3 | ||||
-rw-r--r-- | tshark.c | 1 |
9 files changed, 28 insertions, 4 deletions
diff --git a/capture-wpcap.c b/capture-wpcap.c index 9dd7903ddd..f831f225f1 100644 --- a/capture-wpcap.c +++ b/capture-wpcap.c @@ -35,6 +35,8 @@ #include "capture_ifinfo.h" #include "capture-pcap-util.h" #include "capture-pcap-util-int.h" +#include "capture-wpcap.h" +#include "capture_errs.h" #include <wsutil/file_util.h> @@ -694,6 +696,16 @@ get_interface_list(int *err, char **err_str) int i, j; char errbuf[PCAP_ERRBUF_SIZE]; + if (!has_wpcap) { + /* + * We don't have WinPcap, so we can't get a list of + * interfaces. + */ + *err = DONT_HAVE_PCAP; + *err_str = cant_load_winpcap_err("you"); + return NULL; + } + #ifdef HAVE_PCAP_FINDALLDEVS if (p_pcap_findalldevs != NULL) return get_interface_list_findalldevs(err, err_str); diff --git a/capture_ifinfo.h b/capture_ifinfo.h index e96dfb6cfb..20207aedcf 100644 --- a/capture_ifinfo.h +++ b/capture_ifinfo.h @@ -64,6 +64,7 @@ extern GList *capture_interface_list(int *err, char **err_str); /* Error values from "get_interface_list()/capture_interface_list()". */ #define CANT_GET_INTERFACE_LIST 1 /* error getting list */ #define NO_INTERFACES_FOUND 2 /* list is empty */ +#define DONT_HAVE_PCAP 3 /* couldn't load WinPcap */ void free_interface_list(GList *if_list); diff --git a/capture_opts.c b/capture_opts.c index 8f7325e1ea..f200be3735 100644 --- a/capture_opts.c +++ b/capture_opts.c @@ -471,6 +471,7 @@ capture_opts_add_iface_opt(capture_options *capture_opts, const char *optarg_str switch (err) { case CANT_GET_INTERFACE_LIST: + case DONT_HAVE_PCAP: cmdarg_err("%s", err_str); g_free(err_str); break; @@ -842,6 +843,7 @@ gboolean capture_opts_trim_iface(capture_options *capture_opts, const char *capt switch (err) { case CANT_GET_INTERFACE_LIST: + case DONT_HAVE_PCAP: cmdarg_err("%s", err_str); g_free(err_str); break; @@ -1301,6 +1301,7 @@ print_statistics_loop(gboolean machine_readable) if (if_list == NULL) { switch (err) { case CANT_GET_INTERFACE_LIST: + case DONT_HAVE_PCAP: cmdarg_err("%s", err_str); g_free(err_str); break; @@ -4207,6 +4208,7 @@ main(int argc, char *argv[]) if (if_list == NULL) { switch (err) { case CANT_GET_INTERFACE_LIST: + case DONT_HAVE_PCAP: cmdarg_err("%s", err_str); g_free(err_str); exit_main(2); diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c index 96fa94d609..27b1db24e5 100644 --- a/gtk/capture_dlg.c +++ b/gtk/capture_dlg.c @@ -1068,7 +1068,8 @@ update_interface_list(void) g_object_set_data(G_OBJECT(cap_open_w), E_CAP_IF_LIST_KEY, NULL); } - if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) { + if (if_list == NULL && + (err == CANT_GET_INTERFACE_LIST || err == DONT_HAVE_PCAP)) { gpointer dialog = simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_str); g_free(err_str); @@ -2765,7 +2766,8 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_) if_list = capture_interface_list(&err, &err_str); - if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) { + if (if_list == NULL && + (err == CANT_GET_INTERFACE_LIST || err == DONT_HAVE_PCAP)) { simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_str); g_free(err_str); } @@ -3727,7 +3729,8 @@ make_and_fill_rows(void) /* Scan through the list and build a list of strings to display. */ if_list = capture_interface_list(&err, &err_str); if_list = g_list_sort (if_list, if_list_comparator_alph); - if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) { + if (if_list == NULL && + (err == CANT_GET_INTERFACE_LIST || err == DONT_HAVE_PCAP)) { simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_str); g_free(err_str); return; diff --git a/gtk/capture_if_dlg.c b/gtk/capture_if_dlg.c index 08c1329110..48169ac5d8 100644 --- a/gtk/capture_if_dlg.c +++ b/gtk/capture_if_dlg.c @@ -763,6 +763,7 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_) switch (err) { case CANT_GET_INTERFACE_LIST: + case DONT_HAVE_PCAP: simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_str); g_free(err_str); break; diff --git a/gtk/main.c b/gtk/main.c index de8c562a86..9a7e970773 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -2207,6 +2207,7 @@ main(int argc, char *argv[]) if (if_list == NULL) { switch (err) { case CANT_GET_INTERFACE_LIST: + case DONT_HAVE_PCAP: cmdarg_err("%s", err_str); g_free(err_str); break; diff --git a/gtk/main_welcome.c b/gtk/main_welcome.c index 40d27a1f0b..cd3fd97a3a 100644 --- a/gtk/main_welcome.c +++ b/gtk/main_welcome.c @@ -971,7 +971,8 @@ welcome_if_tree_load(void) interfaces = g_array_new(TRUE, TRUE, sizeof(displayed_interface)); if_list = capture_interface_list(&err, &err_str); if_list = g_list_sort (if_list, if_list_comparator_alph); - if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) { + if (if_list == NULL && + (err == CANT_GET_INTERFACE_LIST || err == DONT_HAVE_PCAP)) { simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_str); g_free(err_str); return; @@ -1138,6 +1138,7 @@ main(int argc, char *argv[]) if (if_list == NULL) { switch (err) { case CANT_GET_INTERFACE_LIST: + case DONT_HAVE_PCAP: cmdarg_err("%s", err_str); g_free(err_str); break; |