8 * Copyright (C) 2005 Jan Hutter, Martin Willi
9 * Hochschule fuer Technik Rapperswil
11 * This program is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License as published by the
13 * Free Software Foundation; either version 2 of the License, or (at your
14 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
16 * This program is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24 #include "../allocator.h"
25 #include "parser_test.h"
26 #include "../tester.h"
27 #include "../logger_manager.h"
28 #include "../encodings.h"
29 #include "../generator.h"
30 #include "../parser.h"
31 #include "../encodings/ike_header.h"
33 extern payload_info_t
*payload_infos
[];
35 extern logger_manager_t
*global_logger_manager
;
41 void test_parser_with_header_payload(tester_t
*tester
)
44 parser_context_t
*parser_context
;
45 ike_header_t
*header_data
;
51 global_logger_manager
->get_logger(global_logger_manager
,TESTER
,&logger
,"header payload");
53 u_int8_t test_bytes
[] = {
62 test_chunk
.ptr
= test_bytes
;
63 test_chunk
.len
= sizeof(test_bytes
);
66 parser
= parser_create(payload_infos
);
67 tester
->assert_true(tester
,(parser
!= NULL
), "parser create check");
69 parser_context
= parser
->create_context(parser
, test_chunk
);
70 tester
->assert_true(tester
,(parser_context
!= NULL
), "parser_context create check");
72 status
= parser
->parse_payload(parser
, HEADER
, (void**)&header_data
, parser_context
);
73 tester
->assert_true(tester
,(status
== SUCCESS
),"parse_payload call check");
75 tester
->assert_true(tester
,(header_data
->initiator_spi
== 1),"parsed initiator_spi value");
76 tester
->assert_true(tester
,(header_data
->responder_spi
== 2),"parsed responder_spi value");
77 tester
->assert_true(tester
,(header_data
->next_payload
== 3),"parsed next_payload value");
78 tester
->assert_true(tester
,(header_data
->maj_version
== 4),"parsed maj_version value");
79 tester
->assert_true(tester
,(header_data
->min_version
== 5),"parsed min_version value");
80 tester
->assert_true(tester
,(header_data
->exchange_type
== 6),"parsed exchange_type value");
81 tester
->assert_true(tester
,(header_data
->flags
.initiator
== TRUE
),"parsed flags.initiator value");
82 tester
->assert_true(tester
,(header_data
->flags
.version
== FALSE
),"parsed flags.version value");
83 tester
->assert_true(tester
,(header_data
->flags
.response
== TRUE
),"parsed flags.response value");
84 tester
->assert_true(tester
,(header_data
->message_id
== 7),"parsed message_id value");
85 tester
->assert_true(tester
,(header_data
->length
== 8),"parsed length value");
88 parser_context
->destroy(parser_context
);
89 tester
->assert_true(tester
,(parser
->destroy(parser
) == SUCCESS
), "parser destroy call check");
91 logger
->log_bytes(logger
, RAW
, "Header", (void*)header_data
, sizeof(ike_header_t
));
93 allocator_free(header_data
);