[wtp] prepare message elements for vendor element handling

convert message element type into a struct{ vendor, type }.
Vendor will be 0 for all RFC types.
This commit is contained in:
Andreas Schultz 2016-03-08 10:21:51 +01:00
parent 140be9b143
commit 471d1058c4
82 changed files with 451 additions and 201 deletions

View File

@ -6,102 +6,108 @@
/* */
#define element_ops(Id, Ops) [(Id) - CAPWAP_MESSAGE_ELEMENTS_START] = &(Ops)
static const struct capwap_message_elements_ops * capwap_message_elements[] = {
element_ops(CAPWAP_ELEMENT_ACDESCRIPTION, capwap_element_acdescriptor_ops),
element_ops(CAPWAP_ELEMENT_ACIPV4LIST, capwap_element_acipv4list_ops),
element_ops(CAPWAP_ELEMENT_ACIPV6LIST, capwap_element_acipv6list_ops),
element_ops(CAPWAP_ELEMENT_ACNAME, capwap_element_acname_ops),
element_ops(CAPWAP_ELEMENT_ACNAMEPRIORITY, capwap_element_acnamepriority_ops),
element_ops(CAPWAP_ELEMENT_ACTIMESTAMP, capwap_element_actimestamp_ops),
element_ops(CAPWAP_ELEMENT_ADDMACACL, capwap_element_addmacacl_ops),
element_ops(CAPWAP_ELEMENT_ADDSTATION, capwap_element_addstation_ops),
element_ops(CAPWAP_ELEMENT_CONTROLIPV4, capwap_element_controlipv4_ops),
element_ops(CAPWAP_ELEMENT_CONTROLIPV6, capwap_element_controlipv6_ops),
element_ops(CAPWAP_ELEMENT_TIMERS, capwap_element_timers_ops),
element_ops(CAPWAP_ELEMENT_DATATRANSFERDATA, capwap_element_datatransferdata_ops),
element_ops(CAPWAP_ELEMENT_DATATRANSFERMODE, capwap_element_datatransfermode_ops),
element_ops(CAPWAP_ELEMENT_DECRYPTERRORREPORT, capwap_element_decrypterrorreport_ops),
element_ops(CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD, capwap_element_decrypterrorreportperiod_ops),
element_ops(CAPWAP_ELEMENT_DELETEMACACL, capwap_element_deletemacacl_ops),
element_ops(CAPWAP_ELEMENT_DELETESTATION, capwap_element_deletestation_ops),
element_ops(CAPWAP_ELEMENT_DISCOVERYTYPE, capwap_element_discoverytype_ops),
element_ops(CAPWAP_ELEMENT_DUPLICATEIPV4, capwap_element_duplicateipv4_ops),
element_ops(CAPWAP_ELEMENT_DUPLICATEIPV6, capwap_element_duplicateipv6_ops),
element_ops(CAPWAP_ELEMENT_IDLETIMEOUT, capwap_element_idletimeout_ops),
element_ops(CAPWAP_ELEMENT_IMAGEDATA, capwap_element_imagedata_ops),
element_ops(CAPWAP_ELEMENT_IMAGEIDENTIFIER, capwap_element_imageidentifier_ops),
element_ops(CAPWAP_ELEMENT_IMAGEINFO, capwap_element_imageinfo_ops),
element_ops(CAPWAP_ELEMENT_INITIATEDOWNLOAD, capwap_element_initdownload_ops),
element_ops(CAPWAP_ELEMENT_LOCATION, capwap_element_location_ops),
element_ops(CAPWAP_ELEMENT_MAXIMUMLENGTH, capwap_element_maximumlength_ops),
element_ops(CAPWAP_ELEMENT_LOCALIPV4, capwap_element_localipv4_ops),
element_ops(CAPWAP_ELEMENT_RADIOADMSTATE, capwap_element_radioadmstate_ops),
element_ops(CAPWAP_ELEMENT_RADIOOPRSTATE, capwap_element_radiooprstate_ops),
element_ops(CAPWAP_ELEMENT_RESULTCODE, capwap_element_resultcode_ops),
element_ops(CAPWAP_ELEMENT_RETURNEDMESSAGE, capwap_element_returnedmessage_ops),
element_ops(CAPWAP_ELEMENT_SESSIONID, capwap_element_sessionid_ops),
element_ops(CAPWAP_ELEMENT_STATISTICSTIMER, capwap_element_statisticstimer_ops),
element_ops(CAPWAP_ELEMENT_VENDORPAYLOAD, capwap_element_vendorpayload_ops),
element_ops(CAPWAP_ELEMENT_WTPBOARDDATA, capwap_element_wtpboarddata_ops),
element_ops(CAPWAP_ELEMENT_WTPDESCRIPTOR, capwap_element_wtpdescriptor_ops),
element_ops(CAPWAP_ELEMENT_WTPFALLBACK, capwap_element_wtpfallback_ops),
element_ops(CAPWAP_ELEMENT_WTPFRAMETUNNELMODE, capwap_element_wtpframetunnelmode_ops),
element_ops(CAPWAP_ELEMENT_WTPMACTYPE, capwap_element_wtpmactype_ops),
element_ops(CAPWAP_ELEMENT_WTPNAME, capwap_element_wtpname_ops),
element_ops(CAPWAP_ELEMENT_WTPRADIOSTAT, capwap_element_wtpradiostat_ops),
element_ops(CAPWAP_ELEMENT_WTPREBOOTSTAT, capwap_element_wtprebootstat_ops),
element_ops(CAPWAP_ELEMENT_WTPSTATICIPADDRESS, capwap_element_wtpstaticipaddress_ops),
element_ops(CAPWAP_ELEMENT_LOCALIPV6, capwap_element_localipv6_ops),
element_ops(CAPWAP_ELEMENT_TRANSPORT, capwap_element_transport_ops),
element_ops(CAPWAP_ELEMENT_MTUDISCOVERY, capwap_element_mtudiscovery_ops),
element_ops(CAPWAP_ELEMENT_ECNSUPPORT, capwap_element_ecnsupport_ops)
element_ops(CAPWAP_ELEMENT_ACDESCRIPTION_TYPE, capwap_element_acdescriptor_ops),
element_ops(CAPWAP_ELEMENT_ACIPV4LIST_TYPE, capwap_element_acipv4list_ops),
element_ops(CAPWAP_ELEMENT_ACIPV6LIST_TYPE, capwap_element_acipv6list_ops),
element_ops(CAPWAP_ELEMENT_ACNAME_TYPE, capwap_element_acname_ops),
element_ops(CAPWAP_ELEMENT_ACNAMEPRIORITY_TYPE, capwap_element_acnamepriority_ops),
element_ops(CAPWAP_ELEMENT_ACTIMESTAMP_TYPE, capwap_element_actimestamp_ops),
element_ops(CAPWAP_ELEMENT_ADDMACACL_TYPE, capwap_element_addmacacl_ops),
element_ops(CAPWAP_ELEMENT_ADDSTATION_TYPE, capwap_element_addstation_ops),
element_ops(CAPWAP_ELEMENT_CONTROLIPV4_TYPE, capwap_element_controlipv4_ops),
element_ops(CAPWAP_ELEMENT_CONTROLIPV6_TYPE, capwap_element_controlipv6_ops),
element_ops(CAPWAP_ELEMENT_TIMERS_TYPE, capwap_element_timers_ops),
element_ops(CAPWAP_ELEMENT_DATATRANSFERDATA_TYPE, capwap_element_datatransferdata_ops),
element_ops(CAPWAP_ELEMENT_DATATRANSFERMODE_TYPE, capwap_element_datatransfermode_ops),
element_ops(CAPWAP_ELEMENT_DECRYPTERRORREPORT_TYPE, capwap_element_decrypterrorreport_ops),
element_ops(CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD_TYPE, capwap_element_decrypterrorreportperiod_ops),
element_ops(CAPWAP_ELEMENT_DELETEMACACL_TYPE, capwap_element_deletemacacl_ops),
element_ops(CAPWAP_ELEMENT_DELETESTATION_TYPE, capwap_element_deletestation_ops),
element_ops(CAPWAP_ELEMENT_DISCOVERYTYPE_TYPE, capwap_element_discoverytype_ops),
element_ops(CAPWAP_ELEMENT_DUPLICATEIPV4_TYPE, capwap_element_duplicateipv4_ops),
element_ops(CAPWAP_ELEMENT_DUPLICATEIPV6_TYPE, capwap_element_duplicateipv6_ops),
element_ops(CAPWAP_ELEMENT_IDLETIMEOUT_TYPE, capwap_element_idletimeout_ops),
element_ops(CAPWAP_ELEMENT_IMAGEDATA_TYPE, capwap_element_imagedata_ops),
element_ops(CAPWAP_ELEMENT_IMAGEIDENTIFIER_TYPE, capwap_element_imageidentifier_ops),
element_ops(CAPWAP_ELEMENT_IMAGEINFO_TYPE, capwap_element_imageinfo_ops),
element_ops(CAPWAP_ELEMENT_INITIATEDOWNLOAD_TYPE, capwap_element_initdownload_ops),
element_ops(CAPWAP_ELEMENT_LOCATION_TYPE, capwap_element_location_ops),
element_ops(CAPWAP_ELEMENT_MAXIMUMLENGTH_TYPE, capwap_element_maximumlength_ops),
element_ops(CAPWAP_ELEMENT_LOCALIPV4_TYPE, capwap_element_localipv4_ops),
element_ops(CAPWAP_ELEMENT_RADIOADMSTATE_TYPE, capwap_element_radioadmstate_ops),
element_ops(CAPWAP_ELEMENT_RADIOOPRSTATE_TYPE, capwap_element_radiooprstate_ops),
element_ops(CAPWAP_ELEMENT_RESULTCODE_TYPE, capwap_element_resultcode_ops),
element_ops(CAPWAP_ELEMENT_RETURNEDMESSAGE_TYPE, capwap_element_returnedmessage_ops),
element_ops(CAPWAP_ELEMENT_SESSIONID_TYPE, capwap_element_sessionid_ops),
element_ops(CAPWAP_ELEMENT_STATISTICSTIMER_TYPE, capwap_element_statisticstimer_ops),
element_ops(CAPWAP_ELEMENT_VENDORPAYLOAD_TYPE, capwap_element_vendorpayload_ops),
element_ops(CAPWAP_ELEMENT_WTPBOARDDATA_TYPE, capwap_element_wtpboarddata_ops),
element_ops(CAPWAP_ELEMENT_WTPDESCRIPTOR_TYPE, capwap_element_wtpdescriptor_ops),
element_ops(CAPWAP_ELEMENT_WTPFALLBACK_TYPE, capwap_element_wtpfallback_ops),
element_ops(CAPWAP_ELEMENT_WTPFRAMETUNNELMODE_TYPE, capwap_element_wtpframetunnelmode_ops),
element_ops(CAPWAP_ELEMENT_WTPMACTYPE_TYPE, capwap_element_wtpmactype_ops),
element_ops(CAPWAP_ELEMENT_WTPNAME_TYPE, capwap_element_wtpname_ops),
element_ops(CAPWAP_ELEMENT_WTPRADIOSTAT_TYPE, capwap_element_wtpradiostat_ops),
element_ops(CAPWAP_ELEMENT_WTPREBOOTSTAT_TYPE, capwap_element_wtprebootstat_ops),
element_ops(CAPWAP_ELEMENT_WTPSTATICIPADDRESS_TYPE, capwap_element_wtpstaticipaddress_ops),
element_ops(CAPWAP_ELEMENT_LOCALIPV6_TYPE, capwap_element_localipv6_ops),
element_ops(CAPWAP_ELEMENT_TRANSPORT_TYPE, capwap_element_transport_ops),
element_ops(CAPWAP_ELEMENT_MTUDISCOVERY_TYPE, capwap_element_mtudiscovery_ops),
element_ops(CAPWAP_ELEMENT_ECNSUPPORT_TYPE, capwap_element_ecnsupport_ops)
};
#undef element_ops
/* */
#define element_ops(Id, Ops) [(Id) - CAPWAP_80211_MESSAGE_ELEMENTS_START] = &(Ops)
static const struct capwap_message_elements_ops * capwap_80211_message_elements[] = {
element_ops(CAPWAP_ELEMENT_80211_ADD_WLAN, capwap_element_80211_addwlan_ops),
element_ops(CAPWAP_ELEMENT_80211_ANTENNA, capwap_element_80211_antenna_ops),
element_ops(CAPWAP_ELEMENT_80211_ASSIGN_BSSID, capwap_element_80211_assignbssid_ops),
element_ops(CAPWAP_ELEMENT_80211_DELETE_WLAN, capwap_element_80211_deletewlan_ops),
element_ops(CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL, capwap_element_80211_directsequencecontrol_ops),
element_ops(CAPWAP_ELEMENT_80211_IE, capwap_element_80211_ie_ops),
element_ops(CAPWAP_ELEMENT_80211_MACOPERATION, capwap_element_80211_macoperation_ops),
element_ops(CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES, capwap_element_80211_miccountermeasures_ops),
element_ops(CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY, capwap_element_80211_multidomaincapability_ops),
element_ops(CAPWAP_ELEMENT_80211_OFDMCONTROL, capwap_element_80211_ofdmcontrol_ops),
element_ops(CAPWAP_ELEMENT_80211_RATESET, capwap_element_80211_rateset_ops),
element_ops(CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT, capwap_element_80211_rsnaerrorreport_ops),
element_ops(CAPWAP_ELEMENT_80211_STATION, capwap_element_80211_station_ops),
element_ops(CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE, capwap_element_80211_stationqos_ops),
element_ops(CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE, capwap_element_80211_stationkey_ops),
element_ops(CAPWAP_ELEMENT_80211_STATISTICS, capwap_element_80211_statistics_ops),
element_ops(CAPWAP_ELEMENT_80211_SUPPORTEDRATES, capwap_element_80211_supportedrates_ops),
element_ops(CAPWAP_ELEMENT_80211_TXPOWER, capwap_element_80211_txpower_ops),
element_ops(CAPWAP_ELEMENT_80211_TXPOWERLEVEL, capwap_element_80211_txpowerlevel_ops),
element_ops(CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS, capwap_element_80211_updatestationqos_ops),
element_ops(CAPWAP_ELEMENT_80211_UPDATE_WLAN, capwap_element_80211_updatewlan_ops),
element_ops(CAPWAP_ELEMENT_80211_WTP_QOS, capwap_element_80211_wtpqos_ops),
element_ops(CAPWAP_ELEMENT_80211_WTP_RADIO_CONF, capwap_element_80211_wtpradioconf_ops),
element_ops(CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM, capwap_element_80211_wtpradiofailalarm_ops),
element_ops(CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION, capwap_element_80211_wtpradioinformation_ops)
element_ops(CAPWAP_ELEMENT_80211_ADD_WLAN_TYPE, capwap_element_80211_addwlan_ops),
element_ops(CAPWAP_ELEMENT_80211_ANTENNA_TYPE, capwap_element_80211_antenna_ops),
element_ops(CAPWAP_ELEMENT_80211_ASSIGN_BSSID_TYPE, capwap_element_80211_assignbssid_ops),
element_ops(CAPWAP_ELEMENT_80211_DELETE_WLAN_TYPE, capwap_element_80211_deletewlan_ops),
element_ops(CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_TYPE, capwap_element_80211_directsequencecontrol_ops),
element_ops(CAPWAP_ELEMENT_80211_IE_TYPE, capwap_element_80211_ie_ops),
element_ops(CAPWAP_ELEMENT_80211_MACOPERATION_TYPE, capwap_element_80211_macoperation_ops),
element_ops(CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES_TYPE, capwap_element_80211_miccountermeasures_ops),
element_ops(CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_TYPE, capwap_element_80211_multidomaincapability_ops),
element_ops(CAPWAP_ELEMENT_80211_OFDMCONTROL_TYPE, capwap_element_80211_ofdmcontrol_ops),
element_ops(CAPWAP_ELEMENT_80211_RATESET_TYPE, capwap_element_80211_rateset_ops),
element_ops(CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT_TYPE, capwap_element_80211_rsnaerrorreport_ops),
element_ops(CAPWAP_ELEMENT_80211_STATION_TYPE, capwap_element_80211_station_ops),
element_ops(CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE_TYPE, capwap_element_80211_stationqos_ops),
element_ops(CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE_TYPE, capwap_element_80211_stationkey_ops),
element_ops(CAPWAP_ELEMENT_80211_STATISTICS_TYPE, capwap_element_80211_statistics_ops),
element_ops(CAPWAP_ELEMENT_80211_SUPPORTEDRATES_TYPE, capwap_element_80211_supportedrates_ops),
element_ops(CAPWAP_ELEMENT_80211_TXPOWER_TYPE, capwap_element_80211_txpower_ops),
element_ops(CAPWAP_ELEMENT_80211_TXPOWERLEVEL_TYPE, capwap_element_80211_txpowerlevel_ops),
element_ops(CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS_TYPE, capwap_element_80211_updatestationqos_ops),
element_ops(CAPWAP_ELEMENT_80211_UPDATE_WLAN_TYPE, capwap_element_80211_updatewlan_ops),
element_ops(CAPWAP_ELEMENT_80211_WTP_QOS_TYPE, capwap_element_80211_wtpqos_ops),
element_ops(CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_TYPE, capwap_element_80211_wtpradioconf_ops),
element_ops(CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM_TYPE, capwap_element_80211_wtpradiofailalarm_ops),
element_ops(CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_TYPE, capwap_element_80211_wtpradioinformation_ops)
};
#undef element_ops
/* */
const struct capwap_message_elements_ops *capwap_get_message_element_ops(unsigned short code)
const struct capwap_message_elements_ops *
capwap_get_message_element_ops(const struct capwap_message_element_id id)
{
if (IS_MESSAGE_ELEMENTS(code)) {
return capwap_message_elements[code - CAPWAP_MESSAGE_ELEMENTS_START];
} else if (IS_80211_MESSAGE_ELEMENTS(code)) {
return capwap_80211_message_elements[code - CAPWAP_80211_MESSAGE_ELEMENTS_START];
switch (id.vendor) {
case 0:
if (IS_MESSAGE_ELEMENTS(id)) {
return capwap_message_elements[id.type - CAPWAP_MESSAGE_ELEMENTS_START];
} else if (IS_80211_MESSAGE_ELEMENTS(id)) {
return capwap_80211_message_elements[id.type - CAPWAP_80211_MESSAGE_ELEMENTS_START];
}
}
return NULL;
}
/* */
struct capwap_list_item* capwap_get_message_element(struct capwap_parsed_packet* packet, uint16_t type) {
struct capwap_list_item* capwap_get_message_element(struct capwap_parsed_packet* packet,
const struct capwap_message_element_id id)
{
struct capwap_list_item* search;
ASSERT(packet != NULL);
@ -109,11 +115,11 @@ struct capwap_list_item* capwap_get_message_element(struct capwap_parsed_packet*
search = packet->messages->first;
while (search) {
struct capwap_message_element_itemlist* messageelement = (struct capwap_message_element_itemlist*)search->item;
struct capwap_message_element_itemlist* messageelement =
(struct capwap_message_element_itemlist*)search->item;
if (messageelement->type == type) {
if (memcmp(&messageelement->id, &id, sizeof(id)) == 0)
return search;
}
/* */
search = search->next;
@ -123,12 +129,14 @@ struct capwap_list_item* capwap_get_message_element(struct capwap_parsed_packet*
}
/* */
void* capwap_get_message_element_data(struct capwap_parsed_packet* packet, uint16_t type) {
void* capwap_get_message_element_data(struct capwap_parsed_packet* packet,
const struct capwap_message_element_id id)
{
struct capwap_list_item* itemlist;
struct capwap_message_element_itemlist* messageelement;
/* Retrieve item list */
itemlist = capwap_get_message_element(packet, type);
itemlist = capwap_get_message_element(packet, id);
if (!itemlist) {
return NULL;
}
@ -161,7 +169,7 @@ int capwap_parsing_packet(struct capwap_packet_rxmng* rxmngpacket, struct capwap
/* */
bodylength = rxmngpacket->ctrlmsg.length - CAPWAP_CONTROL_MESSAGE_MIN_LENGTH;
while (bodylength > 0) {
uint16_t type;
struct capwap_message_element_id id;
uint16_t msglength;
struct capwap_list_item* itemlist;
struct capwap_message_element_itemlist* messageelement;
@ -170,18 +178,21 @@ int capwap_parsing_packet(struct capwap_packet_rxmng* rxmngpacket, struct capwap
/* Get type and length */
rxmngpacket->readerpacketallowed = sizeof(struct capwap_message_element);
if (rxmngpacket->read_ops.read_u16((capwap_message_elements_handle)rxmngpacket, &type) != sizeof(uint16_t)) {
if (rxmngpacket->read_ops.read_u16((capwap_message_elements_handle)rxmngpacket, &id.type) != sizeof(uint16_t)) {
return INVALID_MESSAGE_ELEMENT;
}
/* TODO: implement actual vendor handling */
id.vendor = 0;
/* Check type */
capwap_logging_debug("MESSAGE ELEMENT: %d", type);
if (!IS_VALID_MESSAGE_ELEMENTS(type)) {
capwap_logging_debug("MESSAGE ELEMENT: %06x:%d", id.vendor, id.type);
if (!IS_VALID_MESSAGE_ELEMENTS(id)) {
return UNRECOGNIZED_MESSAGE_ELEMENT;
}
/* Check binding */
if (IS_80211_MESSAGE_ELEMENTS(type) && (binding != CAPWAP_WIRELESS_BINDING_IEEE80211)) {
if (IS_80211_MESSAGE_ELEMENTS(id) && (binding != CAPWAP_WIRELESS_BINDING_IEEE80211)) {
return UNRECOGNIZED_MESSAGE_ELEMENT;
}
@ -195,7 +206,7 @@ int capwap_parsing_packet(struct capwap_packet_rxmng* rxmngpacket, struct capwap
}
/* Reader function */
read_ops = capwap_get_message_element_ops(type);
read_ops = capwap_get_message_element_ops(id);
capwap_logging_debug("read_ops: %p", read_ops);
if (!read_ops) {
return INVALID_MESSAGE_ELEMENT;
@ -210,7 +221,7 @@ int capwap_parsing_packet(struct capwap_packet_rxmng* rxmngpacket, struct capwap
return INVALID_MESSAGE_ELEMENT;
/* */
itemlist = capwap_get_message_element(packet, type);
itemlist = capwap_get_message_element(packet, id);
if (read_ops->category == CAPWAP_MESSAGE_ELEMENT_SINGLE) {
/* Check for multiple message element */
if (itemlist) {
@ -220,7 +231,7 @@ int capwap_parsing_packet(struct capwap_packet_rxmng* rxmngpacket, struct capwap
/* Create new message element */
itemlist = capwap_itemlist_create(sizeof(struct capwap_message_element_itemlist));
messageelement = (struct capwap_message_element_itemlist*)itemlist->item;
messageelement->type = type;
messageelement->id = id;
messageelement->category = CAPWAP_MESSAGE_ELEMENT_SINGLE;
messageelement->data = element;
@ -239,7 +250,7 @@ int capwap_parsing_packet(struct capwap_packet_rxmng* rxmngpacket, struct capwap
/* */
itemlist = capwap_itemlist_create(sizeof(struct capwap_message_element_itemlist));
messageelement = (struct capwap_message_element_itemlist*)itemlist->item;
messageelement->type = type;
messageelement->id = id;
messageelement->category = CAPWAP_MESSAGE_ELEMENT_ARRAY;
messageelement->data = (void*)arraymessageelement;
@ -601,7 +612,7 @@ void capwap_free_parsed_packet(struct capwap_parsed_packet* packet) {
while (itemlist) {
messageelement = (struct capwap_message_element_itemlist*)itemlist->item;
if (messageelement->data) {
msgops = capwap_get_message_element_ops(messageelement->type);
msgops = capwap_get_message_element_ops(messageelement->id);
if (messageelement->category == CAPWAP_MESSAGE_ELEMENT_SINGLE) {
msgops->free(messageelement->data);

View File

@ -4,6 +4,12 @@
#include "capwap_array.h"
#include "capwap_list.h"
struct capwap_message_element_id
{
uint32_t vendor;
uint16_t type;
};
/* */
typedef void* capwap_message_elements_handle;
struct capwap_write_message_elements_ops {
@ -36,7 +42,7 @@ struct capwap_message_elements_ops
void (*free)(void*);
};
const struct capwap_message_elements_ops *capwap_get_message_element_ops(unsigned short code);
const struct capwap_message_elements_ops *capwap_get_message_element_ops(const struct capwap_message_element_id id);
/*********************************************************************************************************************/
/* Standard message elements */
@ -130,8 +136,9 @@ const struct capwap_message_elements_ops *capwap_get_message_element_ops(unsigne
#define CAPWAP_MESSAGE_ELEMENT_ARRAY 1
int capwap_get_message_element_category(uint16_t type);
struct capwap_message_element_itemlist {
uint16_t type;
struct capwap_message_element_itemlist
{
struct capwap_message_element_id id;
int category;
void* data;
};
@ -150,7 +157,9 @@ int capwap_parsing_packet(struct capwap_packet_rxmng* rxmngpacket, struct capwap
int capwap_validate_parsed_packet(struct capwap_parsed_packet* packet, struct capwap_array* returnedmessage);
void capwap_free_parsed_packet(struct capwap_parsed_packet* packet);
struct capwap_list_item* capwap_get_message_element(struct capwap_parsed_packet* packet, uint16_t type);
void* capwap_get_message_element_data(struct capwap_parsed_packet* packet, uint16_t type);
struct capwap_list_item *capwap_get_message_element(struct capwap_parsed_packet *packet,
const struct capwap_message_element_id id);
void *capwap_get_message_element_data(struct capwap_parsed_packet *packet,
const struct capwap_message_element_id id);
#endif /* __CAPWAP_ELEMENT_HEADER__ */

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_ADD_WLAN_HEADER__
#define __CAPWAP_ELEMENT_80211_ADD_WLAN_HEADER__
#define CAPWAP_ELEMENT_80211_ADD_WLAN 1024
#define CAPWAP_ELEMENT_80211_ADD_WLAN_VENDOR 0
#define CAPWAP_ELEMENT_80211_ADD_WLAN_TYPE 1024
#define CAPWAP_ELEMENT_80211_ADD_WLAN (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_ADD_WLAN_VENDOR, .type = CAPWAP_ELEMENT_80211_ADD_WLAN_TYPE }
#define CAPWAP_ADD_WLAN_GROUPTSC_LENGTH 6
#define CAPWAP_ADD_WLAN_SSID_LENGTH 32

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_ANTENNA_HEADER__
#define __CAPWAP_ELEMENT_80211_ANTENNA_HEADER__
#define CAPWAP_ELEMENT_80211_ANTENNA 1025
#define CAPWAP_ELEMENT_80211_ANTENNA_VENDOR 0
#define CAPWAP_ELEMENT_80211_ANTENNA_TYPE 1025
#define CAPWAP_ELEMENT_80211_ANTENNA (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_ANTENNA_VENDOR, .type = CAPWAP_ELEMENT_80211_ANTENNA_TYPE }
#define CAPWAP_ANTENNA_DIVERSITY_DISABLE 0
#define CAPWAP_ANTENNA_DIVERSITY_ENABLE 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_ASSIGN_BSSID_HEADER__
#define __CAPWAP_ELEMENT_80211_ASSIGN_BSSID_HEADER__
#define CAPWAP_ELEMENT_80211_ASSIGN_BSSID 1026
#define CAPWAP_ELEMENT_80211_ASSIGN_BSSID_VENDOR 0
#define CAPWAP_ELEMENT_80211_ASSIGN_BSSID_TYPE 1026
#define CAPWAP_ELEMENT_80211_ASSIGN_BSSID (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_ASSIGN_BSSID_VENDOR, .type = CAPWAP_ELEMENT_80211_ASSIGN_BSSID_TYPE }
struct capwap_80211_assignbssid_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_DELETE_WLAN_HEADER__
#define __CAPWAP_ELEMENT_80211_DELETE_WLAN_HEADER__
#define CAPWAP_ELEMENT_80211_DELETE_WLAN 1027
#define CAPWAP_ELEMENT_80211_DELETE_WLAN_VENDOR 0
#define CAPWAP_ELEMENT_80211_DELETE_WLAN_TYPE 1027
#define CAPWAP_ELEMENT_80211_DELETE_WLAN (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_DELETE_WLAN_VENDOR, .type = CAPWAP_ELEMENT_80211_DELETE_WLAN_TYPE }
struct capwap_80211_deletewlan_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_HEADER__
#define __CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_HEADER__
#define CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL 1028
#define CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_VENDOR 0
#define CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_TYPE 1028
#define CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_VENDOR, .type = CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_TYPE }
#define CAPWAP_DSCONTROL_CCA_EDONLY 1
#define CAPWAP_DSCONTROL_CCA_CSONLY 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_IE_HEADER__
#define __CAPWAP_ELEMENT_80211_IE_HEADER__
#define CAPWAP_ELEMENT_80211_IE 1029
#define CAPWAP_ELEMENT_80211_IE_VENDOR 0
#define CAPWAP_ELEMENT_80211_IE_TYPE 1029
#define CAPWAP_ELEMENT_80211_IE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_IE_VENDOR, .type = CAPWAP_ELEMENT_80211_IE_TYPE }
#define CAPWAP_IE_BEACONS_ASSOCIATED 0x80
#define CAPWAP_IE_PROBE_RESPONSE_ASSOCIATED 0x40

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_MACOPERATION_HEADER__
#define __CAPWAP_ELEMENT_80211_MACOPERATION_HEADER__
#define CAPWAP_ELEMENT_80211_MACOPERATION 1030
#define CAPWAP_ELEMENT_80211_MACOPERATION_VENDOR 0
#define CAPWAP_ELEMENT_80211_MACOPERATION_TYPE 1030
#define CAPWAP_ELEMENT_80211_MACOPERATION (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_MACOPERATION_VENDOR, .type = CAPWAP_ELEMENT_80211_MACOPERATION_TYPE }
struct capwap_80211_macoperation_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES_HEADER__
#define __CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES_HEADER__
#define CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES 1031
#define CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES_VENDOR 0
#define CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES_TYPE 1031
#define CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES_VENDOR, .type = CAPWAP_ELEMENT_80211_MIC_COUNTERMEASURES_TYPE }
struct capwap_80211_miccountermeasures_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_HEADER__
#define __CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_HEADER__
#define CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY 1032
#define CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_VENDOR 0
#define CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_TYPE 1032
#define CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_VENDOR, .type = CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_TYPE }
struct capwap_80211_multidomaincapability_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_OFDMCONTROL_HEADER__
#define __CAPWAP_ELEMENT_80211_OFDMCONTROL_HEADER__
#define CAPWAP_ELEMENT_80211_OFDMCONTROL 1033
#define CAPWAP_ELEMENT_80211_OFDMCONTROL_VENDOR 0
#define CAPWAP_ELEMENT_80211_OFDMCONTROL_TYPE 1033
#define CAPWAP_ELEMENT_80211_OFDMCONTROL (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_OFDMCONTROL_VENDOR, .type = CAPWAP_ELEMENT_80211_OFDMCONTROL_TYPE }
#define CAPWAP_OFDMCONTROL_BAND_515_525 0x01
#define CAPWAP_OFDMCONTROL_BAND_525_535 0x02

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_RATESET_HEADER__
#define __CAPWAP_ELEMENT_80211_RATESET_HEADER__
#define CAPWAP_ELEMENT_80211_RATESET 1034
#define CAPWAP_ELEMENT_80211_RATESET_VENDOR 0
#define CAPWAP_ELEMENT_80211_RATESET_TYPE 1034
#define CAPWAP_ELEMENT_80211_RATESET (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_RATESET_VENDOR, .type = CAPWAP_ELEMENT_80211_RATESET_TYPE }
#define CAPWAP_RATESET_MINLENGTH 2
#define CAPWAP_RATESET_MAXLENGTH 8

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT_HEADER__
#define __CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT_HEADER__
#define CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT 1035
#define CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT_VENDOR 0
#define CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT_TYPE 1035
#define CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT_VENDOR, .type = CAPWAP_ELEMENT_80211_RSNA_ERROR_REPORT_TYPE }
struct capwap_80211_rsnaerrorreport_element {
uint8_t client[MACADDRESS_EUI48_LENGTH];

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_STATION_HEADER__
#define __CAPWAP_ELEMENT_80211_STATION_HEADER__
#define CAPWAP_ELEMENT_80211_STATION 1036
#define CAPWAP_ELEMENT_80211_STATION_VENDOR 0
#define CAPWAP_ELEMENT_80211_STATION_TYPE 1036
#define CAPWAP_ELEMENT_80211_STATION (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_STATION_VENDOR, .type = CAPWAP_ELEMENT_80211_STATION_TYPE }
#define CAPWAP_STATION_RATES_MAXLENGTH 128

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_HEADER__
#define __CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_HEADER__
#define CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE 1038
#define CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE_VENDOR 0
#define CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE_TYPE 1038
#define CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE_VENDOR, .type = CAPWAP_ELEMENT_80211_STATION_SESSION_KEY_PROFILE_TYPE }
#define CAPWAP_STATION_SESSION_KEY_PAIRWISE_TSC_LENGTH 6
#define CAPWAP_STATION_SESSION_KEY_PAIRWISE_RSC_LENGTH 6

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE_HEADER__
#define __CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE_HEADER__
#define CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE 1037
#define CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE_VENDOR 0
#define CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE_TYPE 1037
#define CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE_VENDOR, .type = CAPWAP_ELEMENT_80211_STATION_QOS_PROFILE_TYPE }
struct capwap_80211_stationqos_element {
uint8_t address[MACADDRESS_EUI48_LENGTH];

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_STATISTICS_HEADER__
#define __CAPWAP_ELEMENT_80211_STATISTICS_HEADER__
#define CAPWAP_ELEMENT_80211_STATISTICS 1039
#define CAPWAP_ELEMENT_80211_STATISTICS_VENDOR 0
#define CAPWAP_ELEMENT_80211_STATISTICS_TYPE 1039
#define CAPWAP_ELEMENT_80211_STATISTICS (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_STATISTICS_VENDOR, .type = CAPWAP_ELEMENT_80211_STATISTICS_TYPE }
struct capwap_80211_statistics_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_SUPPORTEDRATES_HEADER__
#define __CAPWAP_ELEMENT_80211_SUPPORTEDRATES_HEADER__
#define CAPWAP_ELEMENT_80211_SUPPORTEDRATES 1040
#define CAPWAP_ELEMENT_80211_SUPPORTEDRATES_VENDOR 0
#define CAPWAP_ELEMENT_80211_SUPPORTEDRATES_TYPE 1040
#define CAPWAP_ELEMENT_80211_SUPPORTEDRATES (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_SUPPORTEDRATES_VENDOR, .type = CAPWAP_ELEMENT_80211_SUPPORTEDRATES_TYPE }
#define CAPWAP_SUPPORTEDRATES_MINLENGTH 2
#define CAPWAP_SUPPORTEDRATES_MAXLENGTH 8

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_TXPOWER_HEADER__
#define __CAPWAP_ELEMENT_80211_TXPOWER_HEADER__
#define CAPWAP_ELEMENT_80211_TXPOWER 1041
#define CAPWAP_ELEMENT_80211_TXPOWER_VENDOR 0
#define CAPWAP_ELEMENT_80211_TXPOWER_TYPE 1041
#define CAPWAP_ELEMENT_80211_TXPOWER (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_TXPOWER_VENDOR, .type = CAPWAP_ELEMENT_80211_TXPOWER_TYPE }
struct capwap_80211_txpower_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_TXPOWERLEVEL_HEADER__
#define __CAPWAP_ELEMENT_80211_TXPOWERLEVEL_HEADER__
#define CAPWAP_ELEMENT_80211_TXPOWERLEVEL 1042
#define CAPWAP_ELEMENT_80211_TXPOWERLEVEL_VENDOR 0
#define CAPWAP_ELEMENT_80211_TXPOWERLEVEL_TYPE 1042
#define CAPWAP_ELEMENT_80211_TXPOWERLEVEL (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_TXPOWERLEVEL_VENDOR, .type = CAPWAP_ELEMENT_80211_TXPOWERLEVEL_TYPE }
#define CAPWAP_TXPOWERLEVEL_MAXLENGTH 8

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS_HEADER__
#define __CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS_HEADER__
#define CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS 1043
#define CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS_VENDOR 0
#define CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS_TYPE 1043
#define CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS_VENDOR, .type = CAPWAP_ELEMENT_80211_UPDATE_STATION_QOS_TYPE }
#define CAPWAP_UPDATE_STATION_QOS_SUBELEMENTS 4

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_UPDATE_WLAN_HEADER__
#define __CAPWAP_ELEMENT_80211_UPDATE_WLAN_HEADER__
#define CAPWAP_ELEMENT_80211_UPDATE_WLAN 1044
#define CAPWAP_ELEMENT_80211_UPDATE_WLAN_VENDOR 0
#define CAPWAP_ELEMENT_80211_UPDATE_WLAN_TYPE 1044
#define CAPWAP_ELEMENT_80211_UPDATE_WLAN (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_UPDATE_WLAN_VENDOR, .type = CAPWAP_ELEMENT_80211_UPDATE_WLAN_TYPE }
#define CAPWAP_UPDATE_WLAN_CAPABILITY_ESS 0x8000
#define CAPWAP_UPDATE_WLAN_CAPABILITY_IBSS 0x4000

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_WTP_QOS_HEADER__
#define __CAPWAP_ELEMENT_80211_WTP_QOS_HEADER__
#define CAPWAP_ELEMENT_80211_WTP_QOS 1045
#define CAPWAP_ELEMENT_80211_WTP_QOS_VENDOR 0
#define CAPWAP_ELEMENT_80211_WTP_QOS_TYPE 1045
#define CAPWAP_ELEMENT_80211_WTP_QOS (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_WTP_QOS_VENDOR, .type = CAPWAP_ELEMENT_80211_WTP_QOS_TYPE }
#define CAPWAP_WTP_QOS_SUBELEMENT_VOICE 0
#define CAPWAP_WTP_QOS_SUBELEMENT_VIDEO 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_HEADER__
#define __CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_HEADER__
#define CAPWAP_ELEMENT_80211_WTP_RADIO_CONF 1046
#define CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_VENDOR 0
#define CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_TYPE 1046
#define CAPWAP_ELEMENT_80211_WTP_RADIO_CONF (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_VENDOR, .type = CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_TYPE }
#define CAPWAP_WTP_RADIO_CONF_COUNTRY_LENGTH 4

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM_HEADER__
#define __CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM_HEADER__
#define CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM 1047
#define CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM_VENDOR 0
#define CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM_TYPE 1047
#define CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM_VENDOR, .type = CAPWAP_ELEMENT_80211_WTP_RADIO_FAIL_ALARM_TYPE }
#define CAPWAP_WTP_RADIO_FAIL_ALARM_TYPE_RECEIVER 1
#define CAPWAP_WTP_RADIO_FAIL_ALARM_TYPE_TRANSMITTER 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_HEADER__
#define __CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_HEADER__
#define CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION 1048
#define CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_VENDOR 0
#define CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_TYPE 1048
#define CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_VENDOR, .type = CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_TYPE }
#define CAPWAP_RADIO_TYPE_80211B 0x00000001
#define CAPWAP_RADIO_TYPE_80211A 0x00000002

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211N_RADIO_CONF_HEADER__
#define __CAPWAP_ELEMENT_80211N_RADIO_CONF_HEADER__
#define CAPWAP_ELEMENT_80211N_RADIO_CONF 1046
#define CAPWAP_ELEMENT_80211N_RADIO_CONF_VENDOR 0
#define CAPWAP_ELEMENT_80211N_RADIO_CONF_TYPE 1046
#define CAPWAP_ELEMENT_80211N_RADIO_CONF (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211N_RADIO_CONF_VENDOR, .type = CAPWAP_ELEMENT_80211N_RADIO_CONF_TYPE }
#define CAPWAP_80211N_RADIO_CONF_A_MSDU (1 << 7)
#define CAPWAP_80211N_RADIO_CONF_A_MPDU (1 << 6)

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_80211N_STATION_INFO_HEADER__
#define __CAPWAP_ELEMENT_80211N_STATION_INFO_HEADER__
#define CAPWAP_ELEMENT_80211N_STATION_INFO 1046
#define CAPWAP_ELEMENT_80211N_STATION_INFO_VENDOR 0
#define CAPWAP_ELEMENT_80211N_STATION_INFO_TYPE 1046
#define CAPWAP_ELEMENT_80211N_STATION_INFO (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_80211N_STATION_INFO_VENDOR, .type = CAPWAP_ELEMENT_80211N_STATION_INFO_TYPE }
#define CAPWAP_80211N_STATION_INFO_40MHZ_BANDWITH (1 << 7)
#define CAPWAP_80211N_STATION_INFO_POWER_SAVE_MODE ((1 << 6) | (1 << 5))

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ACDESCRIPTOR_HEADER__
#define __CAPWAP_ELEMENT_ACDESCRIPTOR_HEADER__
#define CAPWAP_ELEMENT_ACDESCRIPTION 1
#define CAPWAP_ELEMENT_ACDESCRIPTION_VENDOR 0
#define CAPWAP_ELEMENT_ACDESCRIPTION_TYPE 1
#define CAPWAP_ELEMENT_ACDESCRIPTION (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ACDESCRIPTION_VENDOR, .type = CAPWAP_ELEMENT_ACDESCRIPTION_TYPE }
#define CAPWAP_ACDESC_SECURITY_PRESHARED_KEY 0x04
#define CAPWAP_ACDESC_SECURITY_X509_CERT 0x02

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ACIPV4LIST_HEADER__
#define __CAPWAP_ELEMENT_ACIPV4LIST_HEADER__
#define CAPWAP_ELEMENT_ACIPV4LIST 2
#define CAPWAP_ELEMENT_ACIPV4LIST_VENDOR 0
#define CAPWAP_ELEMENT_ACIPV4LIST_TYPE 2
#define CAPWAP_ELEMENT_ACIPV4LIST (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ACIPV4LIST_VENDOR, .type = CAPWAP_ELEMENT_ACIPV4LIST_TYPE }
#define CAPWAP_ACIPV4LIST_MAX_ELEMENTS 1024

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ACIPV6LIST_HEADER__
#define __CAPWAP_ELEMENT_ACIPV6LIST_HEADER__
#define CAPWAP_ELEMENT_ACIPV6LIST 3
#define CAPWAP_ELEMENT_ACIPV6LIST_VENDOR 0
#define CAPWAP_ELEMENT_ACIPV6LIST_TYPE 3
#define CAPWAP_ELEMENT_ACIPV6LIST (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ACIPV6LIST_VENDOR, .type = CAPWAP_ELEMENT_ACIPV6LIST_TYPE }
#define CAPWAP_ACIPV6LIST_MAX_ELEMENTS 1024

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ACNAME_HEADER__
#define __CAPWAP_ELEMENT_ACNAME_HEADER__
#define CAPWAP_ELEMENT_ACNAME 4
#define CAPWAP_ELEMENT_ACNAME_VENDOR 0
#define CAPWAP_ELEMENT_ACNAME_TYPE 4
#define CAPWAP_ELEMENT_ACNAME (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ACNAME_VENDOR, .type = CAPWAP_ELEMENT_ACNAME_TYPE }
#define CAPWAP_ACNAME_MAXLENGTH 512

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ACNAMEPRIORITY_HEADER__
#define __CAPWAP_ELEMENT_ACNAMEPRIORITY_HEADER__
#define CAPWAP_ELEMENT_ACNAMEPRIORITY 5
#define CAPWAP_ELEMENT_ACNAMEPRIORITY_VENDOR 0
#define CAPWAP_ELEMENT_ACNAMEPRIORITY_TYPE 5
#define CAPWAP_ELEMENT_ACNAMEPRIORITY (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ACNAMEPRIORITY_VENDOR, .type = CAPWAP_ELEMENT_ACNAMEPRIORITY_TYPE }
#define CAPWAP_ACNAMEPRIORITY_MAXLENGTH 512

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_AC_TIMESTAMP_HEADER__
#define __CAPWAP_ELEMENT_AC_TIMESTAMP_HEADER__
#define CAPWAP_ELEMENT_ACTIMESTAMP 6
#define CAPWAP_ELEMENT_ACTIMESTAMP_VENDOR 0
#define CAPWAP_ELEMENT_ACTIMESTAMP_TYPE 6
#define CAPWAP_ELEMENT_ACTIMESTAMP (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ACTIMESTAMP_VENDOR, .type = CAPWAP_ELEMENT_ACTIMESTAMP_TYPE }
struct capwap_actimestamp_element {

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ADD_MAC_ACL__HEADER__
#define __CAPWAP_ELEMENT_ADD_MAC_ACL__HEADER__
#define CAPWAP_ELEMENT_ADDMACACL 7
#define CAPWAP_ELEMENT_ADDMACACL_VENDOR 0
#define CAPWAP_ELEMENT_ADDMACACL_TYPE 7
#define CAPWAP_ELEMENT_ADDMACACL (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ADDMACACL_VENDOR, .type = CAPWAP_ELEMENT_ADDMACACL_TYPE }
struct capwap_addmacacl_element {
uint8_t entry;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ADD_STATION__HEADER__
#define __CAPWAP_ELEMENT_ADD_STATION__HEADER__
#define CAPWAP_ELEMENT_ADDSTATION 8
#define CAPWAP_ELEMENT_ADDSTATION_VENDOR 0
#define CAPWAP_ELEMENT_ADDSTATION_TYPE 8
#define CAPWAP_ELEMENT_ADDSTATION (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ADDSTATION_VENDOR, .type = CAPWAP_ELEMENT_ADDSTATION_TYPE }
#define CAPWAP_ADDSTATION_VLAN_MAX_LENGTH 512

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_CONTROLIPV4_HEADER__
#define __CAPWAP_ELEMENT_CONTROLIPV4_HEADER__
#define CAPWAP_ELEMENT_CONTROLIPV4 10
#define CAPWAP_ELEMENT_CONTROLIPV4_VENDOR 0
#define CAPWAP_ELEMENT_CONTROLIPV4_TYPE 10
#define CAPWAP_ELEMENT_CONTROLIPV4 (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_CONTROLIPV4_VENDOR, .type = CAPWAP_ELEMENT_CONTROLIPV4_TYPE }
struct capwap_controlipv4_element {
struct in_addr address;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_CONTROLIPV6_HEADER__
#define __CAPWAP_ELEMENT_CONTROLIPV6_HEADER__
#define CAPWAP_ELEMENT_CONTROLIPV6 11
#define CAPWAP_ELEMENT_CONTROLIPV6_VENDOR 0
#define CAPWAP_ELEMENT_CONTROLIPV6_TYPE 11
#define CAPWAP_ELEMENT_CONTROLIPV6 (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_CONTROLIPV6_VENDOR, .type = CAPWAP_ELEMENT_CONTROLIPV6_TYPE }
struct capwap_controlipv6_element {
struct in6_addr address;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DATA_TRANSFER_DATA_HEADER__
#define __CAPWAP_ELEMENT_DATA_TRANSFER_DATA_HEADER__
#define CAPWAP_ELEMENT_DATATRANSFERDATA 13
#define CAPWAP_ELEMENT_DATATRANSFERDATA_VENDOR 0
#define CAPWAP_ELEMENT_DATATRANSFERDATA_TYPE 13
#define CAPWAP_ELEMENT_DATATRANSFERDATA (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DATATRANSFERDATA_VENDOR, .type = CAPWAP_ELEMENT_DATATRANSFERDATA_TYPE }
#define CAPWAP_DATATRANSFERDATA_TYPE_DATA_IS_INCLUDED 1
#define CAPWAP_DATATRANSFERDATA_TYPE_DATA_EOF 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DATA_TRANSFER_MODE_HEADER__
#define __CAPWAP_ELEMENT_DATA_TRANSFER_MODE_HEADER__
#define CAPWAP_ELEMENT_DATATRANSFERMODE 14
#define CAPWAP_ELEMENT_DATATRANSFERMODE_VENDOR 0
#define CAPWAP_ELEMENT_DATATRANSFERMODE_TYPE 14
#define CAPWAP_ELEMENT_DATATRANSFERMODE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DATATRANSFERMODE_VENDOR, .type = CAPWAP_ELEMENT_DATATRANSFERMODE_TYPE }
#define CAPWAP_DATATRANSFERMODE_MODE_CRASH_DUMP 1
#define CAPWAP_DATATRANSFERMODE_MODE_MEMORY_DUMP 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DECRYPT_ERROR_REPORT__HEADER__
#define __CAPWAP_ELEMENT_DECRYPT_ERROR_REPORT__HEADER__
#define CAPWAP_ELEMENT_DECRYPTERRORREPORT 15
#define CAPWAP_ELEMENT_DECRYPTERRORREPORT_VENDOR 0
#define CAPWAP_ELEMENT_DECRYPTERRORREPORT_TYPE 15
#define CAPWAP_ELEMENT_DECRYPTERRORREPORT (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DECRYPTERRORREPORT_VENDOR, .type = CAPWAP_ELEMENT_DECRYPTERRORREPORT_TYPE }
struct capwap_decrypterrorreport_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD_HEADER__
#define __CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD_HEADER__
#define CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD 16
#define CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD_VENDOR 0
#define CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD_TYPE 16
#define CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD_VENDOR, .type = CAPWAP_ELEMENT_DECRYPTERRORREPORTPERIOD_TYPE }
struct capwap_decrypterrorreportperiod_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DELETE_MAC_ACL__HEADER__
#define __CAPWAP_ELEMENT_DELETE_MAC_ACL__HEADER__
#define CAPWAP_ELEMENT_DELETEMACACL 17
#define CAPWAP_ELEMENT_DELETEMACACL_VENDOR 0
#define CAPWAP_ELEMENT_DELETEMACACL_TYPE 17
#define CAPWAP_ELEMENT_DELETEMACACL (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DELETEMACACL_VENDOR, .type = CAPWAP_ELEMENT_DELETEMACACL_TYPE }
struct capwap_deletemacacl_element {
uint8_t entry;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DELETE_STATION__HEADER__
#define __CAPWAP_ELEMENT_DELETE_STATION__HEADER__
#define CAPWAP_ELEMENT_DELETESTATION 18
#define CAPWAP_ELEMENT_DELETESTATION_VENDOR 0
#define CAPWAP_ELEMENT_DELETESTATION_TYPE 18
#define CAPWAP_ELEMENT_DELETESTATION (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DELETESTATION_VENDOR, .type = CAPWAP_ELEMENT_DELETESTATION_TYPE }
struct capwap_deletestation_element {
uint8_t radioid;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DISCOVERYTYPE_HEADER__
#define __CAPWAP_ELEMENT_DISCOVERYTYPE_HEADER__
#define CAPWAP_ELEMENT_DISCOVERYTYPE 20
#define CAPWAP_ELEMENT_DISCOVERYTYPE_VENDOR 0
#define CAPWAP_ELEMENT_DISCOVERYTYPE_TYPE 20
#define CAPWAP_ELEMENT_DISCOVERYTYPE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DISCOVERYTYPE_VENDOR, .type = CAPWAP_ELEMENT_DISCOVERYTYPE_TYPE }
#define CAPWAP_DISCOVERYTYPE_TYPE_UNKNOWN 0
#define CAPWAP_DISCOVERYTYPE_TYPE_STATIC 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DUPLICATE_IPv4__HEADER__
#define __CAPWAP_ELEMENT_DUPLICATE_IPv4__HEADER__
#define CAPWAP_ELEMENT_DUPLICATEIPV4 21
#define CAPWAP_ELEMENT_DUPLICATEIPV4_VENDOR 0
#define CAPWAP_ELEMENT_DUPLICATEIPV4_TYPE 21
#define CAPWAP_ELEMENT_DUPLICATEIPV4 (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DUPLICATEIPV4_VENDOR, .type = CAPWAP_ELEMENT_DUPLICATEIPV4_TYPE }
#define CAPWAP_DUPLICATEIPv4_CLEARED 0
#define CAPWAP_DUPLICATEIPv4_DETECTED 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_DUPLICATE_IPv6__HEADER__
#define __CAPWAP_ELEMENT_DUPLICATE_IPv6__HEADER__
#define CAPWAP_ELEMENT_DUPLICATEIPV6 22
#define CAPWAP_ELEMENT_DUPLICATEIPV6_VENDOR 0
#define CAPWAP_ELEMENT_DUPLICATEIPV6_TYPE 22
#define CAPWAP_ELEMENT_DUPLICATEIPV6 (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_DUPLICATEIPV6_VENDOR, .type = CAPWAP_ELEMENT_DUPLICATEIPV6_TYPE }
#define CAPWAP_DUPLICATEIPv6_CLEARED 0
#define CAPWAP_DUPLICATEIPv6_DETECTED 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_ECNSUPPORT_HEADER__
#define __CAPWAP_ELEMENT_ECNSUPPORT_HEADER__
#define CAPWAP_ELEMENT_ECNSUPPORT 53
#define CAPWAP_ELEMENT_ECNSUPPORT_VENDOR 0
#define CAPWAP_ELEMENT_ECNSUPPORT_TYPE 53
#define CAPWAP_ELEMENT_ECNSUPPORT (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_ECNSUPPORT_VENDOR, .type = CAPWAP_ELEMENT_ECNSUPPORT_TYPE }
#define CAPWAP_LIMITED_ECN_SUPPORT 0
#define CAPWAP_FULL_ECN_SUPPORT 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_IDLETIMEOUT_HEADER__
#define __CAPWAP_ELEMENT_IDLETIMEOUT_HEADER__
#define CAPWAP_ELEMENT_IDLETIMEOUT 23
#define CAPWAP_ELEMENT_IDLETIMEOUT_VENDOR 0
#define CAPWAP_ELEMENT_IDLETIMEOUT_TYPE 23
#define CAPWAP_ELEMENT_IDLETIMEOUT (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_IDLETIMEOUT_VENDOR, .type = CAPWAP_ELEMENT_IDLETIMEOUT_TYPE }
struct capwap_idletimeout_element {
uint32_t timeout;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_IMAGE_DATA_HEADER__
#define __CAPWAP_ELEMENT_IMAGE_DATA_HEADER__
#define CAPWAP_ELEMENT_IMAGEDATA 24
#define CAPWAP_ELEMENT_IMAGEDATA_VENDOR 0
#define CAPWAP_ELEMENT_IMAGEDATA_TYPE 24
#define CAPWAP_ELEMENT_IMAGEDATA (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_IMAGEDATA_VENDOR, .type = CAPWAP_ELEMENT_IMAGEDATA_TYPE }
#define CAPWAP_IMAGEDATA_TYPE_DATA_IS_INCLUDED 1
#define CAPWAP_IMAGEDATA_TYPE_DATA_EOF 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_IMAGEIDENTIFIER_HEADER__
#define __CAPWAP_ELEMENT_IMAGEIDENTIFIER_HEADER__
#define CAPWAP_ELEMENT_IMAGEIDENTIFIER 25
#define CAPWAP_ELEMENT_IMAGEIDENTIFIER_VENDOR 0
#define CAPWAP_ELEMENT_IMAGEIDENTIFIER_TYPE 25
#define CAPWAP_ELEMENT_IMAGEIDENTIFIER (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_IMAGEIDENTIFIER_VENDOR, .type = CAPWAP_ELEMENT_IMAGEIDENTIFIER_TYPE }
#define CAPWAP_IMAGEIDENTIFIER_MAXLENGTH 1024

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_IMAGE_INFO_HEADER__
#define __CAPWAP_ELEMENT_IMAGE_INFO_HEADER__
#define CAPWAP_ELEMENT_IMAGEINFO 26
#define CAPWAP_ELEMENT_IMAGEINFO_VENDOR 0
#define CAPWAP_ELEMENT_IMAGEINFO_TYPE 26
#define CAPWAP_ELEMENT_IMAGEINFO (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_IMAGEINFO_VENDOR, .type = CAPWAP_ELEMENT_IMAGEINFO_TYPE }
#define CAPWAP_IMAGEINFO_HASH_LENGTH 16

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_INIT_DOWNLOAD_HEADER__
#define __CAPWAP_ELEMENT_INIT_DOWNLOAD_HEADER__
#define CAPWAP_ELEMENT_INITIATEDOWNLOAD 27
#define CAPWAP_ELEMENT_INITIATEDOWNLOAD_VENDOR 0
#define CAPWAP_ELEMENT_INITIATEDOWNLOAD_TYPE 27
#define CAPWAP_ELEMENT_INITIATEDOWNLOAD (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_INITIATEDOWNLOAD_VENDOR, .type = CAPWAP_ELEMENT_INITIATEDOWNLOAD_TYPE }
struct capwap_initdownload_element {
uint8_t dummy;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_LOCALIPV4_HEADER__
#define __CAPWAP_ELEMENT_LOCALIPV4_HEADER__
#define CAPWAP_ELEMENT_LOCALIPV4 30
#define CAPWAP_ELEMENT_LOCALIPV4_VENDOR 0
#define CAPWAP_ELEMENT_LOCALIPV4_TYPE 30
#define CAPWAP_ELEMENT_LOCALIPV4 (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_LOCALIPV4_VENDOR, .type = CAPWAP_ELEMENT_LOCALIPV4_TYPE }
struct capwap_localipv4_element {
struct in_addr address;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_LOCALIPV6_HEADER__
#define __CAPWAP_ELEMENT_LOCALIPV6_HEADER__
#define CAPWAP_ELEMENT_LOCALIPV6 50
#define CAPWAP_ELEMENT_LOCALIPV6_VENDOR 0
#define CAPWAP_ELEMENT_LOCALIPV6_TYPE 50
#define CAPWAP_ELEMENT_LOCALIPV6 (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_LOCALIPV6_VENDOR, .type = CAPWAP_ELEMENT_LOCALIPV6_TYPE }
struct capwap_localipv6_element {
struct in6_addr address;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_LOCATION_HEADER__
#define __CAPWAP_ELEMENT_LOCATION_HEADER__
#define CAPWAP_ELEMENT_LOCATION 28
#define CAPWAP_ELEMENT_LOCATION_VENDOR 0
#define CAPWAP_ELEMENT_LOCATION_TYPE 28
#define CAPWAP_ELEMENT_LOCATION (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_LOCATION_VENDOR, .type = CAPWAP_ELEMENT_LOCATION_TYPE }
#define CAPWAP_LOCATION_MAXLENGTH 1024

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_MAXIMUMLENGTH_HEADER__
#define __CAPWAP_ELEMENT_MAXIMUMLENGTH_HEADER__
#define CAPWAP_ELEMENT_MAXIMUMLENGTH 29
#define CAPWAP_ELEMENT_MAXIMUMLENGTH_VENDOR 0
#define CAPWAP_ELEMENT_MAXIMUMLENGTH_TYPE 29
#define CAPWAP_ELEMENT_MAXIMUMLENGTH (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_MAXIMUMLENGTH_VENDOR, .type = CAPWAP_ELEMENT_MAXIMUMLENGTH_TYPE }
struct capwap_maximumlength_element {
uint16_t length;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_MTUDISCOVERY_HEADER__
#define __CAPWAP_ELEMENT_MTUDISCOVERY_HEADER__
#define CAPWAP_ELEMENT_MTUDISCOVERY 52
#define CAPWAP_ELEMENT_MTUDISCOVERY_VENDOR 0
#define CAPWAP_ELEMENT_MTUDISCOVERY_TYPE 52
#define CAPWAP_ELEMENT_MTUDISCOVERY (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_MTUDISCOVERY_VENDOR, .type = CAPWAP_ELEMENT_MTUDISCOVERY_TYPE }
struct capwap_mtudiscovery_element {
uint16_t length;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_RADIOADMSTATE_HEADER__
#define __CAPWAP_ELEMENT_RADIOADMSTATE_HEADER__
#define CAPWAP_ELEMENT_RADIOADMSTATE 31
#define CAPWAP_ELEMENT_RADIOADMSTATE_VENDOR 0
#define CAPWAP_ELEMENT_RADIOADMSTATE_TYPE 31
#define CAPWAP_ELEMENT_RADIOADMSTATE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_RADIOADMSTATE_VENDOR, .type = CAPWAP_ELEMENT_RADIOADMSTATE_TYPE }
#define CAPWAP_RADIO_ADMIN_STATE_ENABLED 1
#define CAPWAP_RADIO_ADMIN_STATE_DISABLED 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_RADIOOPRSTATE_HEADER__
#define __CAPWAP_ELEMENT_RADIOOPRSTATE_HEADER__
#define CAPWAP_ELEMENT_RADIOOPRSTATE 32
#define CAPWAP_ELEMENT_RADIOOPRSTATE_VENDOR 0
#define CAPWAP_ELEMENT_RADIOOPRSTATE_TYPE 32
#define CAPWAP_ELEMENT_RADIOOPRSTATE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_RADIOOPRSTATE_VENDOR, .type = CAPWAP_ELEMENT_RADIOOPRSTATE_TYPE }
#define CAPWAP_RADIO_OPERATIONAL_STATE_ENABLED 1
#define CAPWAP_RADIO_OPERATIONAL_STATE_DISABLED 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_RESULTCODE_HEADER__
#define __CAPWAP_ELEMENT_RESULTCODE_HEADER__
#define CAPWAP_ELEMENT_RESULTCODE 33
#define CAPWAP_ELEMENT_RESULTCODE_VENDOR 0
#define CAPWAP_ELEMENT_RESULTCODE_TYPE 33
#define CAPWAP_ELEMENT_RESULTCODE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_RESULTCODE_VENDOR, .type = CAPWAP_ELEMENT_RESULTCODE_TYPE }
#define CAPWAP_RESULTCODE_FIRST 0
#define CAPWAP_RESULTCODE_SUCCESS 0

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_RETURNEDMESSAGE_HEADER__
#define __CAPWAP_ELEMENT_RETURNEDMESSAGE_HEADER__
#define CAPWAP_ELEMENT_RETURNEDMESSAGE 34
#define CAPWAP_ELEMENT_RETURNEDMESSAGE_VENDOR 0
#define CAPWAP_ELEMENT_RETURNEDMESSAGE_TYPE 34
#define CAPWAP_ELEMENT_RETURNEDMESSAGE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_RETURNEDMESSAGE_VENDOR, .type = CAPWAP_ELEMENT_RETURNEDMESSAGE_TYPE }
#define CAPWAP_RETURNED_MESSAGE_UNKNOWN_MESSAGE_ELEMENT 1
#define CAPWAP_RETURNED_MESSAGE_UNSUPPORTED_MESSAGE_ELEMENT 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_SESSIONID_HEADER__
#define __CAPWAP_ELEMENT_SESSIONID_HEADER__
#define CAPWAP_ELEMENT_SESSIONID 35
#define CAPWAP_ELEMENT_SESSIONID_VENDOR 0
#define CAPWAP_ELEMENT_SESSIONID_TYPE 35
#define CAPWAP_ELEMENT_SESSIONID (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_SESSIONID_VENDOR, .type = CAPWAP_ELEMENT_SESSIONID_TYPE }
struct capwap_sessionid_element {
uint8_t id[16];

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_STATISTICSTIMER_HEADER__
#define __CAPWAP_ELEMENT_STATISTICSTIMER_HEADER__
#define CAPWAP_ELEMENT_STATISTICSTIMER 36
#define CAPWAP_ELEMENT_STATISTICSTIMER_VENDOR 0
#define CAPWAP_ELEMENT_STATISTICSTIMER_TYPE 36
#define CAPWAP_ELEMENT_STATISTICSTIMER (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_STATISTICSTIMER_VENDOR, .type = CAPWAP_ELEMENT_STATISTICSTIMER_TYPE }
struct capwap_statisticstimer_element {
uint16_t timer;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_TIMERS_HEADER__
#define __CAPWAP_ELEMENT_TIMERS_HEADER__
#define CAPWAP_ELEMENT_TIMERS 12
#define CAPWAP_ELEMENT_TIMERS_VENDOR 0
#define CAPWAP_ELEMENT_TIMERS_TYPE 12
#define CAPWAP_ELEMENT_TIMERS (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_TIMERS_VENDOR, .type = CAPWAP_ELEMENT_TIMERS_TYPE }
struct capwap_timers_element {
uint8_t discovery;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_TRANSPORT_HEADER__
#define __CAPWAP_ELEMENT_TRANSPORT_HEADER__
#define CAPWAP_ELEMENT_TRANSPORT 51
#define CAPWAP_ELEMENT_TRANSPORT_VENDOR 0
#define CAPWAP_ELEMENT_TRANSPORT_TYPE 51
#define CAPWAP_ELEMENT_TRANSPORT (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_TRANSPORT_VENDOR, .type = CAPWAP_ELEMENT_TRANSPORT_TYPE }
#define CAPWAP_UDPLITE_TRANSPORT 1
#define CAPWAP_UDP_TRANSPORT 2

View File

@ -5,7 +5,10 @@
#define VENDOR_TRAVELPING_ELEMENT_80211N_RADIO_CONF 123
#define VENDOR_TRAVELPING_ELEMENT_80211N_STATION_INFO 124
#define CAPWAP_ELEMENT_VENDORPAYLOAD 37
#define CAPWAP_ELEMENT_VENDORPAYLOAD_VENDOR 0
#define CAPWAP_ELEMENT_VENDORPAYLOAD_TYPE 37
#define CAPWAP_ELEMENT_VENDORPAYLOAD (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_VENDORPAYLOAD_VENDOR, .type = CAPWAP_ELEMENT_VENDORPAYLOAD_TYPE }
#define CAPWAP_VENDORPAYLOAD_MAXLENGTH 2048

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPBOARDDATA_HEADER__
#define __CAPWAP_ELEMENT_WTPBOARDDATA_HEADER__
#define CAPWAP_ELEMENT_WTPBOARDDATA 38
#define CAPWAP_ELEMENT_WTPBOARDDATA_VENDOR 0
#define CAPWAP_ELEMENT_WTPBOARDDATA_TYPE 38
#define CAPWAP_ELEMENT_WTPBOARDDATA (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPBOARDDATA_VENDOR, .type = CAPWAP_ELEMENT_WTPBOARDDATA_TYPE }
struct capwap_wtpboarddata_element {
uint32_t vendor;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPDESCRIPTOR_HEADER__
#define __CAPWAP_ELEMENT_WTPDESCRIPTOR_HEADER__
#define CAPWAP_ELEMENT_WTPDESCRIPTOR 39
#define CAPWAP_ELEMENT_WTPDESCRIPTOR_VENDOR 0
#define CAPWAP_ELEMENT_WTPDESCRIPTOR_TYPE 39
#define CAPWAP_ELEMENT_WTPDESCRIPTOR (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPDESCRIPTOR_VENDOR, .type = CAPWAP_ELEMENT_WTPDESCRIPTOR_TYPE }
struct capwap_wtpdescriptor_element {
uint8_t maxradios;

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPFALLBACK_HEADER__
#define __CAPWAP_ELEMENT_WTPFALLBACK_HEADER__
#define CAPWAP_ELEMENT_WTPFALLBACK 40
#define CAPWAP_ELEMENT_WTPFALLBACK_VENDOR 0
#define CAPWAP_ELEMENT_WTPFALLBACK_TYPE 40
#define CAPWAP_ELEMENT_WTPFALLBACK (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPFALLBACK_VENDOR, .type = CAPWAP_ELEMENT_WTPFALLBACK_TYPE }
#define CAPWAP_WTP_FALLBACK_ENABLED 1
#define CAPWAP_WTP_FALLBACK_DISABLED 2

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPFRAMETUNNELMODE_HEADER__
#define __CAPWAP_ELEMENT_WTPFRAMETUNNELMODE_HEADER__
#define CAPWAP_ELEMENT_WTPFRAMETUNNELMODE 41
#define CAPWAP_ELEMENT_WTPFRAMETUNNELMODE_VENDOR 0
#define CAPWAP_ELEMENT_WTPFRAMETUNNELMODE_TYPE 41
#define CAPWAP_ELEMENT_WTPFRAMETUNNELMODE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPFRAMETUNNELMODE_VENDOR, .type = CAPWAP_ELEMENT_WTPFRAMETUNNELMODE_TYPE }
#define CAPWAP_WTP_FRAME_TUNNEL_MODE_MASK 0x0e
#define CAPWAP_WTP_NATIVE_FRAME_TUNNEL 0x08

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPMACTYPE_HEADER__
#define __CAPWAP_ELEMENT_WTPMACTYPE_HEADER__
#define CAPWAP_ELEMENT_WTPMACTYPE 44
#define CAPWAP_ELEMENT_WTPMACTYPE_VENDOR 0
#define CAPWAP_ELEMENT_WTPMACTYPE_TYPE 44
#define CAPWAP_ELEMENT_WTPMACTYPE (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPMACTYPE_VENDOR, .type = CAPWAP_ELEMENT_WTPMACTYPE_TYPE }
#define CAPWAP_LOCALMAC 0
#define CAPWAP_SPLITMAC 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPNAME_HEADER__
#define __CAPWAP_ELEMENT_WTPNAME_HEADER__
#define CAPWAP_ELEMENT_WTPNAME 45
#define CAPWAP_ELEMENT_WTPNAME_VENDOR 0
#define CAPWAP_ELEMENT_WTPNAME_TYPE 45
#define CAPWAP_ELEMENT_WTPNAME (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPNAME_VENDOR, .type = CAPWAP_ELEMENT_WTPNAME_TYPE }
#define CAPWAP_WTPNAME_MAXLENGTH 512

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPRADIOSTAT_HEADER__
#define __CAPWAP_ELEMENT_WTPRADIOSTAT_HEADER__
#define CAPWAP_ELEMENT_WTPRADIOSTAT 47
#define CAPWAP_ELEMENT_WTPRADIOSTAT_VENDOR 0
#define CAPWAP_ELEMENT_WTPRADIOSTAT_TYPE 47
#define CAPWAP_ELEMENT_WTPRADIOSTAT (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPRADIOSTAT_VENDOR, .type = CAPWAP_ELEMENT_WTPRADIOSTAT_TYPE }
#define CAPWAP_WTPRADIOSTAT_FAILER_TYPE_STATNOTSUPP 0
#define CAPWAP_WTPRADIOSTAT_FAILER_TYPE_SWFAIL 1

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPREBOOTSTAT_HEADER__
#define __CAPWAP_ELEMENT_WTPREBOOTSTAT_HEADER__
#define CAPWAP_ELEMENT_WTPREBOOTSTAT 48
#define CAPWAP_ELEMENT_WTPREBOOTSTAT_VENDOR 0
#define CAPWAP_ELEMENT_WTPREBOOTSTAT_TYPE 48
#define CAPWAP_ELEMENT_WTPREBOOTSTAT (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPREBOOTSTAT_VENDOR, .type = CAPWAP_ELEMENT_WTPREBOOTSTAT_TYPE }
#define CAPWAP_NOTAVAILABLE_REBOOT_COUNT 65535
#define CAPWAP_NOTAVAILABLE_ACINIT_COUNT 65535

View File

@ -1,7 +1,10 @@
#ifndef __CAPWAP_ELEMENT_WTPSTATICIPADDRESS_HEADER__
#define __CAPWAP_ELEMENT_WTPSTATICIPADDRESS_HEADER__
#define CAPWAP_ELEMENT_WTPSTATICIPADDRESS 49
#define CAPWAP_ELEMENT_WTPSTATICIPADDRESS_VENDOR 0
#define CAPWAP_ELEMENT_WTPSTATICIPADDRESS_TYPE 49
#define CAPWAP_ELEMENT_WTPSTATICIPADDRESS (struct capwap_message_element_id){ .vendor = CAPWAP_ELEMENT_WTPSTATICIPADDRESS_VENDOR, .type = CAPWAP_ELEMENT_WTPSTATICIPADDRESS_TYPE }
struct capwap_wtpstaticipaddress_element {
struct in_addr address;

View File

@ -487,18 +487,21 @@ struct capwap_packet_txmng* capwap_packet_txmng_create_ctrl_message(struct capwa
}
/* */
void capwap_packet_txmng_add_message_element(struct capwap_packet_txmng* txmngpacket, unsigned short type, void* data) {
void capwap_packet_txmng_add_message_element(struct capwap_packet_txmng *txmngpacket,
const struct capwap_message_element_id id,
void *data)
{
const struct capwap_message_elements_ops* func;
struct write_block_from_pos writepos;
ASSERT(txmngpacket != NULL);
/* Retrieve message element function */
func = capwap_get_message_element_ops(type);
func = capwap_get_message_element_ops(id);
ASSERT(func != NULL);
ASSERT(func->create != NULL);
/*
/*
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@ -510,7 +513,7 @@ void capwap_packet_txmng_add_message_element(struct capwap_packet_txmng* txmngpa
Type and Length is add to this function, only custom create write Value message element
*/
txmngpacket->write_ops.write_u16((capwap_message_elements_handle)txmngpacket, type);
txmngpacket->write_ops.write_u16((capwap_message_elements_handle)txmngpacket, id.type);
/* Length of message element is calculate after create function */
writepos.item = txmngpacket->fragmentlist->last;

View File

@ -59,7 +59,9 @@ struct capwap_packet_txmng {
/* */
struct capwap_packet_txmng* capwap_packet_txmng_create_ctrl_message(struct capwap_header_data* data, unsigned long type, unsigned char seq, unsigned short mtu);
void capwap_packet_txmng_add_message_element(struct capwap_packet_txmng* txmngpacket, unsigned short type, void* data);
void capwap_packet_txmng_add_message_element(struct capwap_packet_txmng *txmngpacket,
const struct capwap_message_element_id id,
void *data);
void capwap_packet_txmng_get_fragment_packets(struct capwap_packet_txmng* txmngpacket, struct capwap_list* fragmentlist, unsigned short fragmentid);
void capwap_packet_txmng_free(struct capwap_packet_txmng* txmngpacket);

View File

@ -222,13 +222,13 @@ struct capwap_macaddress_eui64 {
#define CAPWAP_MESSAGE_ELEMENTS_START 1
#define CAPWAP_MESSAGE_ELEMENTS_STOP 53
#define CAPWAP_MESSAGE_ELEMENTS_COUNT ((CAPWAP_MESSAGE_ELEMENTS_STOP - CAPWAP_MESSAGE_ELEMENTS_START) + 1)
#define IS_MESSAGE_ELEMENTS(x) (((x >= CAPWAP_MESSAGE_ELEMENTS_START) && (x <= CAPWAP_MESSAGE_ELEMENTS_STOP)) ? 1 : 0)
#define IS_MESSAGE_ELEMENTS(x) ((((x).vendor == 0) && ((x).type >= CAPWAP_MESSAGE_ELEMENTS_START) && ((x).type <= CAPWAP_MESSAGE_ELEMENTS_STOP)) ? 1 : 0)
/* 802.11 message elements 1024 -> 1024 (1024 - 2047) */
#define CAPWAP_80211_MESSAGE_ELEMENTS_START 1024
#define CAPWAP_80211_MESSAGE_ELEMENTS_STOP 1048
#define CAPWAP_80211_MESSAGE_ELEMENTS_COUNT ((CAPWAP_80211_MESSAGE_ELEMENTS_STOP - CAPWAP_80211_MESSAGE_ELEMENTS_START) + 1)
#define IS_80211_MESSAGE_ELEMENTS(x) (((x >= CAPWAP_80211_MESSAGE_ELEMENTS_START) && (x <= CAPWAP_80211_MESSAGE_ELEMENTS_STOP)) ? 1 : 0)
#define IS_80211_MESSAGE_ELEMENTS(x) ((((x).vendor == 0) && ((x).type >= CAPWAP_80211_MESSAGE_ELEMENTS_START) && ((x).type <= CAPWAP_80211_MESSAGE_ELEMENTS_STOP)) ? 1 : 0)
/* */
#define IS_VALID_MESSAGE_ELEMENTS(x) (IS_MESSAGE_ELEMENTS(x) || IS_80211_MESSAGE_ELEMENTS(x))

View File

@ -158,7 +158,7 @@ static void receive_ieee80211_wlan_configuration_request(struct capwap_parsed_pa
/* */
binding = GET_WBID_HEADER(packet->rxmngpacket->header);
if ((binding == g_wtp.binding) && IS_SEQUENCE_SMALLER(g_wtp.remoteseqnumber, packet->rxmngpacket->ctrlmsg.seq)) {
int action = 0;
struct capwap_message_element_id action = {0, 0};
struct capwap_header_data capwapheader;
struct capwap_packet_txmng* txmngpacket;
struct capwap_80211_assignbssid_element bssid;
@ -182,9 +182,9 @@ static void receive_ieee80211_wlan_configuration_request(struct capwap_parsed_pa
/* Add message element */
capwap_packet_txmng_add_message_element(txmngpacket, CAPWAP_ELEMENT_RESULTCODE, &resultcode);
if ((resultcode.code == CAPWAP_RESULTCODE_SUCCESS) && (action == CAPWAP_ELEMENT_80211_ADD_WLAN)) {
if (resultcode.code == CAPWAP_RESULTCODE_SUCCESS &&
memcmp(&action, &CAPWAP_ELEMENT_80211_ADD_WLAN, sizeof(CAPWAP_ELEMENT_80211_ADD_WLAN)) == 0)
capwap_packet_txmng_add_message_element(txmngpacket, CAPWAP_ELEMENT_80211_ASSIGN_BSSID, &bssid);
}
/* CAPWAP_ELEMENT_VENDORPAYLOAD */ /* TODO */

View File

@ -170,9 +170,9 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
struct capwap_message_element_itemlist* messageelement = (struct capwap_message_element_itemlist*)search->item;
/* Parsing only IEEE 802.11 message element */
if (IS_80211_MESSAGE_ELEMENTS(messageelement->type)) {
switch (messageelement->type) {
case CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL: {
if (IS_80211_MESSAGE_ELEMENTS(messageelement->id)) {
switch (messageelement->id.type) {
case CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_directsequencecontrol_element* directsequencecontrol;
@ -190,7 +190,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_OFDMCONTROL: {
case CAPWAP_ELEMENT_80211_OFDMCONTROL_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_ofdmcontrol_element* ofdmcontrol;
@ -208,7 +208,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION: {
case CAPWAP_ELEMENT_80211_WTPRADIOINFORMATION_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_wtpradioinformation_element* radioinformation;
@ -237,9 +237,9 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
struct capwap_message_element_itemlist* messageelement = (struct capwap_message_element_itemlist*)search->item;
/* Parsing only IEEE 802.11 message element */
if (IS_80211_MESSAGE_ELEMENTS(messageelement->type)) {
switch (messageelement->type) {
case CAPWAP_ELEMENT_80211_ANTENNA: {
if (IS_80211_MESSAGE_ELEMENTS(messageelement->id)) {
switch (messageelement->id.type) {
case CAPWAP_ELEMENT_80211_ANTENNA_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_antenna_element* antenna;
@ -256,7 +256,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_MACOPERATION: {
case CAPWAP_ELEMENT_80211_MACOPERATION_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_macoperation_element* macoperation;
@ -273,7 +273,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY: {
case CAPWAP_ELEMENT_80211_MULTIDOMAINCAPABILITY_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_multidomaincapability_element* multidomaincapability;
@ -290,7 +290,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL: {
case CAPWAP_ELEMENT_80211_DIRECTSEQUENCECONTROL_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_directsequencecontrol_element* directsequencecontrol;
@ -314,7 +314,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_OFDMCONTROL: {
case CAPWAP_ELEMENT_80211_OFDMCONTROL_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_ofdmcontrol_element* ofdmcontrol;
@ -338,7 +338,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_RATESET: {
case CAPWAP_ELEMENT_80211_RATESET_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_rateset_element* rateset;
@ -360,7 +360,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_SUPPORTEDRATES: {
case CAPWAP_ELEMENT_80211_SUPPORTEDRATES_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_supportedrates_element* supportedrates;
@ -377,7 +377,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_TXPOWER: {
case CAPWAP_ELEMENT_80211_TXPOWER_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_txpower_element* txpower;
@ -394,7 +394,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_WTP_QOS: {
case CAPWAP_ELEMENT_80211_WTP_QOS_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_wtpqos_element* qos;
@ -416,7 +416,7 @@ int wtp_radio_setconfiguration(struct capwap_parsed_packet* packet) {
break;
}
case CAPWAP_ELEMENT_80211_WTP_RADIO_CONF: {
case CAPWAP_ELEMENT_80211_WTP_RADIO_CONF_TYPE: {
messageelements = (struct capwap_array*)messageelement->data;
if (messageelements && (messageelements->count > 0)) {
struct capwap_80211_wtpradioconf_element* radioconfig;