diff options
author | Martin Willi <martin@strongswan.org> | 2005-11-21 13:33:53 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2005-11-21 13:33:53 +0000 |
commit | 75ab06685ffdf823027c6249f4622a91252ca549 (patch) | |
tree | 4aee802a324c3c6a35442bc4d08c63fe1089cc3d /Source/charon/generator.c | |
parent | 1603a8b2334d83c7579678c51e0918fd44277667 (diff) | |
download | strongswan-75ab06685ffdf823027c6249f4622a91252ca549.tar.bz2 strongswan-75ab06685ffdf823027c6249f4622a91252ca549.tar.xz |
- cleaned up logging
Diffstat (limited to 'Source/charon/generator.c')
-rw-r--r-- | Source/charon/generator.c | 96 |
1 files changed, 59 insertions, 37 deletions
diff --git a/Source/charon/generator.c b/Source/charon/generator.c index ec781b8b2..8f30b16ab 100644 --- a/Source/charon/generator.c +++ b/Source/charon/generator.c @@ -328,7 +328,8 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i /* U_INT Types of multiple then 8 bits must be aligned */ if (((number_of_bits % 8) == 0) && (this->current_bit != 0)) { - this->logger->log(this->logger,CONTROL|MORE,"U_INT Type %s is not 8 Bit aligned", mapping_find(encoding_type_m,int_type)); + this->logger->log(this->logger, ERROR, "U_INT Type %s is not 8 Bit aligned", + mapping_find(encoding_type_m,int_type)); /* current bit has to be zero for values multiple of 8 bits */ return FAILED; } @@ -352,6 +353,7 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i u_int8_t low_val = *(this->out_position) & 0x0F; /* highval is set, low_val is not changed */ *(this->out_position) = high_val | low_val; + this->logger->log(this->logger, RAW|MOST, " => 0x%x", *(this->out_position)); /* write position is not changed, just bit position is moved */ this->current_bit = 4; } @@ -362,13 +364,14 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i /* lowval of current byte in buffer has to be set to the new value*/ u_int low_val = *((u_int8_t *)(this->data_struct + offset)) & 0x0F; *(this->out_position) = high_val | low_val; + this->logger->log(this->logger, RAW|MOST, " => 0x%x", *(this->out_position)); this->out_position++; this->current_bit = 0; } else { - this->logger->log(this->logger,CONTROL|MORE,"U_INT_4 Type is not 4 Bit aligned"); + this->logger->log(this->logger, ERROR, "U_INT_4 Type is not 4 Bit aligned"); /* 4 Bit integers must have a 4 bit alignment */ return FAILED; }; @@ -378,6 +381,7 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i { /* 8 bit values are written as they are */ *this->out_position = *((u_int8_t *)(this->data_struct + offset)); + this->logger->log(this->logger, RAW|MOST, " => 0x%x", *(this->out_position)); this->out_position++; break; @@ -387,7 +391,7 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i /* attribute type must not change first bit uf current byte ! */ if (this->current_bit != 1) { - this->logger->log(this->logger,CONTROL|MORE,"ATTRIBUTE FORMAT flag is not set"); + this->logger->log(this->logger, ERROR, "ATTRIBUTE FORMAT flag is not set"); /* first bit has to be set! */ return FAILED; } @@ -399,6 +403,7 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i int16_val = int16_val & 0xFF7F; int16_val = int16_val | attribute_format_flag; + this->logger->log(this->logger, RAW|MOST, " => 0x%x", int16_val); /* write bytes to buffer (set bit is overwritten)*/ this->write_bytes_to_buffer(this,&int16_val,sizeof(u_int16_t)); this->current_bit = 0; @@ -408,12 +413,14 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i case U_INT_16: { u_int16_t int16_val = htons(*((u_int16_t*)(this->data_struct + offset))); + this->logger->log_bytes(this->logger, RAW|MOST, " =>", (void*)&int16_val, sizeof(int16_val)); this->write_bytes_to_buffer(this,&int16_val,sizeof(u_int16_t)); break; } case U_INT_32: { u_int32_t int32_val = htonl(*((u_int32_t*)(this->data_struct + offset))); + this->logger->log_bytes(this->logger, RAW|MOST, " =>", (void*)&int32_val, sizeof(int32_val)); this->write_bytes_to_buffer(this,&int32_val,sizeof(u_int32_t)); break; } @@ -422,6 +429,8 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i /* 64 bit integers are written as two 32 bit integers */ u_int32_t int32_val_low = htonl(*((u_int32_t*)(this->data_struct + offset))); u_int32_t int32_val_high = htonl(*((u_int32_t*)(this->data_struct + offset) + 1)); + this->logger->log_bytes(this->logger, RAW|MOST, " => (low)", (void*)&int32_val_low, sizeof(int32_val_low)); + this->logger->log_bytes(this->logger, RAW|MOST, " => (high)", (void*)&int32_val_high, sizeof(int32_val_high)); /* TODO add support for big endian machines */ this->write_bytes_to_buffer(this,&int32_val_high,sizeof(u_int32_t)); this->write_bytes_to_buffer(this,&int32_val_low,sizeof(u_int32_t)); @@ -429,7 +438,7 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i } default: - this->logger->log(this->logger,CONTROL|MORE,"U_INT Type %s is not supported", mapping_find(encoding_type_m,int_type)); + this->logger->log(this->logger, ERROR, "U_INT Type %s is not supported", mapping_find(encoding_type_m,int_type)); return FAILED; } return SUCCESS; @@ -439,14 +448,14 @@ static status_t generate_u_int_type (private_generator_t *this,encoding_type_t i * Implements private_generator_t's generate_reserved_field function. * See #private_generator_s.generate_reserved_field. */ -static status_t generate_reserved_field (private_generator_t *this,int bits) +static status_t generate_reserved_field(private_generator_t *this,int bits) { status_t status; /* only one bit or 8 bit fields are supported */ if ((bits != 1) && (bits != 8)) { - this->logger->log(this->logger,CONTROL|MORE,"Reserved field of %d bits cannot be generated",bits); + this->logger->log(this->logger, ERROR, "Reserved field of %d bits cannot be generated", bits); return FAILED; } /* make sure enough space is available in buffer */ @@ -480,7 +489,9 @@ static status_t generate_reserved_field (private_generator_t *this,int bits) /* one byte processing*/ if (this->current_bit > 0) { - this->logger->log(this->logger,CONTROL|MORE,"Reserved field cannot be written cause allignement of current bit is %d",this->current_bit); + this->logger->log(this->logger, ERROR, + "Reserved field cannot be written cause allignement of current bit is %d", + this->current_bit); return FAILED; } *(this->out_position) = 0x00; @@ -522,6 +533,9 @@ static status_t generate_flag (private_generator_t *this,u_int32_t offset) } *(this->out_position) = *(this->out_position) | flag; + + + this->logger->log(this->logger, RAW|MOST, " => 0x0%x", *(this->out_position)); this->current_bit++; if (this->current_bit >= 8) @@ -540,12 +554,15 @@ static status_t generate_from_chunk (private_generator_t *this,u_int32_t offset) { if (this->current_bit != 0) { - this->logger->log(this->logger,CONTROL|MORE,"Chunks can only be taken if bits are alligned in buffer"); + this->logger->log(this->logger, ERROR, "can not generate a chunk at Bitpos %d", this->current_bit); return FAILED; } + /* position in buffer */ chunk_t *attribute_value = (chunk_t *)(this->data_struct + offset); + this->logger->log_chunk(this->logger, RAW|MOST, " =>", attribute_value); + /* use write_bytes_to_buffer function to do the job */ return this->write_bytes_to_buffer(this,attribute_value->ptr,attribute_value->len); @@ -565,13 +582,14 @@ static status_t make_space_available (private_generator_t *this, size_t bits) size_t new_buffer_size = old_buffer_size + GENERATOR_DATA_BUFFER_INCREASE_VALUE; size_t out_position_offset = ((this->out_position) - (this->buffer)); - this->logger->log(this->logger,CONTROL|MORE,"Gen-Buffer is increased from %d to %d byte",old_buffer_size,new_buffer_size); + this->logger->log(this->logger, CONTROL|MOST, "increased gen buffer from %d to %d byte", + old_buffer_size, new_buffer_size); /* Reallocate space for new buffer */ new_buffer = allocator_realloc(this->buffer,new_buffer_size); if (new_buffer == NULL) { - this->logger->log(this->logger,CONTROL|MORE,"Fatal error: Reallocation of buffer failed!!!"); + this->logger->log(this->logger, ERROR, "reallocation of gen buffer failed!!!"); return OUT_OF_RES; } @@ -587,7 +605,7 @@ static status_t make_space_available (private_generator_t *this, size_t bits) * Implements private_generator_t's write_bytes_to_buffer function. * See #private_generator_s.write_bytes_to_buffer. */ -static status_t write_bytes_to_buffer (private_generator_t *this,void * bytes,size_t number_of_bytes) +static status_t write_bytes_to_buffer (private_generator_t *this,void * bytes, size_t number_of_bytes) { int i; status_t status; @@ -658,11 +676,14 @@ static status_t write_to_chunk (private_generator_t *this,chunk_t *data) if (data->ptr == NULL) { data->len = 0; - this->logger->log(this->logger,CONTROL|MORE,"OUT OF Ressources to wrote data to chunk!!!!!"); + this->logger->log(this->logger, ERROR, "not enougth ressources to allocate chunk"); return OUT_OF_RES; } memcpy(data->ptr,this->buffer,data_length); data->len = data_length; + + this->logger->log_chunk(this->logger, RAW, "generated data of this parser", data); + return SUCCESS; } @@ -678,13 +699,17 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) size_t rule_count; encoding_rule_t *rules; payload_type_t payload_type; + u_int8_t *payload_start; /* get payload type */ payload_type = payload->get_type(payload); /* spi size has to get reseted */ this->last_spi_size = 0; - this->logger->log(this->logger,CONTROL,"Start generating payload of type %s",mapping_find(payload_type_m,payload_type)); + payload_start = this->out_position; + + this->logger->log(this->logger, CONTROL, "generating payload of type %s", + mapping_find(payload_type_m,payload_type)); /* each payload has its own encoding rules */ payload->get_encoding_rules(payload,&rules,&rule_count); @@ -692,6 +717,8 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) for (i = 0; i < rule_count;i++) { status = SUCCESS; + this->logger->log(this->logger, CONTROL|MORE, " generating rule %d %s", + i, mapping_find(encoding_type_m,rules[i].type)); switch (rules[i].type) { /* all u int values and ATTRIBUTE_TYPE are generated in generate_u_int_type */ @@ -754,7 +781,7 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) status = this->generate_from_chunk(this,rules[i].offset); if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could no write key exchange data from chunk"); + this->logger->log(this->logger, ERROR, "could no write key exchange data from chunk"); return status; } @@ -766,7 +793,7 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) status = this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),payload_length_position_offset); if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could no write payload length into buffer"); + this->logger->log(this->logger, ERROR, "could not write payload length into buffer"); return status; } break; @@ -777,7 +804,7 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) status = this->generate_from_chunk(this,rules[i].offset); if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could no write notification data from chunk"); + this->logger->log(this->logger, ERROR, "Could not generate notification data from chunk"); return status; } @@ -790,7 +817,7 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) status = this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),payload_length_position_offset); if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could no write payload length into buffer"); + this->logger->log(this->logger, ERROR, "could not write payload length into buffer"); return status; } break; @@ -798,10 +825,11 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) case NONCE_DATA: { /* the Nonce Data value is generated from chunk */ - status = this->generate_from_chunk(this,rules[i].offset); + status = this->generate_from_chunk(this, rules[i].offset); + if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could no write nonce data from chunk"); + this->logger->log(this->logger, ERROR, "could not write nonce data from chunk"); return status; } @@ -813,7 +841,7 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) status = this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),payload_length_position_offset); if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could no write payload length into buffer"); + this->logger->log(this->logger, ERROR, "could not write payload length into buffer"); return status; } break; @@ -828,14 +856,12 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) /* proposals are stored in a linked list and so accessed */ linked_list_t *proposals = *((linked_list_t **)(this->data_struct + rules[i].offset)); - this->logger->log(this->logger,CONTROL|MORE,"Generate Proposals"); - linked_list_iterator_t *iterator; /* create forward iterator */ status = proposals->create_iterator(proposals,&iterator,TRUE); if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could not iterator of proposals"); + this->logger->log(this->logger, ERROR, "could not create iterator for proposals"); return status; } /* every proposal is processed (iterative call )*/ @@ -864,13 +890,12 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) length_of_sa_payload += (after_generate_position_offset - before_generate_position_offset); } iterator->destroy(iterator); - this->logger->log(this->logger,CONTROL|MORE,"Length of Payload is %d, offset is %d",length_of_sa_payload,payload_length_position_offset); int16_val = htons(length_of_sa_payload); status = this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),payload_length_position_offset); if (status != SUCCESS) { - this->logger->log(this->logger,CONTROL|MORE,"Could no write payload length into buffer"); + this->logger->log(this->logger, ERROR, "could not write payload length into buffer"); return status; } break; @@ -884,9 +909,7 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) u_int16_t int16_val; linked_list_t *transforms = *((linked_list_t **)(this->data_struct + rules[i].offset)); linked_list_iterator_t *iterator; - - this->logger->log(this->logger,CONTROL|MORE,"Generate Transforms"); - + /* create forward iterator */ status = transforms->create_iterator(transforms,&iterator,TRUE); if (status != SUCCESS) @@ -920,9 +943,7 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) } iterator->destroy(iterator); - - this->logger->log(this->logger,CONTROL|MORE,"Length of Transform is %d, offset is %d",length_of_proposal,payload_length_position_offset); - + int16_val = htons(length_of_proposal); this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),payload_length_position_offset); @@ -930,7 +951,6 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) } case TRANSFORM_ATTRIBUTES: { - this->logger->log(this->logger,CONTROL|MORE,"Generate Transform attributes"); /* before iterative generate the transform attributes, store the current length position */ u_int32_t transform_length_position_offset = this->last_payload_length_position_offset; @@ -968,8 +988,6 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) iterator->destroy(iterator); - this->logger->log(this->logger,CONTROL|MORE,"Length of Transform is %d, offset is %d",length_of_transform,transform_length_position_offset); - int16_val = htons(length_of_transform); this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),transform_length_position_offset); @@ -985,7 +1003,6 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) case ATTRIBUTE_LENGTH_OR_VALUE: { - this->logger->log(this->logger,CONTROL|MORE,"Generate Attribute Length or Value field"); if (this->attribute_format == FALSE) { status = this->generate_u_int_type(this,U_INT_16,rules[i].offset); @@ -1003,17 +1020,20 @@ static status_t generate_payload (private_generator_t *this,payload_t *payload) { if (this->attribute_format == FALSE) { - this->logger->log(this->logger,CONTROL|MORE,"Attribute value has not fixed size"); + this->logger->log(this->logger, CONTROL|MOST, "attribute value has not fixed size"); /* the attribute value is generated */ status = this->generate_from_chunk(this,rules[i].offset); } break; } default: - this->logger->log(this->logger,CONTROL|MORE,"Field Type %s is not supported",mapping_find(encoding_type_m,rules[i].type)); + this->logger->log(this->logger, ERROR, "field type %s is not supported", + mapping_find(encoding_type_m,rules[i].type)); return NOT_SUPPORTED; } } + this->logger->log_bytes(this->logger, RAW|MORE, "generated data for this payload", + payload_start, this->out_position-payload_start); return status; } @@ -1079,6 +1099,8 @@ generator_t * generator_create() this->last_payload_length_position_offset = 0; this->header_length_position_offset = 0; this->logger = global_logger_manager->create_logger(global_logger_manager,GENERATOR,NULL); + this->logger->disable_level(this->logger, FULL); + this->logger->enable_level(this->logger, CONTROL); if (this->logger == NULL) { |