original files of m241
This commit is contained in:
@@ -0,0 +1,390 @@
|
||||
/* ipwps_common.h - IPWPS Common header file */
|
||||
/*
|
||||
* Copyright (c) 2009 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify, or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01b,05mar09,mry Add priliminary enrollee support
|
||||
01a,02Feb09,mry Created
|
||||
*/
|
||||
#ifndef IPWPS_COMMON_H
|
||||
#define IPWPS_COMMON_H
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 1 DESCRIPTION
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/* This is a common header file that may be included by internal WPS modules
|
||||
* as well as external modules and applications using ipwps.
|
||||
* It defines common ipwps structures and types.
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 2 CONFIGURATION
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 3 INCLUDE FILES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#include <ipcom_type.h>
|
||||
#include <ipcom_cstyle.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 4 DEFINES
|
||||
****************************************************************************
|
||||
*/
|
||||
#define IPWPS_UUID_SIZE 16
|
||||
|
||||
#define IPWPS_MAX_WSC_ID_LEN 128
|
||||
#define IPWPS_MAX_EAP_ID_LEN 64
|
||||
#define IPWPS_MAX_IFNAME 16
|
||||
#define IPWPS_DEVICE_INFO_SIZE 32
|
||||
#define IPWPS_DEVICE_INFO_STRLEN (IPWPS_DEVICE_INFO_SIZE+1)
|
||||
#define IPWPS_DEVICE_INFO_MANUFACTURER_SIZE 64
|
||||
#define IPWPS_DEVICE_INFO_MANUFACTURER_STRLEN (IPWPS_DEVICE_INFO_MANUFACTURER_SIZE+1)
|
||||
#define IPWPS_CREDENTIALS_CONFIG_METHOD_STRLEN 32
|
||||
|
||||
/* Max size of a reassembled WPS Protocol message (too generous?)*/
|
||||
#define IPWPS_PROTO_MSG_DATALEN_MAX 1024
|
||||
|
||||
/* WPS "CONFIGURATION ERROR" VALUES */
|
||||
#define IPWPS_CONFIG_ERROR_NOERR 0
|
||||
#define IPWPS_CONFIG_ERROR_OOBIF_READERR 1
|
||||
#define IPWPS_CONFIG_ERROR_DECRYPT_CRCFAIL 2
|
||||
#define IPWPS_CONFIG_ERROR_2_4CHAN_NOT_SUPP 3
|
||||
#define IPWPS_CONFIG_ERROR_5_0CHAN_NOT_SUPP 4
|
||||
#define IPWPS_CONFIG_ERROR_SIGNAL_TOOWEAK 5
|
||||
#define IPWPS_CONFIG_ERROR_NET_AUTHFAIL 6
|
||||
#define IPWPS_CONFIG_ERROR_NET_ASSOCFAIL 7
|
||||
#define IPWPS_CONFIG_ERROR_NO_DHCPRESP 8
|
||||
#define IPWPS_CONFIG_ERROR_FAIL_DHCPCONFIG 9
|
||||
#define IPWPS_CONFIG_ERROR_IPADDR_CONFLICT 10
|
||||
#define IPWPS_CONFIG_ERROR_REGCONN_FAIL 11
|
||||
#define IPWPS_CONFIG_ERROR_MULTI_PBCSESSION 12
|
||||
#define IPWPS_CONFIG_ERROR_ROGUE_ACTIVITY 13
|
||||
#define IPWPS_CONFIG_ERROR_DEVICE_BUSY 14
|
||||
#define IPWPS_CONFIG_ERROR_SETUP_LOCKED 15
|
||||
#define IPWPS_CONFIG_ERROR_MSG_TIMEOUT 16
|
||||
#define IPWPS_CONFIG_ERROR_REGSESSION_TIMEOUT 17
|
||||
#define IPWPS_CONFIG_ERROR_DEVPWD_AUTHFAIL 18
|
||||
|
||||
/* WPS "ASSOCIATION STATE" VALUES */
|
||||
#define IPWPS_ASSOC_STATE_NOT_ASSOCIATED 0
|
||||
#define IPWPS_ASSOC_STATE_CONN_SUCCESS 1
|
||||
#define IPWPS_ASSOC_STATE_CONFIG_FAIL 2
|
||||
#define IPWPS_ASSOC_STATE_ASSOC_FAIL 3
|
||||
#define IPWPS_ASSOC_STATE_IP_FAIL 4
|
||||
|
||||
/* WPS "AUTHENTICATION TYPE FLAGS" VALUES */
|
||||
#define IPWPS_AUTH_TYPE_OPEN 0x0001
|
||||
#define IPWPS_AUTH_TYPE_WPAPSK 0x0002
|
||||
#define IPWPS_AUTH_TYPE_SHARED 0x0004
|
||||
#define IPWPS_AUTH_TYPE_WPA 0x0008
|
||||
#define IPWPS_AUTH_TYPE_WPA2 0x0010
|
||||
#define IPWPS_AUTH_TYPE_WPA2PSK 0x0020
|
||||
|
||||
/* WPS "ENCRYPTION TYPE FLAGS" VALUES */
|
||||
#define IPWPS_ENCRYPT_TYPE_NONE 0x0001
|
||||
#define IPWPS_ENCRYPT_TYPE_WEP 0x0002
|
||||
#define IPWPS_ENCRYPT_TYPE_TKIP 0x0004
|
||||
#define IPWPS_ENCRYPT_TYPE_AES 0x0008
|
||||
|
||||
/* WPS "CONFIG METHODS" VALUES */
|
||||
#define IPWPS_CONFIG_METHOD_USBA 0x0001
|
||||
#define IPWPS_CONFIG_METHOD_ETHERNET 0x0002
|
||||
#define IPWPS_CONFIG_METHOD_LABEL 0x0004
|
||||
#define IPWPS_CONFIG_METHOD_DISPLAY 0x0008
|
||||
#define IPWPS_CONFIG_METHOD_EXTNFCTOK 0x0010
|
||||
#define IPWPS_CONFIG_METHOD_INTNFCTOK 0x0020
|
||||
#define IPWPS_CONFIG_METHOD_NFCIF 0x0040
|
||||
#define IPWPS_CONFIG_METHOD_PUSHBUTTON 0x0080
|
||||
#define IPWPS_CONFIG_METHOD_KEYPAD 0x0100
|
||||
|
||||
/* WPS "CONNECTION TYPE FLAGS" VALUES */
|
||||
#define IPWPS_CONNECTION_TYPE_ESS 0x01
|
||||
#define IPWPS_CONNECTION_TYPE_IBSS 0x02
|
||||
|
||||
/* WPS "RF BANDS" VALUES */
|
||||
#define IPWPS_RFBAND_2_4GHZ 0x01
|
||||
#define IPWPS_RFBAND_5_0GHZ 0x02
|
||||
|
||||
/* WPS "DRIVER CURRENT MODE */
|
||||
#define IPWPS_DRV_MODE_AP 0x01
|
||||
#define IPWPS_DRV_MODE_INFRA 0x02
|
||||
#define IPWPS_DRV_MODE_ADHOC 0x04
|
||||
|
||||
|
||||
#define IPWPS_PROTO_VERSION_DECODE_MAJOR(ver) (((ver) & 0xf0) >> 4)
|
||||
#define IPWPS_PROTO_VERSION_DECODE_MINOR(ver) ((ver & 0x0f))
|
||||
|
||||
/* Maximum # of credentials supported */
|
||||
#define IPWPS_NUM_CEDENTIALS_MAX 4
|
||||
|
||||
#define IPWPS_SSID_MAXLEN 32 /* excluding null terminating character */
|
||||
#define IPWPS_PROTO_NETWORK_KEY_MAXLEN 64
|
||||
#define IPWPS_PROTO_PASSWORD_MAXLEN 64
|
||||
#define IPWPS_PASSPHRASE_MINLEN 8
|
||||
#define IPWPS_KEYINDEX_MIN 1
|
||||
#define IPWPS_KEYINDEX_MAX 255
|
||||
#define IPWPS_KEYINDEX_DEFAULT 1
|
||||
#define IPWPS_NETINDEX_MIN 1
|
||||
#define IPWPS_NETINDEX_MAX 255
|
||||
#define IPWPS_NETINDEX_DEFAULT 1
|
||||
|
||||
#define IPWPS_PIN_MAXLEN 8
|
||||
#define IPWPS_DEVICE_PASSWORD_MAXLEN 32
|
||||
#define IPWPS_PINMODE_MAXLEN 32 /* String describing the PIN mode (includes NULL terminating character) */
|
||||
|
||||
|
||||
/* IPWPS PIN MODE SYSVAR VALUES (MAKE SURE LENGTH WITH NULL TERMINATING CHARACTER IS <= IPWPS_PINMODE_MAXLEN) */
|
||||
#define IPWPS_PINMODE_AUTO "auto"
|
||||
#define IPWPS_PINMODE_HARDCODE "hardcoded"
|
||||
#define IPWPS_PINMODE_INTERACT_USER "interactive_user"
|
||||
#define IPWPS_PINMODE_INTERACT_REGS "interactive_regs"
|
||||
|
||||
/* IPWPS EAP Identities */
|
||||
#define IPWPS_EAP_ID_ENROLEE "WFA-SimpleConfig-Enrollee-1-0"
|
||||
|
||||
/* IPWPS Credential Configuration methods (Make sure strlen of each is < IPWPS_CREDENTIALS_CONFIG_METHOD_STRLEN) */
|
||||
#define IPWPS_CRED_CONFIG_METHOD_AUTO "auto"
|
||||
#define IPWPS_CRED_CONFIG_METHOD_DEFAULT "default"
|
||||
#define IPWPS_CRED_CONFIG_METHOD_INTERACT "interact"
|
||||
|
||||
/* IPWPS Credential Configuration values */
|
||||
#define IPWPS_CRED_AUTH_OPEN "open"
|
||||
#define IPWPS_CRED_AUTH_WPA "wpa"
|
||||
#define IPWPS_CRED_AUTH_WPA2 "wpa2"
|
||||
#define IPWPS_CRED_AUTH_ALL "all"
|
||||
#define IPWPS_CRED_ENCR_TKIP "tkip"
|
||||
#define IPWPS_CRED_ENCR_AES "aes"
|
||||
#define IPWPS_CRED_ENCR_ALL "all"
|
||||
|
||||
/* WPS Timer Values */
|
||||
#define IPWPS_WALK_TIME_SECONDS 120
|
||||
#define IPWPS_MONITOR_TIME_SECONDS 120
|
||||
#define IPWPS_PROTO_COMPLETE_SECONDS 120 /* Overall timeout for WPS Protocol exchange to complete */
|
||||
|
||||
#define IPWPS_DEVICE_PASSWORD_PENDING_SECONDS 30 /* Time to wait for user to enter a PIN to be entered */
|
||||
|
||||
/* Common macros */
|
||||
#define IPWPS_BOOL_STRING(boolval) ((boolval) ? "TRUE" : "FALSE")
|
||||
#define IPWPS_ENABLED_STRING(boolval) ((boolval) ? "Enabled" : "Disabled")
|
||||
#define IPWPS_ENABLED_STRING_CAPS(boolval) ((boolval) ? "ENABLED" : "DISABLED")
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 5 TYPES
|
||||
****************************************************************************
|
||||
*/
|
||||
typedef enum {
|
||||
IPWPS_UUID_E,
|
||||
IPWPS_UUID_R,
|
||||
IPWPS_AP_UUID_E
|
||||
} Ipwps_uuid_specifier;
|
||||
|
||||
|
||||
/* WPS Session Status */
|
||||
typedef enum {
|
||||
IPWPS_SESSION_STATUS_IDLE = 0, /* Clear previous status */
|
||||
IPWPS_SESSION_STATUS_IN_PROGRESS,
|
||||
IPWPS_SESSION_STATUS_ERROR,
|
||||
IPWPS_SESSION_STATUS_SESSION_OVERLAP,
|
||||
IPWPS_SESSION_STATUS_SUCCESS,
|
||||
IPWPS_ENROLLEE_JOIN_SUCCESS,
|
||||
IPWPS_ENROLLEE_JOIN_FAIL
|
||||
} Ipwps_session_status;
|
||||
|
||||
/* IPWPS PIN MODE VALUES */
|
||||
typedef enum {
|
||||
IPWPS_PINMODE_VAL_AUTO,
|
||||
IPWPS_PINMODE_VAL_HARDCODE,
|
||||
IPWPS_PINMODE_VAL_INTERACT_USER,
|
||||
IPWPS_PINMODE_VAL_INTERACT_REGS
|
||||
} ipwps_pin_mode;
|
||||
|
||||
/* WPS AP Status */
|
||||
typedef enum {
|
||||
IPWPS_AP_STATUS_IDLE = 0,
|
||||
IPWPS_AP_STATUS_INIT,
|
||||
IPWPS_AP_STATUS_RUNNING,
|
||||
IPWPS_AP_STATUS_ERROR = -1
|
||||
} Ipwps_ap_status;
|
||||
|
||||
/* WPS Registrar Status */
|
||||
typedef enum {
|
||||
IPWPS_REGISTRAR_STATUS_IDLE = 0,
|
||||
IPWPS_REGISTRAR_STATUS_READY,
|
||||
IPWPS_REGISTRAR_STATUS_SELECTED,
|
||||
IPWPS_REGISTRAR_STATUS_ERROR = -1
|
||||
} Ipwps_registrar_status;
|
||||
|
||||
/* WPS Enrollee Status */
|
||||
typedef enum {
|
||||
IPWPS_ENROLLEE_STATUS_IDLE = 0,
|
||||
IPWPS_ENROLLEE_STATUS_STARTED,
|
||||
IPWPS_ENROLLEE_STATUS_ERROR = -1
|
||||
} Ipwps_enrollee_status;
|
||||
|
||||
/* WPS Enrollee AP Join Status */
|
||||
typedef enum {
|
||||
IPWPS_ENROLLEE_APJOIN_STATUS_NOT_ATTEMPTED = 0,
|
||||
IPWPS_ENROLLEE_APJOIN_STATUS_SUCCESSFUL,
|
||||
IPWPS_ENROLLEE_APJOIN_STATUS_FAILED = -1
|
||||
} Ipwps_enrollee_apjoin_status;
|
||||
|
||||
/* WPS "DEVICE PASSWORD ID" */
|
||||
typedef enum {
|
||||
IPWPS_DEVPWDID_INVALID = 0,
|
||||
IPWPS_DEVPWDID_DEFAULT_PIN,
|
||||
IPWPS_DEVPWDID_USER_SPECIFIED,
|
||||
IPWPS_DEVPWDID_MACHINE_SPECIFIED,
|
||||
IPWPS_DEVPWDID_PUSHBUTTON,
|
||||
IPWPS_DEVPWDID_REGISTRAR_SPECIFIED
|
||||
} Ipwps_device_pwdid;
|
||||
|
||||
typedef enum {
|
||||
IPWPS_PEER_UNKNOWN = 0,
|
||||
IPWPS_PEER_ENROLLEE,
|
||||
IPWPS_PEER_AP,
|
||||
IPWPS_PEER_REGISTRAR
|
||||
} Ipwps_peer_type;
|
||||
|
||||
/* IPWPS Credential Method */
|
||||
typedef enum {
|
||||
IPWPS_CERDENTIAL_METHOD_NOTSET = 0,
|
||||
IPWPS_CERDENTIAL_METHOD_AUTO,
|
||||
IPWPS_CERDENTIAL_METHOD_DEFAULT,
|
||||
IPWPS_CERDENTIAL_METHOD_INTERACTIVE
|
||||
} Ipwps_credential_method;
|
||||
|
||||
typedef struct {
|
||||
Ip_bool valid;
|
||||
Ipwps_peer_type type;
|
||||
Ip_u8 rf_band;
|
||||
char ssid[IPWPS_SSID_MAXLEN+1];
|
||||
Ip_u8 bssid[6];
|
||||
Ip_u8 mac_addr[6];
|
||||
} Ipwps_peer_info;
|
||||
|
||||
typedef struct Ipwps_device_type_st {
|
||||
Ip_u16 category_id;
|
||||
Ip_u16 subcat_id;
|
||||
Ip_u8 oui[4];
|
||||
} Ipwps_device_type;
|
||||
|
||||
/* WPS Protocol data struct */
|
||||
typedef struct Ipwps_proto_data_st {
|
||||
Ip_u16 len;
|
||||
Ip_u8 data[IPWPS_PROTO_MSG_DATALEN_MAX];
|
||||
} Ipwps_proto_data;
|
||||
|
||||
typedef enum {
|
||||
IPWPS_OPSTATUS_OK = 0,
|
||||
IPWPS_OPSTATUS_PENDING,
|
||||
IPWPS_OPSTATUS_FAIL = -1,
|
||||
IPWPS_OPSTATUS_TIMEOUT = -2
|
||||
} Ipwps_operation_status;
|
||||
|
||||
typedef enum {
|
||||
IPWPS_PBC_EVENT_PUSHBUTTON
|
||||
} Ipwps_pbc_event;
|
||||
|
||||
typedef enum {
|
||||
IPWPS_PIN_EVENT_SETPIN,
|
||||
IPWPS_PIN_EVENT_GETPIN,
|
||||
IPWPS_PIN_EVENT_NEWPIN, /* Generate a new PIN if in auto PIN mode */
|
||||
IPWPS_PIN_EVENT_SET_CM /* Set the current PIN Config Method */
|
||||
} Ipwps_pin_event;
|
||||
|
||||
typedef enum {
|
||||
IPWPS_ENROLLEE_EVENT_START,
|
||||
IPWPS_ENROLLEE_EVENT_STOP
|
||||
} Ipwps_enrollee_event;
|
||||
|
||||
typedef enum {
|
||||
IPWPS_REGISTRAR_EVENT_START,
|
||||
IPWPS_REGISTRAR_EVENT_STOP
|
||||
} Ipwps_registrar_event;
|
||||
|
||||
typedef enum {
|
||||
IPWPS_CREDENTIAL_EVENT_SETMETHOD,
|
||||
IPWPS_CREDENTIAL_EVENT_ADDCRED,
|
||||
IPWPS_CREDENTIAL_EVENT_DELCRED,
|
||||
IPWPS_CREDENTIAL_EVENT_NEWCRED
|
||||
} Ipwps_credential_event;
|
||||
|
||||
typedef union {
|
||||
Ipwps_pbc_event pbc_event;
|
||||
Ipwps_pin_event pin_event;
|
||||
Ipwps_enrollee_event enrollee_event;
|
||||
Ipwps_registrar_event registrar_event;
|
||||
Ipwps_credential_event credential_event;
|
||||
} Ipwps_event_type;
|
||||
|
||||
typedef struct Ipwps_event_data_st {
|
||||
Ip_bool valid; /* Set to IP_TRUE if the event_data is valid (i.e. contains something) */
|
||||
union {
|
||||
Ip_u16 config_method;
|
||||
struct {
|
||||
Ip_u8 val[IPWPS_PIN_MAXLEN+1]; /* Null terminated string containing the pin */
|
||||
Ipwps_device_pwdid dev_pwdid; /* Device Password Id for pin. One of:
|
||||
* IPWPS_DEVPWDID_DEFAULT_PIN
|
||||
* IPWPS_DEVPWDID_USER_SPECIFIED
|
||||
* IPWPS_DEVPWDID_REGISTRAR_SPECIFIED
|
||||
*/
|
||||
} pin;
|
||||
Ipwps_credential_method credential_method; /* Used by the IPWPS_CREDENTIAL_EVENT_SETMETHOD event */
|
||||
Ip_u16 credential_setno; /* Set # for the credential specified by the
|
||||
IPWPS_CREDENTIAL_EVENT_ADDCRED/IPWPS_CREDENTIAL_EVENT_DELCRED event */
|
||||
} u;
|
||||
} Ipwps_event_data;
|
||||
|
||||
typedef struct Ipwps_event_msg_st {
|
||||
Ipwps_event_type event_type;
|
||||
Ipwps_event_data event_data;
|
||||
} Ipwps_event_msg;
|
||||
|
||||
typedef struct Ipwps_dev_pwd_container_st {
|
||||
Ip_u8 pwd[IPWPS_DEVICE_PASSWORD_MAXLEN];
|
||||
Ip_u16 len;
|
||||
} Ipwps_dev_pwd_container;
|
||||
|
||||
/* WPS Capability Information */
|
||||
typedef struct Ipwps_capability_info_st {
|
||||
Ip_u8 conn_types; /* Bit-ORed values from WPS "CONNECTION TYPE FLAGS" VALUES in "ipwps_common.h" */
|
||||
Ip_u16 auth_types; /* Bit-ORed values from WPS "AUTHENTICATION TYPE FLAGS" VALUES in "ipwps_common.h" */
|
||||
Ip_u16 encr_types; /* Bit-ORed values from WPS "ENCRYPTION TYPE FLAGS" VALUES in "ipwps_common.h" */
|
||||
Ip_u16 config_methods; /* Bit-ORed values from WPS "CONFIG METHODS" VALUES in "ipwps_common.h" */
|
||||
} Ipwps_capability_info;
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* END OF FILE
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user