18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * UPnP WPS Device
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2000-2003 Intel Corporation
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2006-2007 Sony Corporation
58d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2008-2009 Atheros Communications
68d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * See wps_upnp.c for more details on licensing and code history.
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef WPS_UPNP_H
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WPS_UPNP_H
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_device_sm;
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wps_context;
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wps_data;
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_peer {
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct wps_data *wps;
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum upnp_wps_wlanevent_type {
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	UPNP_WPS_WLANEVENT_TYPE_PROBE = 1,
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	UPNP_WPS_WLANEVENT_TYPE_EAP = 2
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_device_ctx {
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int (*rx_req_put_wlan_response)(
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		void *priv, enum upnp_wps_wlanevent_type ev_type,
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		const u8 *mac_addr, const struct wpabuf *msg,
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		enum wps_msg_type msg_type);
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	char *ap_pin;
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_device_sm *
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtupnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		     void *priv, char *net_if);
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid upnp_wps_device_deinit(struct upnp_wps_device_sm *sm, void *priv);
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint upnp_wps_device_send_wlan_event(struct upnp_wps_device_sm *sm,
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				    const u8 from_mac_addr[ETH_ALEN],
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				    enum upnp_wps_wlanevent_type ev_type,
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				    const struct wpabuf *msg);
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint upnp_wps_subscribers(struct upnp_wps_device_sm *sm);
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint upnp_wps_set_ap_pin(struct upnp_wps_device_sm *sm, const char *ap_pin);
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPS_UPNP_H */
49