freewtp/src/wtp/wtp.h

165 lines
4.5 KiB
C
Raw Normal View History

2013-05-01 14:52:55 +02:00
#ifndef __CAPWAP_WTP_HEADER__
#define __CAPWAP_WTP_HEADER__
/* standard include */
#include "capwap.h"
#include "capwap_dtls.h"
#include "capwap_network.h"
#include "capwap_protocol.h"
2013-05-01 21:33:54 +02:00
#include "wifi_drivers.h"
2013-05-01 14:52:55 +02:00
/* WTP Configuration */
#define WTP_STANDARD_CONFIGURATION_FILE "/etc/capwap/wtp.conf"
/* WTP runtime error return code */
#define WTP_ERROR_SYSTEM_FAILER -1000
#define WTP_ERROR_LOAD_CONFIGURATION -1001
#define WTP_ERROR_NETWORK -1002
2013-05-01 21:33:54 +02:00
#define WTP_ERROR_INIT_BINDING -1003
2013-05-01 14:52:55 +02:00
#define WTP_ERROR_MEMORY_LEAK 1
/* Min and max dfa values */
#define WTP_MIN_DISCOVERY_INTERVAL 2
#define WTP_DEFAULT_DISCOVERY_INTERVAL 20
#define WTP_MAX_DISCOVERY_INTERVAL 180
#define WTP_DEFAULT_DISCOVERY_COUNT 10
#define WTP_DEFAULT_SILENT_INTERVAL 30
#define WTP_DEFAULT_RETRANSMIT_INTERVAL 3
#define WTP_MAX_RETRANSMIT 5
#define WTP_MIN_WAITDTLS_INTERVAL 30
#define WTP_DEFAULT_WAITDTLS_INTERVAL 60
#define WTP_DEFAULT_STATISTICSTIMER_INTERVAL 120
#define WTP_DEFAULT_DATACHANNEL_KEEPALIVE 30
#define WTP_DEFAULT_DATACHANNEL_KEEPALIVEDEAD 60
#define WTP_MAX_DATACHANNEL_KEEPALIVEDEAD 240
#define WTP_DEFAULT_ECHO_INTERVAL 30
#define WTP_DEFAULT_DTLS_SESSION_DELETE 5
#define WTP_DEFAULT_FAILED_DTLS_SESSION_RETRY 3
/* WTP State machine */
struct wtp_state {
unsigned long state;
/* Discovery Information */
int rfcDiscoveryInterval;
int rfcMaxDiscoveryInterval;
int rfcDiscoveryCount;
int rfcMaxDiscoveries;
/* Sulking Information */
int rfcSilentInterval;
/* Run */
int rfcEchoInterval;
/* Dtls Information */
int rfcFailedDTLSSessionCount;
int rfcFailedDTLSAuthFailCount;
int rfcMaxFailedDTLSSessionRetry;
/* Request retransmit */
int rfcRetransmitInterval;
int rfcRetransmitCount;
int rfcMaxRetransmit;
/* Data channel */
int rfcDataChannelKeepAlive;
int rfcDataChannelDeadInterval;
/* Dtls */
int rfcWaitDTLS;
int rfcDTLSSessionDelete;
};
/* WTP */
struct wtp_t {
int running;
2013-05-01 14:52:55 +02:00
struct wtp_state dfa;
struct capwap_network net;
2013-05-01 14:52:55 +02:00
struct capwap_wtpname_element name;
struct capwap_acname_element acname;
struct capwap_location_element location;
2013-05-01 14:52:55 +02:00
unsigned short binding;
struct capwap_discoverytype_element discoverytype;
2013-05-01 14:52:55 +02:00
struct capwap_wtpframetunnelmode_element mactunnel;
struct capwap_wtpmactype_element mactype;
struct capwap_wtpboarddata_element boarddata;
struct capwap_wtpdescriptor_element descriptor;
2013-05-01 14:52:55 +02:00
struct capwap_sessionid_element sessionid;
2013-05-01 14:52:55 +02:00
struct capwap_ecnsupport_element ecn;
struct capwap_transport_element transport;
struct capwap_statisticstimer_element statisticstimer;
struct capwap_wtprebootstat_element rebootstat;
struct capwap_packet_rxmng* rxmngctrlpacket;
struct capwap_packet_rxmng* rxmngdatapacket;
2013-05-01 14:52:55 +02:00
unsigned char localseqnumber;
unsigned char remoteseqnumber;
unsigned short mtu;
unsigned short fragmentid;
struct capwap_list* requestfragmentpacket;
struct capwap_list* responsefragmentpacket;
2013-05-01 14:52:55 +02:00
unsigned char lastrecvpackethash[16];
2013-05-01 14:52:55 +02:00
/* */
int acdiscoveryrequest;
unsigned long acpreferedselected;
struct capwap_array* acdiscoveryarray;
struct capwap_array* acpreferedarray;
struct capwap_array* acdiscoveryresponse;
struct sockaddr_storage wtpctrladdress;
struct sockaddr_storage wtpdataaddress;
struct sockaddr_storage acctrladdress;
struct sockaddr_storage acdataaddress;
struct capwap_socket acctrlsock;
struct capwap_socket acdatasock;
2013-05-01 14:52:55 +02:00
struct capwap_array* radios;
2013-05-01 14:52:55 +02:00
/* Dtls */
int enabledtls;
unsigned char dtlsdatapolicy;
unsigned char validdtlsdatapolicy;
struct capwap_dtls_context dtlscontext;
struct capwap_dtls ctrldtls;
struct capwap_dtls datadtls;
};
#define WTP_RADIO_ENABLED 0
#define WTP_RADIO_DISABLED 1
#define WTP_RADIO_HWFAILURE 2
#define WTP_RADIO_SWFAILURE 3
struct wtp_radio {
char device[IFNAMSIZ];
int status;
2013-05-11 15:07:30 +02:00
struct capwap_80211_antenna_element antenna;
struct capwap_80211_directsequencecontrol_element directsequencecontrol;
struct capwap_80211_macoperation_element macoperation;
struct capwap_80211_multidomaincapability_element multidomaincapability;
struct capwap_80211_ofdmcontrol_element ofdmcontrol;
struct capwap_80211_supportedrates_element supportedrates;
struct capwap_80211_wtpradioinformation_element radioinformation;
2013-05-01 14:52:55 +02:00
};
extern struct wtp_t g_wtp;
/* */
int wtp_update_radio_in_use();
/* Build capwap element helper */
void wtp_create_radioadmstate_element(struct capwap_packet_txmng* txmngpacket);
void wtp_create_radioopsstate_element(struct capwap_packet_txmng* txmngpacket);
void wtp_create_80211_wtpradioinformation_element(struct capwap_packet_txmng* txmngpacket);
2013-05-11 15:07:30 +02:00
2013-05-01 14:52:55 +02:00
#endif /* __CAPWAP_WTP_HEADER__ */