| /* |
| * 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 */ |