aboutsummaryrefslogtreecommitdiffstats
path: root/capchild
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-07-17 17:01:27 +0200
committerAnders Broman <a.broman58@gmail.com>2015-07-22 07:10:10 +0000
commit6452caa3b3ffe0f72d2a6396d96f0470ceb77671 (patch)
treee75ce1025539ea5d2f9e013ae0f23b7340b8c137 /capchild
parent32d9a1d714d5d253428a5c3d5450e1d3316a9f16 (diff)
Fix retrieval of data link type supported by remote interfaces with authentication
Make use of -A parameter when querying data link types supported by a given interface with dumpcap. Ensure to pass the authentication parameters configured for a remote interface when calling capture_get_if_capabilities() Bug: 11366 Change-Id: I4efea615084a82108e4a12a64e8c46817f30a5c6 Reviewed-on: https://code.wireshark.org/review/9690 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'capchild')
-rw-r--r--capchild/capture_ifinfo.c3
-rw-r--r--capchild/capture_sync.c6
-rw-r--r--capchild/capture_sync.h2
3 files changed, 8 insertions, 3 deletions
diff --git a/capchild/capture_ifinfo.c b/capchild/capture_ifinfo.c
index eb86215c89..510f529549 100644
--- a/capchild/capture_ifinfo.c
+++ b/capchild/capture_ifinfo.c
@@ -223,6 +223,7 @@ capture_interface_list(int *err, char **err_str, void (*update_cb)(void))
* we use "real" data serialization instead, e.g. via XML? */
if_capabilities_t *
capture_get_if_capabilities(const gchar *ifname, gboolean monitor_mode,
+ const gchar *auth_string,
char **err_str, void (*update_cb)(void))
{
if_capabilities_t *caps;
@@ -246,7 +247,7 @@ capture_get_if_capabilities(const gchar *ifname, gboolean monitor_mode,
#endif /* HAVE_EXTCAP */
/* Try to get our interface list */
- err = sync_if_capabilities_open(ifname, monitor_mode, &data,
+ err = sync_if_capabilities_open(ifname, monitor_mode, auth_string, &data,
&primary_msg, &secondary_msg, update_cb);
if (err != 0) {
g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface Capabilities failed, error %d, %s (%s)!",
diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c
index 29274d6647..0b92c57028 100644
--- a/capchild/capture_sync.c
+++ b/capchild/capture_sync.c
@@ -1324,7 +1324,7 @@ sync_interface_list_open(gchar **data, gchar **primary_msg,
* must be freed with g_free().
*/
int
-sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode,
+sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode, const gchar* auth,
gchar **data, gchar **primary_msg,
gchar **secondary_msg, void (*update_cb)(void))
{
@@ -1348,6 +1348,10 @@ sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode,
argv = sync_pipe_add_arg(argv, &argc, "-L");
if (monitor_mode)
argv = sync_pipe_add_arg(argv, &argc, "-I");
+ if (auth) {
+ argv = sync_pipe_add_arg(argv, &argc, "-A");
+ argv = sync_pipe_add_arg(argv, &argc, auth);
+ }
#ifndef DEBUG_CHILD
/* Run dumpcap in capture child mode */
diff --git a/capchild/capture_sync.h b/capchild/capture_sync.h
index 7449d96939..3cdac27956 100644
--- a/capchild/capture_sync.h
+++ b/capchild/capture_sync.h
@@ -73,7 +73,7 @@ sync_interface_list_open(gchar **data, gchar **primary_msg,
/** Get interface capabilities using dumpcap */
extern int
-sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode,
+sync_if_capabilities_open(const gchar *ifname, gboolean monitor_mode, const gchar* auth,
gchar **data, gchar **primary_msg,
gchar **secondary_msg, void (*update_cb)(void));