freewtp/src/wtp/wtp.h
vemax78 025880583c Changed the management of the wireless interfaces, from creation to usage.
The virtual interfaces are created at the startup of the wtp to reduce the time
required to configure a wireless interface.
Applied some patches to build the WTP on OpenWRT trunk
2014-02-08 18:03:38 +01:00

174 lines
4.3 KiB
C

#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"
#include "wifi_drivers.h"
/* 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
#define WTP_ERROR_INIT_BINDING -1003
#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
#define WTP_INIT_REMOTE_SEQUENCE 0xff
/* 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;
};
/* */
struct wtp_fds {
struct pollfd* fdspoll;
int fdstotalcount;
int fdsnetworkcount;
struct wifi_event* events;
int eventscount;
};
/* WTP */
struct wtp_t {
int standalone;
int running;
char wlanprefix[IFNAMSIZ];
/* */
struct capwap_network net;
struct wtp_fds fds;
/* */
struct wtp_state dfa;
struct capwap_wtpname_element name;
struct capwap_acname_element acname;
struct capwap_location_element location;
unsigned short binding;
struct capwap_discoverytype_element discoverytype;
struct capwap_wtpframetunnelmode_element mactunnel;
struct capwap_wtpmactype_element mactype;
struct capwap_wtpboarddata_element boarddata;
struct capwap_wtpdescriptor_element descriptor;
struct capwap_sessionid_element sessionid;
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;
/* */
unsigned char localseqnumber;
unsigned char remoteseqnumber;
unsigned short mtu;
unsigned short fragmentid;
struct capwap_list* requestfragmentpacket;
struct capwap_list* responsefragmentpacket;
unsigned char lastrecvpackethash[16];
/* */
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;
/* */
struct capwap_array* radios;
/* Radio ACL */
int defaultaclstations;
struct capwap_hash* aclstations;
/* Dtls */
int enabledtls;
unsigned char dtlsdatapolicy;
unsigned char validdtlsdatapolicy;
struct capwap_dtls_context dtlscontext;
struct capwap_dtls ctrldtls;
struct capwap_dtls datadtls;
int teardown;
};
extern struct wtp_t g_wtp;
/* */
int wtp_update_radio_in_use();
void wtp_free_fds(struct wtp_fds* fds);
/* 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);
#endif /* __CAPWAP_WTP_HEADER__ */