Add feature to clone message element

This commit is contained in:
vemax78 2013-10-01 16:39:27 +02:00
parent 06c4763053
commit b0fac2068e
75 changed files with 887 additions and 76 deletions

View File

@ -676,12 +676,12 @@ void capwap_free_parsed_packet(struct capwap_parsed_packet* packet) {
msgops = capwap_get_message_element_ops(messageelement->type); msgops = capwap_get_message_element_ops(messageelement->type);
if (messageelement->category == CAPWAP_MESSAGE_ELEMENT_SINGLE) { if (messageelement->category == CAPWAP_MESSAGE_ELEMENT_SINGLE) {
msgops->free_parsed_message_element(messageelement->data); msgops->free_message_element(messageelement->data);
} else if (messageelement->category == CAPWAP_MESSAGE_ELEMENT_ARRAY) { } else if (messageelement->category == CAPWAP_MESSAGE_ELEMENT_ARRAY) {
struct capwap_array* arraymessageelement = (struct capwap_array*)messageelement->data; struct capwap_array* arraymessageelement = (struct capwap_array*)messageelement->data;
for (i = 0; i < arraymessageelement->count; i++) { for (i = 0; i < arraymessageelement->count; i++) {
msgops->free_parsed_message_element(*(void**)capwap_array_get_item_pointer(arraymessageelement, i)); msgops->free_message_element(*(void**)capwap_array_get_item_pointer(arraymessageelement, i));
} }
/* */ /* */

View File

@ -28,7 +28,10 @@ struct capwap_message_elements_ops {
/* Parsing message element */ /* Parsing message element */
void* (*parsing_message_element)(capwap_message_elements_handle handle, struct capwap_read_message_elements_ops* func); void* (*parsing_message_element)(capwap_message_elements_handle handle, struct capwap_read_message_elements_ops* func);
void (*free_parsed_message_element)(void*);
/* Memory management */
void* (*clone_message_element)(void*);
void (*free_message_element)(void*);
}; };
struct capwap_message_elements_ops* capwap_get_message_element_ops(unsigned short code); struct capwap_message_elements_ops* capwap_get_message_element_ops(unsigned short code);

View File

@ -56,6 +56,22 @@ static void capwap_80211_addwlan_element_create(void* data, capwap_message_eleme
func->write_block(handle, element->ssid, length); func->write_block(handle, element->ssid, length);
} }
/* */
static void* capwap_80211_addwlan_element_clone(void* data) {
struct capwap_80211_addwlan_element* cloneelement;
struct capwap_80211_addwlan_element* element = (struct capwap_80211_addwlan_element*)data;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_80211_addwlan_element));
if (cloneelement->keylength > 0) {
cloneelement->key = capwap_clone(element->key, cloneelement->keylength);
}
cloneelement->ssid = (uint8_t*)capwap_duplicate_string((char*)element->ssid);
return cloneelement;
}
/* */ /* */
static void capwap_80211_addwlan_element_free(void* data) { static void capwap_80211_addwlan_element_free(void* data) {
struct capwap_80211_addwlan_element* element = (struct capwap_80211_addwlan_element*)data; struct capwap_80211_addwlan_element* element = (struct capwap_80211_addwlan_element*)data;
@ -140,5 +156,6 @@ static void* capwap_80211_addwlan_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_80211_addwlan_ops = { struct capwap_message_elements_ops capwap_element_80211_addwlan_ops = {
.create_message_element = capwap_80211_addwlan_element_create, .create_message_element = capwap_80211_addwlan_element_create,
.parsing_message_element = capwap_80211_addwlan_element_parsing, .parsing_message_element = capwap_80211_addwlan_element_parsing,
.free_parsed_message_element = capwap_80211_addwlan_element_free .clone_message_element = capwap_80211_addwlan_element_clone,
.free_message_element = capwap_80211_addwlan_element_free
}; };

View File

@ -35,6 +35,23 @@ static void capwap_80211_antenna_element_create(void* data, capwap_message_eleme
} }
} }
/* */
static void* capwap_80211_antenna_element_clone(void* data) {
int i;
struct capwap_80211_antenna_element* cloneelement;
struct capwap_80211_antenna_element* element = (struct capwap_80211_antenna_element*)data;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_80211_antenna_element));
cloneelement->selections = capwap_array_create(sizeof(uint8_t), 0, 1);
for (i = 0; i < element->selections->count; i++) {
memcpy(capwap_array_get_item_pointer(cloneelement->selections, i), capwap_array_get_item_pointer(element->selections, i), sizeof(uint8_t));
}
return cloneelement;
}
/* */ /* */
static void capwap_80211_antenna_element_free(void* data) { static void capwap_80211_antenna_element_free(void* data) {
struct capwap_80211_antenna_element* element = (struct capwap_80211_antenna_element*)data; struct capwap_80211_antenna_element* element = (struct capwap_80211_antenna_element*)data;
@ -103,5 +120,6 @@ static void* capwap_80211_antenna_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_80211_antenna_ops = { struct capwap_message_elements_ops capwap_element_80211_antenna_ops = {
.create_message_element = capwap_80211_antenna_element_create, .create_message_element = capwap_80211_antenna_element_create,
.parsing_message_element = capwap_80211_antenna_element_parsing, .parsing_message_element = capwap_80211_antenna_element_parsing,
.free_parsed_message_element = capwap_80211_antenna_element_free .clone_message_element = capwap_80211_antenna_element_clone,
.free_message_element = capwap_80211_antenna_element_free
}; };

View File

@ -52,6 +52,13 @@ static void* capwap_80211_assignbssid_element_parsing(capwap_message_elements_ha
return data; return data;
} }
/* */
static void* capwap_80211_assignbssid_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_assignbssid_element));
}
/* */ /* */
static void capwap_80211_assignbssid_element_free(void* data) { static void capwap_80211_assignbssid_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -63,5 +70,6 @@ static void capwap_80211_assignbssid_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_assignbssid_ops = { struct capwap_message_elements_ops capwap_element_80211_assignbssid_ops = {
.create_message_element = capwap_80211_assignbssid_element_create, .create_message_element = capwap_80211_assignbssid_element_create,
.parsing_message_element = capwap_80211_assignbssid_element_parsing, .parsing_message_element = capwap_80211_assignbssid_element_parsing,
.free_parsed_message_element = capwap_80211_assignbssid_element_free .clone_message_element = capwap_80211_assignbssid_element_clone,
.free_message_element = capwap_80211_assignbssid_element_free
}; };

View File

@ -48,6 +48,13 @@ static void* capwap_80211_deletewlan_element_parsing(capwap_message_elements_han
return data; return data;
} }
/* */
static void* capwap_80211_deletewlan_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_deletewlan_element));
}
/* */ /* */
static void capwap_80211_deletewlan_element_free(void* data) { static void capwap_80211_deletewlan_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -59,5 +66,6 @@ static void capwap_80211_deletewlan_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_deletewlan_ops = { struct capwap_message_elements_ops capwap_element_80211_deletewlan_ops = {
.create_message_element = capwap_80211_deletewlan_element_create, .create_message_element = capwap_80211_deletewlan_element_create,
.parsing_message_element = capwap_80211_deletewlan_element_parsing, .parsing_message_element = capwap_80211_deletewlan_element_parsing,
.free_parsed_message_element = capwap_80211_deletewlan_element_free .clone_message_element = capwap_80211_deletewlan_element_clone,
.free_message_element = capwap_80211_deletewlan_element_free
}; };

View File

@ -32,6 +32,13 @@ static void capwap_80211_directsequencecontrol_element_create(void* data, capwap
func->write_u32(handle, element->enerydetectthreshold); func->write_u32(handle, element->enerydetectthreshold);
} }
/* */
static void* capwap_80211_directsequencecontrol_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_directsequencecontrol_element));
}
/* */ /* */
static void capwap_80211_directsequencecontrol_element_free(void* data) { static void capwap_80211_directsequencecontrol_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -75,5 +82,6 @@ static void* capwap_80211_directsequencecontrol_element_parsing(capwap_message_e
struct capwap_message_elements_ops capwap_element_80211_directsequencecontrol_ops = { struct capwap_message_elements_ops capwap_element_80211_directsequencecontrol_ops = {
.create_message_element = capwap_80211_directsequencecontrol_element_create, .create_message_element = capwap_80211_directsequencecontrol_element_create,
.parsing_message_element = capwap_80211_directsequencecontrol_element_parsing, .parsing_message_element = capwap_80211_directsequencecontrol_element_parsing,
.free_parsed_message_element = capwap_80211_directsequencecontrol_element_free .clone_message_element = capwap_80211_directsequencecontrol_element_clone,
.free_message_element = capwap_80211_directsequencecontrol_element_free
}; };

View File

@ -59,6 +59,18 @@ static void* capwap_80211_ie_element_parsing(capwap_message_elements_handle hand
return data; return data;
} }
/* */
static void* capwap_80211_ie_element_clone(void* data) {
struct capwap_80211_ie_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_80211_ie_element));
cloneelement->ie = capwap_clone(((struct capwap_80211_ie_element*)data)->ie, cloneelement->ielength);
return cloneelement;
}
/* */ /* */
static void capwap_80211_ie_element_free(void* data) { static void capwap_80211_ie_element_free(void* data) {
struct capwap_80211_ie_element* element = (struct capwap_80211_ie_element*)data; struct capwap_80211_ie_element* element = (struct capwap_80211_ie_element*)data;
@ -73,5 +85,6 @@ static void capwap_80211_ie_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_ie_ops = { struct capwap_message_elements_ops capwap_element_80211_ie_ops = {
.create_message_element = capwap_80211_ie_element_create, .create_message_element = capwap_80211_ie_element_create,
.parsing_message_element = capwap_80211_ie_element_parsing, .parsing_message_element = capwap_80211_ie_element_parsing,
.free_parsed_message_element = capwap_80211_ie_element_free .clone_message_element = capwap_80211_ie_element_clone,
.free_message_element = capwap_80211_ie_element_free
}; };

View File

@ -67,6 +67,13 @@ static void* capwap_80211_macoperation_element_parsing(capwap_message_elements_h
return data; return data;
} }
/* */
static void* capwap_80211_macoperation_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_macoperation_element));
}
/* */ /* */
static void capwap_80211_macoperation_element_free(void* data) { static void capwap_80211_macoperation_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -78,5 +85,6 @@ static void capwap_80211_macoperation_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_macoperation_ops = { struct capwap_message_elements_ops capwap_element_80211_macoperation_ops = {
.create_message_element = capwap_80211_macoperation_element_create, .create_message_element = capwap_80211_macoperation_element_create,
.parsing_message_element = capwap_80211_macoperation_element_parsing, .parsing_message_element = capwap_80211_macoperation_element_parsing,
.free_parsed_message_element = capwap_80211_macoperation_element_free .clone_message_element = capwap_80211_macoperation_element_clone,
.free_message_element = capwap_80211_macoperation_element_free
}; };

View File

@ -52,6 +52,13 @@ static void* capwap_80211_miccountermeasures_element_parsing(capwap_message_elem
return data; return data;
} }
/* */
static void* capwap_80211_miccountermeasures_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_miccountermeasures_element));
}
/* */ /* */
static void capwap_80211_miccountermeasures_element_free(void* data) { static void capwap_80211_miccountermeasures_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -63,5 +70,6 @@ static void capwap_80211_miccountermeasures_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_miccountermeasures_ops = { struct capwap_message_elements_ops capwap_element_80211_miccountermeasures_ops = {
.create_message_element = capwap_80211_miccountermeasures_element_create, .create_message_element = capwap_80211_miccountermeasures_element_create,
.parsing_message_element = capwap_80211_miccountermeasures_element_parsing, .parsing_message_element = capwap_80211_miccountermeasures_element_parsing,
.free_parsed_message_element = capwap_80211_miccountermeasures_element_free .clone_message_element = capwap_80211_miccountermeasures_element_clone,
.free_message_element = capwap_80211_miccountermeasures_element_free
}; };

View File

@ -57,6 +57,13 @@ static void* capwap_80211_multidomaincapability_element_parsing(capwap_message_e
return data; return data;
} }
/* */
static void* capwap_80211_multidomaincapability_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_multidomaincapability_element));
}
/* */ /* */
static void capwap_80211_multidomaincapability_element_free(void* data) { static void capwap_80211_multidomaincapability_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -68,5 +75,6 @@ static void capwap_80211_multidomaincapability_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_multidomaincapability_ops = { struct capwap_message_elements_ops capwap_element_80211_multidomaincapability_ops = {
.create_message_element = capwap_80211_multidomaincapability_element_create, .create_message_element = capwap_80211_multidomaincapability_element_create,
.parsing_message_element = capwap_80211_multidomaincapability_element_parsing, .parsing_message_element = capwap_80211_multidomaincapability_element_parsing,
.free_parsed_message_element = capwap_80211_multidomaincapability_element_free .clone_message_element = capwap_80211_multidomaincapability_element_clone,
.free_message_element = capwap_80211_multidomaincapability_element_free
}; };

View File

@ -57,6 +57,13 @@ static void* capwap_80211_ofdmcontrol_element_parsing(capwap_message_elements_ha
return data; return data;
} }
/* */
static void* capwap_80211_ofdmcontrol_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_ofdmcontrol_element));
}
/* */ /* */
static void capwap_80211_ofdmcontrol_element_free(void* data) { static void capwap_80211_ofdmcontrol_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -68,5 +75,6 @@ static void capwap_80211_ofdmcontrol_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_ofdmcontrol_ops = { struct capwap_message_elements_ops capwap_element_80211_ofdmcontrol_ops = {
.create_message_element = capwap_80211_ofdmcontrol_element_create, .create_message_element = capwap_80211_ofdmcontrol_element_create,
.parsing_message_element = capwap_80211_ofdmcontrol_element_parsing, .parsing_message_element = capwap_80211_ofdmcontrol_element_parsing,
.free_parsed_message_element = capwap_80211_ofdmcontrol_element_free .clone_message_element = capwap_80211_ofdmcontrol_element_clone,
.free_message_element = capwap_80211_ofdmcontrol_element_free
}; };

View File

@ -57,6 +57,13 @@ static void* capwap_80211_rateset_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_80211_rateset_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_rateset_element));
}
/* */ /* */
static void capwap_80211_rateset_element_free(void* data) { static void capwap_80211_rateset_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -68,5 +75,6 @@ static void capwap_80211_rateset_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_rateset_ops = { struct capwap_message_elements_ops capwap_element_80211_rateset_ops = {
.create_message_element = capwap_80211_rateset_element_create, .create_message_element = capwap_80211_rateset_element_create,
.parsing_message_element = capwap_80211_rateset_element_parsing, .parsing_message_element = capwap_80211_rateset_element_parsing,
.free_parsed_message_element = capwap_80211_rateset_element_free .clone_message_element = capwap_80211_rateset_element_clone,
.free_message_element = capwap_80211_rateset_element_free
}; };

View File

@ -85,6 +85,13 @@ static void* capwap_80211_rsnaerrorreport_element_parsing(capwap_message_element
return data; return data;
} }
/* */
static void* capwap_80211_rsnaerrorreport_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_rsnaerrorreport_element));
}
/* */ /* */
static void capwap_80211_rsnaerrorreport_element_free(void* data) { static void capwap_80211_rsnaerrorreport_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -96,5 +103,6 @@ static void capwap_80211_rsnaerrorreport_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_rsnaerrorreport_ops = { struct capwap_message_elements_ops capwap_element_80211_rsnaerrorreport_ops = {
.create_message_element = capwap_80211_rsnaerrorreport_element_create, .create_message_element = capwap_80211_rsnaerrorreport_element_create,
.parsing_message_element = capwap_80211_rsnaerrorreport_element_parsing, .parsing_message_element = capwap_80211_rsnaerrorreport_element_parsing,
.free_parsed_message_element = capwap_80211_rsnaerrorreport_element_free .clone_message_element = capwap_80211_rsnaerrorreport_element_clone,
.free_message_element = capwap_80211_rsnaerrorreport_element_free
}; };

View File

@ -73,6 +73,13 @@ static void* capwap_80211_station_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_80211_station_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_station_element));
}
/* */ /* */
static void capwap_80211_station_element_free(void* data) { static void capwap_80211_station_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -84,5 +91,6 @@ static void capwap_80211_station_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_station_ops = { struct capwap_message_elements_ops capwap_element_80211_station_ops = {
.create_message_element = capwap_80211_station_element_create, .create_message_element = capwap_80211_station_element_create,
.parsing_message_element = capwap_80211_station_element_parsing, .parsing_message_element = capwap_80211_station_element_parsing,
.free_parsed_message_element = capwap_80211_station_element_free .clone_message_element = capwap_80211_station_element_clone,
.free_message_element = capwap_80211_station_element_free
}; };

View File

@ -68,6 +68,20 @@ static void* capwap_80211_stationkey_element_parsing(capwap_message_elements_han
return data; return data;
} }
/* */
static void* capwap_80211_stationkey_element_clone(void* data) {
struct capwap_80211_stationkey_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_80211_stationkey_element));
if (cloneelement->keylength > 0) {
cloneelement->key = capwap_clone(((struct capwap_80211_stationkey_element*)data)->key, cloneelement->keylength);
}
return cloneelement;
}
/* */ /* */
static void capwap_80211_stationkey_element_free(void* data) { static void capwap_80211_stationkey_element_free(void* data) {
struct capwap_80211_stationkey_element* element = (struct capwap_80211_stationkey_element*)data; struct capwap_80211_stationkey_element* element = (struct capwap_80211_stationkey_element*)data;
@ -85,5 +99,6 @@ static void capwap_80211_stationkey_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_stationkey_ops = { struct capwap_message_elements_ops capwap_element_80211_stationkey_ops = {
.create_message_element = capwap_80211_stationkey_element_create, .create_message_element = capwap_80211_stationkey_element_create,
.parsing_message_element = capwap_80211_stationkey_element_parsing, .parsing_message_element = capwap_80211_stationkey_element_parsing,
.free_parsed_message_element = capwap_80211_stationkey_element_free .clone_message_element = capwap_80211_stationkey_element_clone,
.free_message_element = capwap_80211_stationkey_element_free
}; };

View File

@ -52,6 +52,13 @@ static void* capwap_80211_stationqos_element_parsing(capwap_message_elements_han
return data; return data;
} }
/* */
static void* capwap_80211_stationqos_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_stationqos_element));
}
/* */ /* */
static void capwap_80211_stationqos_element_free(void* data) { static void capwap_80211_stationqos_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -63,5 +70,6 @@ static void capwap_80211_stationqos_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_stationqos_ops = { struct capwap_message_elements_ops capwap_element_80211_stationqos_ops = {
.create_message_element = capwap_80211_stationqos_element_create, .create_message_element = capwap_80211_stationqos_element_create,
.parsing_message_element = capwap_80211_stationqos_element_parsing, .parsing_message_element = capwap_80211_stationqos_element_parsing,
.free_parsed_message_element = capwap_80211_stationqos_element_free .clone_message_element = capwap_80211_stationqos_element_clone,
.free_message_element = capwap_80211_stationqos_element_free
}; };

View File

@ -125,6 +125,13 @@ static void* capwap_80211_statistics_element_parsing(capwap_message_elements_han
return data; return data;
} }
/* */
static void* capwap_80211_statistics_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_statistics_element));
}
/* */ /* */
static void capwap_80211_statistics_element_free(void* data) { static void capwap_80211_statistics_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -136,5 +143,6 @@ static void capwap_80211_statistics_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_statistics_ops = { struct capwap_message_elements_ops capwap_element_80211_statistics_ops = {
.create_message_element = capwap_80211_statistics_element_create, .create_message_element = capwap_80211_statistics_element_create,
.parsing_message_element = capwap_80211_statistics_element_parsing, .parsing_message_element = capwap_80211_statistics_element_parsing,
.free_parsed_message_element = capwap_80211_statistics_element_free .clone_message_element = capwap_80211_statistics_element_clone,
.free_message_element = capwap_80211_statistics_element_free
}; };

View File

@ -57,6 +57,13 @@ static void* capwap_80211_supportedrates_element_parsing(capwap_message_elements
return data; return data;
} }
/* */
static void* capwap_80211_supportedrates_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_supportedrates_element));
}
/* */ /* */
static void capwap_80211_supportedrates_element_free(void* data) { static void capwap_80211_supportedrates_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -68,5 +75,6 @@ static void capwap_80211_supportedrates_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_supportedrates_ops = { struct capwap_message_elements_ops capwap_element_80211_supportedrates_ops = {
.create_message_element = capwap_80211_supportedrates_element_create, .create_message_element = capwap_80211_supportedrates_element_create,
.parsing_message_element = capwap_80211_supportedrates_element_parsing, .parsing_message_element = capwap_80211_supportedrates_element_parsing,
.free_parsed_message_element = capwap_80211_supportedrates_element_free .clone_message_element = capwap_80211_supportedrates_element_clone,
.free_message_element = capwap_80211_supportedrates_element_free
}; };

View File

@ -51,6 +51,13 @@ static void* capwap_80211_txpower_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_80211_txpower_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_txpower_element));
}
/* */ /* */
static void capwap_80211_txpower_element_free(void* data) { static void capwap_80211_txpower_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -62,5 +69,6 @@ static void capwap_80211_txpower_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_txpower_ops = { struct capwap_message_elements_ops capwap_element_80211_txpower_ops = {
.create_message_element = capwap_80211_txpower_element_create, .create_message_element = capwap_80211_txpower_element_create,
.parsing_message_element = capwap_80211_txpower_element_parsing, .parsing_message_element = capwap_80211_txpower_element_parsing,
.free_parsed_message_element = capwap_80211_txpower_element_free .clone_message_element = capwap_80211_txpower_element_clone,
.free_message_element = capwap_80211_txpower_element_free
}; };

View File

@ -72,6 +72,13 @@ static void* capwap_80211_txpowerlevel_element_parsing(capwap_message_elements_h
return data; return data;
} }
/* */
static void* capwap_80211_txpowerlevel_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_txpowerlevel_element));
}
/* */ /* */
static void capwap_80211_txpowerlevel_element_free(void* data) { static void capwap_80211_txpowerlevel_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -83,5 +90,6 @@ static void capwap_80211_txpowerlevel_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_txpowerlevel_ops = { struct capwap_message_elements_ops capwap_element_80211_txpowerlevel_ops = {
.create_message_element = capwap_80211_txpowerlevel_element_create, .create_message_element = capwap_80211_txpowerlevel_element_create,
.parsing_message_element = capwap_80211_txpowerlevel_element_parsing, .parsing_message_element = capwap_80211_txpowerlevel_element_parsing,
.free_parsed_message_element = capwap_80211_txpowerlevel_element_free .clone_message_element = capwap_80211_txpowerlevel_element_clone,
.free_message_element = capwap_80211_txpowerlevel_element_free
}; };

View File

@ -68,6 +68,13 @@ static void* capwap_80211_updatestationqos_element_parsing(capwap_message_elemen
return data; return data;
} }
/* */
static void* capwap_80211_updatestationqos_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_updatestationqos_element));
}
/* */ /* */
static void capwap_80211_updatestationqos_element_free(void* data) { static void capwap_80211_updatestationqos_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -79,5 +86,6 @@ static void capwap_80211_updatestationqos_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_updatestationqos_ops = { struct capwap_message_elements_ops capwap_element_80211_updatestationqos_ops = {
.create_message_element = capwap_80211_updatestationqos_element_create, .create_message_element = capwap_80211_updatestationqos_element_create,
.parsing_message_element = capwap_80211_updatestationqos_element_parsing, .parsing_message_element = capwap_80211_updatestationqos_element_parsing,
.free_parsed_message_element = capwap_80211_updatestationqos_element_free .clone_message_element = capwap_80211_updatestationqos_element_clone,
.free_message_element = capwap_80211_updatestationqos_element_free
}; };

View File

@ -36,6 +36,20 @@ static void capwap_80211_updatewlan_element_create(void* data, capwap_message_el
} }
} }
/* */
static void* capwap_80211_updatewlan_element_clone(void* data) {
struct capwap_80211_updatewlan_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_80211_updatewlan_element));
if (cloneelement->keylength > 0) {
cloneelement->key = capwap_clone(((struct capwap_80211_updatewlan_element*)data)->key, cloneelement->keylength);
}
return cloneelement;
}
/* */ /* */
static void capwap_80211_updatewlan_element_free(void* data) { static void capwap_80211_updatewlan_element_free(void* data) {
struct capwap_80211_updatewlan_element* element = (struct capwap_80211_updatewlan_element*)data; struct capwap_80211_updatewlan_element* element = (struct capwap_80211_updatewlan_element*)data;
@ -93,5 +107,6 @@ static void* capwap_80211_updatewlan_element_parsing(capwap_message_elements_han
struct capwap_message_elements_ops capwap_element_80211_updatewlan_ops = { struct capwap_message_elements_ops capwap_element_80211_updatewlan_ops = {
.create_message_element = capwap_80211_updatewlan_element_create, .create_message_element = capwap_80211_updatewlan_element_create,
.parsing_message_element = capwap_80211_updatewlan_element_parsing, .parsing_message_element = capwap_80211_updatewlan_element_parsing,
.free_parsed_message_element = capwap_80211_updatewlan_element_free .clone_message_element = capwap_80211_updatewlan_element_clone,
.free_message_element = capwap_80211_updatewlan_element_free
}; };

View File

@ -76,6 +76,13 @@ static void* capwap_80211_wtpqos_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_80211_wtpqos_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_wtpqos_element));
}
/* */ /* */
static void capwap_80211_wtpqos_element_free(void* data) { static void capwap_80211_wtpqos_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -87,5 +94,6 @@ static void capwap_80211_wtpqos_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_wtpqos_ops = { struct capwap_message_elements_ops capwap_element_80211_wtpqos_ops = {
.create_message_element = capwap_80211_wtpqos_element_create, .create_message_element = capwap_80211_wtpqos_element_create,
.parsing_message_element = capwap_80211_wtpqos_element_parsing, .parsing_message_element = capwap_80211_wtpqos_element_parsing,
.free_parsed_message_element = capwap_80211_wtpqos_element_free .clone_message_element = capwap_80211_wtpqos_element_clone,
.free_message_element = capwap_80211_wtpqos_element_free
}; };

View File

@ -64,6 +64,13 @@ static void* capwap_80211_wtpradioconf_element_parsing(capwap_message_elements_h
return data; return data;
} }
/* */
static void* capwap_80211_wtpradioconf_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_wtpradioconf_element));
}
/* */ /* */
static void capwap_80211_wtpradioconf_element_free(void* data) { static void capwap_80211_wtpradioconf_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -75,5 +82,6 @@ static void capwap_80211_wtpradioconf_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_wtpradioconf_ops = { struct capwap_message_elements_ops capwap_element_80211_wtpradioconf_ops = {
.create_message_element = capwap_80211_wtpradioconf_element_create, .create_message_element = capwap_80211_wtpradioconf_element_create,
.parsing_message_element = capwap_80211_wtpradioconf_element_parsing, .parsing_message_element = capwap_80211_wtpradioconf_element_parsing,
.free_parsed_message_element = capwap_80211_wtpradioconf_element_free .clone_message_element = capwap_80211_wtpradioconf_element_clone,
.free_message_element = capwap_80211_wtpradioconf_element_free
}; };

View File

@ -52,6 +52,13 @@ static void* capwap_80211_wtpradiofailalarm_element_parsing(capwap_message_eleme
return data; return data;
} }
/* */
static void* capwap_80211_wtpradiofailalarm_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_wtpradiofailalarm_element));
}
/* */ /* */
static void capwap_80211_wtpradiofailalarm_element_free(void* data) { static void capwap_80211_wtpradiofailalarm_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -63,5 +70,6 @@ static void capwap_80211_wtpradiofailalarm_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_wtpradiofailalarm_ops = { struct capwap_message_elements_ops capwap_element_80211_wtpradiofailalarm_ops = {
.create_message_element = capwap_80211_wtpradiofailalarm_element_create, .create_message_element = capwap_80211_wtpradiofailalarm_element_create,
.parsing_message_element = capwap_80211_wtpradiofailalarm_element_parsing, .parsing_message_element = capwap_80211_wtpradiofailalarm_element_parsing,
.free_parsed_message_element = capwap_80211_wtpradiofailalarm_element_free .clone_message_element = capwap_80211_wtpradiofailalarm_element_clone,
.free_message_element = capwap_80211_wtpradiofailalarm_element_free
}; };

View File

@ -51,6 +51,13 @@ static void* capwap_80211_wtpradioinformation_element_parsing(capwap_message_ele
return data; return data;
} }
/* */
static void* capwap_80211_wtpradioinformation_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_80211_wtpradioinformation_element));
}
/* */ /* */
static void capwap_80211_wtpradioinformation_element_free(void* data) { static void capwap_80211_wtpradioinformation_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -62,5 +69,6 @@ static void capwap_80211_wtpradioinformation_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_80211_wtpradioinformation_ops = { struct capwap_message_elements_ops capwap_element_80211_wtpradioinformation_ops = {
.create_message_element = capwap_80211_wtpradioinformation_element_create, .create_message_element = capwap_80211_wtpradioinformation_element_create,
.parsing_message_element = capwap_80211_wtpradioinformation_element_parsing, .parsing_message_element = capwap_80211_wtpradioinformation_element_parsing,
.free_parsed_message_element = capwap_80211_wtpradioinformation_element_free .clone_message_element = capwap_80211_wtpradioinformation_element_clone,
.free_message_element = capwap_80211_wtpradioinformation_element_free
}; };

View File

@ -66,6 +66,29 @@ static void capwap_acdescriptor_element_create(void* data, capwap_message_elemen
} }
} }
/* */
static void* capwap_acdescriptor_element_clone(void* data) {
int i;
struct capwap_acdescriptor_element* cloneelement;
struct capwap_acdescriptor_element* element = (struct capwap_acdescriptor_element*)data;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_acdescriptor_element));
cloneelement->descsubelement = capwap_array_create(sizeof(struct capwap_acdescriptor_desc_subelement), 0, 1);
for (i = 0; i < element->descsubelement->count; i++) {
struct capwap_acdescriptor_desc_subelement* desc = (struct capwap_acdescriptor_desc_subelement*)capwap_array_get_item_pointer(element->descsubelement, i);
struct capwap_acdescriptor_desc_subelement* clonedesc = (struct capwap_acdescriptor_desc_subelement*)capwap_array_get_item_pointer(cloneelement->descsubelement, i);
memcpy(clonedesc, desc, sizeof(struct capwap_acdescriptor_desc_subelement));
if (desc->length) {
clonedesc->data = capwap_clone(desc->data, desc->length);
}
}
return cloneelement;
}
/* */ /* */
static void capwap_acdescriptor_element_free(void* data) { static void capwap_acdescriptor_element_free(void* data) {
int i; int i;
@ -178,5 +201,6 @@ static void* capwap_acdescriptor_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_acdescriptor_ops = { struct capwap_message_elements_ops capwap_element_acdescriptor_ops = {
.create_message_element = capwap_acdescriptor_element_create, .create_message_element = capwap_acdescriptor_element_create,
.parsing_message_element = capwap_acdescriptor_element_parsing, .parsing_message_element = capwap_acdescriptor_element_parsing,
.free_parsed_message_element = capwap_acdescriptor_element_free .clone_message_element = capwap_acdescriptor_element_clone,
.free_message_element = capwap_acdescriptor_element_free
}; };

View File

@ -54,6 +54,23 @@ static void* capwap_acipv4list_element_parsing(capwap_message_elements_handle ha
return data; return data;
} }
/* */
static void* capwap_acipv4list_element_clone(void* data) {
int i;
struct capwap_acipv4list_element* cloneelement;
struct capwap_acipv4list_element* element = (struct capwap_acipv4list_element*)data;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_acipv4list_element));
cloneelement->addresses = capwap_array_create(sizeof(struct in_addr), 0, 0);
for (i = 0; i < element->addresses->count; i++) {
memcpy(capwap_array_get_item_pointer(cloneelement->addresses, i), capwap_array_get_item_pointer(element->addresses, i), sizeof(struct in_addr));
}
return cloneelement;
}
/* */ /* */
static void capwap_acipv4list_element_free(void* data) { static void capwap_acipv4list_element_free(void* data) {
struct capwap_acipv4list_element* element = (struct capwap_acipv4list_element*)data; struct capwap_acipv4list_element* element = (struct capwap_acipv4list_element*)data;
@ -68,5 +85,6 @@ static void capwap_acipv4list_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_acipv4list_ops = { struct capwap_message_elements_ops capwap_element_acipv4list_ops = {
.create_message_element = capwap_acipv4list_element_create, .create_message_element = capwap_acipv4list_element_create,
.parsing_message_element = capwap_acipv4list_element_parsing, .parsing_message_element = capwap_acipv4list_element_parsing,
.free_parsed_message_element = capwap_acipv4list_element_free .clone_message_element = capwap_acipv4list_element_clone,
.free_message_element = capwap_acipv4list_element_free
}; };

View File

@ -60,6 +60,23 @@ static void* capwap_acipv6list_element_parsing(capwap_message_elements_handle ha
return data; return data;
} }
/* */
static void* capwap_acipv6list_element_clone(void* data) {
int i;
struct capwap_acipv6list_element* cloneelement;
struct capwap_acipv6list_element* element = (struct capwap_acipv6list_element*)data;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_acipv6list_element));
cloneelement->addresses = capwap_array_create(sizeof(struct in6_addr), 0, 0);
for (i = 0; i < element->addresses->count; i++) {
memcpy(capwap_array_get_item_pointer(cloneelement->addresses, i), capwap_array_get_item_pointer(element->addresses, i), sizeof(struct in6_addr));
}
return cloneelement;
}
/* */ /* */
static void capwap_acipv6list_element_free(void* data) { static void capwap_acipv6list_element_free(void* data) {
struct capwap_acipv6list_element* element = (struct capwap_acipv6list_element*)data; struct capwap_acipv6list_element* element = (struct capwap_acipv6list_element*)data;
@ -74,5 +91,6 @@ static void capwap_acipv6list_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_acipv6list_ops = { struct capwap_message_elements_ops capwap_element_acipv6list_ops = {
.create_message_element = capwap_acipv6list_element_create, .create_message_element = capwap_acipv6list_element_create,
.parsing_message_element = capwap_acipv6list_element_parsing, .parsing_message_element = capwap_acipv6list_element_parsing,
.free_parsed_message_element = capwap_acipv6list_element_free .clone_message_element = capwap_acipv6list_element_clone,
.free_message_element = capwap_acipv6list_element_free
}; };

View File

@ -48,6 +48,20 @@ static void* capwap_acname_element_parsing(capwap_message_elements_handle handle
return data; return data;
} }
/* */
static void* capwap_acname_element_clone(void* data) {
struct capwap_acname_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_acname_element));
if (cloneelement->name) {
cloneelement->name = (uint8_t*)capwap_duplicate_string((char*)((struct capwap_acname_element*)data)->name);
}
return cloneelement;
}
/* */ /* */
static void capwap_acname_element_free(void* data) { static void capwap_acname_element_free(void* data) {
struct capwap_acname_element* element = (struct capwap_acname_element*)data; struct capwap_acname_element* element = (struct capwap_acname_element*)data;
@ -65,5 +79,6 @@ static void capwap_acname_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_acname_ops = { struct capwap_message_elements_ops capwap_element_acname_ops = {
.create_message_element = capwap_acname_element_create, .create_message_element = capwap_acname_element_create,
.parsing_message_element = capwap_acname_element_parsing, .parsing_message_element = capwap_acname_element_parsing,
.free_parsed_message_element = capwap_acname_element_free .clone_message_element = capwap_acname_element_clone,
.free_message_element = capwap_acname_element_free
}; };

View File

@ -49,6 +49,20 @@ static void* capwap_acnamepriority_element_parsing(capwap_message_elements_handl
return data; return data;
} }
/* */
static void* capwap_acnamepriority_element_clone(void* data) {
struct capwap_acnamepriority_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_acnamepriority_element));
if (cloneelement->name) {
cloneelement->name = (uint8_t*)capwap_duplicate_string((char*)((struct capwap_acnamepriority_element*)data)->name);
}
return cloneelement;
}
/* */ /* */
static void capwap_acnamepriority_element_free(void* data) { static void capwap_acnamepriority_element_free(void* data) {
struct capwap_acnamepriority_element* element = (struct capwap_acnamepriority_element*)data; struct capwap_acnamepriority_element* element = (struct capwap_acnamepriority_element*)data;
@ -66,5 +80,6 @@ static void capwap_acnamepriority_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_acnamepriority_ops = { struct capwap_message_elements_ops capwap_element_acnamepriority_ops = {
.create_message_element = capwap_acnamepriority_element_create, .create_message_element = capwap_acnamepriority_element_create,
.parsing_message_element = capwap_acnamepriority_element_parsing, .parsing_message_element = capwap_acnamepriority_element_parsing,
.free_parsed_message_element = capwap_acnamepriority_element_free .clone_message_element = capwap_acnamepriority_element_clone,
.free_message_element = capwap_acnamepriority_element_free
}; };

View File

@ -44,6 +44,13 @@ static void* capwap_actimestamp_element_parsing(capwap_message_elements_handle h
return data; return data;
} }
/* */
static void* capwap_actimestamp_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_actimestamp_element));
}
/* */ /* */
static void capwap_actimestamp_element_free(void* data) { static void capwap_actimestamp_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -55,5 +62,6 @@ static void capwap_actimestamp_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_actimestamp_ops = { struct capwap_message_elements_ops capwap_element_actimestamp_ops = {
.create_message_element = capwap_actimestamp_element_create, .create_message_element = capwap_actimestamp_element_create,
.parsing_message_element = capwap_actimestamp_element_parsing, .parsing_message_element = capwap_actimestamp_element_parsing,
.free_parsed_message_element = capwap_actimestamp_element_free .clone_message_element = capwap_actimestamp_element_clone,
.free_message_element = capwap_actimestamp_element_free
}; };

View File

@ -28,6 +28,20 @@ static void capwap_addmacacl_element_create(void* data, capwap_message_elements_
func->write_block(handle, element->address, element->entry * element->length); func->write_block(handle, element->address, element->entry * element->length);
} }
/* */
static void* capwap_addmacacl_element_clone(void* data) {
struct capwap_addmacacl_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_addmacacl_element));
if (cloneelement->entry > 0) {
cloneelement->address = capwap_clone(((struct capwap_addmacacl_element*)data)->address, cloneelement->entry * cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_addmacacl_element_free(void* data) { static void capwap_addmacacl_element_free(void* data) {
struct capwap_addmacacl_element* element = (struct capwap_addmacacl_element*)data; struct capwap_addmacacl_element* element = (struct capwap_addmacacl_element*)data;
@ -91,5 +105,6 @@ static void* capwap_addmacacl_element_parsing(capwap_message_elements_handle han
struct capwap_message_elements_ops capwap_element_addmacacl_ops = { struct capwap_message_elements_ops capwap_element_addmacacl_ops = {
.create_message_element = capwap_addmacacl_element_create, .create_message_element = capwap_addmacacl_element_create,
.parsing_message_element = capwap_addmacacl_element_parsing, .parsing_message_element = capwap_addmacacl_element_parsing,
.free_parsed_message_element = capwap_addmacacl_element_free .clone_message_element = capwap_addmacacl_element_clone,
.free_message_element = capwap_addmacacl_element_free
}; };

View File

@ -37,6 +37,24 @@ static void capwap_addstation_element_create(void* data, capwap_message_elements
} }
} }
/* */
static void* capwap_addstation_element_clone(void* data) {
struct capwap_addstation_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_addstation_element));
if (cloneelement->length > 0) {
cloneelement->address = capwap_clone(((struct capwap_addstation_element*)data)->address, cloneelement->length);
}
if (cloneelement->vlan) {
cloneelement->vlan = (uint8_t*)capwap_duplicate_string((char*)((struct capwap_addstation_element*)data)->vlan);
}
return cloneelement;
}
/* */ /* */
static void capwap_addstation_element_free(void* data) { static void capwap_addstation_element_free(void* data) {
struct capwap_addstation_element* element = (struct capwap_addstation_element*)data; struct capwap_addstation_element* element = (struct capwap_addstation_element*)data;
@ -111,5 +129,6 @@ static void* capwap_addstation_element_parsing(capwap_message_elements_handle ha
struct capwap_message_elements_ops capwap_element_addstation_ops = { struct capwap_message_elements_ops capwap_element_addstation_ops = {
.create_message_element = capwap_addstation_element_create, .create_message_element = capwap_addstation_element_create,
.parsing_message_element = capwap_addstation_element_parsing, .parsing_message_element = capwap_addstation_element_parsing,
.free_parsed_message_element = capwap_addstation_element_free .clone_message_element = capwap_addstation_element_clone,
.free_message_element = capwap_addstation_element_free
}; };

View File

@ -48,6 +48,13 @@ static void* capwap_controlipv4_element_parsing(capwap_message_elements_handle h
return data; return data;
} }
/* */
static void* capwap_controlipv4_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_controlipv4_element));
}
/* */ /* */
static void capwap_controlipv4_element_free(void* data) { static void capwap_controlipv4_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -59,5 +66,6 @@ static void capwap_controlipv4_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_controlipv4_ops = { struct capwap_message_elements_ops capwap_element_controlipv4_ops = {
.create_message_element = capwap_controlipv4_element_create, .create_message_element = capwap_controlipv4_element_create,
.parsing_message_element = capwap_controlipv4_element_parsing, .parsing_message_element = capwap_controlipv4_element_parsing,
.free_parsed_message_element = capwap_controlipv4_element_free .clone_message_element = capwap_controlipv4_element_clone,
.free_message_element = capwap_controlipv4_element_free
}; };

View File

@ -54,6 +54,13 @@ static void* capwap_controlipv6_element_parsing(capwap_message_elements_handle h
return data; return data;
} }
/* */
static void* capwap_controlipv6_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_controlipv6_element));
}
/* */ /* */
static void capwap_controlipv6_element_free(void* data) { static void capwap_controlipv6_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -65,5 +72,6 @@ static void capwap_controlipv6_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_controlipv6_ops = { struct capwap_message_elements_ops capwap_element_controlipv6_ops = {
.create_message_element = capwap_controlipv6_element_create, .create_message_element = capwap_controlipv6_element_create,
.parsing_message_element = capwap_controlipv6_element_parsing, .parsing_message_element = capwap_controlipv6_element_parsing,
.free_parsed_message_element = capwap_controlipv6_element_free .clone_message_element = capwap_controlipv6_element_clone,
.free_message_element = capwap_controlipv6_element_free
}; };

View File

@ -32,6 +32,20 @@ static void capwap_datatransferdata_element_create(void* data, capwap_message_el
func->write_block(handle, element->data, element->length); func->write_block(handle, element->data, element->length);
} }
/* */
static void* capwap_datatransferdata_element_clone(void* data) {
struct capwap_datatransferdata_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_datatransferdata_element));
if (cloneelement->length > 0) {
cloneelement->data = capwap_clone(((struct capwap_datatransferdata_element*)data)->data, cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_datatransferdata_element_free(void* data) { static void capwap_datatransferdata_element_free(void* data) {
struct capwap_datatransferdata_element* element = (struct capwap_datatransferdata_element*)data; struct capwap_datatransferdata_element* element = (struct capwap_datatransferdata_element*)data;
@ -94,5 +108,6 @@ static void* capwap_datatransferdata_element_parsing(capwap_message_elements_han
struct capwap_message_elements_ops capwap_element_datatransferdata_ops = { struct capwap_message_elements_ops capwap_element_datatransferdata_ops = {
.create_message_element = capwap_datatransferdata_element_create, .create_message_element = capwap_datatransferdata_element_create,
.parsing_message_element = capwap_datatransferdata_element_parsing, .parsing_message_element = capwap_datatransferdata_element_parsing,
.free_parsed_message_element = capwap_datatransferdata_element_free .clone_message_element = capwap_datatransferdata_element_clone,
.free_message_element = capwap_datatransferdata_element_free
}; };

View File

@ -26,6 +26,13 @@ static void capwap_datatransfermode_element_create(void* data, capwap_message_el
func->write_u8(handle, element->mode); func->write_u8(handle, element->mode);
} }
/* */
static void* capwap_datatransfermode_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_datatransfermode_element));
}
/* */ /* */
static void capwap_datatransfermode_element_free(void* data) { static void capwap_datatransfermode_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -61,5 +68,6 @@ static void* capwap_datatransfermode_element_parsing(capwap_message_elements_han
struct capwap_message_elements_ops capwap_element_datatransfermode_ops = { struct capwap_message_elements_ops capwap_element_datatransfermode_ops = {
.create_message_element = capwap_datatransfermode_element_create, .create_message_element = capwap_datatransfermode_element_create,
.parsing_message_element = capwap_datatransfermode_element_parsing, .parsing_message_element = capwap_datatransfermode_element_parsing,
.free_parsed_message_element = capwap_datatransfermode_element_free .clone_message_element = capwap_datatransfermode_element_clone,
.free_message_element = capwap_datatransfermode_element_free
}; };

View File

@ -30,6 +30,20 @@ static void capwap_decrypterrorreport_element_create(void* data, capwap_message_
func->write_block(handle, element->address, element->entry * element->length); func->write_block(handle, element->address, element->entry * element->length);
} }
/* */
static void* capwap_decrypterrorreport_element_clone(void* data) {
struct capwap_decrypterrorreport_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_decrypterrorreport_element));
if (cloneelement->entry > 0) {
cloneelement->address = capwap_clone(((struct capwap_decrypterrorreport_element*)data)->address, cloneelement->entry * cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_decrypterrorreport_element_free(void* data) { static void capwap_decrypterrorreport_element_free(void* data) {
struct capwap_decrypterrorreport_element* element = (struct capwap_decrypterrorreport_element*)data; struct capwap_decrypterrorreport_element* element = (struct capwap_decrypterrorreport_element*)data;
@ -98,5 +112,6 @@ static void* capwap_decrypterrorreport_element_parsing(capwap_message_elements_h
struct capwap_message_elements_ops capwap_element_decrypterrorreport_ops = { struct capwap_message_elements_ops capwap_element_decrypterrorreport_ops = {
.create_message_element = capwap_decrypterrorreport_element_create, .create_message_element = capwap_decrypterrorreport_element_create,
.parsing_message_element = capwap_decrypterrorreport_element_parsing, .parsing_message_element = capwap_decrypterrorreport_element_parsing,
.free_parsed_message_element = capwap_decrypterrorreport_element_free .clone_message_element = capwap_decrypterrorreport_element_clone,
.free_message_element = capwap_decrypterrorreport_element_free
}; };

View File

@ -27,6 +27,13 @@ static void capwap_decrypterrorreportperiod_element_create(void* data, capwap_me
func->write_u16(handle, element->interval); func->write_u16(handle, element->interval);
} }
/* */
static void* capwap_decrypterrorreportperiod_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_decrypterrorreportperiod_element));
}
/* */ /* */
static void capwap_decrypterrorreportperiod_element_free(void* data) { static void capwap_decrypterrorreportperiod_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -64,5 +71,6 @@ static void* capwap_decrypterrorreportperiod_element_parsing(capwap_message_elem
struct capwap_message_elements_ops capwap_element_decrypterrorreportperiod_ops = { struct capwap_message_elements_ops capwap_element_decrypterrorreportperiod_ops = {
.create_message_element = capwap_decrypterrorreportperiod_element_create, .create_message_element = capwap_decrypterrorreportperiod_element_create,
.parsing_message_element = capwap_decrypterrorreportperiod_element_parsing, .parsing_message_element = capwap_decrypterrorreportperiod_element_parsing,
.free_parsed_message_element = capwap_decrypterrorreportperiod_element_free .clone_message_element = capwap_decrypterrorreportperiod_element_clone,
.free_message_element = capwap_decrypterrorreportperiod_element_free
}; };

View File

@ -28,6 +28,20 @@ static void capwap_deletemacacl_element_create(void* data, capwap_message_elemen
func->write_block(handle, element->address, element->entry * element->length); func->write_block(handle, element->address, element->entry * element->length);
} }
/* */
static void* capwap_deletemacacl_element_clone(void* data) {
struct capwap_deletemacacl_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_deletemacacl_element));
if (cloneelement->entry > 0) {
cloneelement->address = capwap_clone(((struct capwap_deletemacacl_element*)data)->address, cloneelement->entry * cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_deletemacacl_element_free(void* data) { static void capwap_deletemacacl_element_free(void* data) {
struct capwap_deletemacacl_element* element = (struct capwap_deletemacacl_element*)data; struct capwap_deletemacacl_element* element = (struct capwap_deletemacacl_element*)data;
@ -91,5 +105,6 @@ static void* capwap_deletemacacl_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_deletemacacl_ops = { struct capwap_message_elements_ops capwap_element_deletemacacl_ops = {
.create_message_element = capwap_deletemacacl_element_create, .create_message_element = capwap_deletemacacl_element_create,
.parsing_message_element = capwap_deletemacacl_element_parsing, .parsing_message_element = capwap_deletemacacl_element_parsing,
.free_parsed_message_element = capwap_deletemacacl_element_free .clone_message_element = capwap_deletemacacl_element_clone,
.free_message_element = capwap_deletemacacl_element_free
}; };

View File

@ -28,6 +28,20 @@ static void capwap_deletestation_element_create(void* data, capwap_message_eleme
func->write_block(handle, element->address, element->length); func->write_block(handle, element->address, element->length);
} }
/* */
static void* capwap_deletestation_element_clone(void* data) {
struct capwap_deletestation_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_deletestation_element));
if (cloneelement->length > 0) {
cloneelement->address = capwap_clone(((struct capwap_deletestation_element*)data)->address, cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_deletestation_element_free(void* data) { static void capwap_deletestation_element_free(void* data) {
struct capwap_deletestation_element* element = (struct capwap_deletestation_element*)data; struct capwap_deletestation_element* element = (struct capwap_deletestation_element*)data;
@ -85,5 +99,6 @@ static void* capwap_deletestation_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_deletestation_ops = { struct capwap_message_elements_ops capwap_element_deletestation_ops = {
.create_message_element = capwap_deletestation_element_create, .create_message_element = capwap_deletestation_element_create,
.parsing_message_element = capwap_deletestation_element_parsing, .parsing_message_element = capwap_deletestation_element_parsing,
.free_parsed_message_element = capwap_deletestation_element_free .clone_message_element = capwap_deletestation_element_clone,
.free_message_element = capwap_deletestation_element_free
}; };

View File

@ -28,6 +28,13 @@ static void capwap_discoverytype_element_create(void* data, capwap_message_eleme
func->write_u8(handle, element->type); func->write_u8(handle, element->type);
} }
/* */
static void* capwap_discoverytype_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_discoverytype_element));
}
/* */ /* */
static void capwap_discoverytype_element_free(void* data) { static void capwap_discoverytype_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -65,5 +72,6 @@ static void* capwap_discoverytype_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_discoverytype_ops = { struct capwap_message_elements_ops capwap_element_discoverytype_ops = {
.create_message_element = capwap_discoverytype_element_create, .create_message_element = capwap_discoverytype_element_create,
.parsing_message_element = capwap_discoverytype_element_parsing, .parsing_message_element = capwap_discoverytype_element_parsing,
.free_parsed_message_element = capwap_discoverytype_element_free .clone_message_element = capwap_discoverytype_element_clone,
.free_message_element = capwap_discoverytype_element_free
}; };

View File

@ -31,6 +31,20 @@ static void capwap_duplicateipv4_element_create(void* data, capwap_message_eleme
func->write_block(handle, element->macaddress, element->length); func->write_block(handle, element->macaddress, element->length);
} }
/* */
static void* capwap_duplicateipv4_element_clone(void* data) {
struct capwap_duplicateipv4_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_duplicateipv4_element));
if (cloneelement->length > 0) {
cloneelement->macaddress = capwap_clone(((struct capwap_duplicateipv4_element*)data)->macaddress, cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_duplicateipv4_element_free(void* data) { static void capwap_duplicateipv4_element_free(void* data) {
struct capwap_duplicateipv4_element* element = (struct capwap_duplicateipv4_element*)data; struct capwap_duplicateipv4_element* element = (struct capwap_duplicateipv4_element*)data;
@ -89,5 +103,6 @@ static void* capwap_duplicateipv4_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_duplicateipv4_ops = { struct capwap_message_elements_ops capwap_element_duplicateipv4_ops = {
.create_message_element = capwap_duplicateipv4_element_create, .create_message_element = capwap_duplicateipv4_element_create,
.parsing_message_element = capwap_duplicateipv4_element_parsing, .parsing_message_element = capwap_duplicateipv4_element_parsing,
.free_parsed_message_element = capwap_duplicateipv4_element_free .clone_message_element = capwap_duplicateipv4_element_clone,
.free_message_element = capwap_duplicateipv4_element_free
}; };

View File

@ -37,6 +37,20 @@ static void capwap_duplicateipv6_element_create(void* data, capwap_message_eleme
func->write_block(handle, element->macaddress, element->length); func->write_block(handle, element->macaddress, element->length);
} }
/* */
static void* capwap_duplicateipv6_element_clone(void* data) {
struct capwap_duplicateipv6_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_duplicateipv6_element));
if (cloneelement->length > 0) {
cloneelement->macaddress = capwap_clone(((struct capwap_duplicateipv6_element*)data)->macaddress, cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_duplicateipv6_element_free(void* data) { static void capwap_duplicateipv6_element_free(void* data) {
struct capwap_duplicateipv6_element* element = (struct capwap_duplicateipv6_element*)data; struct capwap_duplicateipv6_element* element = (struct capwap_duplicateipv6_element*)data;
@ -95,5 +109,6 @@ static void* capwap_duplicateipv6_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_duplicateipv6_ops = { struct capwap_message_elements_ops capwap_element_duplicateipv6_ops = {
.create_message_element = capwap_duplicateipv6_element_create, .create_message_element = capwap_duplicateipv6_element_create,
.parsing_message_element = capwap_duplicateipv6_element_parsing, .parsing_message_element = capwap_duplicateipv6_element_parsing,
.free_parsed_message_element = capwap_duplicateipv6_element_free .clone_message_element = capwap_duplicateipv6_element_clone,
.free_message_element = capwap_duplicateipv6_element_free
}; };

View File

@ -26,6 +26,13 @@ static void capwap_ecnsupport_element_create(void* data, capwap_message_elements
func->write_u8(handle, element->flag); func->write_u8(handle, element->flag);
} }
/* */
static void* capwap_ecnsupport_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_ecnsupport_element));
}
/* */ /* */
static void capwap_ecnsupport_element_free(void* data) { static void capwap_ecnsupport_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -62,5 +69,6 @@ static void* capwap_ecnsupport_element_parsing(capwap_message_elements_handle ha
struct capwap_message_elements_ops capwap_element_ecnsupport_ops = { struct capwap_message_elements_ops capwap_element_ecnsupport_ops = {
.create_message_element = capwap_ecnsupport_element_create, .create_message_element = capwap_ecnsupport_element_create,
.parsing_message_element = capwap_ecnsupport_element_parsing, .parsing_message_element = capwap_ecnsupport_element_parsing,
.free_parsed_message_element = capwap_ecnsupport_element_free .clone_message_element = capwap_ecnsupport_element_clone,
.free_message_element = capwap_ecnsupport_element_free
}; };

View File

@ -43,6 +43,13 @@ static void* capwap_idletimeout_element_parsing(capwap_message_elements_handle h
return data; return data;
} }
/* */
static void* capwap_idletimeout_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_idletimeout_element));
}
/* */ /* */
static void capwap_idletimeout_element_free(void* data) { static void capwap_idletimeout_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -54,5 +61,6 @@ static void capwap_idletimeout_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_idletimeout_ops = { struct capwap_message_elements_ops capwap_element_idletimeout_ops = {
.create_message_element = capwap_idletimeout_element_create, .create_message_element = capwap_idletimeout_element_create,
.parsing_message_element = capwap_idletimeout_element_parsing, .parsing_message_element = capwap_idletimeout_element_parsing,
.free_parsed_message_element = capwap_idletimeout_element_free .clone_message_element = capwap_idletimeout_element_clone,
.free_message_element = capwap_idletimeout_element_free
}; };

View File

@ -29,6 +29,20 @@ static void capwap_imagedata_element_create(void* data, capwap_message_elements_
} }
} }
/* */
static void* capwap_imagedata_element_clone(void* data) {
struct capwap_imagedata_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_imagedata_element));
if (cloneelement->length > 0) {
cloneelement->data = capwap_clone(((struct capwap_imagedata_element*)data)->data, cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_imagedata_element_free(void* data) { static void capwap_imagedata_element_free(void* data) {
struct capwap_imagedata_element* element = (struct capwap_imagedata_element*)data; struct capwap_imagedata_element* element = (struct capwap_imagedata_element*)data;
@ -93,5 +107,6 @@ static void* capwap_imagedata_element_parsing(capwap_message_elements_handle han
struct capwap_message_elements_ops capwap_element_imagedata_ops = { struct capwap_message_elements_ops capwap_element_imagedata_ops = {
.create_message_element = capwap_imagedata_element_create, .create_message_element = capwap_imagedata_element_create,
.parsing_message_element = capwap_imagedata_element_parsing, .parsing_message_element = capwap_imagedata_element_parsing,
.free_parsed_message_element = capwap_imagedata_element_free .clone_message_element = capwap_imagedata_element_clone,
.free_message_element = capwap_imagedata_element_free
}; };

View File

@ -31,6 +31,18 @@ static void capwap_imageidentifier_element_create(void* data, capwap_message_ele
func->write_block(handle, element->name, length); func->write_block(handle, element->name, length);
} }
/* */
static void* capwap_imageidentifier_element_clone(void* data) {
struct capwap_imageidentifier_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_imageidentifier_element));
cloneelement->name = (uint8_t*)capwap_duplicate_string((char*)((struct capwap_imageidentifier_element*)data)->name);
return cloneelement;
}
/* */ /* */
static void capwap_imageidentifier_element_free(void* data) { static void capwap_imageidentifier_element_free(void* data) {
struct capwap_imageidentifier_element* element = (struct capwap_imageidentifier_element*)data; struct capwap_imageidentifier_element* element = (struct capwap_imageidentifier_element*)data;
@ -78,5 +90,6 @@ static void* capwap_imageidentifier_element_parsing(capwap_message_elements_hand
struct capwap_message_elements_ops capwap_element_imageidentifier_ops = { struct capwap_message_elements_ops capwap_element_imageidentifier_ops = {
.create_message_element = capwap_imageidentifier_element_create, .create_message_element = capwap_imageidentifier_element_create,
.parsing_message_element = capwap_imageidentifier_element_parsing, .parsing_message_element = capwap_imageidentifier_element_parsing,
.free_parsed_message_element = capwap_imageidentifier_element_free .clone_message_element = capwap_imageidentifier_element_clone,
.free_message_element = capwap_imageidentifier_element_free
}; };

View File

@ -33,6 +33,13 @@ static void capwap_imageinfo_element_create(void* data, capwap_message_elements_
func->write_block(handle, element->hash, CAPWAP_IMAGEINFO_HASH_LENGTH); func->write_block(handle, element->hash, CAPWAP_IMAGEINFO_HASH_LENGTH);
} }
/* */
static void* capwap_imageinfo_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_imageinfo_element));
}
/* */ /* */
static void capwap_imageinfo_element_free(void* data) { static void capwap_imageinfo_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -64,5 +71,6 @@ static void* capwap_imageinfo_element_parsing(capwap_message_elements_handle han
struct capwap_message_elements_ops capwap_element_imageinfo_ops = { struct capwap_message_elements_ops capwap_element_imageinfo_ops = {
.create_message_element = capwap_imageinfo_element_create, .create_message_element = capwap_imageinfo_element_create,
.parsing_message_element = capwap_imageinfo_element_parsing, .parsing_message_element = capwap_imageinfo_element_parsing,
.free_parsed_message_element = capwap_imageinfo_element_free .clone_message_element = capwap_imageinfo_element_clone,
.free_message_element = capwap_imageinfo_element_free
}; };

View File

@ -32,6 +32,13 @@ static void* capwap_initdownload_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_initdownload_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_initdownload_element));
}
/* */ /* */
static void capwap_initdownload_element_free(void* data) { static void capwap_initdownload_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -43,5 +50,6 @@ static void capwap_initdownload_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_initdownload_ops = { struct capwap_message_elements_ops capwap_element_initdownload_ops = {
.create_message_element = capwap_initdownload_element_create, .create_message_element = capwap_initdownload_element_create,
.parsing_message_element = capwap_initdownload_element_parsing, .parsing_message_element = capwap_initdownload_element_parsing,
.free_parsed_message_element = capwap_initdownload_element_free .clone_message_element = capwap_initdownload_element_clone,
.free_message_element = capwap_initdownload_element_free
}; };

View File

@ -44,6 +44,13 @@ static void* capwap_localipv4_element_parsing(capwap_message_elements_handle han
return data; return data;
} }
/* */
static void* capwap_localipv4_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_localipv4_element));
}
/* */ /* */
static void capwap_localipv4_element_free(void* data) { static void capwap_localipv4_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -55,5 +62,6 @@ static void capwap_localipv4_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_localipv4_ops = { struct capwap_message_elements_ops capwap_element_localipv4_ops = {
.create_message_element = capwap_localipv4_element_create, .create_message_element = capwap_localipv4_element_create,
.parsing_message_element = capwap_localipv4_element_parsing, .parsing_message_element = capwap_localipv4_element_parsing,
.free_parsed_message_element = capwap_localipv4_element_free .clone_message_element = capwap_localipv4_element_clone,
.free_message_element = capwap_localipv4_element_free
}; };

View File

@ -49,6 +49,13 @@ static void* capwap_localipv6_element_parsing(capwap_message_elements_handle han
return data; return data;
} }
/* */
static void* capwap_localipv6_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_localipv6_element));
}
/* */ /* */
static void capwap_localipv6_element_free(void* data) { static void capwap_localipv6_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -60,5 +67,6 @@ static void capwap_localipv6_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_localipv6_ops = { struct capwap_message_elements_ops capwap_element_localipv6_ops = {
.create_message_element = capwap_localipv6_element_create, .create_message_element = capwap_localipv6_element_create,
.parsing_message_element = capwap_localipv6_element_parsing, .parsing_message_element = capwap_localipv6_element_parsing,
.free_parsed_message_element = capwap_localipv6_element_free .clone_message_element = capwap_localipv6_element_clone,
.free_message_element = capwap_localipv6_element_free
}; };

View File

@ -28,6 +28,18 @@ static void capwap_location_element_create(void* data, capwap_message_elements_h
func->write_block(handle, element->value, length); func->write_block(handle, element->value, length);
} }
/* */
static void* capwap_location_element_clone(void* data) {
struct capwap_location_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_location_element));
cloneelement->value = (uint8_t*)capwap_duplicate_string((char*)((struct capwap_location_element*)data)->value);
return cloneelement;
}
/* */ /* */
static void capwap_location_element_free(void* data) { static void capwap_location_element_free(void* data) {
struct capwap_location_element* element = (struct capwap_location_element*)data; struct capwap_location_element* element = (struct capwap_location_element*)data;
@ -68,5 +80,6 @@ static void* capwap_location_element_parsing(capwap_message_elements_handle hand
struct capwap_message_elements_ops capwap_element_location_ops = { struct capwap_message_elements_ops capwap_element_location_ops = {
.create_message_element = capwap_location_element_create, .create_message_element = capwap_location_element_create,
.parsing_message_element = capwap_location_element_parsing, .parsing_message_element = capwap_location_element_parsing,
.free_parsed_message_element = capwap_location_element_free .clone_message_element = capwap_location_element_clone,
.free_message_element = capwap_location_element_free
}; };

View File

@ -44,6 +44,13 @@ static void* capwap_maximumlength_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_maximumlength_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_maximumlength_element));
}
/* */ /* */
static void capwap_maximumlength_element_free(void* data) { static void capwap_maximumlength_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -55,5 +62,6 @@ static void capwap_maximumlength_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_maximumlength_ops = { struct capwap_message_elements_ops capwap_element_maximumlength_ops = {
.create_message_element = capwap_maximumlength_element_create, .create_message_element = capwap_maximumlength_element_create,
.parsing_message_element = capwap_maximumlength_element_parsing, .parsing_message_element = capwap_maximumlength_element_parsing,
.free_parsed_message_element = capwap_maximumlength_element_free .clone_message_element = capwap_maximumlength_element_clone,
.free_message_element = capwap_maximumlength_element_free
}; };

View File

@ -52,6 +52,13 @@ static void* capwap_mtudiscovery_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_mtudiscovery_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_mtudiscovery_element));
}
/* */ /* */
static void capwap_mtudiscovery_element_free(void* data) { static void capwap_mtudiscovery_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -63,5 +70,6 @@ static void capwap_mtudiscovery_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_mtudiscovery_ops = { struct capwap_message_elements_ops capwap_element_mtudiscovery_ops = {
.create_message_element = capwap_mtudiscovery_element_create, .create_message_element = capwap_mtudiscovery_element_create,
.parsing_message_element = capwap_mtudiscovery_element_parsing, .parsing_message_element = capwap_mtudiscovery_element_parsing,
.free_parsed_message_element = capwap_mtudiscovery_element_free .clone_message_element = capwap_mtudiscovery_element_clone,
.free_message_element = capwap_mtudiscovery_element_free
}; };

View File

@ -28,6 +28,13 @@ static void capwap_radioadmstate_element_create(void* data, capwap_message_eleme
func->write_u8(handle, element->state); func->write_u8(handle, element->state);
} }
/* */
static void* capwap_radioadmstate_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_radioadmstate_element));
}
/* */ /* */
static void capwap_radioadmstate_element_free(void* data) { static void capwap_radioadmstate_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -69,5 +76,6 @@ static void* capwap_radioadmstate_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_radioadmstate_ops = { struct capwap_message_elements_ops capwap_element_radioadmstate_ops = {
.create_message_element = capwap_radioadmstate_element_create, .create_message_element = capwap_radioadmstate_element_create,
.parsing_message_element = capwap_radioadmstate_element_parsing, .parsing_message_element = capwap_radioadmstate_element_parsing,
.free_parsed_message_element = capwap_radioadmstate_element_free .clone_message_element = capwap_radioadmstate_element_clone,
.free_message_element = capwap_radioadmstate_element_free
}; };

View File

@ -31,6 +31,13 @@ static void capwap_radiooprstate_element_create(void* data, capwap_message_eleme
func->write_u8(handle, element->cause); func->write_u8(handle, element->cause);
} }
/* */
static void* capwap_radiooprstate_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_radiooprstate_element));
}
/* */ /* */
static void capwap_radiooprstate_element_free(void* data) { static void capwap_radiooprstate_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -80,5 +87,6 @@ static void* capwap_radiooprstate_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_radiooprstate_ops = { struct capwap_message_elements_ops capwap_element_radiooprstate_ops = {
.create_message_element = capwap_radiooprstate_element_create, .create_message_element = capwap_radiooprstate_element_create,
.parsing_message_element = capwap_radiooprstate_element_parsing, .parsing_message_element = capwap_radiooprstate_element_parsing,
.free_parsed_message_element = capwap_radiooprstate_element_free .clone_message_element = capwap_radiooprstate_element_clone,
.free_message_element = capwap_radiooprstate_element_free
}; };

View File

@ -26,6 +26,13 @@ static void capwap_resultcode_element_create(void* data, capwap_message_elements
func->write_u32(handle, element->code); func->write_u32(handle, element->code);
} }
/* */
static void* capwap_resultcode_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_resultcode_element));
}
/* */ /* */
static void capwap_resultcode_element_free(void* data) { static void capwap_resultcode_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -61,5 +68,6 @@ static void* capwap_resultcode_element_parsing(capwap_message_elements_handle ha
struct capwap_message_elements_ops capwap_element_resultcode_ops = { struct capwap_message_elements_ops capwap_element_resultcode_ops = {
.create_message_element = capwap_resultcode_element_create, .create_message_element = capwap_resultcode_element_create,
.parsing_message_element = capwap_resultcode_element_parsing, .parsing_message_element = capwap_resultcode_element_parsing,
.free_parsed_message_element = capwap_resultcode_element_free .clone_message_element = capwap_resultcode_element_clone,
.free_message_element = capwap_resultcode_element_free
}; };

View File

@ -29,6 +29,20 @@ static void capwap_returnedmessage_element_create(void* data, capwap_message_ele
func->write_block(handle, element->message, element->length); func->write_block(handle, element->message, element->length);
} }
/* */
static void* capwap_returnedmessage_element_clone(void* data) {
struct capwap_returnedmessage_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_returnedmessage_element));
if (cloneelement->length > 0) {
cloneelement->message = capwap_clone(((struct capwap_returnedmessage_element*)data)->message, cloneelement->length);
}
return cloneelement;
}
/* */ /* */
static void capwap_returnedmessage_element_free(void* data) { static void capwap_returnedmessage_element_free(void* data) {
struct capwap_returnedmessage_element* element = (struct capwap_returnedmessage_element*)data; struct capwap_returnedmessage_element* element = (struct capwap_returnedmessage_element*)data;
@ -93,5 +107,6 @@ static void* capwap_returnedmessage_element_parsing(capwap_message_elements_hand
struct capwap_message_elements_ops capwap_element_returnedmessage_ops = { struct capwap_message_elements_ops capwap_element_returnedmessage_ops = {
.create_message_element = capwap_returnedmessage_element_create, .create_message_element = capwap_returnedmessage_element_create,
.parsing_message_element = capwap_returnedmessage_element_parsing, .parsing_message_element = capwap_returnedmessage_element_parsing,
.free_parsed_message_element = capwap_returnedmessage_element_free .clone_message_element = capwap_returnedmessage_element_clone,
.free_message_element = capwap_returnedmessage_element_free
}; };

View File

@ -76,6 +76,13 @@ static void* capwap_sessionid_element_parsing(capwap_message_elements_handle han
return data; return data;
} }
/* */
static void* capwap_sessionid_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_sessionid_element));
}
/* */ /* */
static void capwap_sessionid_element_free(void* data) { static void capwap_sessionid_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -87,5 +94,6 @@ static void capwap_sessionid_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_sessionid_ops = { struct capwap_message_elements_ops capwap_element_sessionid_ops = {
.create_message_element = capwap_sessionid_element_create, .create_message_element = capwap_sessionid_element_create,
.parsing_message_element = capwap_sessionid_element_parsing, .parsing_message_element = capwap_sessionid_element_parsing,
.free_parsed_message_element = capwap_sessionid_element_free .clone_message_element = capwap_sessionid_element_clone,
.free_message_element = capwap_sessionid_element_free
}; };

View File

@ -44,6 +44,13 @@ static void* capwap_statisticstimer_element_parsing(capwap_message_elements_hand
return data; return data;
} }
/* */
static void* capwap_statisticstimer_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_statisticstimer_element));
}
/* */ /* */
static void capwap_statisticstimer_element_free(void* data) { static void capwap_statisticstimer_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -55,5 +62,6 @@ static void capwap_statisticstimer_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_statisticstimer_ops = { struct capwap_message_elements_ops capwap_element_statisticstimer_ops = {
.create_message_element = capwap_statisticstimer_element_create, .create_message_element = capwap_statisticstimer_element_create,
.parsing_message_element = capwap_statisticstimer_element_parsing, .parsing_message_element = capwap_statisticstimer_element_parsing,
.free_parsed_message_element = capwap_statisticstimer_element_free .clone_message_element = capwap_statisticstimer_element_clone,
.free_message_element = capwap_statisticstimer_element_free
}; };

View File

@ -46,6 +46,13 @@ static void* capwap_timers_element_parsing(capwap_message_elements_handle handle
return data; return data;
} }
/* */
static void* capwap_timers_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_timers_element));
}
/* */ /* */
static void capwap_timers_element_free(void* data) { static void capwap_timers_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -57,5 +64,6 @@ static void capwap_timers_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_timers_ops = { struct capwap_message_elements_ops capwap_element_timers_ops = {
.create_message_element = capwap_timers_element_create, .create_message_element = capwap_timers_element_create,
.parsing_message_element = capwap_timers_element_parsing, .parsing_message_element = capwap_timers_element_parsing,
.free_parsed_message_element = capwap_timers_element_free .clone_message_element = capwap_timers_element_clone,
.free_message_element = capwap_timers_element_free
}; };

View File

@ -26,6 +26,13 @@ static void capwap_transport_element_create(void* data, capwap_message_elements_
func->write_u8(handle, element->type); func->write_u8(handle, element->type);
} }
/* */
static void* capwap_transport_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_transport_element));
}
/* */ /* */
static void capwap_transport_element_free(void* data) { static void capwap_transport_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -61,5 +68,6 @@ static void* capwap_transport_element_parsing(capwap_message_elements_handle han
struct capwap_message_elements_ops capwap_element_transport_ops = { struct capwap_message_elements_ops capwap_element_transport_ops = {
.create_message_element = capwap_transport_element_create, .create_message_element = capwap_transport_element_create,
.parsing_message_element = capwap_transport_element_parsing, .parsing_message_element = capwap_transport_element_parsing,
.free_parsed_message_element = capwap_transport_element_free .clone_message_element = capwap_transport_element_clone,
.free_message_element = capwap_transport_element_free
}; };

View File

@ -29,6 +29,20 @@ static void capwap_vendorpayload_element_create(void* data, capwap_message_eleme
func->write_block(handle, element->data, element->datalength); func->write_block(handle, element->data, element->datalength);
} }
/* */
static void* capwap_vendorpayload_element_clone(void* data) {
struct capwap_vendorpayload_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_vendorpayload_element));
if (cloneelement->datalength > 0) {
cloneelement->data = capwap_clone(((struct capwap_vendorpayload_element*)data)->data, cloneelement->datalength);
}
return cloneelement;
}
/* */ /* */
static void capwap_vendorpayload_element_free(void* data) { static void capwap_vendorpayload_element_free(void* data) {
struct capwap_vendorpayload_element* element = (struct capwap_vendorpayload_element*)data; struct capwap_vendorpayload_element* element = (struct capwap_vendorpayload_element*)data;
@ -77,5 +91,6 @@ static void* capwap_vendorpayload_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_vendorpayload_ops = { struct capwap_message_elements_ops capwap_element_vendorpayload_ops = {
.create_message_element = capwap_vendorpayload_element_create, .create_message_element = capwap_vendorpayload_element_create,
.parsing_message_element = capwap_vendorpayload_element_parsing, .parsing_message_element = capwap_vendorpayload_element_parsing,
.free_parsed_message_element = capwap_vendorpayload_element_free .clone_message_element = capwap_vendorpayload_element_clone,
.free_message_element = capwap_vendorpayload_element_free
}; };

View File

@ -51,6 +51,29 @@ static void capwap_wtpboarddata_element_create(void* data, capwap_message_elemen
} }
} }
/* */
static void* capwap_wtpboarddata_element_clone(void* data) {
int i;
struct capwap_wtpboarddata_element* cloneelement;
struct capwap_wtpboarddata_element* element = (struct capwap_wtpboarddata_element*)data;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_wtpboarddata_element));
cloneelement->boardsubelement = capwap_array_create(sizeof(struct capwap_wtpboarddata_board_subelement), 0, 1);
for (i = 0; i < element->boardsubelement->count; i++) {
struct capwap_wtpboarddata_board_subelement* desc = (struct capwap_wtpboarddata_board_subelement*)capwap_array_get_item_pointer(element->boardsubelement, i);
struct capwap_wtpboarddata_board_subelement* clonedesc = (struct capwap_wtpboarddata_board_subelement*)capwap_array_get_item_pointer(cloneelement->boardsubelement, i);
memcpy(clonedesc, desc, sizeof(struct capwap_wtpboarddata_board_subelement));
if (desc->length) {
clonedesc->data = capwap_clone(desc->data, desc->length);
}
}
return cloneelement;
}
/* */ /* */
static void capwap_wtpboarddata_element_free(void* data) { static void capwap_wtpboarddata_element_free(void* data) {
int i; int i;
@ -130,7 +153,8 @@ static void* capwap_wtpboarddata_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_wtpboarddata_ops = { struct capwap_message_elements_ops capwap_element_wtpboarddata_ops = {
.create_message_element = capwap_wtpboarddata_element_create, .create_message_element = capwap_wtpboarddata_element_create,
.parsing_message_element = capwap_wtpboarddata_element_parsing, .parsing_message_element = capwap_wtpboarddata_element_parsing,
.free_parsed_message_element = capwap_wtpboarddata_element_free .clone_message_element = capwap_wtpboarddata_element_clone,
.free_message_element = capwap_wtpboarddata_element_free
}; };
/* */ /* */

View File

@ -76,6 +76,35 @@ static void capwap_wtpdescriptor_element_create(void* data, capwap_message_eleme
} }
} }
/* */
static void* capwap_wtpdescriptor_element_clone(void* data) {
int i;
struct capwap_wtpdescriptor_element* cloneelement;
struct capwap_wtpdescriptor_element* element = (struct capwap_wtpdescriptor_element*)data;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_wtpdescriptor_element));
cloneelement->encryptsubelement = capwap_array_create(sizeof(struct capwap_wtpdescriptor_encrypt_subelement), 0, 0);
for (i = 0; i < element->encryptsubelement->count; i++) {
memcpy(capwap_array_get_item_pointer(cloneelement->encryptsubelement, i), capwap_array_get_item_pointer(element->encryptsubelement, i), sizeof(struct capwap_wtpdescriptor_encrypt_subelement));
}
cloneelement->descsubelement = capwap_array_create(sizeof(struct capwap_wtpdescriptor_desc_subelement), 0, 1);
for (i = 0; i < element->descsubelement->count; i++) {
struct capwap_wtpdescriptor_desc_subelement* desc = (struct capwap_wtpdescriptor_desc_subelement*)capwap_array_get_item_pointer(element->descsubelement, i);
struct capwap_wtpdescriptor_desc_subelement* clonedesc = (struct capwap_wtpdescriptor_desc_subelement*)capwap_array_get_item_pointer(cloneelement->descsubelement, i);
memcpy(clonedesc, desc, sizeof(struct capwap_wtpdescriptor_desc_subelement));
if (desc->data) {
clonedesc->data = (uint8_t*)capwap_duplicate_string((char*)desc->data);
}
}
return cloneelement;
}
/* */ /* */
static void capwap_wtpdescriptor_element_free(void* data) { static void capwap_wtpdescriptor_element_free(void* data) {
int i; int i;
@ -202,5 +231,6 @@ static void* capwap_wtpdescriptor_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_wtpdescriptor_ops = { struct capwap_message_elements_ops capwap_element_wtpdescriptor_ops = {
.create_message_element = capwap_wtpdescriptor_element_create, .create_message_element = capwap_wtpdescriptor_element_create,
.parsing_message_element = capwap_wtpdescriptor_element_parsing, .parsing_message_element = capwap_wtpdescriptor_element_parsing,
.free_parsed_message_element = capwap_wtpdescriptor_element_free .clone_message_element = capwap_wtpdescriptor_element_clone,
.free_message_element = capwap_wtpdescriptor_element_free
}; };

View File

@ -26,6 +26,13 @@ static void capwap_wtpfallback_element_create(void* data, capwap_message_element
func->write_u8(handle, element->mode); func->write_u8(handle, element->mode);
} }
/* */
static void* capwap_wtpfallback_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_wtpfallback_element));
}
/* */ /* */
static void capwap_wtpfallback_element_free(void* data) { static void capwap_wtpfallback_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -61,5 +68,6 @@ static void* capwap_wtpfallback_element_parsing(capwap_message_elements_handle h
struct capwap_message_elements_ops capwap_element_wtpfallback_ops = { struct capwap_message_elements_ops capwap_element_wtpfallback_ops = {
.create_message_element = capwap_wtpfallback_element_create, .create_message_element = capwap_wtpfallback_element_create,
.parsing_message_element = capwap_wtpfallback_element_parsing, .parsing_message_element = capwap_wtpfallback_element_parsing,
.free_parsed_message_element = capwap_wtpfallback_element_free .clone_message_element = capwap_wtpfallback_element_clone,
.free_message_element = capwap_wtpfallback_element_free
}; };

View File

@ -26,6 +26,13 @@ static void capwap_wtpframetunnelmode_element_create(void* data, capwap_message_
func->write_u8(handle, element->mode); func->write_u8(handle, element->mode);
} }
/* */
static void* capwap_wtpframetunnelmode_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_wtpframetunnelmode_element));
}
/* */ /* */
static void capwap_wtpframetunnelmode_element_free(void* data) { static void capwap_wtpframetunnelmode_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -61,5 +68,6 @@ static void* capwap_wtpframetunnelmode_element_parsing(capwap_message_elements_h
struct capwap_message_elements_ops capwap_element_wtpframetunnelmode_ops = { struct capwap_message_elements_ops capwap_element_wtpframetunnelmode_ops = {
.create_message_element = capwap_wtpframetunnelmode_element_create, .create_message_element = capwap_wtpframetunnelmode_element_create,
.parsing_message_element = capwap_wtpframetunnelmode_element_parsing, .parsing_message_element = capwap_wtpframetunnelmode_element_parsing,
.free_parsed_message_element = capwap_wtpframetunnelmode_element_free .clone_message_element = capwap_wtpframetunnelmode_element_clone,
.free_message_element = capwap_wtpframetunnelmode_element_free
}; };

View File

@ -26,6 +26,13 @@ static void capwap_wtpmactype_element_create(void* data, capwap_message_elements
func->write_u8(handle, element->type); func->write_u8(handle, element->type);
} }
/* */
static void* capwap_wtpmactype_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_wtpmactype_element));
}
/* */ /* */
static void capwap_wtpmactype_element_free(void* data) { static void capwap_wtpmactype_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -61,5 +68,6 @@ static void* capwap_wtpmactype_element_parsing(capwap_message_elements_handle ha
struct capwap_message_elements_ops capwap_element_wtpmactype_ops = { struct capwap_message_elements_ops capwap_element_wtpmactype_ops = {
.create_message_element = capwap_wtpmactype_element_create, .create_message_element = capwap_wtpmactype_element_create,
.parsing_message_element = capwap_wtpmactype_element_parsing, .parsing_message_element = capwap_wtpmactype_element_parsing,
.free_parsed_message_element = capwap_wtpmactype_element_free .clone_message_element = capwap_wtpmactype_element_clone,
.free_message_element = capwap_wtpmactype_element_free
}; };

View File

@ -51,6 +51,20 @@ static void* capwap_wtpname_element_parsing(capwap_message_elements_handle handl
return data; return data;
} }
/* */
static void* capwap_wtpname_element_clone(void* data) {
struct capwap_wtpname_element* cloneelement;
ASSERT(data != NULL);
cloneelement = capwap_clone(data, sizeof(struct capwap_wtpname_element));
if (cloneelement->name) {
cloneelement->name = (uint8_t*)capwap_duplicate_string((char*)((struct capwap_wtpname_element*)data)->name);
}
return cloneelement;
}
/* */ /* */
static void capwap_wtpname_element_free(void* data) { static void capwap_wtpname_element_free(void* data) {
struct capwap_wtpname_element* element = (struct capwap_wtpname_element*)data; struct capwap_wtpname_element* element = (struct capwap_wtpname_element*)data;
@ -68,5 +82,6 @@ static void capwap_wtpname_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_wtpname_ops = { struct capwap_message_elements_ops capwap_element_wtpname_ops = {
.create_message_element = capwap_wtpname_element_create, .create_message_element = capwap_wtpname_element_create,
.parsing_message_element = capwap_wtpname_element_parsing, .parsing_message_element = capwap_wtpname_element_parsing,
.free_parsed_message_element = capwap_wtpname_element_free .clone_message_element = capwap_wtpname_element_clone,
.free_message_element = capwap_wtpname_element_free
}; };

View File

@ -44,6 +44,13 @@ static void capwap_wtpradiostat_element_create(void* data, capwap_message_elemen
func->write_u16(handle, element->currentnoisefloor); func->write_u16(handle, element->currentnoisefloor);
} }
/* */
static void* capwap_wtpradiostat_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_wtpradiostat_element));
}
/* */ /* */
static void capwap_wtpradiostat_element_free(void* data) { static void capwap_wtpradiostat_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -90,5 +97,6 @@ static void* capwap_wtpradiostat_element_parsing(capwap_message_elements_handle
struct capwap_message_elements_ops capwap_element_wtpradiostat_ops = { struct capwap_message_elements_ops capwap_element_wtpradiostat_ops = {
.create_message_element = capwap_wtpradiostat_element_create, .create_message_element = capwap_wtpradiostat_element_create,
.parsing_message_element = capwap_wtpradiostat_element_parsing, .parsing_message_element = capwap_wtpradiostat_element_parsing,
.free_parsed_message_element = capwap_wtpradiostat_element_free .clone_message_element = capwap_wtpradiostat_element_clone,
.free_message_element = capwap_wtpradiostat_element_free
}; };

View File

@ -64,6 +64,13 @@ static void* capwap_wtprebootstat_element_parsing(capwap_message_elements_handle
return data; return data;
} }
/* */
static void* capwap_wtprebootstat_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_wtprebootstat_element));
}
/* */ /* */
static void capwap_wtprebootstat_element_free(void* data) { static void capwap_wtprebootstat_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -75,5 +82,6 @@ static void capwap_wtprebootstat_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_wtprebootstat_ops = { struct capwap_message_elements_ops capwap_element_wtprebootstat_ops = {
.create_message_element = capwap_wtprebootstat_element_create, .create_message_element = capwap_wtprebootstat_element_create,
.parsing_message_element = capwap_wtprebootstat_element_parsing, .parsing_message_element = capwap_wtprebootstat_element_parsing,
.free_parsed_message_element = capwap_wtprebootstat_element_free .clone_message_element = capwap_wtprebootstat_element_clone,
.free_message_element = capwap_wtprebootstat_element_free
}; };

View File

@ -56,6 +56,13 @@ static void* capwap_wtpstaticipaddress_element_parsing(capwap_message_elements_h
return data; return data;
} }
/* */
static void* capwap_wtpstaticipaddress_element_clone(void* data) {
ASSERT(data != NULL);
return capwap_clone(data, sizeof(struct capwap_wtpstaticipaddress_element));
}
/* */ /* */
static void capwap_wtpstaticipaddress_element_free(void* data) { static void capwap_wtpstaticipaddress_element_free(void* data) {
ASSERT(data != NULL); ASSERT(data != NULL);
@ -67,5 +74,6 @@ static void capwap_wtpstaticipaddress_element_free(void* data) {
struct capwap_message_elements_ops capwap_element_wtpstaticipaddress_ops = { struct capwap_message_elements_ops capwap_element_wtpstaticipaddress_ops = {
.create_message_element = capwap_wtpstaticipaddress_element_create, .create_message_element = capwap_wtpstaticipaddress_element_create,
.parsing_message_element = capwap_wtpstaticipaddress_element_parsing, .parsing_message_element = capwap_wtpstaticipaddress_element_parsing,
.free_parsed_message_element = capwap_wtpstaticipaddress_element_free .clone_message_element = capwap_wtpstaticipaddress_element_clone,
.free_message_element = capwap_wtpstaticipaddress_element_free
}; };