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 | 3 ++-
src/dhcp.c | 11 ++++++++---
src/network.c | 5 +++--
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/connman.h b/src/connman.h
index 111eea0..5cff513 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -437,7 +437,8 @@ typedef void (* dhcp_cb) (struct connman_ipconfig *ipconfig,
struct connman_network *opt_network,
bool success, gpointer data);
int __connman_dhcp_start(struct connman_ipconfig *ipconfig,
- struct connman_network *network, dhcp_cb callback);
+ struct connman_network *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 bfaae75..132b787 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;
@@ -155,13 +156,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)
@@ -579,7 +582,8 @@ static int dhcp_release(struct connman_dhcp *dhcp)
}
int __connman_dhcp_start(struct connman_ipconfig *ipconfig,
- struct connman_network *network, dhcp_cb callback)
+ struct connman_network *network, dhcp_cb callback,
+ gpointer user_data)
{
const char *last_addr = NULL;
struct connman_dhcp *dhcp;
@@ -617,6 +621,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