242 lines
8.1 KiB
C
242 lines
8.1 KiB
C
/* dot1xCommonIoctls.h - 802.1X required shadow ioctls */
|
|
|
|
/* Copyright 2002-2004 Wind River Systems, Inc. */
|
|
#include "copyright_wrs.h"
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
01n,06jun08,mry Adding events for MIC ERROR notification from driver
|
|
01m,20mar08,mry Removing old supplicant IOCTLs
|
|
01l,31oct07,mry Fix for WIND00109746
|
|
01k,09feb06,rb Added mSSID compatibility
|
|
01j,31aug05,eja Fix for trace bug B0086
|
|
01i,17may05,eja Add API
|
|
01h,10may05,eja Add user mode ioctls
|
|
01g,20apr05,eja Add Base6.1 ioctls
|
|
01f,01mar05,rb Modified definitions of WIOCSDOT1XPORTSTATUS and
|
|
WIOCSAUTHCALLBACK
|
|
01e,23feb05,rb Updated to new IOCTL scheme for WED 2.1
|
|
01d,04feb05,eja 80211i/WPA integration
|
|
01c,18jan05,eja Add structure and enums for 802.11i integration
|
|
01b,11jan05,rb Pruned IOCTL list for new integration with wireless driver
|
|
01a,10jan05,rb Added new IOCTLs for 2.0 release
|
|
*/
|
|
|
|
/*
|
|
DESCRIPTION
|
|
*/
|
|
|
|
#ifndef __INCdot1xCommonIoctlsh
|
|
#define __INCdot1xCommonIoctlsh
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*****************************************************************************
|
|
* Public DOT11 IOCTL Commands
|
|
*****************************************************************************/
|
|
#include "sys/ioctl.h"
|
|
|
|
/* For backwards compatability, define the "user mode" IOCTL macros manually
|
|
if they are not already defined. They should be defined in vxWorks 6.1 and
|
|
higher */
|
|
|
|
#ifndef IOC_USER
|
|
#define IOC_USER 0x8000
|
|
#endif /* IOC_USER */
|
|
|
|
#ifndef _IOU
|
|
#define _IOU(x,y) (IOC_USER | _IO(x,y))
|
|
#endif
|
|
|
|
#ifndef _IORU
|
|
#define _IORU(x,y,t) (IOC_USER | _IOR(x,y,t))
|
|
#endif
|
|
|
|
#ifndef _IOWU
|
|
#define _IOWU(x,y,t) (IOC_USER | _IOW(x,y,t))
|
|
#endif
|
|
|
|
#ifndef _IOWRU
|
|
#define _IOWRU(x,y,t) (IOC_USER | _IOWR(x,y,t))
|
|
#endif
|
|
|
|
/* These are types used to define the access lengths in the "WIOC" IOCTLS */
|
|
#define DOT11_ADDR_LEN 6
|
|
typedef UINT8 DOT11_ADDR[DOT11_ADDR_LEN];
|
|
|
|
#define DOT11_PMK_LEN 32
|
|
typedef UINT8 DOT11_PMK[DOT11_PMK_LEN];
|
|
|
|
/* 802.1X port status enumeration */
|
|
typedef enum
|
|
{
|
|
DOT1X_PORTSTATUS_UNCONTROLLED = 0,
|
|
DOT1X_PORTSTATUS_CLOSED,
|
|
DOT1X_PORTSTATUS_OPEN
|
|
} DOT1X_PORT_STATUS;
|
|
|
|
/* 802.1X port event type enumeration */
|
|
typedef enum
|
|
{
|
|
DOT1X_PORTEVENT_ASSOCIATION = 1,
|
|
DOT1X_PORTEVENT_DISASSOCIATION,
|
|
DOT1X_MICERR_EVENT_PAIR,
|
|
DOT1X_MICERR_EVENT_GROUP
|
|
} DOT1X_PORT_EVENT;
|
|
|
|
typedef struct
|
|
{
|
|
INT32 status; /* Port status */
|
|
UINT8 macAddr[6]; /* mac address of the port */
|
|
} _WRS_PACK_ALIGN(1) DOT1X_PORTSTATUS;
|
|
|
|
typedef struct param_s
|
|
{
|
|
UINT32 callback; /* Callback event handler */
|
|
UINT32 cookie; /* private data */
|
|
} _WRS_PACK_ALIGN(1) DOT1X_PARAMS;
|
|
|
|
typedef struct dot1xIntegration
|
|
{
|
|
UINT8 * pSuppAddr;
|
|
int cmd;
|
|
caddr_t data;
|
|
} DOT11_DOT1X_INT;
|
|
|
|
/***************************************************************************
|
|
* WIOCSCIPHPOL - Set the available cipher suites
|
|
****************************************************************************/
|
|
typedef unsigned long int DOT11_KEY_TYPE;
|
|
#define DOT11_KEY_SEARCH (65536)
|
|
#define DOT11_CIPHPOL_NONE 0
|
|
#define DOT11_CIPHPOL_WEP40 (0x01)
|
|
#define DOT11_CIPHPOL_WEP104 (0x02)
|
|
#define DOT11_CIPHPOL_TKIP (0x04)
|
|
#define DOT11_CIPHPOL_AES (0x08)
|
|
#define DOT11_KEY_TYPE_NONE 0
|
|
#define DOT11_KEY_TYPE_WEP40 DOT11_CIPHPOL_WEP40
|
|
#define DOT11_KEY_TYPE_WEP104 DOT11_CIPHPOL_WEP104
|
|
#define DOT11_KEY_TYPE_TKIP DOT11_CIPHPOL_TKIP
|
|
#define DOT11_KEY_TYPE_AES DOT11_CIPHPOL_AES
|
|
#define DOT11_WEP40_KEY_SIZE 5 /* Bytes */
|
|
#define DOT11_WEP104_KEY_SIZE 13 /* Bytes */
|
|
#define DOT11_AES_KEY_SIZE 16 /* Bytes */
|
|
#define DOT11_TKIP_KEY_SIZE 32 /* 16 Bytes key, 2x8 bytes MIC */
|
|
typedef struct
|
|
{
|
|
DOT11_KEY_TYPE keyType;
|
|
INT32 keySlot; /* Keyslot key was installed to */
|
|
UINT8 macAddr[DOT11_ADDR_LEN];
|
|
union
|
|
{
|
|
UINT8 wep40[DOT11_WEP40_KEY_SIZE];
|
|
UINT8 wep104[DOT11_WEP104_KEY_SIZE];
|
|
UINT8 aes[DOT11_AES_KEY_SIZE];
|
|
UINT8 tkip[DOT11_TKIP_KEY_SIZE];
|
|
} type;
|
|
UINT16 dummy_pad; /* Make struct 4 byte aligned to avoid compiler packing issues */
|
|
} DOT11_KEY;
|
|
|
|
/* Added for broadcom driver support. Its been invented to align support
|
|
* for both broadcom and atheros drivers. */
|
|
#define DOT11_KEY_MAX_WEP_KEY_SIZE DOT11_WEP104_KEY_SIZE
|
|
typedef struct
|
|
{
|
|
/* WARNING */
|
|
/* This member must remain first as the atheros driver is expecting
|
|
* a char * from passed through the ioctl */
|
|
UINT8 wepKey[DOT11_KEY_MAX_WEP_KEY_SIZE];
|
|
UINT8 keyLength;
|
|
} DOT11_WEPKEY;
|
|
|
|
/* These parameters shadow the current wlan ioctls but are defined
|
|
here to reduce unneeded intermodule dependencies */
|
|
#define EIOCGWEPSTATUS (0x20f) /* Get WEP status*/
|
|
#define EIOCSWEP (0x210) /* Enable/disable WEP */
|
|
#define EIOCSWEPKEY0 (0x211) /* Set WEP key 0*/
|
|
#define EIOCSWEPKEY1 (0x212) /* Set WEP key 1*/
|
|
#define EIOCSWEPKEY2 (0x213) /* Set WEP key 2*/
|
|
#define EIOCSWEPKEY3 (0x214) /* Set WEP key 3*/
|
|
#define EIOCSWEPDEFAULTKEY (0x215) /* Set default WEP key */
|
|
#define EIOCSWEPTYPE (0x21d) /* Set WEP type - 64 bit or 128 bit */
|
|
#define EIOCSUNICASTKEYNUM (0x22b) /* Set unicast key slot */
|
|
#define EIOCSMULTICASTKEYNUM (0x22d) /* Set multicast key slot */
|
|
#define EIOCGCONNECTEDBSSID (0x220) /* Get BSSID */
|
|
#define EIOCSAUTHCALLBACK (0x24B) /* Register authentication callback */
|
|
#define EIOCS802DOT1XMODE (0x24C) /* Set 802.1x mode */
|
|
#define EIOCG802DOT1XMODE (0x24D) /* Get 802.1x mode status */
|
|
|
|
#define WIOCGCONNECTEDBSSID _IORU('w', 0x006, DOT11_ADDR)
|
|
#define WIOCGSECPOL _IORU('w', 0x051, UINT32)
|
|
#define WIOCSPMK _IOWU('x', 0x03, DOT11_PMK)
|
|
#define WIOCSAUTHCALLBACK _IOW('x', 0x02,DOT1X_PARAMS)
|
|
#define WIOCSDRVCALLBACK _IOW('x', 0x05,DOT1X_PARAMS)
|
|
#define WIOCSDOT1XPORTSTATUS _IOW('x', 0x01,DOT1X_PORTSTATUS)
|
|
#define WIOCAPAIRWISEKEY _IOWU('w', 0x04f, DOT11_KEY)
|
|
#define WIOCDPAIRWISEKEY _IOWU('w', 0x62, DOT11_ADDR)
|
|
#define WIOCSENCRYPTTYPE _IOU('w', 0x016)
|
|
#define WIOCDPAIRWISEKEY _IOWU('w', 0x62, DOT11_ADDR)
|
|
#define WIOCDOT1XINT _IOWR('x', 0x04, DOT11_DOT1X_INT)
|
|
|
|
|
|
#define ONEX_MODE_ENABLED (1)
|
|
#define DOT11_40_BIT_KEY_SIZE (5) /* Num bytes in 40 bit key */
|
|
#define DOT11_128_BIT_KEY_SIZE (13) /* Num bytes in 128 bit key */
|
|
#define WLAN_WEP_ENABLED (TRUE) /* Use wep */
|
|
#define WLAN_WEP_NUM_KEYS (4) /* Max number of static keys stored */
|
|
#define WLAN_WEP_TYPE_64 (64) /* 40/64 bit encryption */
|
|
#define WLAN_WEP_TYPE_128 (128) /* 104/128 bit encryption */
|
|
#define DOT1X_80211_PMK_LEN (32)
|
|
#define DOT1X_80211_ADDR_LEN (6)
|
|
#define DOT1X_SECPOL_NONE (0)
|
|
#define DOT1X_SECPOL_TSN (1)
|
|
#define DOT1X_SECPOL_WPA (2)
|
|
#define DOT1X_SECPOL_11i (4)
|
|
|
|
/* 802.1x user ioctls */
|
|
typedef struct dot1x_rtp_args
|
|
{
|
|
void *arg0; /* The first argument is the device id */
|
|
char arg1[256]; /* Each arg there after has 256 bytes allocated */
|
|
char arg2[256];
|
|
char arg3[256];
|
|
char arg4[256];
|
|
char arg5[256];
|
|
char arg6[256];
|
|
} DOT1X_RTP_ARGS;
|
|
|
|
/* Ioctl defines */
|
|
|
|
/* dot1xAuthServerLibInit() - Init authentication server */
|
|
#define EIOCAUTHSVRLIBINIT _IORU('d', 0x00F, DOT1X_RTP_ARGS)
|
|
|
|
/* dot1xAuthServerLibShutDown() - Shutdown authentication server */
|
|
#define EIOCAUTHSVRLIBSHUTDOWN _IORU('d', 0x010, DOT1X_RTP_ARGS)
|
|
|
|
/* dot1xAuthInit() - Shutdown authentication server */
|
|
#define EIOCAUTHINIT _IORU('d', 0x020, DOT1X_RTP_ARGS)
|
|
|
|
/* dot1xAuthShutdown() - Shutdown authenticator */
|
|
#define EIOCAUTHSHUTDOWN _IORU('d', 0x030, DOT1X_RTP_ARGS)
|
|
|
|
/* dot1xAuthAttach() - Attach to authenticator */
|
|
#define EIOCAUTHATTACH _IORU('d', 0x040, DOT1X_RTP_ARGS)
|
|
|
|
/* dot1xAuthDetach() - Detach from authenticator */
|
|
#define EIOCAUTHDETACH _IORU('d', 0x050, DOT1X_RTP_ARGS)
|
|
|
|
/* dot1xAuthWlanConfig() - Configure wlan device on authenticator */
|
|
#define EIOCAUTHWLANCONFIG _IORU('d', 0x060, DOT1X_RTP_ARGS)
|
|
|
|
/* Virtual END driver init method - Base6.1 only */
|
|
void *dot1xVirtEndDevInit(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INCdot1xCommonIoctlsh */
|