1/*
2 * UPnP WPS Device
3 * Copyright (c) 2000-2003 Intel Corporation
4 * Copyright (c) 2006-2007 Sony Corporation
5 * Copyright (c) 2008-2009 Atheros Communications
6 * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
7 *
8 * See wps_upnp.c for more details on licensing and code history.
9 */
10
11#ifndef WPS_UPNP_H
12#define WPS_UPNP_H
13
14#include "utils/list.h"
15
16struct upnp_wps_device_sm;
17struct wps_context;
18struct wps_data;
19
20struct upnp_wps_peer {
21	struct dl_list list;
22	struct wps_data *wps;
23};
24
25enum upnp_wps_wlanevent_type {
26	UPNP_WPS_WLANEVENT_TYPE_PROBE = 1,
27	UPNP_WPS_WLANEVENT_TYPE_EAP = 2
28};
29
30struct upnp_wps_device_ctx {
31	int (*rx_req_put_wlan_response)(
32		void *priv, enum upnp_wps_wlanevent_type ev_type,
33		const u8 *mac_addr, const struct wpabuf *msg,
34		enum wps_msg_type msg_type);
35
36	char *ap_pin;
37};
38
39struct upnp_wps_device_sm *
40upnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
41		     void *priv, char *net_if);
42void upnp_wps_device_deinit(struct upnp_wps_device_sm *sm, void *priv);
43
44int upnp_wps_device_send_wlan_event(struct upnp_wps_device_sm *sm,
45				    const u8 from_mac_addr[ETH_ALEN],
46				    enum upnp_wps_wlanevent_type ev_type,
47				    const struct wpabuf *msg);
48int upnp_wps_subscribers(struct upnp_wps_device_sm *sm);
49int upnp_wps_set_ap_pin(struct upnp_wps_device_sm *sm, const char *ap_pin);
50
51#endif /* WPS_UPNP_H */
52