Global variables considered harmful.
[metze/wireshark/wip.git] / capture_ifinfo.c
index 40967a6117ba66c27e379c8d697fc7cfb82dbab5..87153ad2b35e87c657ee1a35f1e188408df94f6a 100644 (file)
@@ -105,7 +105,7 @@ static void append_remote_list(GList *iflist)
 /* XXX - We parse simple text output to get our interface list.  Should
  * we use "real" data serialization instead, e.g. via XML? */
 GList *
-capture_interface_list(int *err, char **err_str)
+capture_interface_list(int *err, char **err_str, void (*update_cb)(void))
 {
     int        ret;
     GList     *if_list = NULL;
@@ -119,7 +119,7 @@ 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(&data, &primary_msg, &secondary_msg);
+    ret = sync_interface_list_open(&data, &primary_msg, &secondary_msg, update_cb);
     if (ret != 0) {
         g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface List failed!");
         if (err_str) {
@@ -163,14 +163,14 @@ capture_interface_list(int *err, char **err_str)
             if_info->vendor_description = g_strdup(if_parts[1]);
         if (strlen(if_parts[2]) > 0)
             if_info->friendly_name = g_strdup(if_parts[2]);
-        if_info->type = (interface_type)strtol(if_parts[3], NULL, 10);
+        if_info->type = (interface_type)(int)strtol(if_parts[3], NULL, 10);
         addr_parts = g_strsplit(if_parts[4], ",", 0);
         for (j = 0; addr_parts[j] != NULL; j++) {
             if_addr = g_new0(if_addr_t,1);
-            if (inet_pton(AF_INET, addr_parts[j], &if_addr->addr.ip4_addr)) {
+            if (inet_pton(AF_INET, addr_parts[j], &if_addr->addr.ip4_addr) > 0) {
                 if_addr->ifat_type = IF_AT_IPv4;
             } else if (inet_pton(AF_INET6, addr_parts[j],
-                    &if_addr->addr.ip6_addr)) {
+                    &if_addr->addr.ip6_addr) > 0) {
                 if_addr->ifat_type = IF_AT_IPv6;
             } else {
                 g_free(if_addr);
@@ -206,7 +206,7 @@ capture_interface_list(int *err, char **err_str)
  * we use "real" data serialization instead, e.g. via XML? */
 if_capabilities_t *
 capture_get_if_capabilities(const gchar *ifname, gboolean monitor_mode,
-                            char **err_str)
+                            char **err_str, void (*update_cb)(void))
 {
     if_capabilities_t *caps;
     GList              *linktype_list = NULL;
@@ -219,7 +219,7 @@ capture_get_if_capabilities(const gchar *ifname, gboolean monitor_mode,
 
     /* Try to get our interface list */
     err = sync_if_capabilities_open(ifname, monitor_mode, &data,
-                                    &primary_msg, &secondary_msg);
+                                    &primary_msg, &secondary_msg, update_cb);
     if (err != 0) {
         g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface Capabilities failed!");
         if (err_str) {