wps_upnp.h revision 189251
1189251Ssam/*
2189251Ssam * UPnP WPS Device
3189251Ssam * Copyright (c) 2000-2003 Intel Corporation
4189251Ssam * Copyright (c) 2006-2007 Sony Corporation
5189251Ssam * Copyright (c) 2008-2009 Atheros Communications
6189251Ssam * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
7189251Ssam *
8189251Ssam * See wps_upnp.c for more details on licensing and code history.
9189251Ssam */
10189251Ssam
11189251Ssam#ifndef WPS_UPNP_H
12189251Ssam#define WPS_UPNP_H
13189251Ssam
14189251Ssamstruct upnp_wps_device_sm;
15189251Ssamstruct wps_context;
16189251Ssamstruct wps_data;
17189251Ssam
18189251Ssamstruct upnp_wps_peer {
19189251Ssam	struct wps_data *wps;
20189251Ssam};
21189251Ssam
22189251Ssamenum upnp_wps_wlanevent_type {
23189251Ssam	UPNP_WPS_WLANEVENT_TYPE_PROBE = 1,
24189251Ssam	UPNP_WPS_WLANEVENT_TYPE_EAP = 2
25189251Ssam};
26189251Ssam
27189251Ssamstruct upnp_wps_device_ctx {
28189251Ssam	struct wpabuf * (*rx_req_get_device_info)(
29189251Ssam		void *priv, struct upnp_wps_peer *peer);
30189251Ssam	struct wpabuf * (*rx_req_put_message)(
31189251Ssam		void *priv, struct upnp_wps_peer *peer,
32189251Ssam		const struct wpabuf *msg);
33189251Ssam	struct wpabuf * (*rx_req_get_ap_settings)(void *priv,
34189251Ssam						  const struct wpabuf *msg);
35189251Ssam	int (*rx_req_set_ap_settings)(void *priv, const struct wpabuf *msg);
36189251Ssam	int (*rx_req_del_ap_settings)(void *priv, const struct wpabuf *msg);
37189251Ssam	struct wpabuf * (*rx_req_get_sta_settings)(void *priv,
38189251Ssam						   const struct wpabuf *msg);
39189251Ssam	int (*rx_req_set_sta_settings)(void *priv, const struct wpabuf *msg);
40189251Ssam	int (*rx_req_del_sta_settings)(void *priv, const struct wpabuf *msg);
41189251Ssam	int (*rx_req_put_wlan_response)(
42189251Ssam		void *priv, enum upnp_wps_wlanevent_type ev_type,
43189251Ssam		const u8 *mac_addr, const struct wpabuf *msg,
44189251Ssam		enum wps_msg_type msg_type);
45189251Ssam	int (*rx_req_set_selected_registrar)(void *priv,
46189251Ssam					     const struct wpabuf *msg);
47189251Ssam	int (*rx_req_reboot_ap)(void *priv, const struct wpabuf *msg);
48189251Ssam	int (*rx_req_reset_ap)(void *priv, const struct wpabuf *msg);
49189251Ssam	int (*rx_req_reboot_sta)(void *priv, const struct wpabuf *msg);
50189251Ssam	int (*rx_req_reset_sta)(void *priv, const struct wpabuf *msg);
51189251Ssam};
52189251Ssam
53189251Ssamstruct upnp_wps_device_sm *
54189251Ssamupnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
55189251Ssam		     void *priv);
56189251Ssamvoid upnp_wps_device_deinit(struct upnp_wps_device_sm *sm);
57189251Ssam
58189251Ssamint upnp_wps_device_start(struct upnp_wps_device_sm *sm, char *net_if);
59189251Ssamvoid upnp_wps_device_stop(struct upnp_wps_device_sm *sm);
60189251Ssam
61189251Ssamint upnp_wps_device_send_wlan_event(struct upnp_wps_device_sm *sm,
62189251Ssam				    const u8 from_mac_addr[ETH_ALEN],
63189251Ssam				    enum upnp_wps_wlanevent_type ev_type,
64189251Ssam				    const struct wpabuf *msg);
65189251Ssamint upnp_wps_subscribers(struct upnp_wps_device_sm *sm);
66189251Ssam
67189251Ssam#endif /* WPS_UPNP_H */
68