Merge remote-tracking branch 'origin/debian' into debian
[mech_eap.git] / libeap / src / wps / wps_er.h
diff --git a/libeap/src/wps/wps_er.h b/libeap/src/wps/wps_er.h
new file mode 100644 (file)
index 0000000..4b48ff6
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Wi-Fi Protected Setup - External Registrar
+ * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#ifndef WPS_ER_H
+#define WPS_ER_H
+
+#include "utils/list.h"
+
+struct wps_er_sta {
+       struct dl_list list;
+       struct wps_er_ap *ap;
+       u8 addr[ETH_ALEN];
+       u16 config_methods;
+       u8 uuid[WPS_UUID_LEN];
+       u8 pri_dev_type[8];
+       u16 dev_passwd_id;
+       int m1_received;
+       char *manufacturer;
+       char *model_name;
+       char *model_number;
+       char *serial_number;
+       char *dev_name;
+       struct wps_data *wps;
+       struct http_client *http;
+       struct wps_credential *cred;
+};
+
+struct wps_er_ap {
+       struct dl_list list;
+       struct wps_er *er;
+       struct dl_list sta; /* list of STAs/Enrollees using this AP */
+       struct in_addr addr;
+       char *location;
+       struct http_client *http;
+       struct wps_data *wps;
+
+       u8 uuid[WPS_UUID_LEN];
+       u8 pri_dev_type[8];
+       u8 wps_state;
+       u8 mac_addr[ETH_ALEN];
+       char *friendly_name;
+       char *manufacturer;
+       char *manufacturer_url;
+       char *model_description;
+       char *model_name;
+       char *model_number;
+       char *model_url;
+       char *serial_number;
+       char *udn;
+       char *upc;
+
+       char *scpd_url;
+       char *control_url;
+       char *event_sub_url;
+
+       int subscribed;
+       u8 sid[WPS_UUID_LEN];
+       unsigned int id;
+
+       struct wps_credential *ap_settings;
+
+       void (*m1_handler)(struct wps_er_ap *ap, struct wpabuf *m1);
+};
+
+struct wps_er_ap_settings {
+       struct dl_list list;
+       u8 uuid[WPS_UUID_LEN];
+       struct wps_credential ap_settings;
+};
+
+struct wps_er {
+       struct wps_context *wps;
+       char ifname[17];
+       int forced_ifname;
+       u8 mac_addr[ETH_ALEN]; /* mac addr of network i.f. we use */
+       char *ip_addr_text; /* IP address of network i.f. we use */
+       unsigned ip_addr; /* IP address of network i.f. we use (host order) */
+       int multicast_sd;
+       int ssdp_sd;
+       struct dl_list ap;
+       struct dl_list ap_unsubscribing;
+       struct dl_list ap_settings;
+       struct http_server *http_srv;
+       int http_port;
+       unsigned int next_ap_id;
+       unsigned int event_id;
+       int deinitializing;
+       void (*deinit_done_cb)(void *ctx);
+       void *deinit_done_ctx;
+       struct in_addr filter_addr;
+       int skip_set_sel_reg;
+       const u8 *set_sel_reg_uuid_filter;
+};
+
+
+/* wps_er.c */
+void wps_er_ap_add(struct wps_er *er, const u8 *uuid, struct in_addr *addr,
+                  const char *location, int max_age);
+void wps_er_ap_remove(struct wps_er *er, struct in_addr *addr);
+int wps_er_ap_cache_settings(struct wps_er *er, struct in_addr *addr);
+
+/* wps_er_ssdp.c */
+int wps_er_ssdp_init(struct wps_er *er);
+void wps_er_ssdp_deinit(struct wps_er *er);
+void wps_er_send_ssdp_msearch(struct wps_er *er);
+
+#endif /* WPS_ER_H */