diff --git a/src/common/capwap_element.c b/src/common/capwap_element.c index e399f8a..febb6c4 100644 --- a/src/common/capwap_element.c +++ b/src/common/capwap_element.c @@ -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); diff --git a/src/common/capwap_element.h b/src/common/capwap_element.h index f637c34..fe74f52 100644 --- a/src/common/capwap_element.h +++ b/src/common/capwap_element.h @@ -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__ */ diff --git a/src/common/capwap_element_80211_addwlan.h b/src/common/capwap_element_80211_addwlan.h index 9a09049..c2027a7 100644 --- a/src/common/capwap_element_80211_addwlan.h +++ b/src/common/capwap_element_80211_addwlan.h @@ -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 diff --git a/src/common/capwap_element_80211_antenna.h b/src/common/capwap_element_80211_antenna.h index ac0cb56..44e5fad 100644 --- a/src/common/capwap_element_80211_antenna.h +++ b/src/common/capwap_element_80211_antenna.h @@ -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 diff --git a/src/common/capwap_element_80211_assignbssid.h b/src/common/capwap_element_80211_assignbssid.h index 9036027..4e74170 100644 --- a/src/common/capwap_element_80211_assignbssid.h +++ b/src/common/capwap_element_80211_assignbssid.h @@ -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; diff --git a/src/common/capwap_element_80211_deletewlan.h b/src/common/capwap_element_80211_deletewlan.h index 99fa66a..c789d08 100644 --- a/src/common/capwap_element_80211_deletewlan.h +++ b/src/common/capwap_element_80211_deletewlan.h @@ -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; diff --git a/src/common/capwap_element_80211_directsequencecontrol.h b/src/common/capwap_element_80211_directsequencecontrol.h index 686094b..d4b8771 100644 --- a/src/common/capwap_element_80211_directsequencecontrol.h +++ b/src/common/capwap_element_80211_directsequencecontrol.h @@ -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 diff --git a/src/common/capwap_element_80211_ie.h b/src/common/capwap_element_80211_ie.h index 5316c6a..08af511 100644 --- a/src/common/capwap_element_80211_ie.h +++ b/src/common/capwap_element_80211_ie.h @@ -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 diff --git a/src/common/capwap_element_80211_macoperation.h b/src/common/capwap_element_80211_macoperation.h index 5b34cfe..d0f26c9 100644 --- a/src/common/capwap_element_80211_macoperation.h +++ b/src/common/capwap_element_80211_macoperation.h @@ -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; diff --git a/src/common/capwap_element_80211_miccountermeasures.h b/src/common/capwap_element_80211_miccountermeasures.h index 85a4633..59ec197 100644 --- a/src/common/capwap_element_80211_miccountermeasures.h +++ b/src/common/capwap_element_80211_miccountermeasures.h @@ -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; diff --git a/src/common/capwap_element_80211_multidomaincapability.h b/src/common/capwap_element_80211_multidomaincapability.h index 052af4c..284e0b4 100644 --- a/src/common/capwap_element_80211_multidomaincapability.h +++ b/src/common/capwap_element_80211_multidomaincapability.h @@ -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; diff --git a/src/common/capwap_element_80211_ofdmcontrol.h b/src/common/capwap_element_80211_ofdmcontrol.h index f83a3fd..42b0077 100644 --- a/src/common/capwap_element_80211_ofdmcontrol.h +++ b/src/common/capwap_element_80211_ofdmcontrol.h @@ -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 diff --git a/src/common/capwap_element_80211_rateset.h b/src/common/capwap_element_80211_rateset.h index 0d446f0..42bde1b 100644 --- a/src/common/capwap_element_80211_rateset.h +++ b/src/common/capwap_element_80211_rateset.h @@ -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 diff --git a/src/common/capwap_element_80211_rsnaerrorreport.h b/src/common/capwap_element_80211_rsnaerrorreport.h index ef62c7a..5f406ff 100644 --- a/src/common/capwap_element_80211_rsnaerrorreport.h +++ b/src/common/capwap_element_80211_rsnaerrorreport.h @@ -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]; diff --git a/src/common/capwap_element_80211_station.h b/src/common/capwap_element_80211_station.h index d0140f6..9a08219 100644 --- a/src/common/capwap_element_80211_station.h +++ b/src/common/capwap_element_80211_station.h @@ -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 diff --git a/src/common/capwap_element_80211_stationkey.h b/src/common/capwap_element_80211_stationkey.h index b81336a..a1e7c27 100644 --- a/src/common/capwap_element_80211_stationkey.h +++ b/src/common/capwap_element_80211_stationkey.h @@ -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 diff --git a/src/common/capwap_element_80211_stationqos.h b/src/common/capwap_element_80211_stationqos.h index 74b36da..cf1db8f 100644 --- a/src/common/capwap_element_80211_stationqos.h +++ b/src/common/capwap_element_80211_stationqos.h @@ -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]; diff --git a/src/common/capwap_element_80211_statistics.h b/src/common/capwap_element_80211_statistics.h index df7345d..16d9f82 100644 --- a/src/common/capwap_element_80211_statistics.h +++ b/src/common/capwap_element_80211_statistics.h @@ -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; diff --git a/src/common/capwap_element_80211_supportedrates.h b/src/common/capwap_element_80211_supportedrates.h index df0165e..0d38269 100644 --- a/src/common/capwap_element_80211_supportedrates.h +++ b/src/common/capwap_element_80211_supportedrates.h @@ -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 diff --git a/src/common/capwap_element_80211_txpower.h b/src/common/capwap_element_80211_txpower.h index 32d881a..f5d49e1 100644 --- a/src/common/capwap_element_80211_txpower.h +++ b/src/common/capwap_element_80211_txpower.h @@ -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; diff --git a/src/common/capwap_element_80211_txpowerlevel.h b/src/common/capwap_element_80211_txpowerlevel.h index ef44ca3..6ff1423 100644 --- a/src/common/capwap_element_80211_txpowerlevel.h +++ b/src/common/capwap_element_80211_txpowerlevel.h @@ -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 diff --git a/src/common/capwap_element_80211_updatestationqos.h b/src/common/capwap_element_80211_updatestationqos.h index 6442767..fe86241 100644 --- a/src/common/capwap_element_80211_updatestationqos.h +++ b/src/common/capwap_element_80211_updatestationqos.h @@ -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 diff --git a/src/common/capwap_element_80211_updatewlan.h b/src/common/capwap_element_80211_updatewlan.h index b95d220..a209d65 100644 --- a/src/common/capwap_element_80211_updatewlan.h +++ b/src/common/capwap_element_80211_updatewlan.h @@ -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 diff --git a/src/common/capwap_element_80211_wtpqos.h b/src/common/capwap_element_80211_wtpqos.h index 71d761e..db0e62a 100644 --- a/src/common/capwap_element_80211_wtpqos.h +++ b/src/common/capwap_element_80211_wtpqos.h @@ -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 diff --git a/src/common/capwap_element_80211_wtpradioconf.h b/src/common/capwap_element_80211_wtpradioconf.h index 032cfa2..aebb201 100644 --- a/src/common/capwap_element_80211_wtpradioconf.h +++ b/src/common/capwap_element_80211_wtpradioconf.h @@ -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 diff --git a/src/common/capwap_element_80211_wtpradiofailalarm.h b/src/common/capwap_element_80211_wtpradiofailalarm.h index c044ef6..b9a4aec 100644 --- a/src/common/capwap_element_80211_wtpradiofailalarm.h +++ b/src/common/capwap_element_80211_wtpradiofailalarm.h @@ -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 diff --git a/src/common/capwap_element_80211_wtpradioinformation.h b/src/common/capwap_element_80211_wtpradioinformation.h index c78efdc..aea2480 100644 --- a/src/common/capwap_element_80211_wtpradioinformation.h +++ b/src/common/capwap_element_80211_wtpradioinformation.h @@ -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 diff --git a/src/common/capwap_element_80211n_radioconf.h b/src/common/capwap_element_80211n_radioconf.h index 484d284..8bb1e5f 100644 --- a/src/common/capwap_element_80211n_radioconf.h +++ b/src/common/capwap_element_80211n_radioconf.h @@ -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) diff --git a/src/common/capwap_element_80211n_station_information.h b/src/common/capwap_element_80211n_station_information.h index 14102c2..b2a2364 100644 --- a/src/common/capwap_element_80211n_station_information.h +++ b/src/common/capwap_element_80211n_station_information.h @@ -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)) diff --git a/src/common/capwap_element_acdescriptor.h b/src/common/capwap_element_acdescriptor.h index 7547656..3b3fe30 100644 --- a/src/common/capwap_element_acdescriptor.h +++ b/src/common/capwap_element_acdescriptor.h @@ -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 diff --git a/src/common/capwap_element_acipv4list.h b/src/common/capwap_element_acipv4list.h index d3353d4..ca9758b 100644 --- a/src/common/capwap_element_acipv4list.h +++ b/src/common/capwap_element_acipv4list.h @@ -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 diff --git a/src/common/capwap_element_acipv6list.h b/src/common/capwap_element_acipv6list.h index b51db1c..fc9e17c 100644 --- a/src/common/capwap_element_acipv6list.h +++ b/src/common/capwap_element_acipv6list.h @@ -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 diff --git a/src/common/capwap_element_acname.h b/src/common/capwap_element_acname.h index f87fdc3..f78b7ae 100644 --- a/src/common/capwap_element_acname.h +++ b/src/common/capwap_element_acname.h @@ -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 diff --git a/src/common/capwap_element_acnamepriority.h b/src/common/capwap_element_acnamepriority.h index a229969..ea61a24 100644 --- a/src/common/capwap_element_acnamepriority.h +++ b/src/common/capwap_element_acnamepriority.h @@ -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 diff --git a/src/common/capwap_element_actimestamp.h b/src/common/capwap_element_actimestamp.h index 0943cbf..16e798b 100644 --- a/src/common/capwap_element_actimestamp.h +++ b/src/common/capwap_element_actimestamp.h @@ -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 { diff --git a/src/common/capwap_element_addmacacl.h b/src/common/capwap_element_addmacacl.h index c163f11..2f545d3 100644 --- a/src/common/capwap_element_addmacacl.h +++ b/src/common/capwap_element_addmacacl.h @@ -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; diff --git a/src/common/capwap_element_addstation.h b/src/common/capwap_element_addstation.h index c800dae..2adad18 100644 --- a/src/common/capwap_element_addstation.h +++ b/src/common/capwap_element_addstation.h @@ -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 diff --git a/src/common/capwap_element_controlipv4.h b/src/common/capwap_element_controlipv4.h index acb9aaa..a723cfa 100644 --- a/src/common/capwap_element_controlipv4.h +++ b/src/common/capwap_element_controlipv4.h @@ -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; diff --git a/src/common/capwap_element_controlipv6.h b/src/common/capwap_element_controlipv6.h index c6f6af0..888043b 100644 --- a/src/common/capwap_element_controlipv6.h +++ b/src/common/capwap_element_controlipv6.h @@ -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; diff --git a/src/common/capwap_element_datatransferdata.h b/src/common/capwap_element_datatransferdata.h index 4034540..9c7f906 100644 --- a/src/common/capwap_element_datatransferdata.h +++ b/src/common/capwap_element_datatransferdata.h @@ -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 diff --git a/src/common/capwap_element_datatransfermode.h b/src/common/capwap_element_datatransfermode.h index dbf892b..3786f76 100644 --- a/src/common/capwap_element_datatransfermode.h +++ b/src/common/capwap_element_datatransfermode.h @@ -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 diff --git a/src/common/capwap_element_decrypterrorreport.h b/src/common/capwap_element_decrypterrorreport.h index a434b6a..8eefcb9 100644 --- a/src/common/capwap_element_decrypterrorreport.h +++ b/src/common/capwap_element_decrypterrorreport.h @@ -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; diff --git a/src/common/capwap_element_decrypterrorreportperiod.h b/src/common/capwap_element_decrypterrorreportperiod.h index 9495647..d03c05c 100644 --- a/src/common/capwap_element_decrypterrorreportperiod.h +++ b/src/common/capwap_element_decrypterrorreportperiod.h @@ -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; diff --git a/src/common/capwap_element_deletemacacl.h b/src/common/capwap_element_deletemacacl.h index 7d7f294..2e8ece7 100644 --- a/src/common/capwap_element_deletemacacl.h +++ b/src/common/capwap_element_deletemacacl.h @@ -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; diff --git a/src/common/capwap_element_deletestation.h b/src/common/capwap_element_deletestation.h index d59a24c..8b8799b 100644 --- a/src/common/capwap_element_deletestation.h +++ b/src/common/capwap_element_deletestation.h @@ -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; diff --git a/src/common/capwap_element_discoverytype.h b/src/common/capwap_element_discoverytype.h index 4557a51..51ee140 100644 --- a/src/common/capwap_element_discoverytype.h +++ b/src/common/capwap_element_discoverytype.h @@ -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 diff --git a/src/common/capwap_element_duplicateipv4.h b/src/common/capwap_element_duplicateipv4.h index 22ac0a0..fd69028 100644 --- a/src/common/capwap_element_duplicateipv4.h +++ b/src/common/capwap_element_duplicateipv4.h @@ -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 diff --git a/src/common/capwap_element_duplicateipv6.h b/src/common/capwap_element_duplicateipv6.h index ea3b57f..70d318e 100644 --- a/src/common/capwap_element_duplicateipv6.h +++ b/src/common/capwap_element_duplicateipv6.h @@ -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 diff --git a/src/common/capwap_element_ecnsupport.h b/src/common/capwap_element_ecnsupport.h index 8672eed..12c69fa 100644 --- a/src/common/capwap_element_ecnsupport.h +++ b/src/common/capwap_element_ecnsupport.h @@ -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 diff --git a/src/common/capwap_element_idletimeout.h b/src/common/capwap_element_idletimeout.h index cda4b70..54a60ac 100644 --- a/src/common/capwap_element_idletimeout.h +++ b/src/common/capwap_element_idletimeout.h @@ -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; diff --git a/src/common/capwap_element_imagedata.h b/src/common/capwap_element_imagedata.h index 69272ac..4963837 100644 --- a/src/common/capwap_element_imagedata.h +++ b/src/common/capwap_element_imagedata.h @@ -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 diff --git a/src/common/capwap_element_imageidentifier.h b/src/common/capwap_element_imageidentifier.h index fa0c07f..126b133 100644 --- a/src/common/capwap_element_imageidentifier.h +++ b/src/common/capwap_element_imageidentifier.h @@ -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 diff --git a/src/common/capwap_element_imageinfo.h b/src/common/capwap_element_imageinfo.h index 63f2979..27c5192 100644 --- a/src/common/capwap_element_imageinfo.h +++ b/src/common/capwap_element_imageinfo.h @@ -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 diff --git a/src/common/capwap_element_initdownload.h b/src/common/capwap_element_initdownload.h index e74655d..d2faefa 100644 --- a/src/common/capwap_element_initdownload.h +++ b/src/common/capwap_element_initdownload.h @@ -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; diff --git a/src/common/capwap_element_localipv4.h b/src/common/capwap_element_localipv4.h index df3e2f4..5f934f8 100644 --- a/src/common/capwap_element_localipv4.h +++ b/src/common/capwap_element_localipv4.h @@ -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; diff --git a/src/common/capwap_element_localipv6.h b/src/common/capwap_element_localipv6.h index 911956d..a41bdf2 100644 --- a/src/common/capwap_element_localipv6.h +++ b/src/common/capwap_element_localipv6.h @@ -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; diff --git a/src/common/capwap_element_location.h b/src/common/capwap_element_location.h index d9a641a..8686649 100644 --- a/src/common/capwap_element_location.h +++ b/src/common/capwap_element_location.h @@ -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 diff --git a/src/common/capwap_element_maximumlength.h b/src/common/capwap_element_maximumlength.h index d68434c..d938743 100644 --- a/src/common/capwap_element_maximumlength.h +++ b/src/common/capwap_element_maximumlength.h @@ -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; diff --git a/src/common/capwap_element_mtudiscovery.h b/src/common/capwap_element_mtudiscovery.h index bab13cc..6a82ad1 100644 --- a/src/common/capwap_element_mtudiscovery.h +++ b/src/common/capwap_element_mtudiscovery.h @@ -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; diff --git a/src/common/capwap_element_radioadmstate.h b/src/common/capwap_element_radioadmstate.h index 1236016..2e74db9 100644 --- a/src/common/capwap_element_radioadmstate.h +++ b/src/common/capwap_element_radioadmstate.h @@ -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 diff --git a/src/common/capwap_element_radiooprstate.h b/src/common/capwap_element_radiooprstate.h index 3925fb9..343b8c8 100644 --- a/src/common/capwap_element_radiooprstate.h +++ b/src/common/capwap_element_radiooprstate.h @@ -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 diff --git a/src/common/capwap_element_resultcode.h b/src/common/capwap_element_resultcode.h index d06eab2..87aa576 100644 --- a/src/common/capwap_element_resultcode.h +++ b/src/common/capwap_element_resultcode.h @@ -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 diff --git a/src/common/capwap_element_returnedmessage.h b/src/common/capwap_element_returnedmessage.h index bc11265..3c4a4d4 100644 --- a/src/common/capwap_element_returnedmessage.h +++ b/src/common/capwap_element_returnedmessage.h @@ -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 diff --git a/src/common/capwap_element_sessionid.h b/src/common/capwap_element_sessionid.h index 61ad974..3dc503f 100644 --- a/src/common/capwap_element_sessionid.h +++ b/src/common/capwap_element_sessionid.h @@ -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]; diff --git a/src/common/capwap_element_statisticstimer.h b/src/common/capwap_element_statisticstimer.h index a5b95ab..a750c91 100644 --- a/src/common/capwap_element_statisticstimer.h +++ b/src/common/capwap_element_statisticstimer.h @@ -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; diff --git a/src/common/capwap_element_timers.h b/src/common/capwap_element_timers.h index f114131..6a87acf 100644 --- a/src/common/capwap_element_timers.h +++ b/src/common/capwap_element_timers.h @@ -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; diff --git a/src/common/capwap_element_transport.h b/src/common/capwap_element_transport.h index fdc7d50..e31c284 100644 --- a/src/common/capwap_element_transport.h +++ b/src/common/capwap_element_transport.h @@ -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 diff --git a/src/common/capwap_element_vendorpayload.h b/src/common/capwap_element_vendorpayload.h index 43b9d6f..46e3823 100644 --- a/src/common/capwap_element_vendorpayload.h +++ b/src/common/capwap_element_vendorpayload.h @@ -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 diff --git a/src/common/capwap_element_wtpboarddata.h b/src/common/capwap_element_wtpboarddata.h index 03d93da..3e3550c 100644 --- a/src/common/capwap_element_wtpboarddata.h +++ b/src/common/capwap_element_wtpboarddata.h @@ -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; diff --git a/src/common/capwap_element_wtpdescriptor.h b/src/common/capwap_element_wtpdescriptor.h index 38e4e40..76511c3 100644 --- a/src/common/capwap_element_wtpdescriptor.h +++ b/src/common/capwap_element_wtpdescriptor.h @@ -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; diff --git a/src/common/capwap_element_wtpfallback.h b/src/common/capwap_element_wtpfallback.h index 7eed9d9..53ec93b 100644 --- a/src/common/capwap_element_wtpfallback.h +++ b/src/common/capwap_element_wtpfallback.h @@ -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 diff --git a/src/common/capwap_element_wtpframetunnelmode.h b/src/common/capwap_element_wtpframetunnelmode.h index e301073..0cc5bed 100644 --- a/src/common/capwap_element_wtpframetunnelmode.h +++ b/src/common/capwap_element_wtpframetunnelmode.h @@ -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 diff --git a/src/common/capwap_element_wtpmactype.h b/src/common/capwap_element_wtpmactype.h index ddbaf85..446ac63 100644 --- a/src/common/capwap_element_wtpmactype.h +++ b/src/common/capwap_element_wtpmactype.h @@ -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 diff --git a/src/common/capwap_element_wtpname.h b/src/common/capwap_element_wtpname.h index e85d67e..28b069d 100644 --- a/src/common/capwap_element_wtpname.h +++ b/src/common/capwap_element_wtpname.h @@ -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 diff --git a/src/common/capwap_element_wtpradiostat.h b/src/common/capwap_element_wtpradiostat.h index 367e9fe..772281f 100644 --- a/src/common/capwap_element_wtpradiostat.h +++ b/src/common/capwap_element_wtpradiostat.h @@ -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 diff --git a/src/common/capwap_element_wtprebootstat.h b/src/common/capwap_element_wtprebootstat.h index 5dd73a7..dbe2a50 100644 --- a/src/common/capwap_element_wtprebootstat.h +++ b/src/common/capwap_element_wtprebootstat.h @@ -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 diff --git a/src/common/capwap_element_wtpstaticipaddress.h b/src/common/capwap_element_wtpstaticipaddress.h index 046a194..28aa2a1 100644 --- a/src/common/capwap_element_wtpstaticipaddress.h +++ b/src/common/capwap_element_wtpstaticipaddress.h @@ -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; diff --git a/src/common/capwap_protocol.c b/src/common/capwap_protocol.c index 95dd12a..8aea50b 100644 --- a/src/common/capwap_protocol.c +++ b/src/common/capwap_protocol.c @@ -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; diff --git a/src/common/capwap_protocol.h b/src/common/capwap_protocol.h index 624177b..d873fb8 100644 --- a/src/common/capwap_protocol.h +++ b/src/common/capwap_protocol.h @@ -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); diff --git a/src/common/capwap_rfc.h b/src/common/capwap_rfc.h index 08898d5..a87d261 100644 --- a/src/common/capwap_rfc.h +++ b/src/common/capwap_rfc.h @@ -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)) diff --git a/src/wtp/wtp_dfa_run.c b/src/wtp/wtp_dfa_run.c index e542f2a..f74b858 100644 --- a/src/wtp/wtp_dfa_run.c +++ b/src/wtp/wtp_dfa_run.c @@ -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 */ diff --git a/src/wtp/wtp_radio.c b/src/wtp/wtp_radio.c index cdd90e2..12fe08c 100644 --- a/src/wtp/wtp_radio.c +++ b/src/wtp/wtp_radio.c @@ -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;