The dhcp callback had already a pointer for such user data, but it could
not be set anywhere. Thus adding an extra parameter to
__connman_dhcp_start so it is possible to provide such user_data.
---
 src/connman.h |  5 +++--
 src/dhcp.c    | 11 ++++++++---
 src/network.c |  5 +++--
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/connman.h b/src/connman.h
index c855634..1c11d3e 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -435,9 +435,10 @@ typedef void (* dhcpv6_cb) (struct connman_network 
*network,
 
 typedef void (* dhcp_cb) (struct connman_ipconfig *ipconfig,
                        struct connman_network *opt_network,
-                       bool success, gpointer data);
+                       bool success, gpointer user_data);
 int __connman_dhcp_start(struct connman_ipconfig *ipconfig,
-                       struct connman_network *opt_network, dhcp_cb callback);
+                       struct connman_network *opt_network, dhcp_cb callback,
+                       gpointer user_data);
 void __connman_dhcp_stop(struct connman_ipconfig *ipconfig);
 int __connman_dhcp_init(void);
 void __connman_dhcp_cleanup(void);
diff --git a/src/dhcp.c b/src/dhcp.c
index 179cc03..aa72114 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -42,6 +42,7 @@ struct connman_dhcp {
        struct connman_ipconfig *ipconfig;
        struct connman_network *network;
        dhcp_cb callback;
+       gpointer user_data;
 
        char **nameservers;
        char **timeservers;
@@ -147,13 +148,15 @@ static void dhcp_invalidate(struct connman_dhcp *dhcp, 
bool callback)
        __connman_ipconfig_set_prefixlen(dhcp->ipconfig, 0);
 
        if (dhcp->callback && callback)
-               dhcp->callback(dhcp->ipconfig, dhcp->network, false, NULL);
+               dhcp->callback(dhcp->ipconfig, dhcp->network,
+                                               false, dhcp->user_data);
 }
 
 static void dhcp_valid(struct connman_dhcp *dhcp)
 {
        if (dhcp->callback)
-               dhcp->callback(dhcp->ipconfig, dhcp->network, true, NULL);
+               dhcp->callback(dhcp->ipconfig, dhcp->network,
+                                               true, dhcp->user_data);
 }
 
 static void dhcp_debug(const char *str, void *data)
@@ -573,7 +576,8 @@ static int dhcp_release(struct connman_dhcp *dhcp)
 }
 
 int __connman_dhcp_start(struct connman_ipconfig *ipconfig,
-                       struct connman_network *opt_network, dhcp_cb callback)
+                       struct connman_network *opt_network, dhcp_cb callback,
+                       gpointer user_data)
 {
        const char *last_addr = NULL;
        struct connman_dhcp *dhcp;
@@ -611,6 +615,7 @@ int __connman_dhcp_start(struct connman_ipconfig *ipconfig,
        }
 
        dhcp->callback = callback;
+       dhcp->user_data = user_data;
 
        return g_dhcp_client_start(dhcp->dhcp_client, last_addr);
 }
diff --git a/src/network.c b/src/network.c
index 4b5fb27..d65f7ac 100644
--- a/src/network.c
+++ b/src/network.c
@@ -297,7 +297,8 @@ static int set_connected_dhcp(struct connman_network 
*network)
        service = connman_service_lookup_from_network(network);
        ipconfig_ipv4 = __connman_service_get_ip4config(service);
 
-       err = __connman_dhcp_start(ipconfig_ipv4, network, dhcp_callback);
+       err = __connman_dhcp_start(ipconfig_ipv4, network,
+                                                       dhcp_callback, NULL);
        if (err < 0) {
                connman_error("Can not request DHCP lease");
                return err;
@@ -1700,7 +1701,7 @@ int __connman_network_set_ipconfig(struct connman_network 
*network,
                        return manual_ipv4_set(network, ipconfig_ipv4);
                case CONNMAN_IPCONFIG_METHOD_DHCP:
                        return __connman_dhcp_start(ipconfig_ipv4,
-                                               network, dhcp_callback);
+                                               network, dhcp_callback, NULL);
                }
        }
 
-- 
1.8.5.5

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to