Once a lease is offered, tell about its IP/MAC through a callback. This
will be useful in peer.c to know about distant peer's IP when our local
one ends up as the dhcp server.
---
gdhcp/gdhcp.h | 5 +++++
gdhcp/server.c | 13 +++++++++++++
2 files changed, 18 insertions(+)
diff --git a/gdhcp/gdhcp.h b/gdhcp/gdhcp.h
index ac24454..7525eb2 100644
--- a/gdhcp/gdhcp.h
+++ b/gdhcp/gdhcp.h
@@ -201,6 +201,9 @@ typedef enum {
typedef void (*GDHCPSaveLeaseFunc) (unsigned char *mac,
unsigned int nip, unsigned int expire);
+
+typedef void (*GDHCPLeaseAddedCb) (unsigned char *mac, uint32_t ip);
+
struct _GDHCPServer;
typedef struct _GDHCPServer GDHCPServer;
@@ -223,6 +226,8 @@ void g_dhcp_server_set_lease_time(GDHCPServer *dhcp_server,
unsigned int lease_time);
void g_dhcp_server_set_save_lease(GDHCPServer *dhcp_server,
GDHCPSaveLeaseFunc func, gpointer user_data);
+void g_dhcp_server_set_lease_added_cb(GDHCPServer *dhcp_server,
+ GDHCPLeaseAddedCb cb);
int dhcp_get_random(uint64_t *val);
void dhcp_cleanup_random(void);
diff --git a/gdhcp/server.c b/gdhcp/server.c
index aa40488..8561dd3 100644
--- a/gdhcp/server.c
+++ b/gdhcp/server.c
@@ -65,6 +65,7 @@ struct _GDHCPServer {
GHashTable *nip_lease_hash;
GHashTable *option_hash; /* Options send to client */
GDHCPSaveLeaseFunc save_lease_func;
+ GDHCPLeaseAddedCb lease_added_cb;
GDHCPDebugFunc debug_func;
gpointer debug_data;
};
@@ -213,6 +214,9 @@ static struct dhcp_lease *add_lease(GDHCPServer
*dhcp_server, uint32_t expire,
g_hash_table_insert(dhcp_server->nip_lease_hash,
GINT_TO_POINTER((int) lease->lease_nip), lease);
+ if (dhcp_server->lease_added_cb)
+ dhcp_server->lease_added_cb(lease->lease_mac, yiaddr);
+
return lease;
}
@@ -814,6 +818,15 @@ void g_dhcp_server_set_save_lease(GDHCPServer *dhcp_server,
dhcp_server->save_lease_func = func;
}
+void g_dhcp_server_set_lease_added_cb(GDHCPServer *dhcp_server,
+ GDHCPLeaseAddedCb cb)
+{
+ if (!dhcp_server)
+ return;
+
+ dhcp_server->lease_added_cb = cb;
+}
+
GDHCPServer *g_dhcp_server_ref(GDHCPServer *dhcp_server)
{
if (!dhcp_server)
--
2.0.4
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman