diff options
-rw-r--r-- | Source/charon/configuration.c | 24 | ||||
-rw-r--r-- | Source/charon/event_queue.c | 124 | ||||
-rw-r--r-- | Source/charon/generator.c | 48 | ||||
-rw-r--r-- | Source/charon/ike_sa.c | 62 | ||||
-rw-r--r-- | Source/charon/ike_sa_id.c | 46 | ||||
-rw-r--r-- | Source/charon/ike_sa_manager.c | 166 | ||||
-rw-r--r-- | Source/charon/job.c | 14 | ||||
-rw-r--r-- | Source/charon/job_queue.c | 48 | ||||
-rw-r--r-- | Source/charon/linked_list.c | 168 | ||||
-rw-r--r-- | Source/charon/message.c | 22 | ||||
-rw-r--r-- | Source/charon/packet.c | 20 | ||||
-rw-r--r-- | Source/charon/receiver.c | 36 | ||||
-rw-r--r-- | Source/charon/scheduler.c | 32 | ||||
-rw-r--r-- | Source/charon/send_queue.c | 62 | ||||
-rw-r--r-- | Source/charon/sender.c | 42 | ||||
-rw-r--r-- | Source/charon/socket.c | 70 | ||||
-rw-r--r-- | Source/charon/tester.c | 64 | ||||
-rw-r--r-- | Source/charon/tests/event_queue_test.c | 54 | ||||
-rw-r--r-- | Source/charon/tests/job_queue_test.c | 54 | ||||
-rw-r--r-- | Source/charon/tests/receiver_test.c | 20 | ||||
-rw-r--r-- | Source/charon/tests/sender_test.c | 16 | ||||
-rw-r--r-- | Source/charon/tests/socket_test.c | 20 |
22 files changed, 606 insertions, 606 deletions
diff --git a/Source/charon/configuration.c b/Source/charon/configuration.c index 32308105f..0cb9d6705 100644 --- a/Source/charon/configuration.c +++ b/Source/charon/configuration.c @@ -1,9 +1,9 @@ /** * @file configuration.c - * - * @brief Class configuration_t. + * + * @brief Class configuration_t. * Object of this type represents a configuration for an IKE_SA - * + * */ /* @@ -33,15 +33,15 @@ * Private data of an configuration_t object */ typedef struct private_configuration_s private_configuration_t; - -struct private_configuration_s { + +struct private_configuration_s { /** * Public part of a configuration_t object */ configuration_t public; - - + + /* Private values */ }; @@ -55,7 +55,7 @@ static status_t destroy (private_configuration_t *this) { return FAILED; } - pfree(this); + allocator_free(this); return SUCCESS; } @@ -64,15 +64,15 @@ static status_t destroy (private_configuration_t *this) */ configuration_t * configuration_create() { - private_configuration_t *this = alloc_thing(private_configuration_t, "private_configuration_t"); + private_configuration_t *this = allocator_alloc_thing(private_configuration_t, "private_configuration_t"); if (this == NULL) { return NULL; } - + /* Public functions */ this->public.destroy = (status_t(*)(configuration_t*))destroy; - - return (&this->public); + + return (&this->public); } diff --git a/Source/charon/event_queue.c b/Source/charon/event_queue.c index 610d9822e..d086bf44f 100644 --- a/Source/charon/event_queue.c +++ b/Source/charon/event_queue.c @@ -1,8 +1,8 @@ /** * @file event_queue.c - * + * * @brief Event-Queue based on linked_list_t - * + * */ /* @@ -25,8 +25,8 @@ #include <pluto/defs.h> #include <pthread.h> #include <stdlib.h> - - + + #include "types.h" #include "event_queue.h" #include "linked_list.h" @@ -35,9 +35,9 @@ /** * @brief represents an event as it is stored in the event queue - * + * * A event consists of a event time and an assigned job object - * + * */ typedef struct event_s event_t; @@ -54,14 +54,14 @@ struct event_s{ /** * @brief Destroys a event_t object - * + * * @param event_t calling object * @returns SUCCESS if succeeded, FAILED otherwise */ status_t (*destroy) (event_t *event); }; - + /** * @brief implements function destroy of event_t */ @@ -71,7 +71,7 @@ static status_t event_destroy(event_t *event) { return FAILED; } - pfree(event); + allocator_free(event); return SUCCESS; } @@ -80,66 +80,66 @@ static status_t event_destroy(event_t *event) * * @param time to fire the event * @param job job to add to job-queue at specific time - * + * * @return event_t event object */ static event_t *event_create(timeval_t time, job_t *job) { - event_t *this = alloc_thing(event_t, "event_t"); + event_t *this = allocator_alloc_thing(event_t, "event_t"); this->destroy = event_destroy; this->time = time; this->job = job; - + return this; } /** * @brief Private Variables and Functions of event_queue class - * + * */ typedef struct private_event_queue_s private_event_queue_t; - + struct private_event_queue_s { event_queue_t public; - + /** * The events are stored in a linked list */ linked_list_t *list; - + /** * access to linked_list is locked through this mutex */ pthread_mutex_t mutex; - + /** * If the queue is empty or an event has not to be fired * a thread has to wait * This condvar is used to wake up such a thread */ - pthread_cond_t condvar; + pthread_cond_t condvar; }; /** * Returns the difference of to timeval structs in microseconds - * + * * @param end_time end time * @param start_time start time - * + * * @warning this function is also defined in the tester class * In later improvements, this function can be added to a general * class type! - * + * * @return difference in microseconds */ static long time_difference(struct timeval *end_time, struct timeval *start_time) { long seconds, microseconds; - + seconds = (end_time->tv_sec - start_time->tv_sec); microseconds = (end_time->tv_usec - start_time->tv_usec); return ((seconds * 1000000) + microseconds); @@ -167,9 +167,9 @@ static status_t get(private_event_queue_t *this, job_t **job) event_t * next_event; int count; int oldstate; - + pthread_mutex_lock(&(this->mutex)); - + while (1) { this->list->get_count(this->list,&count); @@ -178,18 +178,18 @@ static status_t get(private_event_queue_t *this, job_t **job) /* add mutex unlock handler for cancellation, enable cancellation */ pthread_cleanup_push((void(*)(void*))pthread_mutex_unlock, (void*)&(this->mutex)); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate); - + pthread_cond_wait( &(this->condvar), &(this->mutex)); - + /* reset cancellation, remove mutex-unlock handler (without executing) */ pthread_setcancelstate(oldstate, NULL); pthread_cleanup_pop(0); - + this->list->get_count(this->list,&count); } - + this->list->get_first(this->list,(void **) &next_event); - + gettimeofday(¤t_time,NULL); long difference = time_difference(¤t_time,&(next_event->time)); if (difference <= 0) @@ -203,18 +203,18 @@ static status_t get(private_event_queue_t *this, job_t **job) { /* event available */ this->list->remove_first(this->list,(void **) &next_event); - + *job = next_event->job; - + next_event->destroy(next_event); break; } - + } pthread_cond_signal( &(this->condvar)); - + pthread_mutex_unlock(&(this->mutex)); - + return SUCCESS; } @@ -227,7 +227,7 @@ static status_t add_absolute(private_event_queue_t *this, job_t *job, timeval_t event_t *current_event; status_t status; int count; - + if (event == NULL) { return FAILED; @@ -243,7 +243,7 @@ static status_t add_absolute(private_event_queue_t *this, job_t *job, timeval_t status = this->list->insert_first(this->list,event); break; } - + /* check last entry */ this->list->get_last(this->list,(void **) ¤t_event); @@ -253,7 +253,7 @@ static status_t add_absolute(private_event_queue_t *this, job_t *job, timeval_t status = this->list->insert_last(this->list,event); break; } - + /* check first entry */ this->list->get_first(this->list,(void **) ¤t_event); @@ -263,27 +263,27 @@ static status_t add_absolute(private_event_queue_t *this, job_t *job, timeval_t status = this->list->insert_first(this->list,event); break; } - + linked_list_iterator_t * iterator; - + status = this->list->create_iterator(this->list,&iterator,TRUE); if (status != SUCCESS) { break; } - - + + iterator->has_next(iterator); - /* first element has not to be checked (already done) */ - + /* first element has not to be checked (already done) */ + while(iterator->has_next(iterator)) { status = iterator->current(iterator,(void **) ¤t_event); - + if (time_difference(&(event->time), &(current_event->time)) <= 0) { /* my event has to be fired before the current event in list */ - status = this->list->insert_before(this->list,iterator,event); + status = this->list->insert_before(this->list,iterator,event); break; } } @@ -298,7 +298,7 @@ static status_t add_absolute(private_event_queue_t *this, job_t *job, timeval_t { event->destroy(event); } - return status; + return status; } /** @@ -309,12 +309,12 @@ static status_t add_relative(event_queue_t *this, job_t *job, u_int32_t ms) timeval_t current_time; timeval_t time; int micros = ms * 1000; - + gettimeofday(¤t_time, NULL); - + time.tv_usec = ((current_time.tv_usec + micros) % 1000000); time.tv_sec = current_time.tv_sec + ((current_time.tv_usec + micros)/ 1000000); - + return this->add_absolute(this, job, time); } @@ -323,13 +323,13 @@ static status_t add_relative(event_queue_t *this, job_t *job, u_int32_t ms) * @brief implements function destroy of event_queue_t */ static status_t event_queue_destroy(private_event_queue_t *this) -{ +{ int count; this->list->get_count(this->list,&count); while (count > 0) { - event_t *event; - + event_t *event; + if (this->list->remove_first(this->list,(void *) &event) != SUCCESS) { this->list->destroy(this->list); @@ -340,17 +340,17 @@ static status_t event_queue_destroy(private_event_queue_t *this) this->list->get_count(this->list,&count); } this->list->destroy(this->list); - + pthread_mutex_destroy(&(this->mutex)); - + pthread_cond_destroy(&(this->condvar)); - - pfree(this); + + allocator_free(this); return SUCCESS; } /* - * + * * Documented in header */ event_queue_t *event_queue_create() @@ -360,23 +360,23 @@ event_queue_t *event_queue_create() { return NULL; } - - private_event_queue_t *this = alloc_thing(private_event_queue_t, "private_event_queue_t"); + + private_event_queue_t *this = allocator_alloc_thing(private_event_queue_t, "private_event_queue_t"); if (this == NULL) { linked_list->destroy(linked_list); return NULL; } - + this->public.get_count = (status_t (*) (event_queue_t *event_queue, int *count)) get_count; this->public.get = (status_t (*) (event_queue_t *event_queue, job_t **job)) get; this->public.add_absolute = (status_t (*) (event_queue_t *event_queue, job_t *job, timeval_t time)) add_absolute; this->public.add_relative = (status_t (*) (event_queue_t *event_queue, job_t *job, u_int32_t ms)) add_relative; this->public.destroy = (status_t (*) (event_queue_t *event_queue)) event_queue_destroy; - + this->list = linked_list; pthread_mutex_init(&(this->mutex), NULL); pthread_cond_init(&(this->condvar), NULL); - + return (&this->public); } diff --git a/Source/charon/generator.c b/Source/charon/generator.c index 9f72fce5e..dd7b1e58e 100644 --- a/Source/charon/generator.c +++ b/Source/charon/generator.c @@ -1,8 +1,8 @@ /** * @file generator.c - * + * * @brief Generic generator class used to generate IKEv2-Header and Payload - * + * */ /* @@ -32,18 +32,18 @@ * Private data of a generator_t object */ typedef struct private_generator_s private_generator_t; - -struct private_generator_s { + +struct private_generator_s { /** * Public part of a generator object */ generator_t public; - + /* private functions and fields */ - + /** * Generates a chunk_t with specific encoding rules - * + * * items are bytewhise written * * @param this private_generator_t-object @@ -51,17 +51,17 @@ struct private_generator_s { * @param encoding_rules pointer to first encoding_rule of encoding rules array * @param encoding_rules_count number of encoding rules in encoding rules array * @param data pointer to chunk where to write the data in - * + * * @return SUCCESS if succeeded, * OUT_OF_RES if out of ressources */ status_t (*generate) (private_generator_t *this,void * data_struct,encoding_rule_t *encoding_rules, size_t encoding_rules_count, chunk_t *data); - + /** * TODO */ status_t (*generate_u_int_type) (private_generator_t *this,encoding_type_t int_type,u_int8_t **buffer,u_int8_t **out_position,u_int8_t **roof_position,size_t *current_bit); - + /** * Pointer to the payload informations needed to automatic * generate a specific payload type @@ -76,8 +76,8 @@ struct private_generator_s { static status_t generate_u_int_type (private_generator_t *this,encoding_type_t int_type,u_int8_t **buffer,u_int8_t **out_position,u_int8_t **roof_position,size_t *current_bit) { - size_t number_of_bits = 0; - + size_t number_of_bits = 0; + switch (int_type) { case U_INT_4: @@ -106,7 +106,7 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i */ static status_t generate (private_generator_t *this,void * data_struct,encoding_rule_t *encoding_rules, size_t encoding_rules_count, chunk_t *data) { - u_int8_t * buffer = alloc_bytes(GENERATOR_DATA_BUFFER_SIZE, "generator buffer"); + u_int8_t * buffer = allocator_alloc(GENERATOR_DATA_BUFFER_SIZE, "generator buffer"); u_int8_t * out_position = buffer; u_int8_t * roof_position = buffer + GENERATOR_DATA_BUFFER_SIZE; size_t current_bit = 0; @@ -138,18 +138,18 @@ static status_t generate (private_generator_t *this,void * data_struct,encoding_ } if (status != SUCCESS) { - pfree(buffer); + allocator_free(buffer); return status; } } - + return SUCCESS; } static status_t generate_payload (private_generator_t *this,payload_type_t payload_type,void * data_struct, chunk_t *data) { int i; - + /* check every payload info for specific type */ for (i = 0; this->payload_infos[i] != NULL; i++) { @@ -172,7 +172,7 @@ static status_t destroy(private_generator_t *this) return FAILED; } - pfree(this); + allocator_free(this); return SUCCESS; } @@ -182,26 +182,26 @@ static status_t destroy(private_generator_t *this) generator_t * generator_create(payload_info_t ** payload_infos) { private_generator_t *this; - + if (payload_infos == NULL) { return NULL; } - - this = alloc_thing(private_generator_t,"private_generator_t"); + + this = allocator_alloc_thing(private_generator_t,"private_generator_t"); if (this == NULL) { return NULL; } - + this->public.generate_payload = (status_t(*)(generator_t*, payload_type_t, void *, chunk_t *)) generate_payload; this->public.destroy = (status_t(*)(generator_t*)) destroy; - + /* initiate private fields */ this->generate = generate; this->generate_u_int_type = generate_u_int_type; - + this->payload_infos = payload_infos; - + return &(this->public); } diff --git a/Source/charon/ike_sa.c b/Source/charon/ike_sa.c index a45e7d90f..f5333c638 100644 --- a/Source/charon/ike_sa.c +++ b/Source/charon/ike_sa.c @@ -1,9 +1,9 @@ /** * @file ike_sa.c - * + * * @brief Class ike_sa_t. An object of this type is managed by an * ike_sa_manager_t-object and represents an IKE_SA - * + * */ /* @@ -37,26 +37,26 @@ enum ike_sa_state_e{ * IKE_SA is is not in a state */ NO_STATE, - + /** * A IKE_SA_INIT-message was sent: role initiator */ IKE_SA_INIT_REQUESTED, - + /** * A IKE_SA_INIT-message was replied: role responder */ IKE_SA_INIT_RESPONDED, - + /** - * An IKE_AUTH-message was sent after a successful + * An IKE_AUTH-message was sent after a successful * IKE_SA_INIT-exchange: role initiator */ IKE_AUTH_REQUESTED, /** * An IKE_AUTH-message was replied: role responder. - * In this state, all the informations for an IKE_SA + * In this state, all the informations for an IKE_SA * and one CHILD_SA are known. */ IKE_SA_INITIALIZED @@ -67,26 +67,26 @@ enum ike_sa_state_e{ * Private data of an message_t object */ typedef struct private_ike_sa_s private_ike_sa_t; - -struct private_ike_sa_s { + +struct private_ike_sa_s { /** * Public part of a ike_sa_t object */ ike_sa_t public; - - + + /* Private values */ /** * Identifier for the current IKE_SA */ ike_sa_id_t *ike_sa_id; - + /** * Linked List containing the child sa's of the current IKE_SA */ linked_list_t *child_sas; - + /** * Current state of the IKE_SA */ @@ -108,7 +108,7 @@ static status_t process_message (private_ike_sa_t *this, message_t *message) static status_t process_configuration (private_ike_sa_t *this,configuration_t *configuration) { /* - * @TODO Add configuration processing here + * @TODO Add configuration processing here */ return SUCCESS; } @@ -130,13 +130,13 @@ static status_t destroy (private_ike_sa_t *this) { return FAILED; } - + this->ike_sa_id->destroy(this->ike_sa_id); - + this->child_sas->destroy(this->child_sas); - pfree(this); - + allocator_free(this); + return SUCCESS; } @@ -145,37 +145,37 @@ static status_t destroy (private_ike_sa_t *this) */ ike_sa_t * ike_sa_create(ike_sa_id_t *ike_sa_id) { - private_ike_sa_t *this = alloc_thing(private_ike_sa_t, "private_ike_sa_t"); + private_ike_sa_t *this = allocator_alloc_thing(private_ike_sa_t, "private_ike_sa_t"); if (this == NULL) { return NULL; } - - + + /* Public functions */ this->public.process_message = (status_t(*)(ike_sa_t*, message_t*)) process_message; - this->public.process_configuration = (status_t(*)(ike_sa_t*, configuration_t*)) process_configuration; - this->public.get_id = (ike_sa_id_t*(*)(ike_sa_t*)) get_id; + this->public.process_configuration = (status_t(*)(ike_sa_t*, configuration_t*)) process_configuration; + this->public.get_id = (ike_sa_id_t*(*)(ike_sa_t*)) get_id; this->public.destroy = (status_t(*)(ike_sa_t*))destroy; - - + + /* initialize private fields */ if (ike_sa_id->clone(ike_sa_id,&(this->ike_sa_id)) != SUCCESS) { - pfree(this); + allocator_free(this); return NULL; } - + this->child_sas = linked_list_create(); if (this->child_sas == NULL) { this->ike_sa_id->destroy(this->ike_sa_id); - pfree(this); + allocator_free(this); return NULL; } - + /* at creation time, IKE_SA isn't in a specific state */ this->current_state = NO_STATE; - - return (&this->public); + + return (&this->public); } diff --git a/Source/charon/ike_sa_id.c b/Source/charon/ike_sa_id.c index 56cacced0..8ff1fd75a 100644 --- a/Source/charon/ike_sa_id.c +++ b/Source/charon/ike_sa_id.c @@ -1,8 +1,8 @@ /** * @file ike_sa_id.c - * + * * @brief Class for identification of an IKE_SA - * + * */ /* @@ -19,7 +19,7 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ - + #include <stdlib.h> #include <string.h> #include <freeswan.h> @@ -33,31 +33,31 @@ * Private data of an ike_sa_id object */ typedef struct private_ike_sa_id_s private_ike_sa_id_t; - -struct private_ike_sa_id_s { + +struct private_ike_sa_id_s { /** * Public part of a ike_sa_id object */ ike_sa_id_t public; - - + + /* Private values */ - + /** * SPI of Initiator */ spi_t initiator_spi; - + /** * SPI of Responder */ spi_t responder_spi; - + /** * Role for specific IKE_SA */ ike_sa_role_t role; - + }; @@ -101,7 +101,7 @@ static status_t equals (private_ike_sa_id_t *this,private_ike_sa_id_t *other, bo { return FAILED; } - if ( (this->role == other->role) && + if ( (this->role == other->role) && (this->initiator_spi.high == other->initiator_spi.high) && (this->initiator_spi.low == other->initiator_spi.low) && (this->responder_spi.high == other->responder_spi.high) && @@ -115,7 +115,7 @@ static status_t equals (private_ike_sa_id_t *this,private_ike_sa_id_t *other, bo /* private_ike_sa_id's are not equal */ *are_equal = FALSE; } - + return SUCCESS; } @@ -128,11 +128,11 @@ status_t replace_values (private_ike_sa_id_t *this, private_ike_sa_id_t *other) { return FAILED; } - + this->initiator_spi = other->initiator_spi; this->responder_spi = other->responder_spi; this->role = other->role; - + return SUCCESS; } @@ -144,7 +144,7 @@ static status_t get_values(private_ike_sa_id_t *this, spi_t *initiator, spi_t *r memcpy(initiator, &(this->initiator_spi), sizeof(initiator)); memcpy(responder, &(this->responder_spi), sizeof(responder)); *role = this->role; - + return SUCCESS; } @@ -158,9 +158,9 @@ static status_t clone (private_ike_sa_id_t *this, ike_sa_id_t **clone_of_this) { return FAILED; } - + *clone_of_this = ike_sa_id_create(this->initiator_spi, this->responder_spi, this->role); - + return (*clone_of_this == NULL) ? FAILED : SUCCESS; } @@ -173,7 +173,7 @@ static status_t destroy (private_ike_sa_id_t *this) { return FAILED; } - pfree(this); + allocator_free(this); return SUCCESS; } @@ -182,12 +182,12 @@ static status_t destroy (private_ike_sa_id_t *this) */ ike_sa_id_t * ike_sa_id_create(spi_t initiator_spi, spi_t responder_spi, ike_sa_role_t role) { - private_ike_sa_id_t *this = alloc_thing(private_ike_sa_id_t, "private_ike_sa_id_t"); + private_ike_sa_id_t *this = allocator_alloc_thing(private_ike_sa_id_t, "private_ike_sa_id_t"); if (this == NULL) { return NULL; } - + /* Public functions */ this->public.set_responder_spi = (status_t(*)(ike_sa_id_t*,spi_t)) set_responder_spi; this->public.set_initiator_spi = (status_t(*)(ike_sa_id_t*,spi_t)) set_initiator_spi; @@ -203,6 +203,6 @@ ike_sa_id_t * ike_sa_id_create(spi_t initiator_spi, spi_t responder_spi, ike_sa_ this->initiator_spi = initiator_spi; this->responder_spi = responder_spi; this->role = role; - - return (&this->public); + + return (&this->public); } diff --git a/Source/charon/ike_sa_manager.c b/Source/charon/ike_sa_manager.c index 3fbe501c2..19a7139b3 100644 --- a/Source/charon/ike_sa_manager.c +++ b/Source/charon/ike_sa_manager.c @@ -1,8 +1,8 @@ /** * @file ike_sa_manager.c - * + * * @brief Central point for managing IKE-SAs (creation, locking, deleting...) - * + * */ /* @@ -51,7 +51,7 @@ struct ike_sa_entry_s { /** * identifiaction of ike_sa (SPIs) */ - ike_sa_id_t *ike_sa_id; + ike_sa_id_t *ike_sa_id; /** * the contained ike_sa */ @@ -62,29 +62,29 @@ static status_t ike_sa_entry_destroy(ike_sa_entry_t *this) { this->ike_sa->destroy(this->ike_sa); this->ike_sa_id->destroy(this->ike_sa_id); - pfree(this); + allocator_free(this); return SUCCESS; - + } /** * @brief creates a new entry for the ike_sa list - * + * * This constructor additionaly creates a new and empty SA - * + * * @param ike_sa_id the associated ike_sa_id_t, NOT cloned * @return created entry, with ike_sa and ike_sa_id */ ike_sa_entry_t *ike_sa_entry_create(ike_sa_id_t *ike_sa_id) { - ike_sa_entry_t *this = alloc_thing(ike_sa_entry_t, "ike_sa_entry_t"); - + ike_sa_entry_t *this = allocator_alloc_thing(ike_sa_entry_t, "ike_sa_entry_t"); + this->destroy = ike_sa_entry_destroy; this->waiting_threads = 0; pthread_cond_init(&(this->condvar), NULL); /* we set checkout flag when we really give it out */ - this->checked_out = FALSE; + this->checked_out = FALSE; this->ike_sa_id = ike_sa_id; this->ike_sa = ike_sa_create(ike_sa_id); return this; @@ -99,12 +99,12 @@ struct private_ike_sa_manager_s { * Public members */ ike_sa_manager_t public; - + /** * @brief get next spi - * + * * we give out SPIs incremental - * + * * @param this the ike_sa_manager * @param spi[out] spi will be written here * @return SUCCESS or, @@ -113,10 +113,10 @@ struct private_ike_sa_manager_s { status_t (*get_next_spi) (private_ike_sa_manager_t *this, spi_t *spi); /** * @brief find the ike_sa_entry in the list by SPIs - * + * * This function simply iterates over the linked list. A hash-table * would be more efficient when storing a lot of IKE_SAs... - * + * * @param this the ike_sa_manager containing the list * @param ike_sa_id id of the ike_sa, containing SPIs * @param entry[out] pointer to set to the found entry @@ -126,10 +126,10 @@ struct private_ike_sa_manager_s { status_t (*get_entry_by_id) (private_ike_sa_manager_t *this, ike_sa_id_t *ike_sa_id, ike_sa_entry_t **entry); /** * @brief find the ike_sa_entry in the list by pointer to SA. - * + * * This function simply iterates over the linked list. A hash-table * would be more efficient when storing a lot of IKE_SAs... - * + * * @param this the ike_sa_manager containing the list * @param ike_sad pointer to the ike_sa * @param entry[out] pointer to set to the found entry @@ -138,14 +138,14 @@ struct private_ike_sa_manager_s { */ status_t (*get_entry_by_sa) (private_ike_sa_manager_t *this, ike_sa_t *ike_sa, ike_sa_entry_t **entry); /** - * @brief + * @brief */ status_t (*delete_entry) (private_ike_sa_manager_t *this, ike_sa_entry_t *entry); /** * lock for exclusivly accessing the manager */ pthread_mutex_t mutex; - + /** * Linked list with entries for the ike_sa */ @@ -153,7 +153,7 @@ struct private_ike_sa_manager_s { /** * Next SPI, needed for incremental creation of SPIs */ - spi_t next_spi; + spi_t next_spi; }; @@ -194,7 +194,7 @@ static status_t get_ike_sa_entry_by_sa(private_ike_sa_manager_t *this, ike_sa_t { ike_sa_entry_t *current; iterator->current(iterator, (void**)¤t); - if (current->ike_sa == ike_sa) + if (current->ike_sa == ike_sa) { *entry = current; iterator->destroy(iterator); @@ -234,24 +234,24 @@ static status_t checkout_ike_sa(private_ike_sa_manager_t *this, ike_sa_id_t *ike bool responder_spi_set; bool initiator_spi_set; status_t retval; - + pthread_mutex_lock(&(this->mutex)); - + responder_spi_set = ike_sa_id->responder_spi_is_set(ike_sa_id); initiator_spi_set = ike_sa_id->initiator_spi_is_set(ike_sa_id); - - if (initiator_spi_set && responder_spi_set) + + if (initiator_spi_set && responder_spi_set) { /* we SHOULD have an IKE_SA for these SPIs in the list, * if not, we cant handle the request... */ ike_sa_entry_t *entry; /* look for the entry */ - if (this->get_entry_by_id(this, ike_sa_id, &entry) == SUCCESS) + if (this->get_entry_by_id(this, ike_sa_id, &entry) == SUCCESS) { /* is this IKE_SA already checked out ?? */ - while (entry->checked_out) - { + while (entry->checked_out) + { /* so wait until we can get it for us. * we register us as waiting. */ @@ -263,13 +263,13 @@ static status_t checkout_ike_sa(private_ike_sa_manager_t *this, ike_sa_id_t *ike entry->checked_out = TRUE; *ike_sa = entry->ike_sa; /* DON'T use return, we must unlock the mutex! */ - retval = SUCCESS; - + retval = SUCCESS; + } else { /* looks like there is no such IKE_SA, better luck next time... */ - + /* DON'T use return, we must unlock the mutex! */ retval = NOT_FOUND; } @@ -286,22 +286,22 @@ static status_t checkout_ike_sa(private_ike_sa_manager_t *this, ike_sa_id_t *ike spi_t responder_spi; ike_sa_id_t *new_ike_sa_id; ike_sa_entry_t *new_ike_sa_entry; - + /* set SPIs, we are the responder */ ike_sa_id->clone(ike_sa_id, &new_ike_sa_id); this->get_next_spi(this, &responder_spi); new_ike_sa_id->set_responder_spi(new_ike_sa_id, responder_spi); /* we also set arguments spi, so its still valid */ ike_sa_id->set_responder_spi(ike_sa_id, responder_spi); - + /* create entry */ new_ike_sa_entry = ike_sa_entry_create(new_ike_sa_id); this->list->insert_last(this->list, new_ike_sa_entry); - + /* check ike_sa out */ new_ike_sa_entry->checked_out = TRUE; *ike_sa = new_ike_sa_entry->ike_sa; - + /* DON'T use return, we must unlock the mutex! */ retval = SUCCESS; } @@ -309,34 +309,34 @@ static status_t checkout_ike_sa(private_ike_sa_manager_t *this, ike_sa_id_t *ike { /* creation of an IKE_SA from local site, * we are the initiator! - */ + */ spi_t initiator_spi, responder_spi; ike_sa_id_t *new_ike_sa_id; ike_sa_entry_t *new_ike_sa_entry; - + /* set SPIs */ memset(&responder_spi, 0, sizeof(spi_t)); this->get_next_spi(this, &initiator_spi); - + /* we also set arguments SPI, so its still valid */ ike_sa_id->set_initiator_spi(ike_sa_id, initiator_spi); - + /* create entry */ new_ike_sa_id = ike_sa_id_create(initiator_spi, responder_spi, INITIATOR); new_ike_sa_entry = ike_sa_entry_create(new_ike_sa_id); this->list->insert_last(this->list, new_ike_sa_entry); - + /* check ike_sa out */ new_ike_sa_entry->checked_out = TRUE; *ike_sa = new_ike_sa_entry->ike_sa; - + /* DON'T use return, we must unlock the mutex! */ retval = SUCCESS; } - else + else { /* responder set, initiator not: here is something seriously wrong! */ - + /* DON'T use return, we must unlock the mutex! */ retval = INVALID_ARG; } @@ -347,31 +347,31 @@ static status_t checkout_ike_sa(private_ike_sa_manager_t *this, ike_sa_id_t *ike } static status_t checkin_ike_sa(private_ike_sa_manager_t *this, ike_sa_t *ike_sa) -{ - /* to check the SA back in, we look for the pointer of the ike_sa +{ + /* to check the SA back in, we look for the pointer of the ike_sa * in all entries. * We can't search by SPI's since the MAY have changed (e.g. on reception * of a IKE_SA_INIT response). Updating of the SPI MAY be necessary... */ status_t retval; ike_sa_entry_t *entry; - + pthread_mutex_lock(&(this->mutex)); /* look for the entry */ - if (this->get_entry_by_sa(this, ike_sa, &entry) == SUCCESS) + if (this->get_entry_by_sa(this, ike_sa, &entry) == SUCCESS) { /* ike_sa_id must be updated */ entry->ike_sa_id->replace_values(entry->ike_sa_id, ike_sa->get_id(ike_sa)); /* signal waiting threads */ entry->checked_out = FALSE; pthread_cond_signal(&(entry->condvar)); - retval = SUCCESS; + retval = SUCCESS; } else { - /* this SA is no more, this REALLY should not happen */ + /* this SA is no more, this REALLY should not happen */ retval = NOT_FOUND; } pthread_mutex_unlock(&(this->mutex)); @@ -381,20 +381,20 @@ static status_t checkin_ike_sa(private_ike_sa_manager_t *this, ike_sa_t *ike_sa) static status_t delete_ike_sa_by_sa(private_ike_sa_manager_t *this, ike_sa_t *ike_sa) -{ - /* deletion is a bit complex, we must garant that no thread is waiting for - * this SA. +{ + /* deletion is a bit complex, we must garant that no thread is waiting for + * this SA. * We take this SA from the list, and start signaling while threads - * are in the condvar. + * are in the condvar. */ linked_list_t *list = this->list; linked_list_iterator_t *iterator; ike_sa_entry_t *entry; bool found = FALSE; status_t retval; - + pthread_mutex_lock(&(this->mutex)); - + /* remove SA from list */ list->create_iterator(list, &iterator, TRUE); while (iterator->has_next(iterator)) @@ -408,8 +408,8 @@ static status_t delete_ike_sa_by_sa(private_ike_sa_manager_t *this, ike_sa_t *ik } } iterator->destroy(iterator); - - if (found) + + if (found) { /* wait until all workers have done their work */ while (entry->waiting_threads) @@ -417,9 +417,9 @@ static status_t delete_ike_sa_by_sa(private_ike_sa_manager_t *this, ike_sa_t *ik /* wake up all */ pthread_cond_signal(&(entry->condvar)); /* and the nice thing, they will wake us again when their work is done */ - pthread_cond_wait(&(entry->condvar), &(this->mutex)); + pthread_cond_wait(&(entry->condvar), &(this->mutex)); } - + /* ok, we are alone now, no threads waiting in the entry's condvar */ entry->destroy(entry); retval = SUCCESS; @@ -428,26 +428,26 @@ static status_t delete_ike_sa_by_sa(private_ike_sa_manager_t *this, ike_sa_t *ik { retval = NOT_FOUND; } - + pthread_mutex_unlock(&(this->mutex)); return retval; } static status_t delete_ike_sa_by_id(private_ike_sa_manager_t *this, ike_sa_id_t *ike_sa_id) -{ - /* deletion is a bit complex, we must garant that no thread is waiting for - * this SA. +{ + /* deletion is a bit complex, we must garant that no thread is waiting for + * this SA. * We take this SA from the list, and start signaling while threads - * are in the condvar. + * are in the condvar. */ linked_list_t *list = this->list; linked_list_iterator_t *iterator; ike_sa_entry_t *entry; bool found = FALSE; status_t retval; - + pthread_mutex_lock(&(this->mutex)); - + /* remove SA from list */ list->create_iterator(list, &iterator, TRUE); while (iterator->has_next(iterator)) @@ -463,8 +463,8 @@ static status_t delete_ike_sa_by_id(private_ike_sa_manager_t *this, ike_sa_id_t } } iterator->destroy(iterator); - - if (found) + + if (found) { /* wait until all workers have done their work */ while (entry->waiting_threads) @@ -472,9 +472,9 @@ static status_t delete_ike_sa_by_id(private_ike_sa_manager_t *this, ike_sa_id_t /* wake up all */ pthread_cond_signal(&(entry->condvar)); /* and the nice thing, they will wake us again when their work is done */ - pthread_cond_wait(&(entry->condvar), &(this->mutex)); + pthread_cond_wait(&(entry->condvar), &(this->mutex)); } - + /* ok, we are alone now, no threads waiting in the entry's condvar */ entry->destroy(entry); retval = SUCCESS; @@ -483,7 +483,7 @@ static status_t delete_ike_sa_by_id(private_ike_sa_manager_t *this, ike_sa_id_t { retval = NOT_FOUND; } - + pthread_mutex_unlock(&(this->mutex)); return retval; } @@ -501,10 +501,10 @@ static status_t destroy(private_ike_sa_manager_t *this) entry->destroy(entry); } iterator->destroy(iterator); - + list->destroy(list); - - pfree(this); + + allocator_free(this); return SUCCESS; } @@ -512,31 +512,31 @@ static status_t destroy(private_ike_sa_manager_t *this) ike_sa_manager_t *ike_sa_manager_create() { - private_ike_sa_manager_t *this = alloc_thing(private_ike_sa_manager_t, "private_ike_sa_manager_t"); - + private_ike_sa_manager_t *this = allocator_alloc_thing(private_ike_sa_manager_t, "private_ike_sa_manager_t"); + /* assign public functions */ this->public.destroy = (status_t(*)(ike_sa_manager_t*))destroy; this->public.checkout_ike_sa = (status_t(*)(ike_sa_manager_t*, ike_sa_id_t *sa_id, ike_sa_t **sa))checkout_ike_sa; this->public.checkin_ike_sa = (status_t(*)(ike_sa_manager_t*, ike_sa_t *sa))checkin_ike_sa; this->public.delete_ike_sa_by_id = (status_t(*)(ike_sa_manager_t*, ike_sa_id_t *sa_id))delete_ike_sa_by_id; this->public.delete_ike_sa_by_sa = (status_t(*)(ike_sa_manager_t*, ike_sa_t *ike_sa))delete_ike_sa_by_sa; - + /* initialize private data */ this->get_next_spi = get_next_spi; this->get_entry_by_sa = get_ike_sa_entry_by_sa; this->get_entry_by_id = get_ike_sa_entry_by_id; - + this->list = linked_list_create(); if (this->list == NULL) { - pfree(this); - return NULL; + allocator_free(this); + return NULL; } - + pthread_mutex_init(&(this->mutex), NULL); - + this->next_spi.low = 1; this->next_spi.high = 0; - + return (ike_sa_manager_t*)this; } diff --git a/Source/charon/job.c b/Source/charon/job.c index b929223aa..4db37bec6 100644 --- a/Source/charon/job.c +++ b/Source/charon/job.c @@ -1,8 +1,8 @@ /** * @file job.c - * + * * @brief Job-Class representing a job e.g. in job_queue - * + * */ /* @@ -24,15 +24,15 @@ #include <freeswan.h> #include <pluto/constants.h> #include <pluto/defs.h> - + #include "job.h" - + /** * @brief implements function destroy of job_t */ static status_t job_destroy(job_t *job) { - pfree(job); + allocator_free(job); return SUCCESS; } @@ -41,12 +41,12 @@ static status_t job_destroy(job_t *job) */ job_t *job_create(job_type_t type, void *assigned_data) { - job_t *this = alloc_thing(job_t, "job_t"); + job_t *this = allocator_alloc_thing(job_t, "job_t"); this->destroy = job_destroy; this->type = type; this->assigned_data = assigned_data; - + return this; } diff --git a/Source/charon/job_queue.c b/Source/charon/job_queue.c index ed370ed2c..3c4d74ac2 100644 --- a/Source/charon/job_queue.c +++ b/Source/charon/job_queue.c @@ -1,8 +1,8 @@ /** * @file job_queue.c - * + * * @brief Job-Queue based on linked_list_t - * + * */ /* @@ -25,20 +25,20 @@ #include <freeswan.h> #include <pluto/constants.h> #include <pluto/defs.h> - + #include "job_queue.h" #include "linked_list.h" /** * @brief Private Variables and Functions of job_queue class - * + * */ typedef struct private_job_queue_s private_job_queue_t; - + struct private_job_queue_s { job_queue_t public; - + /** * The jobs are stored in a linked list */ @@ -47,12 +47,12 @@ struct private_job_queue_s { * access to linked_list is locked through this mutex */ pthread_mutex_t mutex; - + /** * If the queue is empty a thread has to wait * This condvar is used to wake up such a thread */ - pthread_cond_t condvar; + pthread_cond_t condvar; }; @@ -82,9 +82,9 @@ static status_t get(private_job_queue_t *this, job_t **job) /* add mutex unlock handler for cancellation, enable cancellation */ pthread_cleanup_push((void(*)(void*))pthread_mutex_unlock, (void*)&(this->mutex)); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate); - + pthread_cond_wait( &(this->condvar), &(this->mutex)); - + /* reset cancellation, remove mutex-unlock handler (without executing) */ pthread_setcancelstate(oldstate, NULL); pthread_cleanup_pop(0); @@ -109,14 +109,14 @@ static status_t add(private_job_queue_t *this, job_t *job) /** * @brief implements function destroy of job_queue_t - * + * */ static status_t job_queue_destroy (private_job_queue_t *this) -{ +{ int count; this->list->get_count(this->list,&count); - - while (count > 0) + + while (count > 0) { job_t *job; if (this->list->remove_first(this->list,(void *) &job) != SUCCESS) @@ -128,17 +128,17 @@ static status_t job_queue_destroy (private_job_queue_t *this) this->list->get_count(this->list,&count); } this->list->destroy(this->list); - + pthread_mutex_destroy(&(this->mutex)); - + pthread_cond_destroy(&(this->condvar)); - - pfree(this); + + allocator_free(this); return SUCCESS; } /* - * + * * Documented in header */ job_queue_t *job_queue_create() @@ -148,22 +148,22 @@ job_queue_t *job_queue_create() { return NULL; } - - private_job_queue_t *this = alloc_thing(private_job_queue_t, "private_job_queue_t"); + + private_job_queue_t *this = allocator_alloc_thing(private_job_queue_t, "private_job_queue_t"); if (this == NULL) { linked_list->destroy(linked_list); return NULL; } - + this->public.get_count = (status_t(*)(job_queue_t*, int*))get_count; this->public.get = (status_t(*)(job_queue_t*, job_t**))get; this->public.add = (status_t(*)(job_queue_t*, job_t*))add; this->public.destroy = (status_t(*)(job_queue_t*))job_queue_destroy; - + this->list = linked_list; pthread_mutex_init(&(this->mutex), NULL); pthread_cond_init(&(this->condvar), NULL); - + return (&this->public); } diff --git a/Source/charon/linked_list.c b/Source/charon/linked_list.c index 37af54b62..908178213 100644 --- a/Source/charon/linked_list.c +++ b/Source/charon/linked_list.c @@ -1,8 +1,8 @@ /** * @file linked_list.c - * + * * @brief Generic Double Linked List - * + * */ /* @@ -26,14 +26,14 @@ #include <pluto/defs.h> #include "linked_list.h" - + typedef struct linked_list_element_s linked_list_element_t; /** * @brief Element of the linked_list. - * + * * This element holds a pointer to the value of the list item itself. */ struct linked_list_element_s{ @@ -41,17 +41,17 @@ struct linked_list_element_s{ * value of a list item */ void *value; - + /** * @brief Destroys a linked_list_element object - * + * * @param linked_list_element_t calling object * @returns SUCCESS if succeeded, FAILED otherwise */ status_t (*destroy) (linked_list_element_t *this); - + /** - * previous list element + * previous list element * NULL if first element in list */ linked_list_element_t *previous; @@ -71,7 +71,7 @@ static status_t linked_list_element_destroy(linked_list_element_t *this) { return FAILED; } - pfree(this); + allocator_free(this); return SUCCESS; } @@ -79,33 +79,33 @@ static status_t linked_list_element_destroy(linked_list_element_t *this) * @brief Creates an empty linked list object * * @param[in] value value of item to be set - * + * * @warning only the pointer to the value is stored - * + * * @return linked_list_element object */ linked_list_element_t *linked_list_element_create(void *value) { - linked_list_element_t *this = alloc_thing(linked_list_element_t, "linked_list_element_t"); - + linked_list_element_t *this = allocator_alloc_thing(linked_list_element_t, "linked_list_element_t"); + if (this == NULL) { return NULL; } - + this->destroy = linked_list_element_destroy; - + this->previous=NULL; this->next=NULL; this->value = value; - + return (this); } /** * Private variables and functions of linked list - * + * */ typedef struct private_linked_list_s private_linked_list_t; @@ -114,12 +114,12 @@ struct private_linked_list_s{ * Public part of linked list */ linked_list_t public; - + /** * number of items in the list */ int count; - + /** * First element in list * NULL if no elements in list @@ -135,7 +135,7 @@ struct private_linked_list_s{ /** * Private variables and functions of linked list iterator - * + * */ typedef struct private_linked_list_iterator_s private_linked_list_iterator_t; @@ -144,12 +144,12 @@ struct private_linked_list_iterator_s{ * Public part of linked list iterator */ linked_list_iterator_t public; - + /** * associated linked list */ private_linked_list_t * list; - + /** * current element of the iterator */ @@ -173,7 +173,7 @@ bool iterator_has_next(private_linked_list_iterator_t *this) if (this->current == NULL) { this->current = (this->forward) ? this->list->first : this->list->last; - return TRUE; + return TRUE; } if (this->forward) { @@ -182,15 +182,15 @@ bool iterator_has_next(private_linked_list_iterator_t *this) return FALSE; } this->current = this->current->next; - return TRUE; + return TRUE; } - /* backward */ + /* backward */ if (this->current->previous == NULL) { return FALSE; } this->current = this->current->previous; - return TRUE; + return TRUE; } /** @@ -232,7 +232,7 @@ static status_t iterator_destroy(private_linked_list_iterator_t *this) { return FAILED; } - pfree(this); + allocator_free(this); return SUCCESS; } @@ -252,48 +252,48 @@ static status_t get_count(private_linked_list_t *this, int *count) static status_t create_iterator (private_linked_list_t *linked_list, linked_list_iterator_t **iterator,bool forward) { - private_linked_list_iterator_t *this = alloc_thing(private_linked_list_iterator_t, "private_linked_list_iterator_t"); - + private_linked_list_iterator_t *this = allocator_alloc_thing(private_linked_list_iterator_t, "private_linked_list_iterator_t"); + if (this == NULL) { return FAILED; } - + this->public.has_next = (bool (*) (linked_list_iterator_t *this)) iterator_has_next; this->public.current = (status_t (*) (linked_list_iterator_t *this, void **value)) iterator_current; this->public.reset = (status_t (*) (linked_list_iterator_t *this)) iterator_reset; this->public.destroy = (status_t (*) (linked_list_iterator_t *this)) iterator_destroy; - + this->forward = forward; this->current = NULL; this->list = linked_list; *iterator = &(this->public); - - return (SUCCESS); + + return (SUCCESS); } - + /** * @brief implements function insert_first of linked_list_t */ static status_t insert_first(private_linked_list_t *this, void *item) { linked_list_element_t *element; - + if (this == NULL) { return FAILED; } - + element =(linked_list_element_t *) linked_list_element_create(item); - + if (element == NULL) { return FAILED; } - + if (this->count == 0) { /* first entry in list */ @@ -316,7 +316,7 @@ static status_t insert_first(private_linked_list_t *this, void *item) old_first_element->previous = element; this->first = element; } - + this->count++; return SUCCESS; @@ -326,7 +326,7 @@ static status_t insert_first(private_linked_list_t *this, void *item) * @brief implements function remove_first of linked_list_t */ static status_t remove_first(private_linked_list_t *this, void **item) -{ +{ if (this == NULL) { return FAILED; @@ -336,14 +336,14 @@ static status_t remove_first(private_linked_list_t *this, void **item) { return FAILED; } - + if (this->first == NULL) { return FAILED; } - + linked_list_element_t *element = this->first; - + if (element->next != NULL) { element->next->previous = NULL; @@ -353,7 +353,7 @@ static status_t remove_first(private_linked_list_t *this, void **item) *item = element->value; this->count--; - + return (element->destroy(element)); } @@ -361,7 +361,7 @@ static status_t remove_first(private_linked_list_t *this, void **item) * @brief implements function get_first of linked_list_t */ static status_t get_first(private_linked_list_t *this, void **item) -{ +{ if (this == NULL) { return FAILED; @@ -371,12 +371,12 @@ static status_t get_first(private_linked_list_t *this, void **item) { return FAILED; } - + if (this->first == NULL) { return FAILED; } - + *item = this->first->value; return SUCCESS; @@ -393,12 +393,12 @@ static status_t insert_last(private_linked_list_t *this, void *item) } linked_list_element_t *element = (linked_list_element_t *) linked_list_element_create(item); - + if (element == NULL) { return FAILED; } - + if (this->count == 0) { /* first entry in list */ @@ -420,9 +420,9 @@ static status_t insert_last(private_linked_list_t *this, void *item) old_last_element->next = element; this->last = element; } - + this->count++; - + return SUCCESS; } @@ -430,7 +430,7 @@ static status_t insert_last(private_linked_list_t *this, void *item) * @brief implements function remove_last of linked_list_t */ static status_t remove_last(private_linked_list_t *this, void **item) -{ +{ if (this == NULL) { return FAILED; @@ -440,14 +440,14 @@ static status_t remove_last(private_linked_list_t *this, void **item) { return FAILED; } - + if (this->last == NULL) { return FAILED; } - + linked_list_element_t *element = this->last; - + if (element->previous != NULL) { element->previous->next = NULL; @@ -457,7 +457,7 @@ static status_t remove_last(private_linked_list_t *this, void **item) *item = element->value; this->count--; - + return (element->destroy(element)); } @@ -470,17 +470,17 @@ static status_t get_last(private_linked_list_t *this, void **item) { return FAILED; } - + if (this->count == 0) { return FAILED; } - + if (this->last == NULL) { return FAILED; } - + *item = this->last->value; return SUCCESS; @@ -495,7 +495,7 @@ static status_t insert_before(private_linked_list_t *this, private_linked_list_i { return FAILED; } - + if (this->count == 0) { return FAILED; @@ -507,12 +507,12 @@ static status_t insert_before(private_linked_list_t *this, private_linked_list_i } linked_list_element_t *element =(linked_list_element_t *) linked_list_element_create(item); - + if (element == NULL) { return FAILED; } - + if (iterator->current->previous == NULL) { if (this->first != iterator->current) @@ -520,7 +520,7 @@ static status_t insert_before(private_linked_list_t *this, private_linked_list_i element->destroy(element); return FAILED; } - + iterator->current->previous = element; element->next = iterator->current; this->first = element; @@ -532,7 +532,7 @@ static status_t insert_before(private_linked_list_t *this, private_linked_list_i iterator->current->previous = element; element->next = iterator->current; } - + this->count++; return SUCCESS; @@ -547,7 +547,7 @@ static status_t insert_after(private_linked_list_t *this, private_linked_list_it { return FAILED; } - + if (this->count == 0) { return FAILED; @@ -559,12 +559,12 @@ static status_t insert_after(private_linked_list_t *this, private_linked_list_it } linked_list_element_t *element =(linked_list_element_t *) linked_list_element_create(item); - + if (element == NULL) { return FAILED; } - + if (iterator->current->next == NULL) { if (this->last != iterator->current) @@ -572,7 +572,7 @@ static status_t insert_after(private_linked_list_t *this, private_linked_list_it element->destroy(element); return FAILED; } - + iterator->current->next = element; element->previous = iterator->current; this->last = element; @@ -584,7 +584,7 @@ static status_t insert_after(private_linked_list_t *this, private_linked_list_it iterator->current->next = element; element->previous = iterator->current; } - + this->count++; return SUCCESS; } @@ -595,12 +595,12 @@ static status_t insert_after(private_linked_list_t *this, private_linked_list_it static status_t linked_list_remove(private_linked_list_t *this, private_linked_list_iterator_t * iterator) { linked_list_element_t *new_current; - + if ((this == NULL) || (iterator == NULL) || (iterator->current == NULL)) { return FAILED; } - + if (this->count == 0) { return FAILED; @@ -618,13 +618,13 @@ static status_t linked_list_remove(private_linked_list_t *this, private_linked_l { new_current = NULL; } - + /* now delete the entry :-) */ if (iterator->current->previous == NULL) - { + { if (iterator->current->next == NULL) { - this->first = NULL; + this->first = NULL; this->last = NULL; } else @@ -643,7 +643,7 @@ static status_t linked_list_remove(private_linked_list_t *this, private_linked_l iterator->current->previous->next = iterator->current->next; iterator->current->next->previous = iterator->current->previous; } - + this->count--; iterator->current->destroy(iterator->current); /* set the new iterator position */ @@ -660,7 +660,7 @@ static status_t linked_list_destroy(private_linked_list_t *this) { return FAILED; } - + /* Remove all list items before destroying list */ while (this->count > 0) { @@ -669,21 +669,21 @@ static status_t linked_list_destroy(private_linked_list_t *this) * if list is not empty when deleting */ if (this->public.remove_first(&(this->public),&value) != SUCCESS) { - pfree(this); + allocator_free(this); return FAILED; } } - pfree(this); + allocator_free(this); return SUCCESS; } - + /* * Described in header */ -linked_list_t *linked_list_create() +linked_list_t *linked_list_create() { - private_linked_list_t *this = alloc_thing(private_linked_list_t, "private_linked_list_t"); - + private_linked_list_t *this = allocator_alloc_thing(private_linked_list_t, "private_linked_list_t"); + this->public.get_count = (status_t (*) (linked_list_t *linked_list, int *count)) get_count; this->public.create_iterator = (status_t (*) (linked_list_t *linked_list, linked_list_iterator_t **iterator,bool forward)) create_iterator; this->public.get_first = (status_t (*) (linked_list_t *linked_list, void **item)) get_first; @@ -696,10 +696,10 @@ linked_list_t *linked_list_create() this->public.remove_first = (status_t (*) (linked_list_t *linked_list, void **item)) remove_first; this->public.remove_last = (status_t (*) (linked_list_t *linked_list, void **item)) remove_last; this->public.destroy = (status_t (*) (linked_list_t *linked_list)) linked_list_destroy; - + this->count = 0; this->first = NULL; this->last = NULL; - + return (&(this->public)); } diff --git a/Source/charon/message.c b/Source/charon/message.c index a65a3d8a9..90640042a 100644 --- a/Source/charon/message.c +++ b/Source/charon/message.c @@ -1,8 +1,8 @@ /** * @file message.c - * + * * @brief Class message_t. Object of this type represents an IKEv2-Message - * + * */ /* @@ -32,15 +32,15 @@ * Private data of an message_t object */ typedef struct private_message_s private_message_t; - -struct private_message_s { + +struct private_message_s { /** * Public part of a message_t object */ message_t public; - - + + /* Private values */ }; @@ -54,7 +54,7 @@ static status_t destroy (private_message_t *this) { return FAILED; } - pfree(this); + allocator_free(this); return SUCCESS; } @@ -63,15 +63,15 @@ static status_t destroy (private_message_t *this) */ message_t * message_create() { - private_message_t *this = alloc_thing(private_message_t, "private_message_t"); + private_message_t *this = allocator_alloc_thing(private_message_t, "private_message_t"); if (this == NULL) { return NULL; } - + /* Public functions */ this->public.destroy = (status_t(*)(message_t*))destroy; - - return (&this->public); + + return (&this->public); } diff --git a/Source/charon/packet.c b/Source/charon/packet.c index 2d82bcedd..22977bd48 100644 --- a/Source/charon/packet.c +++ b/Source/charon/packet.c @@ -1,8 +1,8 @@ /** * @file packet.h - * + * * @brief UDP-Packet, contains data, sender and receiver - * + * */ /* @@ -27,9 +27,9 @@ static status_t destroy(packet_t *this) { if (this->data.ptr != NULL) { - pfree(this->data.ptr); + allocator_free(this->data.ptr); } - pfree(this); + allocator_free(this); return SUCCESS; } @@ -68,12 +68,12 @@ status_t set_source(packet_t *this, char *address, u_int16_t port) packet_t *packet_create(int family) { - packet_t *this = alloc_thing(packet_t, "packet_t"); - + packet_t *this = allocator_alloc_thing(packet_t, "packet_t"); + this->destroy = destroy; this->set_destination = set_destination; this->set_source = set_source; - + this->family = family; switch (family) { @@ -81,11 +81,11 @@ packet_t *packet_create(int family) this->sockaddr_len = sizeof(struct sockaddr_in); break; default: /* not supported */ - pfree(this); - return NULL; + allocator_free(this); + return NULL; } this->data.len = 0; - this->data.ptr = NULL; + this->data.ptr = NULL; return this; } diff --git a/Source/charon/receiver.c b/Source/charon/receiver.c index a4df3e71a..85576075a 100644 --- a/Source/charon/receiver.c +++ b/Source/charon/receiver.c @@ -1,8 +1,8 @@ /** * @file receiver.c - * + * * @brief Implements the Receiver Thread encapsulated in the receiver_t-object - * + * */ /* @@ -19,7 +19,7 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ - + #include <stdlib.h> #include <pthread.h> #include <freeswan.h> @@ -37,13 +37,13 @@ * Private data of a receiver object */ typedef struct private_receiver_s private_receiver_t; - -struct private_receiver_s { + +struct private_receiver_s { /** * Public part of a receiver object */ receiver_t public; - + /** * Assigned thread to the receiver_t-object */ @@ -53,7 +53,7 @@ struct private_receiver_s { /** * Thread function started at creation of the receiver object - * + * * @param this assigned receiver object * @return SUCCESS if thread_function ended successfully, FAILED otherwise */ @@ -63,7 +63,7 @@ static void receiver_thread_function(private_receiver_t * this) pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); packet_t * current_packet; job_t * current_job; - + while (1) { while (global_socket->receive(global_socket,¤t_packet) == SUCCESS) @@ -78,15 +78,15 @@ static void receiver_thread_function(private_receiver_t * this) if ( global_job_queue->add(global_job_queue,current_job) != SUCCESS) { /* Packet could not be sent */ - /* TODO LOG it */ + /* TODO LOG it */ } } /* NOT GOOD !!!!!! */ - /* TODO LOG it */ + /* TODO LOG it */ } - - + + } /** @@ -95,25 +95,25 @@ static void receiver_thread_function(private_receiver_t * this) static status_t destroy(private_receiver_t *this) { pthread_cancel(this->assigned_thread); - + pthread_join(this->assigned_thread, NULL); - pfree(this); + allocator_free(this); return SUCCESS; } receiver_t * receiver_create() { - private_receiver_t *this = alloc_thing(private_receiver_t,"private_receiver_t"); - + private_receiver_t *this = allocator_alloc_thing(private_receiver_t,"private_receiver_t"); + this->public.destroy = (status_t(*)(receiver_t*)) destroy; if (pthread_create(&(this->assigned_thread), NULL, (void*(*)(void*))receiver_thread_function, this) != 0) { /* thread could not be created */ - pfree(this); + allocator_free(this); return NULL; } - + return &(this->public); } diff --git a/Source/charon/scheduler.c b/Source/charon/scheduler.c index b028a97a7..05d999b87 100644 --- a/Source/charon/scheduler.c +++ b/Source/charon/scheduler.c @@ -1,8 +1,8 @@ /** * @file scheduler.c - * + * * @brief implements the scheduler, looks for jobs in event-queue - * + * */ /* @@ -19,28 +19,28 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ - + #include <stdlib.h> #include <pthread.h> #include <freeswan.h> #include <pluto/constants.h> #include <pluto/defs.h> - + #include "scheduler.h" #include "job_queue.h" #include "globals.h" - + /** * Private data of a scheduler object */ typedef struct private_scheduler_s private_scheduler_t; - -struct private_scheduler_s { + +struct private_scheduler_s { /** * Public part of a scheduler object */ scheduler_t public; - + /** * Assigned thread to the scheduler_t-object */ @@ -50,7 +50,7 @@ struct private_scheduler_s { /** * Thread function started at creation of the scheduler object - * + * * @param this assigned scheduler object * @return SUCCESS if thread_function ended successfully, FAILED otherwise */ @@ -59,7 +59,7 @@ static void scheduler_thread_function(private_scheduler_t * this) /* cancellation disabled by default */ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); job_t *current_job; - + for (;;) { /* get a job, this block until one is available */ @@ -75,25 +75,25 @@ static void scheduler_thread_function(private_scheduler_t * this) static status_t destroy(private_scheduler_t *this) { pthread_cancel(this->assigned_thread); - + pthread_join(this->assigned_thread, NULL); - pfree(this); + allocator_free(this); return SUCCESS; } scheduler_t * scheduler_create() { - private_scheduler_t *this = alloc_thing(private_scheduler_t,"private_scheduler_t"); - + private_scheduler_t *this = allocator_alloc_thing(private_scheduler_t,"private_scheduler_t"); + this->public.destroy = (status_t(*)(scheduler_t*)) destroy; if (pthread_create(&(this->assigned_thread), NULL, (void*(*)(void*))scheduler_thread_function, this) != 0) { /* thread could not be created */ - pfree(this); + allocator_free(this); return NULL; } - + return &(this->public); } diff --git a/Source/charon/send_queue.c b/Source/charon/send_queue.c index 3fe04d523..673ba38f1 100644 --- a/Source/charon/send_queue.c +++ b/Source/charon/send_queue.c @@ -1,8 +1,8 @@ /** * @file send_queue.c - * + * * @brief Send-Queue based on linked_list_t - * + * */ /* @@ -19,43 +19,43 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ - + #include <pthread.h> - + #include "send_queue.h" #include "linked_list.h" - + /** * @brief Private Variables and Functions of send_queue class - * + * */ typedef struct private_send_queue_s private_send_queue_t; - + struct private_send_queue_s { /** * Public part of the send_queue_t object */ send_queue_t public; - + /** * The packets are stored in a linked list */ linked_list_t *list; - + /** * access to linked_list is locked through this mutex */ pthread_mutex_t mutex; - + /** * If the queue is empty a thread has to wait * This condvar is used to wake up such a thread */ - pthread_cond_t condvar; + pthread_cond_t condvar; }; - - + + /** * @brief implements function get_count of send_queue_t */ @@ -66,7 +66,7 @@ static status_t get_count(private_send_queue_t *this, int *count) pthread_mutex_unlock(&(this->mutex)); return SUCCESS; } - + /** * @brief implements function get of send_queue_t */ @@ -83,7 +83,7 @@ static status_t get(private_send_queue_t *this, packet_t **packet) pthread_cleanup_push((void(*)(void*))pthread_mutex_unlock, (void*)&(this->mutex)); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate); pthread_cond_wait( &(this->condvar), &(this->mutex)); - + /* reset cancellation, remove mutex-unlock handler (without executing) */ pthread_setcancelstate(oldstate, NULL); pthread_cleanup_pop(0); @@ -93,7 +93,7 @@ static status_t get(private_send_queue_t *this, packet_t **packet) pthread_mutex_unlock(&(this->mutex)); return SUCCESS; } - + /** * @brief implements function add of send_queue_t */ @@ -105,18 +105,18 @@ static status_t add(private_send_queue_t *this, packet_t *packet) pthread_mutex_unlock(&(this->mutex)); return SUCCESS; } - + /** * @brief implements function destroy of send_queue_t - * + * */ static status_t destroy (private_send_queue_t *this) { int count; this->list->get_count(this->list,&count); - + /* destroy all packets in list before destroying list */ - while (count > 0) + while (count > 0) { packet_t *packet; if (this->list->remove_first(this->list,(void *) &packet) != SUCCESS) @@ -128,17 +128,17 @@ static status_t destroy (private_send_queue_t *this) this->list->get_count(this->list,&count); } this->list->destroy(this->list); - + pthread_mutex_destroy(&(this->mutex)); - + pthread_cond_destroy(&(this->condvar)); - - pfree(this); + + allocator_free(this); return SUCCESS; } - + /* - * + * * Documented in header */ send_queue_t *send_queue_create() @@ -148,22 +148,22 @@ send_queue_t *send_queue_create() { return NULL; } - - private_send_queue_t *this = alloc_thing(private_send_queue_t, "private_send_queue_t"); + + private_send_queue_t *this = allocator_alloc_thing(private_send_queue_t, "private_send_queue_t"); if (this == NULL) { linked_list->destroy(linked_list); return NULL; } - + this->public.get_count = (status_t(*)(send_queue_t*, int*)) get_count; this->public.get = (status_t(*)(send_queue_t*, packet_t**)) get; this->public.add = (status_t(*)(send_queue_t*, packet_t*)) add; this->public.destroy = (status_t(*)(send_queue_t*)) destroy; - + this->list = linked_list; pthread_mutex_init(&(this->mutex), NULL); pthread_cond_init(&(this->condvar), NULL); - + return (&this->public); } diff --git a/Source/charon/sender.c b/Source/charon/sender.c index f803633d9..5d821b2f5 100644 --- a/Source/charon/sender.c +++ b/Source/charon/sender.c @@ -1,8 +1,8 @@ /** * @file sender.c - * + * * @brief Implements the Sender Thread encapsulated in the sender_t-object - * + * */ /* @@ -19,30 +19,30 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ - + #include <stdlib.h> #include <pthread.h> #include <freeswan.h> #include <pluto/constants.h> #include <pluto/defs.h> - + #include "sender.h" #include "socket.h" #include "packet.h" #include "send_queue.h" #include "globals.h" - + /** * Private data of a sender object */ typedef struct private_sender_s private_sender_t; - -struct private_sender_s { + +struct private_sender_s { /** * Public part of a sender object */ sender_t public; - + /** * Assigned thread to the sender_t-object */ @@ -52,7 +52,7 @@ struct private_sender_s { /** * Thread function started at creation of the sender object - * + * * @param this assigned sender object * @return SUCCESS if thread_function ended successfully, FAILED otherwise */ @@ -61,28 +61,28 @@ static void sender_thread_function(private_sender_t * this) /* cancellation disabled by default */ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); packet_t * current_packet; - + while (1) { while (global_send_queue->get(global_send_queue,¤t_packet) == SUCCESS) { if ( global_socket->send(global_socket,current_packet) == SUCCESS) { - current_packet->destroy(current_packet); + current_packet->destroy(current_packet); } else { /* Packet could not be sent */ - /* TODO LOG it */ + /* TODO LOG it */ } } /* NOT GOOD !!!!!! */ - /* TODO LOG it */ + /* TODO LOG it */ } - - + + } /** @@ -91,25 +91,25 @@ static void sender_thread_function(private_sender_t * this) static status_t destroy(private_sender_t *this) { pthread_cancel(this->assigned_thread); - + pthread_join(this->assigned_thread, NULL); - pfree(this); + allocator_free(this); return SUCCESS; } sender_t * sender_create() { - private_sender_t *this = alloc_thing(private_sender_t,"private_sender_t"); - + private_sender_t *this = allocator_alloc_thing(private_sender_t,"private_sender_t"); + this->public.destroy = (status_t(*)(sender_t*)) destroy; if (pthread_create(&(this->assigned_thread), NULL, (void*(*)(void*))sender_thread_function, this) != 0) { /* thread could not be created */ - pfree(this); + allocator_free(this); return NULL; } - + return &(this->public); } diff --git a/Source/charon/socket.c b/Source/charon/socket.c index f89822511..782a349b2 100644 --- a/Source/charon/socket.c +++ b/Source/charon/socket.c @@ -1,10 +1,10 @@ /** * @file socket.c - * + * * @brief management of sockets - * + * * receiver reads from here, sender writes to here - * + * */ /* @@ -42,7 +42,7 @@ struct private_socket_s{ * public functions */ socket_t public; - + /** * currently we only have one socket, maybe more in the future ? */ @@ -57,98 +57,98 @@ status_t receiver(private_socket_t *this, packet_t **packet) char buffer[MAX_PACKET]; int oldstate; packet_t *pkt = packet_create(AF_INET); - - + + /* add packet destroy handler for cancellation, enable cancellation */ pthread_cleanup_push((void(*)(void*))pkt->destroy, (void*)pkt); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate); - + /* do the read */ - pkt->data.len = recvfrom(this->socket_fd, buffer, MAX_PACKET, 0, + pkt->data.len = recvfrom(this->socket_fd, buffer, MAX_PACKET, 0, &(pkt->source), &(pkt->sockaddr_len)); - + /* reset cancellation, remove packet destroy handler (without executing) */ pthread_setcancelstate(oldstate, NULL); pthread_cleanup_pop(0); - - - /* TODO: get senders destination address, using + + + /* TODO: get senders destination address, using * IP_PKTINFO and recvmsg */ - + if (pkt->data.len < 0) { pkt->destroy(pkt); /* TODO: log detailed error */ return FAILED; } - + /* fill in packet */ - pkt->data.ptr = alloc_bytes(pkt->data.len, "data in packet_t"); + pkt->data.ptr = allocator_alloc(pkt->data.len, "data in packet_t"); memcpy(pkt->data.ptr, buffer, pkt->data.len); - + /* return packet */ *packet = pkt; - - return SUCCESS; + + return SUCCESS; } - + /** * implementation of socket_t.send */ -status_t sender(private_socket_t *this, packet_t *packet) +status_t sender(private_socket_t *this, packet_t *packet) { ssize_t bytes_sent; - + /* send data */ - bytes_sent = sendto(this->socket_fd, packet->data.ptr, packet->data.len, + bytes_sent = sendto(this->socket_fd, packet->data.ptr, packet->data.len, 0, &(packet->destination), packet->sockaddr_len); - - if (bytes_sent != packet->data.len) + + if (bytes_sent != packet->data.len) { /* TODO: log detailed error */ return FAILED; } return SUCCESS; } - + /** * implementation of socket_t.destroy */ status_t destroy(private_socket_t *this) { close(this->socket_fd); - pfree(this); - + allocator_free(this); + return SUCCESS; } socket_t *socket_create(u_int16_t port) { - private_socket_t *this = alloc_thing(private_socket_t, "private_socket_t"); + private_socket_t *this = allocator_alloc_thing(private_socket_t, "private_socket_t"); struct sockaddr_in addr; - + /* public functions */ this->public.send = (status_t(*)(socket_t*, packet_t*))sender; this->public.receive = (status_t(*)(socket_t*, packet_t**))receiver; this->public.destroy = (status_t(*)(socket_t*))destroy; - + /* create default ipv4 socket */ this->socket_fd = socket(PF_INET, SOCK_DGRAM, 0); if (this->socket_fd < 0) { - pfree(this); + allocator_free(this); /* TODO: log detailed error */ return NULL; - } - + } + /* bind socket to all interfaces */ addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(port); if (bind(this->socket_fd,(struct sockaddr*)&addr, sizeof(addr)) < 0) { - pfree(this); + allocator_free(this); /* TODO: log detailed error */ return NULL; } - + return (socket_t*)this; } diff --git a/Source/charon/tester.c b/Source/charon/tester.c index 20b07ec65..4fe6410f6 100644 --- a/Source/charon/tester.c +++ b/Source/charon/tester.c @@ -1,8 +1,8 @@ /** * @file tester.c - * + * * @brief Test module for automatic testing - * + * */ /* @@ -28,7 +28,7 @@ #include <string.h> #include <pthread.h> #include <sys/time.h> - + #include "tester.h" #include "linked_list.h" #include "thread_pool.h" @@ -36,18 +36,18 @@ /** * @brief Private Variables and Functions of tester class - * + * */ typedef struct private_tester_s private_tester_t; - + struct private_tester_s { tester_t public; - + /* Private functions */ void (*run_test) (tester_t *tester, void (*test_function) (tester_t * tester), char * test_name); - - + + /* Private values */ FILE* output; int tests_count; @@ -56,11 +56,11 @@ struct private_tester_s { bool display_succeeded_asserts; pthread_mutex_t mutex; }; - + /* * Implementation of function perform_tests */ -static status_t perform_tests(tester_t *tester,test_t **tests) +static status_t perform_tests(tester_t *tester,test_t **tests) { private_tester_t *this =(private_tester_t*) tester; int current_test = 0; @@ -71,7 +71,7 @@ static status_t perform_tests(tester_t *tester,test_t **tests) this->run_test(tester,tests[current_test]->test_function,tests[current_test]->test_name); current_test++; } - + fprintf(this->output,"End testing. %d of %d tests succeeded\n",this->tests_count - this->failed_tests_count,this->tests_count); return SUCCESS; @@ -80,7 +80,7 @@ static status_t perform_tests(tester_t *tester,test_t **tests) /* * Implementation of function perform_test */ -static status_t perform_test(tester_t *tester, test_t *test) +static status_t perform_test(tester_t *tester, test_t *test) { test_t *tests[] = {test, NULL}; return (perform_tests(tester,tests)); @@ -88,20 +88,20 @@ static status_t perform_test(tester_t *tester, test_t *test) /** * Returns the difference of to timeval structs in microseconds - * + * * @param end_time end time * @param start_time start time - * + * * @warning this function is also defined in the event queue * in later improvements, this function can be added to a general * class type! - * + * * @return difference in microseconds */ static long time_difference(struct timeval *end_time, struct timeval *start_time) { long seconds, microseconds; - + seconds = (end_time->tv_sec - start_time->tv_sec); microseconds = (end_time->tv_usec - start_time->tv_usec); return ((seconds * 1000000) + microseconds); @@ -109,7 +109,7 @@ static long time_difference(struct timeval *end_time, struct timeval *start_time /** - * Implementation of function run_test + * Implementation of function run_test */ static void run_test(tester_t *tester, void (*test_function) (tester_t * tester), char * test_name) { @@ -123,7 +123,7 @@ static void run_test(tester_t *tester, void (*test_function) (tester_t * tester) test_function(tester); gettimeofday(&end_time,NULL); timediff = time_difference(&end_time, &start_time); - + fprintf(this->output,"End Test '%s' in %ld microseconds\n", test_name,timediff); if (this->failed_asserts_count > 0) { @@ -132,27 +132,27 @@ static void run_test(tester_t *tester, void (*test_function) (tester_t * tester) } /** - * Implementation of function assert_true + * Implementation of function assert_true */ static void assert_true(tester_t *tester, bool to_be_true,char * assert_name) { private_tester_t *this = (private_tester_t *) tester; - + if (assert_name == NULL) { assert_name = "unknown"; } - + pthread_mutex_lock(&(this->mutex)); if (!to_be_true) { this->failed_asserts_count++; - fprintf(this->output," Assert '%s' failed!\n", assert_name); + fprintf(this->output," Assert '%s' failed!\n", assert_name); }else { if (this->display_succeeded_asserts) { - fprintf(this->output," Assert '%s' succeeded\n", assert_name); + fprintf(this->output," Assert '%s' succeeded\n", assert_name); } } pthread_mutex_unlock(&(this->mutex)); @@ -169,31 +169,31 @@ static void assert_false(tester_t *tester, bool to_be_false,char * assert_name) /** * Implements the destroy function */ -static status_t destroy(tester_t *tester) +static status_t destroy(tester_t *tester) { private_tester_t *this = (private_tester_t*) tester; pthread_mutex_destroy(&(this->mutex)); - pfree(this); + allocator_free(this); return SUCCESS; } -tester_t *tester_create(FILE *output, bool display_succeeded_asserts) +tester_t *tester_create(FILE *output, bool display_succeeded_asserts) { - private_tester_t *this = alloc_thing(private_tester_t, "private_tester_t"); - + private_tester_t *this = allocator_alloc_thing(private_tester_t, "private_tester_t"); + this->public.destroy = destroy; this->public.perform_tests = perform_tests; this->public.perform_test = perform_test; this->public.assert_true = assert_true; this->public.assert_false = assert_false; - - + + this->run_test = run_test; - this->display_succeeded_asserts = display_succeeded_asserts; + this->display_succeeded_asserts = display_succeeded_asserts; this->failed_tests_count = 0; this->tests_count = 0; this->output = output; pthread_mutex_init(&(this->mutex),NULL); - + return &(this->public); } diff --git a/Source/charon/tests/event_queue_test.c b/Source/charon/tests/event_queue_test.c index b06b16b00..de39653aa 100644 --- a/Source/charon/tests/event_queue_test.c +++ b/Source/charon/tests/event_queue_test.c @@ -1,8 +1,8 @@ /** * @file event_queue_test.h - * + * * @brief Tests to test the Event-Queue type event_queue_t - * + * */ /* @@ -19,10 +19,10 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ - + #include <stdlib.h> #include <pthread.h> - + #include "event_queue_test.h" #include "../tester.h" #include "../event_queue.h" @@ -43,23 +43,23 @@ /** * @brief Informations for the involved test-thread used in this test - * + * */ typedef struct event_queue_test_s event_queue_test_t; struct event_queue_test_s{ tester_t *tester; event_queue_t *event_queue; - + /** * number of different event times to be inserted in the event-queue by each thread */ - int insert_times_count; - + int insert_times_count; + /** * number of event to insert at one time */ - int entries_per_time; + int entries_per_time; }; @@ -70,21 +70,21 @@ static void event_queue_insert_thread(event_queue_test_t * testinfos) timeval_t time; job_t * job; int i,j; - + gettimeofday(¤t_time,NULL); for (i = 0; i < testinfos->insert_times_count;i++) { for (j = 0; j < testinfos->entries_per_time;j++) { - int *value = alloc_thing(int, "value"); + int *value = allocator_alloc_thing(int, "value"); *value = i; job = job_create(INCOMING_PACKET,value); time.tv_usec = 0; time.tv_sec = current_time.tv_sec + i; - + tester->assert_true(tester,(testinfos->event_queue->add_absolute(testinfos->event_queue,job,time) == SUCCESS), "add call check"); } - } + } } @@ -96,22 +96,22 @@ void test_event_queue(tester_t *tester) int i,j, number_of_total_events; int count; timeval_t current_time, start_time; - + testinfos.tester = tester; testinfos.event_queue = event_queue; testinfos.insert_times_count = EVENT_QUEUE_TIMES; testinfos.entries_per_time = EVENT_QUEUE_ENTRY_PER_TIME; - + number_of_total_events = EVENT_QUEUE_ENTRY_PER_TIME * EVENT_QUEUE_TIMES * EVENT_QUEUE_INSERT_THREADS; - + gettimeofday(&start_time,NULL); - + for (i = 0; i < EVENT_QUEUE_INSERT_THREADS; i++) { pthread_create( &threads[i], NULL,(void*(*)(void*)) &event_queue_insert_thread, (void*) &testinfos); } - - + + /* wait for all threads */ for (i = 0; i < EVENT_QUEUE_INSERT_THREADS; i++) @@ -120,22 +120,22 @@ void test_event_queue(tester_t *tester) } tester->assert_true(tester,(event_queue->get_count(event_queue,&count) == SUCCESS), "get_count call check"); - tester->assert_true(tester,(count == number_of_total_events), "event count check"); - + tester->assert_true(tester,(count == number_of_total_events), "event count check"); + for (i = 0; i < EVENT_QUEUE_TIMES;i++) { for (j = 0; j < (EVENT_QUEUE_ENTRY_PER_TIME * EVENT_QUEUE_INSERT_THREADS);j++) { job_t *job; - tester->assert_true(tester,(event_queue->get(event_queue,&job) == SUCCESS), "get call check"); + tester->assert_true(tester,(event_queue->get(event_queue,&job) == SUCCESS), "get call check"); gettimeofday(¤t_time,NULL); - tester->assert_true(tester,((current_time.tv_sec - start_time.tv_sec) == i), "value of entry check"); - - pfree(job->assigned_data); - tester->assert_true(tester,(job->destroy(job) == SUCCESS), "job destroy call check"); + tester->assert_true(tester,((current_time.tv_sec - start_time.tv_sec) == i), "value of entry check"); + + allocator_free(job->assigned_data); + tester->assert_true(tester,(job->destroy(job) == SUCCESS), "job destroy call check"); } } - + tester->assert_true(tester,(event_queue->destroy(event_queue) == SUCCESS), "destroy call check"); } diff --git a/Source/charon/tests/job_queue_test.c b/Source/charon/tests/job_queue_test.c index b38113319..5e1fa8121 100644 --- a/Source/charon/tests/job_queue_test.c +++ b/Source/charon/tests/job_queue_test.c @@ -1,8 +1,8 @@ /** * @file job_queue_test.c - * + * * @brief Tests to test the Job-Queue type job_queue_t - * + * */ /* @@ -20,50 +20,50 @@ * for more details. */ - + #include <stdlib.h> #include <freeswan.h> #include <pluto/constants.h> #include <pluto/defs.h> #include <pthread.h> #include <unistd.h> - + #include "job_queue_test.h" #include "../tester.h" #include "../job_queue.h" - - + + typedef struct job_queue_test_s job_queue_test_t; /** * @brief Informations for the involved test-thread used in this test - * + * */ struct job_queue_test_s{ tester_t *tester; job_queue_t *job_queue; /** - * number of items to be inserted in the job-queue + * number of items to be inserted in the job-queue */ - int insert_item_count; + int insert_item_count; /** - * number of items to be removed by each - * receiver thread from the job-queue + * number of items to be removed by each + * receiver thread from the job-queue */ - int remove_item_count; + int remove_item_count; }; /** * @brief sender thread used in the the job_queue test function - * + * * @param testinfo informations for the specific thread. */ static void test_job_queue_sender(job_queue_test_t * testinfo) { - int i; + int i; for (i = 0; i < testinfo->insert_item_count; i++) { - int *value = alloc_thing(int,"int in test_job_queue_sender"); + int *value = allocator_alloc_thing(int,"int in test_job_queue_sender"); *value = i; job_t *job = job_create(INCOMING_PACKET,value); testinfo->job_queue->add(testinfo->job_queue,job); @@ -72,7 +72,7 @@ static void test_job_queue_sender(job_queue_test_t * testinfo) /** * @brief receiver thread used in the the job_queue test function - * + * * @param testinfo informations for the specific thread. */ static void test_job_queue_receiver(job_queue_test_t * testinfo) @@ -82,8 +82,8 @@ static void test_job_queue_receiver(job_queue_test_t * testinfo) { job_t *job; testinfo->tester->assert_true(testinfo->tester,(testinfo->job_queue->get(testinfo->job_queue,&job) == SUCCESS), "get job call check"); - testinfo->tester->assert_true(testinfo->tester,(job->type == INCOMING_PACKET), "job type check"); - pfree(job->assigned_data); + testinfo->tester->assert_true(testinfo->tester,(job->type == INCOMING_PACKET), "job type check"); + allocator_free(job->assigned_data); testinfo->tester->assert_true(testinfo->tester,(job->destroy(job) == SUCCESS), "job destroy call check"); } } @@ -105,11 +105,11 @@ void test_job_queue(tester_t *tester) test_infos.job_queue = job_queue; test_infos.insert_item_count = 10000; test_infos.remove_item_count = 50000; - - - desired_value = test_infos.insert_item_count * sender_count - + + + desired_value = test_infos.insert_item_count * sender_count - test_infos.remove_item_count * receiver_count; - + for (i = 0; i < receiver_count;i++) { pthread_create( &receiver_threads[i], NULL,(void*(*)(void*)) &test_job_queue_receiver, (void*) &test_infos); @@ -118,8 +118,8 @@ void test_job_queue(tester_t *tester) { pthread_create( &sender_threads[i], NULL,(void*(*)(void*)) &test_job_queue_sender, (void*) &test_infos); } - - + + /* Wait for all threads */ for (i = 0; i < sender_count;i++) { @@ -129,10 +129,10 @@ void test_job_queue(tester_t *tester) { pthread_join(receiver_threads[i], NULL); } - + /* the job-queue has to have disered_value count entries! */ tester->assert_true(tester,(job_queue->get_count(job_queue,&value) == SUCCESS), "get count call check"); - tester->assert_true(tester,(value == desired_value), "get count value check"); - + tester->assert_true(tester,(value == desired_value), "get count value check"); + tester->assert_true(tester,(job_queue->destroy(job_queue) == SUCCESS), "destroy call check"); } diff --git a/Source/charon/tests/receiver_test.c b/Source/charon/tests/receiver_test.c index 58074bc2a..59ab540b5 100644 --- a/Source/charon/tests/receiver_test.c +++ b/Source/charon/tests/receiver_test.c @@ -1,8 +1,8 @@ /** * @file receiver_test.c - * + * * @brief Tests to test the Receiver (type receiver_t) - * + * */ /* @@ -19,7 +19,7 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ - + #include <string.h> #include <unistd.h> @@ -45,7 +45,7 @@ * Destination IP Address */ #define DESTINATION_IP "127.0.0.1" - + void test_receiver(tester_t *tester) { int i; @@ -54,21 +54,21 @@ void test_receiver(tester_t *tester) job_t *job; packet_t *received_packet; receiver = receiver_create(); - + for (i = 0; i < NUMBER_OF_PACKETS_TO_SEND; i++) { packet = packet_create(AF_INET); packet->set_destination(packet,DESTINATION_IP,PORT_TO_SEND); - packet->data.ptr = alloc_thing(int, "packet data"); + packet->data.ptr = allocator_alloc_thing(int, "packet data"); packet->data.len = ( sizeof(int)); *((int *) (packet->data.ptr)) = i; global_socket->send(global_socket,packet); packet->destroy(packet); } - + for (i = 0; i < NUMBER_OF_PACKETS_TO_SEND; i++) { - global_job_queue->get(global_job_queue,&job); + global_job_queue->get(global_job_queue,&job); tester->assert_true(tester, (job->type == INCOMING_PACKET), "job type check"); received_packet = (packet_t *) job->assigned_data; tester->assert_true(tester, (received_packet->data.len == (sizeof(int))), "received data length check"); @@ -76,7 +76,7 @@ void test_receiver(tester_t *tester) received_packet->destroy(received_packet); job->destroy(job); - } - + } + tester->assert_true(tester, (receiver->destroy(receiver) == SUCCESS), "destroy call check"); } diff --git a/Source/charon/tests/sender_test.c b/Source/charon/tests/sender_test.c index f0e3820f0..3f8cfa8f4 100644 --- a/Source/charon/tests/sender_test.c +++ b/Source/charon/tests/sender_test.c @@ -1,8 +1,8 @@ /** * @file sender_test.h - * + * * @brief Tests to test the Sender (type sender_t) - * + * */ /* @@ -44,7 +44,7 @@ * Destination IP Address */ #define DESTINATION_IP "127.0.0.1" - + void test_sender(tester_t *tester) { int i; @@ -52,24 +52,24 @@ void test_sender(tester_t *tester) packet_t *packet; packet_t *received_packet; sender = sender_create(); - + for (i = 0; i < NUMBER_OF_PACKETS_TO_SEND; i++) { packet = packet_create(AF_INET); packet->set_destination(packet,DESTINATION_IP,PORT_TO_SEND); - packet->data.ptr = alloc_thing(int, "packet data"); + packet->data.ptr = allocator_alloc_thing(int, "packet data"); packet->data.len = ( sizeof(int)); *((int *) (packet->data.ptr)) = i; global_send_queue->add(global_send_queue,packet); } - + for (i = 0; i < NUMBER_OF_PACKETS_TO_SEND; i++) { global_socket->receive(global_socket,&received_packet); tester->assert_true(tester, (received_packet->data.len == (sizeof(int))), "received data length check"); tester->assert_true(tester, (i == *((int *)(received_packet->data.ptr))), "received data value check"); received_packet->destroy(received_packet); - } - + } + tester->assert_true(tester, (sender->destroy(sender) == SUCCESS), "destroy call check"); } diff --git a/Source/charon/tests/socket_test.c b/Source/charon/tests/socket_test.c index a8ced751d..ea61e5f3c 100644 --- a/Source/charon/tests/socket_test.c +++ b/Source/charon/tests/socket_test.c @@ -1,8 +1,8 @@ /** * @file thread_pool_test.c - * + * * @brief Tests to test the Socket (type socket_t) - * + * */ /* @@ -31,31 +31,31 @@ * Description in header file */ void test_socket(tester_t *tester) -{ +{ int packet_count = 5; int current; socket_t *skt = socket_create(4500); packet_t *pkt = packet_create(AF_INET); char *test_string = "Testing functionality of socket_t"; - - - pkt->data.ptr = alloc_bytes(strlen(test_string) + 1,"test_string"); + + + pkt->data.ptr = allocator_alloc(strlen(test_string) + 1,"test_string"); memcpy(pkt->data.ptr,test_string,strlen(test_string) + 1); pkt->data.len = strlen(test_string) + 1; - + /* send to previously bound socket */ pkt->set_destination(pkt, "127.0.0.1", 4500); /* send packet_count packets */ for (current = 0; current < packet_count; current++) { - if (skt->send(skt, pkt) == FAILED) + if (skt->send(skt, pkt) == FAILED) { tester->assert_true(tester, 0, "packet send"); } } pkt->destroy(pkt); - + /* receive packet_count packets */ for (current = 0; current < packet_count; current++) { @@ -63,7 +63,7 @@ void test_socket(tester_t *tester) tester->assert_false(tester, strcmp(test_string, pkt->data.ptr), "packet exchange"); pkt->destroy(pkt); } - + tester->assert_true(tester, (skt->destroy(skt) == SUCCESS), "socket destroy call check"); } |