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 
16 struct upnp_wps_device_sm;
17 struct wps_context;
18 struct wps_data;
19 
20 struct upnp_wps_peer {
21 	struct dl_list list;
22 	struct wps_data *wps;
23 };
24 
25 enum upnp_wps_wlanevent_type {
26 	UPNP_WPS_WLANEVENT_TYPE_PROBE = 1,
27 	UPNP_WPS_WLANEVENT_TYPE_EAP = 2
28 };
29 
30 struct 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 
39 struct upnp_wps_device_sm *
40 upnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
41 		     void *priv, char *net_if);
42 void upnp_wps_device_deinit(struct upnp_wps_device_sm *sm, void *priv);
43 
44 int 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);
48 int upnp_wps_subscribers(struct upnp_wps_device_sm *sm);
49 int upnp_wps_set_ap_pin(struct upnp_wps_device_sm *sm, const char *ap_pin);
50 
51 #endif /* WPS_UPNP_H */
52