P2P: Add method to signal lost device

This signal is used to notify users of the P2P
state machine or wpa_supplicant of lost devices.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2011-02-24 22:22:16 +02:00 committed by Jouni Malinen
parent d642d2d267
commit 56eeb8f299
5 changed files with 30 additions and 0 deletions

View File

@ -560,6 +560,8 @@ static void p2p_device_free(struct p2p_data *p2p, struct p2p_device *dev)
if (p2p->pending_client_disc_go == dev)
p2p->pending_client_disc_go = NULL;
p2p->cfg->dev_lost(p2p->cfg->cb_ctx, dev->info.p2p_device_addr);
os_free(dev);
}

View File

@ -441,6 +441,15 @@ struct p2p_config {
const struct p2p_peer_info *info,
int new_device);
/**
* dev_lost - Notification of a lost P2P Device
* @ctx: Callback context from cb_ctx
* @dev_addr: P2P Device Address of the lost P2P Device
*
* This callback is used to notify that a P2P Device has been deleted.
*/
void (*dev_lost)(void *ctx, const u8 *dev_addr);
/**
* go_neg_req_rx - Notification of a receive GO Negotiation Request
* @ctx: Callback context from cb_ctx

View File

@ -351,8 +351,16 @@ void wpas_notify_resume(struct wpa_global *global)
#ifdef CONFIG_P2P
void wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s,
const u8 *dev_addr, int new_device)
{
}
void wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s,
const u8 *dev_addr)
{
}
#endif /* CONFIG_P2P */

View File

@ -80,5 +80,7 @@ void wpas_notify_resume(struct wpa_global *global);
void wpas_notify_p2p_device_found(struct wpa_supplicant *wpa_s,
const u8 *dev_addr, int new_device);
void wpas_notify_p2p_device_lost(struct wpa_supplicant *wpa_s,
const u8 *dev_addr);
#endif /* NOTIFY_H */

View File

@ -1151,6 +1151,14 @@ void wpas_dev_found(void *ctx, const u8 *addr,
}
static void wpas_dev_lost(void *ctx, const u8 *dev_addr)
{
struct wpa_supplicant *wpa_s = ctx;
wpas_notify_p2p_device_lost(wpa_s, dev_addr);
}
static int wpas_start_listen(void *ctx, unsigned int freq,
unsigned int duration,
const struct wpabuf *probe_resp_ie)
@ -2331,6 +2339,7 @@ int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s)
p2p.go_neg_completed = wpas_go_neg_completed;
p2p.go_neg_req_rx = wpas_go_neg_req_rx;
p2p.dev_found = wpas_dev_found;
p2p.dev_lost = wpas_dev_lost;
p2p.start_listen = wpas_start_listen;
p2p.stop_listen = wpas_stop_listen;
p2p.send_probe_resp = wpas_send_probe_resp;