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