Home | History | Annotate | Download | only in wps
      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 (at) 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 
     14 struct upnp_wps_device_sm;
     15 struct wps_context;
     16 struct wps_data;
     17 
     18 struct upnp_wps_peer {
     19 	struct wps_data *wps;
     20 };
     21 
     22 enum upnp_wps_wlanevent_type {
     23 	UPNP_WPS_WLANEVENT_TYPE_PROBE = 1,
     24 	UPNP_WPS_WLANEVENT_TYPE_EAP = 2
     25 };
     26 
     27 struct 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 
     53 struct upnp_wps_device_sm *
     54 upnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
     55 		     void *priv);
     56 void upnp_wps_device_deinit(struct upnp_wps_device_sm *sm);
     57 
     58 int upnp_wps_device_start(struct upnp_wps_device_sm *sm, char *net_if);
     59 void upnp_wps_device_stop(struct upnp_wps_device_sm *sm);
     60 
     61 int 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);
     65 int upnp_wps_subscribers(struct upnp_wps_device_sm *sm);
     66 
     67 #endif /* WPS_UPNP_H */
     68