WPS ER: Use random event identifier in event URL
[libeap.git] / src / wps / wps_er.h
1 #ifndef WPS_ER_H
2 #define WPS_ER_H
3
4 struct wps_er_sta {
5         struct wps_er_sta *next;
6         struct wps_er_ap *ap;
7         u8 addr[ETH_ALEN];
8         u16 config_methods;
9         u8 uuid[WPS_UUID_LEN];
10         u8 pri_dev_type[8];
11         u16 dev_passwd_id;
12         int m1_received;
13         char *manufacturer;
14         char *model_name;
15         char *model_number;
16         char *serial_number;
17         char *dev_name;
18         struct wps_data *wps;
19         struct http_client *http;
20 };
21
22 struct wps_er_ap {
23         struct wps_er_ap *next;
24         struct wps_er *er;
25         struct wps_er_sta *sta; /* list of STAs/Enrollees using this AP */
26         struct in_addr addr;
27         char *location;
28         struct http_client *http;
29         struct wps_data *wps;
30
31         u8 uuid[WPS_UUID_LEN];
32         u8 pri_dev_type[8];
33         u8 wps_state;
34         u8 mac_addr[ETH_ALEN];
35         char *friendly_name;
36         char *manufacturer;
37         char *manufacturer_url;
38         char *model_description;
39         char *model_name;
40         char *model_number;
41         char *model_url;
42         char *serial_number;
43         char *udn;
44         char *upc;
45
46         char *scpd_url;
47         char *control_url;
48         char *event_sub_url;
49
50         int subscribed;
51         unsigned int id;
52
53         struct wps_credential *ap_settings;
54
55         void (*m1_handler)(struct wps_er_ap *ap, struct wpabuf *m1);
56 };
57
58 struct wps_er {
59         struct wps_context *wps;
60         char ifname[17];
61         char *mac_addr_text; /* mac addr of network i.f. we use */
62         u8 mac_addr[ETH_ALEN]; /* mac addr of network i.f. we use */
63         char *ip_addr_text; /* IP address of network i.f. we use */
64         unsigned ip_addr; /* IP address of network i.f. we use (host order) */
65         int multicast_sd;
66         int ssdp_sd;
67         struct wps_er_ap *ap;
68         struct http_server *http_srv;
69         int http_port;
70         unsigned int next_ap_id;
71         unsigned int event_id;
72 };
73
74
75 /* wps_er.c */
76 void wps_er_ap_add(struct wps_er *er, const u8 *uuid, struct in_addr *addr,
77                    const char *location, int max_age);
78 void wps_er_ap_remove(struct wps_er *er, struct in_addr *addr);
79
80 /* wps_er_ssdp.c */
81 int wps_er_ssdp_init(struct wps_er *er);
82 void wps_er_ssdp_deinit(struct wps_er *er);
83 void wps_er_send_ssdp_msearch(struct wps_er *er);
84
85 #endif /* WPS_ER_H */