This is will be useful for wifi plugin and peer core code to run dhcp as a client or as a server. --- gsupplicant/gsupplicant.h | 1 + gsupplicant/supplicant.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+)
diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index 82c9bc6..387a3aa 100644 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -296,6 +296,7 @@ bool g_supplicant_peer_is_wps_pbc(GSupplicantPeer *peer); bool g_supplicant_peer_is_wps_pin(GSupplicantPeer *peer); bool g_supplicant_peer_is_in_a_group(GSupplicantPeer *peer); GSupplicantInterface *g_supplicant_peer_get_group_interface(GSupplicantPeer *peer); +bool g_supplicant_peer_is_client(GSupplicantPeer *peer); struct _GSupplicantCallbacks { void (*system_ready) (void); diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index 8324cc2..c6342d5 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -1098,6 +1098,28 @@ GSupplicantInterface *g_supplicant_peer_get_group_interface(GSupplicantPeer *pee return (GSupplicantInterface *) peer->current_group_iface; } +bool g_supplicant_peer_is_client(GSupplicantPeer *peer) +{ + GSupplicantGroup *group; + GSList *list; + + if (!peer) + return false; + + for (list = peer->groups; list; list = list->next) { + group = list->data; + + if (group->role != G_SUPPLICANT_GROUP_ROLE_CLIENT || + group->orig_interface != peer->interface) + continue; + + if (group->interface == peer->current_group_iface) + return true; + } + + return false; +} + static void merge_network(GSupplicantNetwork *network) { GString *str; -- 1.8.5.5 _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman