udp: Merge udp_send and udp_output
[dragonfly.git] / contrib / hostapd / src / wps / wps_upnp.h
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@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 */