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