#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; }; /* WTP */ struct wtp_t { int standalone; int running; struct wtp_state dfa; struct capwap_network net; 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; /* Dtls */ int enabledtls; unsigned char dtlsdatapolicy; unsigned char validdtlsdatapolicy; struct capwap_dtls_context dtlscontext; struct capwap_dtls ctrldtls; struct capwap_dtls datadtls; int teardown; }; #define WTP_RADIO_ENABLED 0 #define WTP_RADIO_DISABLED 1 #define WTP_RADIO_HWFAILURE 2 #define WTP_RADIO_SWFAILURE 3 struct wtp_radio { int radioid; char device[IFNAMSIZ]; int status; 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_txpower_element txpower; struct capwap_80211_txpowerlevel_element txpowerlevel; struct capwap_80211_wtpradioconf_element radioconfig; struct capwap_80211_wtpradioinformation_element radioinformation; }; 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); #endif /* __CAPWAP_WTP_HEADER__ */