diff options
Diffstat (limited to 'src/charon/encoding/payloads/delete_payload.c')
-rw-r--r-- | src/charon/encoding/payloads/delete_payload.c | 79 |
1 files changed, 8 insertions, 71 deletions
diff --git a/src/charon/encoding/payloads/delete_payload.c b/src/charon/encoding/payloads/delete_payload.c index 81436e2a8..1d42a3af2 100644 --- a/src/charon/encoding/payloads/delete_payload.c +++ b/src/charon/encoding/payloads/delete_payload.c @@ -196,14 +196,6 @@ static size_t get_length(private_delete_payload_t *this) } /** - * Implementation of delete_payload_t.set_protocol_id. - */ -static void set_protocol_id (private_delete_payload_t *this, protocol_id_t protocol_id) -{ - this->protocol_id = protocol_id; -} - -/** * Implementation of delete_payload_t.get_protocol_id. */ static protocol_id_t get_protocol_id (private_delete_payload_t *this) @@ -212,60 +204,6 @@ static protocol_id_t get_protocol_id (private_delete_payload_t *this) } /** - * Implementation of delete_payload_t.set_spi_size. - */ -static void set_spi_size (private_delete_payload_t *this, u_int8_t spi_size) -{ - this->spi_size = spi_size; -} - -/** - * Implementation of delete_payload_t.get_spi_size. - */ -static u_int8_t get_spi_size (private_delete_payload_t *this) -{ - return (this->spi_size); -} - -/** - * Implementation of delete_payload_t.set_spi_count. - */ -static void set_spi_count (private_delete_payload_t *this, u_int16_t spi_count) -{ - this->spi_count = spi_count; -} - -/** - * Implementation of delete_payload_t.get_spi_count. - */ -static u_int16_t get_spi_count(private_delete_payload_t *this) -{ - return (this->spi_count); -} - -/** - * Implementation of delete_payload_t.set_spis. - */ -static void set_spis(private_delete_payload_t *this, chunk_t spis) -{ - if (this->spis.ptr != NULL) - { - chunk_free(&(this->spis)); - } - this->spis.ptr = clalloc(spis.ptr,spis.len); - this->spis.len = spis.len; - this->payload_length = DELETE_PAYLOAD_HEADER_LENGTH + this->spis.len; -} - -/** - * Implementation of delete_payload_t.get_spis. - */ -static chunk_t get_spis (private_delete_payload_t *this) -{ - return (this->spis); -} - -/** * Implementation of delete_payload_t.add_spi. */ static void add_spi(private_delete_payload_t *this, u_int32_t spi) @@ -277,6 +215,12 @@ static void add_spi(private_delete_payload_t *this, u_int32_t spi) this->spis.len += this->spi_size; this->spis.ptr = realloc(this->spis.ptr, this->spis.len); *(u_int32_t*)(this->spis.ptr + (this->spis.len / this->spi_size - 1)) = spi; + if (this->spi_list) + { + /* reset SPI iterator list */ + this->spi_list->destroy(this->spi_list); + this->spi_list = NULL; + } } } @@ -295,8 +239,8 @@ static iterator_t* create_spi_iterator(private_delete_payload_t *this) { for (i = 0; i < this->spi_count; i++) { - u_int32_t spi = *(u_int32_t*)(this->spis.ptr + i * this->spi_size); - this->spi_list->insert_last(this->spi_list, (void*)spi); + this->spi_list->insert_last(this->spi_list, this->spis.ptr + i * + this->spi_size); } } } @@ -337,14 +281,7 @@ delete_payload_t *delete_payload_create(protocol_id_t protocol_id) /* public functions */ this->public.destroy = (void (*) (delete_payload_t *)) destroy; - this->public.set_protocol_id = (void (*) (delete_payload_t *,protocol_id_t)) set_protocol_id; this->public.get_protocol_id = (protocol_id_t (*) (delete_payload_t *)) get_protocol_id; - this->public.set_spi_size = (void (*) (delete_payload_t *,u_int8_t)) set_spi_size; - this->public.get_spi_size = (u_int8_t (*) (delete_payload_t *)) get_spi_size; - this->public.set_spi_count = (void (*) (delete_payload_t *,u_int16_t)) set_spi_count; - this->public.get_spi_count = (u_int16_t (*) (delete_payload_t *)) get_spi_count; - this->public.set_spis = (void (*) (delete_payload_t *,chunk_t)) set_spis; - this->public.get_spis = (chunk_t (*) (delete_payload_t *)) get_spis; this->public.add_spi = (void (*) (delete_payload_t *,u_int32_t))add_spi; this->public.create_spi_iterator = (iterator_t* (*) (delete_payload_t *)) create_spi_iterator; |