wps_er.h revision 214501
1214501Srpaulo/*
2214501Srpaulo * Wi-Fi Protected Setup - External Registrar
3214501Srpaulo * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
4214501Srpaulo *
5214501Srpaulo * This program is free software; you can redistribute it and/or modify
6214501Srpaulo * it under the terms of the GNU General Public License version 2 as
7214501Srpaulo * published by the Free Software Foundation.
8214501Srpaulo *
9214501Srpaulo * Alternatively, this software may be distributed under the terms of BSD
10214501Srpaulo * license.
11214501Srpaulo *
12214501Srpaulo * See README and COPYING for more details.
13214501Srpaulo */
14214501Srpaulo
15214501Srpaulo#ifndef WPS_ER_H
16214501Srpaulo#define WPS_ER_H
17214501Srpaulo
18214501Srpaulo#include "utils/list.h"
19214501Srpaulo
20214501Srpaulostruct wps_er_sta {
21214501Srpaulo	struct dl_list list;
22214501Srpaulo	struct wps_er_ap *ap;
23214501Srpaulo	u8 addr[ETH_ALEN];
24214501Srpaulo	u16 config_methods;
25214501Srpaulo	u8 uuid[WPS_UUID_LEN];
26214501Srpaulo	u8 pri_dev_type[8];
27214501Srpaulo	u16 dev_passwd_id;
28214501Srpaulo	int m1_received;
29214501Srpaulo	char *manufacturer;
30214501Srpaulo	char *model_name;
31214501Srpaulo	char *model_number;
32214501Srpaulo	char *serial_number;
33214501Srpaulo	char *dev_name;
34214501Srpaulo	struct wps_data *wps;
35214501Srpaulo	struct http_client *http;
36214501Srpaulo	struct wps_credential *cred;
37214501Srpaulo};
38214501Srpaulo
39214501Srpaulostruct wps_er_ap {
40214501Srpaulo	struct dl_list list;
41214501Srpaulo	struct wps_er *er;
42214501Srpaulo	struct dl_list sta; /* list of STAs/Enrollees using this AP */
43214501Srpaulo	struct in_addr addr;
44214501Srpaulo	char *location;
45214501Srpaulo	struct http_client *http;
46214501Srpaulo	struct wps_data *wps;
47214501Srpaulo
48214501Srpaulo	u8 uuid[WPS_UUID_LEN];
49214501Srpaulo	u8 pri_dev_type[8];
50214501Srpaulo	u8 wps_state;
51214501Srpaulo	u8 mac_addr[ETH_ALEN];
52214501Srpaulo	char *friendly_name;
53214501Srpaulo	char *manufacturer;
54214501Srpaulo	char *manufacturer_url;
55214501Srpaulo	char *model_description;
56214501Srpaulo	char *model_name;
57214501Srpaulo	char *model_number;
58214501Srpaulo	char *model_url;
59214501Srpaulo	char *serial_number;
60214501Srpaulo	char *udn;
61214501Srpaulo	char *upc;
62214501Srpaulo
63214501Srpaulo	char *scpd_url;
64214501Srpaulo	char *control_url;
65214501Srpaulo	char *event_sub_url;
66214501Srpaulo
67214501Srpaulo	int subscribed;
68214501Srpaulo	u8 sid[WPS_UUID_LEN];
69214501Srpaulo	unsigned int id;
70214501Srpaulo
71214501Srpaulo	struct wps_credential *ap_settings;
72214501Srpaulo
73214501Srpaulo	void (*m1_handler)(struct wps_er_ap *ap, struct wpabuf *m1);
74214501Srpaulo};
75214501Srpaulo
76214501Srpaulostruct wps_er {
77214501Srpaulo	struct wps_context *wps;
78214501Srpaulo	char ifname[17];
79214501Srpaulo	u8 mac_addr[ETH_ALEN]; /* mac addr of network i.f. we use */
80214501Srpaulo	char *ip_addr_text; /* IP address of network i.f. we use */
81214501Srpaulo	unsigned ip_addr; /* IP address of network i.f. we use (host order) */
82214501Srpaulo	int multicast_sd;
83214501Srpaulo	int ssdp_sd;
84214501Srpaulo	struct dl_list ap;
85214501Srpaulo	struct dl_list ap_unsubscribing;
86214501Srpaulo	struct http_server *http_srv;
87214501Srpaulo	int http_port;
88214501Srpaulo	unsigned int next_ap_id;
89214501Srpaulo	unsigned int event_id;
90214501Srpaulo	int deinitializing;
91214501Srpaulo	void (*deinit_done_cb)(void *ctx);
92214501Srpaulo	void *deinit_done_ctx;
93214501Srpaulo};
94214501Srpaulo
95214501Srpaulo
96214501Srpaulo/* wps_er.c */
97214501Srpaulovoid wps_er_ap_add(struct wps_er *er, const u8 *uuid, struct in_addr *addr,
98214501Srpaulo		   const char *location, int max_age);
99214501Srpaulovoid wps_er_ap_remove(struct wps_er *er, struct in_addr *addr);
100214501Srpaulo
101214501Srpaulo/* wps_er_ssdp.c */
102214501Srpauloint wps_er_ssdp_init(struct wps_er *er);
103214501Srpaulovoid wps_er_ssdp_deinit(struct wps_er *er);
104214501Srpaulovoid wps_er_send_ssdp_msearch(struct wps_er *er);
105214501Srpaulo
106214501Srpaulo#endif /* WPS_ER_H */
107