diff options
author | Guy Harris <guy@alum.mit.edu> | 2010-05-17 18:40:23 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2010-05-17 18:40:23 +0000 |
commit | 991c5e9898d057f6b7d2f41397f460931ef5ff83 (patch) | |
tree | 95c2cc5755ba14006af226237a6f07eebd5f7e2c /capture_ifinfo.c | |
parent | 01c752e5efd10bdc5ca280d5e03dd19be466d9cb (diff) |
When dumpcap is run to get an interface list, interface capabilities, or
interface statistics, have its error messages come out as sync-pipe
errors, have it send a sync-pipe "success" message on success, and have
the callers get that message and display it.
svn path=/trunk/; revision=32843
Diffstat (limited to 'capture_ifinfo.c')
-rw-r--r-- | capture_ifinfo.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/capture_ifinfo.c b/capture_ifinfo.c index e9fc5347a0..a9648753bd 100644 --- a/capture_ifinfo.c +++ b/capture_ifinfo.c @@ -70,7 +70,7 @@ capture_interface_list(int *err, char **err_str) int ret; GList *if_list = NULL; int i, j; - gchar *msg; + gchar *data, *primary_msg, *secondary_msg; gchar **raw_list, **if_parts, **addr_parts; gchar *name; if_info_t *if_info; @@ -79,25 +79,26 @@ capture_interface_list(int *err, char **err_str) g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface List ..."); /* Try to get our interface list */ - ret = sync_interface_list_open(&msg); + ret = sync_interface_list_open(&data, &primary_msg, &secondary_msg); if (ret != 0) { g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface List failed!"); if (err_str) { - *err_str = msg; + *err_str = primary_msg; } else { - g_free(msg); + g_free(primary_msg); } - *err = CANT_RUN_DUMPCAP; + g_free(secondary_msg); + *err = CANT_GET_INTERFACE_LIST; return NULL; } /* Split our lines */ #ifdef _WIN32 - raw_list = g_strsplit(msg, "\r\n", 0); + raw_list = g_strsplit(data, "\r\n", 0); #else - raw_list = g_strsplit(msg, "\n", 0); + raw_list = g_strsplit(data, "\n", 0); #endif - g_free(msg); + g_free(data); for (i = 0; raw_list[i] != NULL; i++) { if_parts = g_strsplit(raw_list[i], "\t", 4); @@ -162,31 +163,33 @@ capture_get_if_capabilities(const gchar *ifname, gboolean monitor_mode, if_capabilities_t *caps; GList *linktype_list = NULL; int err, i; - gchar *msg; + gchar *data, *primary_msg, *secondary_msg; gchar **raw_list, **lt_parts; data_link_info_t *data_link_info; g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface Capabilities ..."); /* Try to get our interface list */ - err = sync_if_capabilities_open(ifname, monitor_mode, &msg); + err = sync_if_capabilities_open(ifname, monitor_mode, &data, + &primary_msg, &secondary_msg); if (err != 0) { g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface Capabilities failed!"); if (err_str) { - *err_str = msg; + *err_str = primary_msg; } else { - g_free(msg); + g_free(primary_msg); } + g_free(secondary_msg); return NULL; } /* Split our lines */ #ifdef _WIN32 - raw_list = g_strsplit(msg, "\r\n", 0); + raw_list = g_strsplit(data, "\r\n", 0); #else - raw_list = g_strsplit(msg, "\n", 0); + raw_list = g_strsplit(data, "\n", 0); #endif - g_free(msg); + g_free(data); /* * First line is 0 if monitor mode isn't supported, 1 if it is. |