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
14d7ff03d48f825360eec2a371e3361306f2fd721bDmitry Shmidt#include "utils/list.h"
15d7ff03d48f825360eec2a371e3361306f2fd721bDmitry Shmidt
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_device_sm;
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wps_context;
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wps_data;
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_peer {
21d7ff03d48f825360eec2a371e3361306f2fd721bDmitry Shmidt	struct dl_list list;
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct wps_data *wps;
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum upnp_wps_wlanevent_type {
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	UPNP_WPS_WLANEVENT_TYPE_PROBE = 1,
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	UPNP_WPS_WLANEVENT_TYPE_EAP = 2
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_device_ctx {
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int (*rx_req_put_wlan_response)(
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		void *priv, enum upnp_wps_wlanevent_type ev_type,
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		const u8 *mac_addr, const struct wpabuf *msg,
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		enum wps_msg_type msg_type);
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	char *ap_pin;
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct upnp_wps_device_sm *
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtupnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		     void *priv, char *net_if);
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid upnp_wps_device_deinit(struct upnp_wps_device_sm *sm, void *priv);
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint upnp_wps_device_send_wlan_event(struct upnp_wps_device_sm *sm,
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				    const u8 from_mac_addr[ETH_ALEN],
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				    enum upnp_wps_wlanevent_type ev_type,
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				    const struct wpabuf *msg);
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint upnp_wps_subscribers(struct upnp_wps_device_sm *sm);
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint upnp_wps_set_ap_pin(struct upnp_wps_device_sm *sm, const char *ap_pin);
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPS_UPNP_H */
52