1214501Srpaulo/* 2214501Srpaulo * Wi-Fi Protected Setup - External Registrar 3214501Srpaulo * Copyright (c) 2009, Jouni Malinen <j@w1.fi> 4214501Srpaulo * 5252726Srpaulo * This software may be distributed under the terms of the BSD license. 6252726Srpaulo * See README for more details. 7214501Srpaulo */ 8214501Srpaulo 9214501Srpaulo#ifndef WPS_ER_H 10214501Srpaulo#define WPS_ER_H 11214501Srpaulo 12214501Srpaulo#include "utils/list.h" 13214501Srpaulo 14214501Srpaulostruct wps_er_sta { 15214501Srpaulo struct dl_list list; 16214501Srpaulo struct wps_er_ap *ap; 17214501Srpaulo u8 addr[ETH_ALEN]; 18214501Srpaulo u16 config_methods; 19214501Srpaulo u8 uuid[WPS_UUID_LEN]; 20214501Srpaulo u8 pri_dev_type[8]; 21214501Srpaulo u16 dev_passwd_id; 22214501Srpaulo int m1_received; 23214501Srpaulo char *manufacturer; 24214501Srpaulo char *model_name; 25214501Srpaulo char *model_number; 26214501Srpaulo char *serial_number; 27214501Srpaulo char *dev_name; 28214501Srpaulo struct wps_data *wps; 29214501Srpaulo struct http_client *http; 30214501Srpaulo struct wps_credential *cred; 31214501Srpaulo}; 32214501Srpaulo 33214501Srpaulostruct wps_er_ap { 34214501Srpaulo struct dl_list list; 35214501Srpaulo struct wps_er *er; 36214501Srpaulo struct dl_list sta; /* list of STAs/Enrollees using this AP */ 37214501Srpaulo struct in_addr addr; 38214501Srpaulo char *location; 39214501Srpaulo struct http_client *http; 40214501Srpaulo struct wps_data *wps; 41214501Srpaulo 42214501Srpaulo u8 uuid[WPS_UUID_LEN]; 43214501Srpaulo u8 pri_dev_type[8]; 44214501Srpaulo u8 wps_state; 45214501Srpaulo u8 mac_addr[ETH_ALEN]; 46214501Srpaulo char *friendly_name; 47214501Srpaulo char *manufacturer; 48214501Srpaulo char *manufacturer_url; 49214501Srpaulo char *model_description; 50214501Srpaulo char *model_name; 51214501Srpaulo char *model_number; 52214501Srpaulo char *model_url; 53214501Srpaulo char *serial_number; 54214501Srpaulo char *udn; 55214501Srpaulo char *upc; 56214501Srpaulo 57214501Srpaulo char *scpd_url; 58214501Srpaulo char *control_url; 59214501Srpaulo char *event_sub_url; 60214501Srpaulo 61214501Srpaulo int subscribed; 62214501Srpaulo u8 sid[WPS_UUID_LEN]; 63214501Srpaulo unsigned int id; 64214501Srpaulo 65214501Srpaulo struct wps_credential *ap_settings; 66214501Srpaulo 67214501Srpaulo void (*m1_handler)(struct wps_er_ap *ap, struct wpabuf *m1); 68214501Srpaulo}; 69214501Srpaulo 70252726Srpaulostruct wps_er_ap_settings { 71252726Srpaulo struct dl_list list; 72252726Srpaulo u8 uuid[WPS_UUID_LEN]; 73252726Srpaulo struct wps_credential ap_settings; 74252726Srpaulo}; 75252726Srpaulo 76214501Srpaulostruct wps_er { 77214501Srpaulo struct wps_context *wps; 78214501Srpaulo char ifname[17]; 79281806Srpaulo int forced_ifname; 80214501Srpaulo u8 mac_addr[ETH_ALEN]; /* mac addr of network i.f. we use */ 81214501Srpaulo char *ip_addr_text; /* IP address of network i.f. we use */ 82214501Srpaulo unsigned ip_addr; /* IP address of network i.f. we use (host order) */ 83214501Srpaulo int multicast_sd; 84214501Srpaulo int ssdp_sd; 85214501Srpaulo struct dl_list ap; 86214501Srpaulo struct dl_list ap_unsubscribing; 87252726Srpaulo struct dl_list ap_settings; 88214501Srpaulo struct http_server *http_srv; 89214501Srpaulo int http_port; 90214501Srpaulo unsigned int next_ap_id; 91214501Srpaulo unsigned int event_id; 92214501Srpaulo int deinitializing; 93214501Srpaulo void (*deinit_done_cb)(void *ctx); 94214501Srpaulo void *deinit_done_ctx; 95252726Srpaulo struct in_addr filter_addr; 96252726Srpaulo int skip_set_sel_reg; 97252726Srpaulo const u8 *set_sel_reg_uuid_filter; 98214501Srpaulo}; 99214501Srpaulo 100214501Srpaulo 101214501Srpaulo/* wps_er.c */ 102214501Srpaulovoid wps_er_ap_add(struct wps_er *er, const u8 *uuid, struct in_addr *addr, 103214501Srpaulo const char *location, int max_age); 104214501Srpaulovoid wps_er_ap_remove(struct wps_er *er, struct in_addr *addr); 105252726Srpauloint wps_er_ap_cache_settings(struct wps_er *er, struct in_addr *addr); 106214501Srpaulo 107214501Srpaulo/* wps_er_ssdp.c */ 108214501Srpauloint wps_er_ssdp_init(struct wps_er *er); 109214501Srpaulovoid wps_er_ssdp_deinit(struct wps_er *er); 110214501Srpaulovoid wps_er_send_ssdp_msearch(struct wps_er *er); 111214501Srpaulo 112214501Srpaulo#endif /* WPS_ER_H */ 113