wps_upnp.h revision 189251
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
14struct upnp_wps_device_sm;
15struct wps_context;
16struct wps_data;
17
18struct upnp_wps_peer {
19	struct wps_data *wps;
20};
21
22enum upnp_wps_wlanevent_type {
23	UPNP_WPS_WLANEVENT_TYPE_PROBE = 1,
24	UPNP_WPS_WLANEVENT_TYPE_EAP = 2
25};
26
27struct upnp_wps_device_ctx {
28	struct wpabuf * (*rx_req_get_device_info)(
29		void *priv, struct upnp_wps_peer *peer);
30	struct wpabuf * (*rx_req_put_message)(
31		void *priv, struct upnp_wps_peer *peer,
32		const struct wpabuf *msg);
33	struct wpabuf * (*rx_req_get_ap_settings)(void *priv,
34						  const struct wpabuf *msg);
35	int (*rx_req_set_ap_settings)(void *priv, const struct wpabuf *msg);
36	int (*rx_req_del_ap_settings)(void *priv, const struct wpabuf *msg);
37	struct wpabuf * (*rx_req_get_sta_settings)(void *priv,
38						   const struct wpabuf *msg);
39	int (*rx_req_set_sta_settings)(void *priv, const struct wpabuf *msg);
40	int (*rx_req_del_sta_settings)(void *priv, const struct wpabuf *msg);
41	int (*rx_req_put_wlan_response)(
42		void *priv, enum upnp_wps_wlanevent_type ev_type,
43		const u8 *mac_addr, const struct wpabuf *msg,
44		enum wps_msg_type msg_type);
45	int (*rx_req_set_selected_registrar)(void *priv,
46					     const struct wpabuf *msg);
47	int (*rx_req_reboot_ap)(void *priv, const struct wpabuf *msg);
48	int (*rx_req_reset_ap)(void *priv, const struct wpabuf *msg);
49	int (*rx_req_reboot_sta)(void *priv, const struct wpabuf *msg);
50	int (*rx_req_reset_sta)(void *priv, const struct wpabuf *msg);
51};
52
53struct upnp_wps_device_sm *
54upnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
55		     void *priv);
56void upnp_wps_device_deinit(struct upnp_wps_device_sm *sm);
57
58int upnp_wps_device_start(struct upnp_wps_device_sm *sm, char *net_if);
59void upnp_wps_device_stop(struct upnp_wps_device_sm *sm);
60
61int upnp_wps_device_send_wlan_event(struct upnp_wps_device_sm *sm,
62				    const u8 from_mac_addr[ETH_ALEN],
63				    enum upnp_wps_wlanevent_type ev_type,
64				    const struct wpabuf *msg);
65int upnp_wps_subscribers(struct upnp_wps_device_sm *sm);
66
67#endif /* WPS_UPNP_H */
68