691 lines
20 KiB
C
Executable File
691 lines
20 KiB
C
Executable File
|
|
|
|
#ifndef LIB1x_COMMON_H
|
|
#define LIB1x_COMMON_H
|
|
|
|
|
|
//--------------------------------------------------
|
|
// IEEE 802.1x Implementation
|
|
//
|
|
// File : common.h
|
|
// Programmer : Arunesh Mishra
|
|
//
|
|
// Contains all common declarations and definitions.
|
|
// Copyright (c) Arunesh Mishra 2002
|
|
// All rights reserved.
|
|
// Maryland Information and Systems Security Lab
|
|
// University of Maryland, College Park.
|
|
//--------------------------------------------------
|
|
|
|
#include<assert.h>
|
|
#include<stdarg.h>
|
|
#include<sys/types.h>
|
|
#include<stdio.h>
|
|
#include <syslog.h> // david+2006-03-31, for add event to syslog
|
|
#include <stdlib.h>
|
|
|
|
#include <sys/socket.h>
|
|
#include <arpa/inet.h>
|
|
#include <netinet/in.h>
|
|
|
|
#include "rtk_arch.h"
|
|
|
|
#ifndef RTL_WPA_CLIENT
|
|
#if !defined(CONFIG_RTL8186_TR) && !defined(CONFIG_RTL865X_AC)
|
|
#define RTL_WPA_CLIENT
|
|
//#define DBG_WPA_CLIENT
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef _RTL_WPA_WINDOWS
|
|
|
|
#else
|
|
#include "1x_types.h"
|
|
#include "1x_ethernet.h"
|
|
#include "1x_kmsm_keydef.h"
|
|
#endif
|
|
|
|
#ifdef RTL_WPA2
|
|
#include "1x_list.h"
|
|
#endif
|
|
|
|
#if defined(CONFIG_RTL8186_TR) || defined(CONFIG_RTL865X_SC) || defined(CONFIG_RTL865X_AC) || defined(CONFIG_RTL865X_KLD)
|
|
#define _NOTICE "tag:NOTICE;log_num:13;msg:"
|
|
#define _CMD "exlog /tmp/log_web.lck /tmp/log_web"
|
|
|
|
#define LOG_MSG_NOTICE(fmt, args...) { \
|
|
char tmpbuf[400]; \
|
|
sprintf(tmpbuf, "%s \"%s" fmt "\"", _CMD, _NOTICE, ## args); \
|
|
system(tmpbuf); \
|
|
}
|
|
#endif
|
|
|
|
#ifdef CONFIG_IEEE80211W
|
|
union PN48 {
|
|
unsigned long long val48;
|
|
|
|
struct {
|
|
unsigned char TSC7;
|
|
unsigned char TSC6;
|
|
unsigned char TSC5;
|
|
unsigned char TSC4;
|
|
unsigned char TSC3;
|
|
unsigned char TSC2;
|
|
unsigned char TSC1;
|
|
unsigned char TSC0;
|
|
} _byte_;
|
|
};
|
|
#endif /* CONFIG_IEEE80211W */
|
|
|
|
#ifdef CONFIG_RTL_802_1X_CLIENT_SUPPORT
|
|
typedef enum { EAP_MD5=0, EAP_TLS=1, EAP_PEAP=2 } EAP_TYPE_T;
|
|
typedef enum { INSIDE_MSCHAPV2=0 } INSIDE_TYPE_T;
|
|
typedef enum { PHYBAND_OFF=0, PHYBAND_2G=1, PHYBAND_5G=2 } PHYBAND_TYPE_T;
|
|
#define MAX_EAP_USER_ID_LEN 64
|
|
#define MAX_RS_USER_NAME_LEN 64
|
|
#define MAX_RS_USER_PASS_LEN 64
|
|
#define MAX_RS_USER_CERT_PASS_LEN 64
|
|
//#define RS_USER_CERT (TOP_CONFIG_DIR "/1x/client.pem")
|
|
#define RS_USER_CERT_2G (TOP_CONFIG_DIR "/1x/client_2g.pem")
|
|
#define RS_USER_CERT_5G (TOP_CONFIG_DIR "/1x/client_5g.pem")
|
|
//#define RS_ROOT_CERT (TOP_CONFIG_DIR "/1x/ca.pem")
|
|
#define RS_ROOT_CERT_2G (TOP_CONFIG_DIR "/1x/ca_2g.pem")
|
|
#define RS_ROOT_CERT_5G (TOP_CONFIG_DIR "/1x/ca_5g.pem")
|
|
//#define XSUP_CONF_FILE (TOP_CONFIG_DIR "/1x/1x.conf")
|
|
#define XSUP_CONF_FILE_NAME_FMT (TOP_CONFIG_DIR "/1x/1x-%s.conf")
|
|
//#define XSUP_CONF_MODULE_FILE (TOP_CONFIG_DIR "/1x/1x_module.conf")
|
|
#define XSUP_MD5_CONF_MODULE_FILE (TOP_CONFIG_DIR "/1x/1x_module_md5.conf")
|
|
#define XSUP_TLS_CONF_MODULE_FILE (TOP_CONFIG_DIR "/1x/1x_module_tls.conf")
|
|
#define XSUP_PEAP_CONF_MODULE_FILE (TOP_CONFIG_DIR "/1x/1x_module_peap.conf")
|
|
#endif
|
|
|
|
#define MAX_RS_NAS_PORT_ID_LEN 64
|
|
#define IP_ADDRSIZE 50
|
|
|
|
#define INC(X) { (X) = (X) + 1; if (X > 255) X = 0; /*write(1, "\n[INC]\n", sizeof("\n[INC]\n"));*/};
|
|
|
|
#define MESS_BUF_SIZE 512
|
|
#define MESS_DBG_AUTH 1
|
|
#define MESS_DBG_AUTHSM 9
|
|
#define MESS_DBG_AUTHNET 8
|
|
#define MESS_DBG_KRCSM 5
|
|
#define MESS_DBG_KXSM 6
|
|
#define MESS_DBG_SUPP 2
|
|
#define MESS_DBG_NAL 7
|
|
#define MESS_DBG_BSM 10
|
|
#define MESS_DBG_RAD 11
|
|
#define MESS_DBG_PTSM 13
|
|
#define MESS_AUTH_LOG 4
|
|
#define MESS_ERROR_OK 16
|
|
#define MESS_ERROR_FATAL 17
|
|
#define MESS_DBG_SPECIAL 12
|
|
#define MESS_DBG_DAEMON 18
|
|
#define MESS_DBG_KEY_MANAGE 19
|
|
#define MESS_DBG_CONTROL 20 //2003-06-13
|
|
#define MESS_DBG_RSNINFO 21
|
|
#define MESS_DBG_CONFIG 22
|
|
#define MESS_DBG_ACCT 23
|
|
#define MESS_DBG_FIFO 24
|
|
|
|
|
|
#define MAX_SUPPLICANT 32
|
|
#define MAX_RCV_FIFO 2048
|
|
//#define LIB1X_RAD_SHARED 100
|
|
|
|
|
|
|
|
#define LIB1X_AUTH_INDEX 0xfff
|
|
struct PKT_LSTNR_tag;
|
|
struct PKT_XMIT_tag;
|
|
|
|
//---- Basic Timer Unit in useconds ----
|
|
//#define LIB1X_BASIC_TIMER_UNIT 100000
|
|
// kenny
|
|
//#define LIB1X_BASIC_TIMER_UNIT 1000000
|
|
#define LIB1X_BASIC_TIMER_UNIT 100000
|
|
#define SECONDS_TO_TIMERCOUNT(x) ((x*1000000)/LIB1X_BASIC_TIMER_UNIT)
|
|
#define USECONDS_TO_TIMERCOUNT(x) (x/LIB1X_BASIC_TIMER_UNIT)
|
|
// use the following macro to replace usleep interrupt by timer
|
|
#define LIB_USLEEP(x) {\
|
|
int i;\
|
|
for(i=0; i < USECONDS_TO_TIMERCOUNT(x) ; i++)\
|
|
if(usleep(x) == 0)\
|
|
break;\
|
|
}
|
|
|
|
|
|
#define INC_GLOBAL_SESSION_ID(X) ((X==0xffffffff)?X=0:X++)
|
|
typedef struct Timers_tag
|
|
{
|
|
int authWhile;
|
|
// Used by the Supplicant PAE to determine how long to wait for
|
|
// a response from the Authenticator.
|
|
int aWhile;
|
|
// Used by the Backend Authentication state machine in order to
|
|
// determine timeout conditions in the exchanges between the
|
|
// Authenticator and Supplicant or Auth Server.
|
|
int heldWhile;
|
|
// Used by Supplicant state machine to define periods of time
|
|
// during which it will not attempt to acquire an Authenticator.
|
|
int quietWhile;
|
|
// During this period Authenticator will not acquire supplicant.
|
|
int reAuthWhen;
|
|
// A timer used by the Reauthentication Timer state machine in
|
|
// order to determine when re-authentication of the Supplicant
|
|
// takes place.
|
|
int startWhen;
|
|
// Used by Supplicant PAE state machine to determine when an
|
|
// EAPOL start PDU is to be transmitted.
|
|
int txWhen;
|
|
|
|
} Timers;
|
|
|
|
struct Auth_Pae_tag;
|
|
struct Supp_Pae_tag; // these here to make "# includes" consistent
|
|
struct lib1x_ptsm;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// RSN Related
|
|
//-----------------------------------------------------------------------
|
|
#define DOT11_MAX_ALGORITHMS 0x0a
|
|
|
|
typedef struct _DOT11_AlgoElement
|
|
{
|
|
u_long Index;
|
|
u_long AlgoId;
|
|
BOOLEAN Enabled;
|
|
}DOT11_AlgoElement;
|
|
|
|
typedef struct _DOT11_AlgoSuit
|
|
{
|
|
u_long NumOfAlgo;
|
|
DOT11_AlgoElement AlgoTable[DOT11_MAX_ALGORITHMS];
|
|
}DOT11_AlgoSuit;
|
|
|
|
typedef struct _DOT11_RSN_AUTHENTICATOR_VARIABLE
|
|
{
|
|
|
|
//RSN related variable
|
|
OCTET_STRING AuthInfoElement;
|
|
BOOLEAN isSupportUnicastCipher;
|
|
BOOLEAN isSupportMulticastCipher;
|
|
BOOLEAN isSupportPreAuthentication;
|
|
BOOLEAN isSupportPairwiseAsDefaultKey;
|
|
BOOLEAN Dot1xEnabled;
|
|
BOOLEAN MacAuthEnabled;
|
|
BOOLEAN RSNEnabled;
|
|
#ifdef RTL_WPA2
|
|
BOOLEAN WPAEnabled;
|
|
BOOLEAN WPA2Enabled;
|
|
#endif
|
|
BOOLEAN TSNEnabled;
|
|
int WepMode;
|
|
int NumOfUnicastCipher;
|
|
int NumOfAuthCipher;
|
|
DOT11_AlgoSuit UniCastCipherSuit;
|
|
#ifdef RTL_WPA2
|
|
DOT11_AlgoSuit WPA2UniCastCipherSuit;
|
|
#endif
|
|
DOT11_AlgoSuit MulticastCipherSuit;
|
|
DOT11_AlgoSuit AuthenticationSuit;
|
|
u_char NumOfRxTSC;
|
|
u_char MulticastCipher;
|
|
u_char AuthKeyMethod;
|
|
#ifdef CONFIG_IEEE80211W
|
|
enum mfp_options ieee80211w;
|
|
/* dot11AssociationSAQueryMaximumTimeout (in TUs) */
|
|
unsigned int assoc_sa_query_max_timeout;
|
|
/* dot11AssociationSAQueryRetryTimeout (in TUs) */
|
|
int assoc_sa_query_retry_timeout;
|
|
#endif /* CONFIG_IEEE80211W */
|
|
#ifdef HS2_SUPPORT
|
|
unsigned char bOSEN; // OSU Server-Only Authenticated L2 Encryption Network
|
|
#endif
|
|
|
|
u_char PassPhrase[64];
|
|
// size is not enough because in PasswordHash(), it will use 40 bytes long. 2005-8-8 david
|
|
// u_char PassPhraseKey[32];
|
|
u_char PassPhraseKey[40];
|
|
|
|
char ssid[64];
|
|
|
|
#ifdef RTL_RADIUS_2SET
|
|
BOOLEAN rs2MacAuthEnabled;
|
|
#endif
|
|
}DOT11_RSN_AUTHENTICATOR_VARIABLE;
|
|
|
|
typedef struct _DOT11_RSN_SUPPLICANT_VARIABLE{
|
|
OCTET_STRING SuppInfoElement;
|
|
BOOLEAN isSuppSupportUnicastCipher;
|
|
BOOLEAN isSuppSupportMulticastCipher;
|
|
BOOLEAN isSuppSupportPreAuthentication;
|
|
BOOLEAN isSuppSupportPairwiseAsDefaultKey;
|
|
BOOLEAN RSNEnabled;
|
|
#ifdef RTL_WPA2
|
|
BOOLEAN isPreAuth;
|
|
BOOLEAN WPAEnabled;
|
|
BOOLEAN WPA2Enabled;
|
|
BOOLEAN PMKCached;
|
|
struct _WPA2_PMKSA_Node* cached_pmk_node;
|
|
#endif
|
|
u_char UnicastCipher;
|
|
u_char MulticastCipher;
|
|
#ifdef CONFIG_IEEE80211W
|
|
u_char mgmt_group_cipher;
|
|
#endif /* CONFIG_IEEE80211W */
|
|
u_char NumOfRxTSC;
|
|
DOT11_AlgoSuit AuthSupportUnicastCipherSuit;
|
|
DOT11_AlgoSuit AuthSupportAuthenticationCipherSuit;
|
|
BOOLEAN isAuthSupportPreAuthentication;
|
|
BOOLEAN isAuthSupportPairwiseAsDefaultKey;
|
|
u_char AuthSupportMaxNumOfRxTSC;
|
|
}DOT11_RSN_SUPPLICANT_VARIABLE;
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Radius Key for RSN802dot1x or nonRSN802dot1x
|
|
//-----------------------------------------------------------------------------
|
|
#define RADIUS_KEY_LEN 64
|
|
|
|
typedef enum _RADIUS_KEY_STATUS
|
|
{
|
|
MPPE_SDRCKEY_NONAVALIABLE = 0x00,
|
|
MPPE_SENDKEY_AVALIABLE = 0x01,
|
|
MPPE_RECVKEY_AVALIABLE = 0x02,
|
|
MPPE_SDRCKEY_AVALIABLE = 0x03,
|
|
}RADIUS_KEY_STATUS;
|
|
|
|
typedef struct _RADIUS_KEY
|
|
{
|
|
RADIUS_KEY_STATUS Status;
|
|
OCTET_STRING SendKey;
|
|
OCTET_STRING RecvKey;
|
|
}RADIUS_KEY;
|
|
|
|
|
|
|
|
|
|
|
|
//Added to support WPA
|
|
struct Auth_PairwiseKeyManage_tag;
|
|
struct Supp_PairwiseKeyManage_tag;
|
|
struct Auth_GroupKeyManage_tag;
|
|
struct _Dot1x_Authenticator;
|
|
struct _Dot1x_Client;
|
|
//End Added
|
|
|
|
typedef struct _Dot11RSNConfigEntry {
|
|
//dot11RSNConfigIndex InterfaceIndexOrZero,
|
|
int Version;
|
|
int PairwiseKeysSupported;
|
|
OCTET_STRING MulticastCipher;
|
|
int GroupRekeyMethod;
|
|
u_long GroupRekeyTime;
|
|
u_long GroupRekeyPackets;
|
|
BOOLEAN GroupRekeyStrict;
|
|
OCTET_STRING PSKValue;
|
|
//u_char* PSKPassPhrase DisplayString,
|
|
BOOLEAN TSNEnabled;
|
|
u_long GroupMasterRekeyTime;
|
|
u_long GroupUpdateTimeOut;
|
|
u_long GroupUpdateCount;
|
|
u_long PairwiseUpdateTimeOut;
|
|
u_long PairwiseUpdateCount;
|
|
}Dot11RSNConfigEntry;
|
|
|
|
typedef struct Global_Params_tag
|
|
{
|
|
BOOLEAN authAbort;
|
|
BOOLEAN authFail;
|
|
BOOLEAN authStart;
|
|
BOOLEAN authTimeout;
|
|
BOOLEAN authSuccess;
|
|
int currentId; // Id for current authentication session
|
|
BOOLEAN initialize;
|
|
PORT_MODE_TYPE portControl;
|
|
BOOLEAN portEnabled;
|
|
PORT_STATUS_TYPE portStatus;
|
|
BOOLEAN reAuthenticate;
|
|
int receivedId;
|
|
PORT_STATUS_TYPE suppStatus;
|
|
|
|
struct lib1x_ptsm * timers;
|
|
|
|
//ROLE currentRole;
|
|
int index;
|
|
|
|
struct Auth_Pae_tag * theAuthenticator;
|
|
struct Supp_Pae_tag * theSupplicant;
|
|
|
|
struct TxRx_Params_tag * TxRx;
|
|
|
|
//Added to support WPA
|
|
struct Auth_PairwiseKeyManage_tag *akm_sm;
|
|
struct Supp_PairwiseKeyManage_tag *skm_sm;
|
|
|
|
OCTET_STRING EAPOLMsgRecvd; //The Overall 802.1x message
|
|
OCTET_STRING EAPOLMsgSend; //The Overall 802.1x message
|
|
OCTET_STRING EapolKeyMsgRecvd; //The start point of eapol-key payload
|
|
OCTET_STRING EapolKeyMsgSend;
|
|
int AuthKeyMethod;
|
|
RADIUS_KEY RadiusKey;
|
|
BOOLEAN PreshareKeyAvaliable;
|
|
#ifdef RTL_WPA2
|
|
// kenny PMK_LEN should be enough
|
|
u_char PSK[PMK_LEN];
|
|
#else
|
|
u_char PSK[PMK_LEN * 2];
|
|
#endif
|
|
u_char MaxRetryCounts;
|
|
u_char EventId;
|
|
BOOLEAN portSecure;
|
|
u_char DescriptorType; //initialize to 254 in RSN
|
|
u_char KeyDescriptorVer;
|
|
u_char CurrentAddress[ETHER_ADDRLEN];
|
|
BOOLEAN bMacAuthEnabled;
|
|
#ifdef CONFIG_IEEE80211W
|
|
BOOLEAN mgmt_frame_prot;
|
|
#endif /* CONFIG_IEEE80211W */
|
|
|
|
|
|
//RSNIE related variable
|
|
struct _DOT11_RSN_SUPPLICANT_VARIABLE RSNVariable;
|
|
Dot11RSNConfigEntry Dot11RSNConfig;
|
|
|
|
struct _Dot1x_Authenticator *auth;
|
|
//End Added WPA
|
|
|
|
} Global_Params;
|
|
|
|
|
|
typedef struct TxRx_Params_tag
|
|
{
|
|
u_char oursvr_addr[ETHER_ADDRLEN]; // ethernet address of the server interface
|
|
u_char oursupp_addr[ETHER_ADDRLEN]; // ethernet address of the supplicant interface
|
|
//u_char supp_addr[ETHER_ADDRLEN];
|
|
u_char svr_addr[ETHER_ADDRLEN];
|
|
|
|
// Device name
|
|
u_char * device_supp;
|
|
u_char * device_svr;
|
|
|
|
char * device_wlan0;
|
|
|
|
// Interface to three daemon (1)ethernet (2)wireless (3)driver
|
|
struct lib1x_nal_intfdesc * network_svr;
|
|
struct lib1x_nal_intfdesc * network_supp;
|
|
#ifdef RTL_WPA2_PREAUTH
|
|
struct lib1x_nal_intfdesc * network_ds; // via the DS, i.e. eth0 or br0?
|
|
#endif
|
|
int fd_control;
|
|
|
|
FILE * debugsm;
|
|
struct in_addr ourip_inaddr, svrip_inaddr, acctip_inaddr;
|
|
u_short udp_ourport;
|
|
u_short udp_svrport;
|
|
u_short udp_acctport;
|
|
struct sockaddr_in radsvraddr;
|
|
struct sockaddr_in acctsvraddr;
|
|
|
|
#ifdef RTL_RADIUS_2SET
|
|
struct lib1x_nal_intfdesc * network_svr2;
|
|
struct in_addr svrip_inaddr2;
|
|
u_short udp_svrport2;
|
|
struct sockaddr_in radsvraddr2;
|
|
u_short flag_replaced;
|
|
struct in_addr acctip_inaddr2;
|
|
u_short udp_acctport2;
|
|
struct sockaddr_in acctsvraddr2;
|
|
#endif
|
|
|
|
u_char GlobalRadId;
|
|
|
|
// Added to support fifo architecture
|
|
int readfifo;
|
|
int dummyfd;
|
|
u_char RecvBuf[MAX_RCV_FIFO];
|
|
OCTET_STRING RListenFIFO;
|
|
|
|
} TxRx_Params;
|
|
|
|
|
|
typedef enum { DISABLE, ENABLE } Switch;
|
|
|
|
typedef struct _Dot1x_Supplicant
|
|
{
|
|
int index;
|
|
BOOLEAN isEnable;
|
|
BOOLEAN isEAPCapable;
|
|
//unsigned char addr[ETHER_ADDRLEN];
|
|
Global_Params *global;
|
|
} Dot1x_Supplicant;
|
|
|
|
|
|
#if 0
|
|
typedef struct
|
|
{
|
|
unsigned short aid;
|
|
unsigned char addr[6];
|
|
unsigned long tx_packets;
|
|
unsigned long rx_packets;
|
|
unsigned long expired_time; // 10 msec unit
|
|
unsigned short flags;
|
|
unsigned char TxOperaRate;
|
|
unsigned char rssi;
|
|
unsigned long link_time; // 1 sec unit
|
|
unsigned long tx_fail;
|
|
} RTL_STA_INFO;
|
|
#endif
|
|
|
|
typedef struct _sta_info_2_web {
|
|
unsigned short aid;
|
|
unsigned char addr[6];
|
|
unsigned long tx_packets;
|
|
unsigned long rx_packets;
|
|
unsigned long expired_time; // 10 msec unit
|
|
unsigned short flags;
|
|
unsigned char TxOperaRate;
|
|
unsigned char rssi;
|
|
unsigned long link_time; // 1 sec unit
|
|
unsigned long tx_fail;
|
|
unsigned long tx_bytes;
|
|
unsigned long rx_bytes;
|
|
unsigned char resv[8];
|
|
} sta_info_2_web;
|
|
|
|
#define RTL_STA_INFO sta_info_2_web
|
|
|
|
typedef struct _Dot1x_Authenticator
|
|
{
|
|
int MaxSupplicant;
|
|
int NumOfSupplicant;
|
|
ROLE currentRole;
|
|
TxRx_Params *GlobalTxRx;
|
|
Dot1x_Supplicant *Supp[MAX_SUPPLICANT];
|
|
OCTET_STRING RadShared; /* NAS and RADIUS */
|
|
OCTET_STRING AcctShared;
|
|
LARGE_INTEGER Dot1xKeyReplayCounter;
|
|
u_long UsePassphrase;
|
|
u_long AuthTimerCount;
|
|
u_long KeyManageTimerCount;
|
|
u_long SessionInfoTimerCount; // Abocom
|
|
u_long IgnoreEAPOLStartCounter;
|
|
u_char svrip[IP_ADDRSIZE+1];
|
|
u_short udp_svrport;
|
|
#ifdef RTL_RADIUS_2SET
|
|
u_short use_2nd_rad;
|
|
u_char svrip2[IP_ADDRSIZE+1];
|
|
u_short udp_svrport2;
|
|
OCTET_STRING RadShared2;
|
|
u_char acctip2[IP_ADDRSIZE+1];
|
|
u_short udp_acctport2;
|
|
OCTET_STRING AcctShared2;
|
|
#endif
|
|
u_char acctip[IP_ADDRSIZE+1];
|
|
u_short udp_acctport;
|
|
u_char WepGroupKey[32];
|
|
|
|
//Added to support WPA
|
|
struct Auth_GroupKeyManage_tag *gk_sm;
|
|
OCTET32_INTEGER Counter;
|
|
u_char CurrentAddress[ETHER_ADDRLEN];
|
|
DOT11_RSN_AUTHENTICATOR_VARIABLE RSNVariable;
|
|
Dot11RSNConfigEntry Dot11RSNConfig;
|
|
u_char IoctlBuf[1024];
|
|
u_long IoctlBufLen;
|
|
BOOLEAN IoctlFlag;
|
|
//end Added
|
|
|
|
//Accounting
|
|
u_long InterimTimeout;
|
|
BOOLEAN SessionTimeoutEnabled;
|
|
BOOLEAN IdleTimeoutEnabled;
|
|
BOOLEAN AccountingEnabled;
|
|
BOOLEAN UpdateInterimEnabled;
|
|
u_long GlobalSessionId;
|
|
Dot1x_Supplicant *authGlobal;
|
|
|
|
// david, fix to 128. If support sta is greater than 128 in wlan driver,
|
|
// this value need be modified.
|
|
// RTL_STA_INFO StaInfo[MAX_SUPPLICANT+1];
|
|
RTL_STA_INFO StaInfo[128+1];
|
|
//-------------------------------------------------------------------------
|
|
|
|
//Server config
|
|
u_long rsMaxReq;
|
|
u_long rsAWhile;
|
|
u_long rsReAuthTO;
|
|
u_long accountRsMaxReq;
|
|
u_long accountRsAWhile;
|
|
|
|
#ifdef RTL_WPA_CLIENT
|
|
struct _Dot1x_Client *client;
|
|
#endif
|
|
|
|
#ifdef RTL_WPA2
|
|
struct list_head pmk_cache;
|
|
#endif
|
|
|
|
#ifdef CONFIG_RTL_802_1X_CLIENT_SUPPORT
|
|
char eapType;
|
|
char eapInsideType;
|
|
char eapUserId[MAX_EAP_USER_ID_LEN+1];
|
|
char rsUserName[MAX_RS_USER_NAME_LEN+1];
|
|
char rsUserPasswd[MAX_RS_USER_PASS_LEN+1];
|
|
char rsUserCertPasswd[MAX_RS_USER_CERT_PASS_LEN+1];
|
|
char rsBandSel;
|
|
#endif
|
|
#ifdef CONFIG_RTL8196C_AP_HCM
|
|
unsigned char hostmac[13];
|
|
unsigned int if_index;
|
|
#endif
|
|
char rsNasPortId[MAX_RS_NAS_PORT_ID_LEN];
|
|
} Dot1x_Authenticator;
|
|
|
|
void lib1x_print_etheraddr( char * s, u_char * addr );
|
|
#ifndef DEBUG_DISABLE //sc_yang
|
|
void lib1x_message( int type, char * msg, ... );
|
|
void lib1x_hexdump( FILE * fdesc, u_char * pkt, int numBytes );
|
|
void lib1x_totext_authpaestate( FILE * fdesc, AUTH_PAE_STATE state );
|
|
void lib1x_totext_bauthsmstate( FILE * fdesc, BAUTH_SM_STATE state );
|
|
void lib1x_chardump( FILE * fdesc, u_char * pkt, int numBytes );
|
|
void lib1x_hexdump2(int type, char *fun, u_char *buf, int size, char *comment);
|
|
void lib1x_PrintAddr(u_char *ucAddr);
|
|
void DUMP_GLOBAL_PARAMS( Global_Params *g, u_char *exp );
|
|
#else
|
|
#define lib1x_message(type, msg...) do{}while(0)
|
|
#define lib1x_hexdump(a, b, c) do{}while(0)
|
|
#define lib1x_totext_authpaestate(a, b) do{}while(0)
|
|
#define lib1x_totext_bauthsmstate(a, b) do{}while(0)
|
|
#define lib1x_chardump(a, b, c) do{}while(0)
|
|
#define lib1x_hexdump2(a, b, c, e , f) do{}while(0)
|
|
#define lib1x_PrintAddr(a) do{}while(0)
|
|
#define DUMP_GLOBAL_PARAMS(a, b) do{}while(0)
|
|
#endif
|
|
|
|
#ifdef CONFIG_IEEE80211W
|
|
#define PMFDEBUG(fmt, args...) printf("[%s %d]"fmt,__FUNCTION__,__LINE__,## args)
|
|
//#define PMFDEBUG(fmt, args...)
|
|
#endif /* CONFIG_IEEE80211W */
|
|
|
|
//sc_yang
|
|
extern void * lib1x_global_signal_info;
|
|
// This variable points to struct lib1x_ptsm , the port timers state machine struct,
|
|
// because we need the signal handler to access some global variable.
|
|
|
|
extern u_char dev_supp[]; // david+2006-03-31, for add event to syslog
|
|
|
|
#ifdef _ABOCOM
|
|
#define ABOCOM_ADD_STA 0
|
|
#define ABOCOM_DEL_STA 1
|
|
void lib1x_abocom(u_char *pucAddr, int ulCommandType);
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define lib1x_Little_S2N(s,c) (*((c) )=(unsigned char)(((s))&0xff), \
|
|
*((c)+1)=(unsigned char)(((s)>>8)&0xff))
|
|
|
|
#define lib1x_Little_N2S(c,s) s = 0,\
|
|
(s =((unsigned long)(*((c) ))), \
|
|
s|=( (unsigned long) (*((c)+1))<<8) )
|
|
|
|
#define lib1x_S2N(s,c) (*((c) )=(unsigned char)(((s)>>8)&0xff), \
|
|
*((c)+1)=(unsigned char)(((s) )&0xff))
|
|
|
|
#define lib1x_N2S(c,s) s = 0,\
|
|
(s =((unsigned long)(*((c) )))<<8, \
|
|
s|=((unsigned long)(*((c)+1))))
|
|
|
|
#define lib1x_L2N(l,c) (*((c) )=(unsigned char)(((l)>>24)&0xff), \
|
|
*((c)+1)=(unsigned char)(((l)>>16)&0xff), \
|
|
*((c)+2)=(unsigned char)(((l)>> 8)&0xff), \
|
|
*((c)+3)=(unsigned char)(((l) )&0xff))
|
|
|
|
#define lib1x_N2L(c,l) l = 0,\
|
|
(l =((unsigned long)(*((c) )))<<24, \
|
|
l|=((unsigned long)(*((c)+1)))<<16, \
|
|
l|=((unsigned long)(*((c)+2)))<< 8, \
|
|
l|=((unsigned long)(*((c)+3))))
|
|
|
|
//----------------------------------------------------------------
|
|
// 1x_kmsm_prf.c
|
|
//----------------------------------------------------------------
|
|
int PasswordHash (
|
|
char *password,
|
|
int passwordlength,
|
|
unsigned char *ssid,
|
|
int ssidlength,
|
|
unsigned char *output);
|
|
|
|
|
|
#ifdef RTL_WPA2
|
|
//----------------------------------------------------------------
|
|
// PMK Cache
|
|
//----------------------------------------------------------------
|
|
|
|
struct _WPA2_PMKSA
|
|
{
|
|
u_char pmkid[PMKID_LEN];
|
|
// u_char aa[6]; // Authenticator MAC Address
|
|
u_char pmk[PMK_LEN];
|
|
// u_long lifetime;
|
|
u_char akmp;
|
|
u_char spa[ETHER_ADDRLEN]; // Supplicant MAC Address
|
|
|
|
};
|
|
|
|
struct _WPA2_PMKSA_Node
|
|
{
|
|
struct list_head node;
|
|
struct _WPA2_PMKSA pmksa;
|
|
};
|
|
|
|
|
|
|
|
#endif /* RTL_WPA2 */
|
|
|
|
#endif /* LIB1x_COMMON_H */
|
|
|