Add feature to clone message element
This commit is contained in:
parent
06c4763053
commit
b0fac2068e
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user