raknet: remove if(tree) no longer needed

also remove item_size variable (replace directly by the value)

Will be also fix some Clang analyzer warning about used variable

Change-Id: I4bf3b118efb2b0846012a92e5bf596ca95043414
Reviewed-on: https://code.wireshark.org/review/18318
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
Alexis La Goutte 2016-10-18 10:57:20 +02:00 committed by Michael Mann
parent fbf4f6c62f
commit d561afcd12
1 changed files with 243 additions and 340 deletions

View File

@ -339,26 +339,20 @@ raknet_dissect_unconnected_ping(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
gint offset;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_client_guid, tvb,
offset, item_size, ENC_NA);
offset += item_size;
}
proto_tree_add_item(sub_tree, hf_raknet_client_guid, tvb,
offset, 8, ENC_NA);
offset += 8;
return tvb_reported_length(tvb);
return offset;
}
static int
@ -369,23 +363,18 @@ raknet_dissect_open_connection_request_1(tvbuff_t *tvb, packet_info *pinfo, prot
gint offset;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
item_size = 1;
proto_tree_add_item(sub_tree, hf_raknet_raknet_proto_ver, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_raknet_proto_ver, tvb, offset,
1, ENC_BIG_ENDIAN);
offset += 1;
item_size = -1; /* -1 read to end of tvb buffer */
proto_tree_add_item(sub_tree, hf_raknet_null_padding, tvb, offset,
item_size, ENC_NA);
}
/* -1 read to end of tvb buffer */
proto_tree_add_item(sub_tree, hf_raknet_null_padding, tvb, offset,
-1, ENC_NA);
return tvb_reported_length(tvb);
}
@ -396,49 +385,41 @@ raknet_dissect_open_connection_reply_1(tvbuff_t *tvb, packet_info *pinfo, proto_
{
proto_tree *sub_tree;
gint offset;
raknet_session_state_t* state;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
raknet_session_state_t* state;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
state = raknet_get_session_state(pinfo);
state->use_encryption = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
8, ENC_NA);
offset += 8;
item_size = 1;
proto_tree_add_item(sub_tree, hf_raknet_use_encryption, tvb,
offset, item_size, ENC_NA);
offset += item_size;
state = raknet_get_session_state(pinfo);
state->use_encryption = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
if (state->use_encryption) {
item_size = 4;
proto_tree_add_item(sub_tree, hf_raknet_cookie, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_use_encryption, tvb,
offset, 1, ENC_NA);
offset += 1;
item_size = 64;
proto_tree_add_item(sub_tree, hf_raknet_server_public_key, tvb,
offset, item_size, ENC_NA);
offset += item_size;
}
if (state->use_encryption) {
proto_tree_add_item(sub_tree, hf_raknet_cookie, tvb,
offset, 4, ENC_BIG_ENDIAN);
offset += 4;
item_size = 2;
proto_tree_add_item(sub_tree, hf_raknet_mtu_size, tvb, offset,
item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_server_public_key, tvb,
offset, 64, ENC_NA);
offset += 64;
}
return tvb_reported_length(tvb);
proto_tree_add_item(sub_tree, hf_raknet_mtu_size, tvb, offset,
2, ENC_BIG_ENDIAN);
offset += 2;
return offset;
}
static int
@ -447,54 +428,45 @@ raknet_dissect_open_connection_request_2(tvbuff_t *tvb, packet_info *pinfo, prot
{
proto_tree *sub_tree;
gint offset;
raknet_session_state_t* state;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
raknet_session_state_t* state;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
state = raknet_get_session_state(pinfo);
if (state->use_encryption) {
gboolean client_wrote_challenge;
state = raknet_get_session_state(pinfo);
if (state->use_encryption) {
gboolean client_wrote_challenge;
item_size = 4;
proto_tree_add_item(sub_tree, hf_raknet_cookie, tvb, offset,
item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_cookie, tvb, offset,
4, ENC_BIG_ENDIAN);
offset += 4;
client_wrote_challenge = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
item_size = 1;
proto_tree_add_item(sub_tree, hf_raknet_client_wrote_challenge, tvb, offset,
item_size, ENC_NA);
offset += item_size;
client_wrote_challenge = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
proto_tree_add_item(sub_tree, hf_raknet_client_wrote_challenge, tvb, offset,
1, ENC_NA);
offset += 1;
if (client_wrote_challenge) {
item_size = RAKNET_CHALLENGE_LENGTH;
proto_tree_add_item(sub_tree, hf_raknet_client_challenge, tvb,
offset, item_size, ENC_NA);
offset += item_size;
}
if (client_wrote_challenge) {
proto_tree_add_item(sub_tree, hf_raknet_client_challenge, tvb,
offset, 64, ENC_NA);
offset += 64;
}
raknet_dissect_system_address(sub_tree, hf_raknet_server_address, tvb, &offset);
item_size = 2;
proto_tree_add_item(sub_tree, hf_raknet_mtu_size, tvb, offset,
item_size, ENC_BIG_ENDIAN);
offset += item_size;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_client_guid, tvb, offset,
item_size, ENC_NA);
offset += item_size;
}
return tvb_reported_length(tvb);
raknet_dissect_system_address(sub_tree, hf_raknet_server_address, tvb, &offset);
proto_tree_add_item(sub_tree, hf_raknet_mtu_size, tvb, offset,
2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(sub_tree, hf_raknet_client_guid, tvb, offset,
8, ENC_NA);
offset += 8;
return offset;
}
static int
@ -505,43 +477,35 @@ raknet_dissect_open_connection_reply_2(tvbuff_t *tvb, packet_info *pinfo, proto_
gint offset;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
gboolean use_encryption;
gboolean use_encryption;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
8, ENC_NA);
offset += 8;
raknet_dissect_system_address(sub_tree, hf_raknet_client_address, tvb, &offset);
raknet_dissect_system_address(sub_tree, hf_raknet_client_address, tvb, &offset);
item_size = 2;
proto_tree_add_item(sub_tree, hf_raknet_mtu_size, tvb, offset,
item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_mtu_size, tvb, offset,
2, ENC_BIG_ENDIAN);
offset += 2;
use_encryption = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
use_encryption = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
item_size = 1;
proto_tree_add_item(sub_tree, hf_raknet_use_encryption, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_use_encryption, tvb, offset,
1, ENC_NA);
offset += 1;
if (use_encryption) {
item_size = RAKNET_ANSWER_LENGTH;
proto_tree_add_item(sub_tree, hf_raknet_server_answer, tvb, offset,
item_size, ENC_NA);
offset += item_size;
}
if (use_encryption) {
proto_tree_add_item(sub_tree, hf_raknet_server_answer, tvb, offset,
128, ENC_NA);
offset += 128;
}
return tvb_reported_length(tvb);
return offset;
}
static int
@ -552,25 +516,20 @@ raknet_dissect_incompatible_protocol_version(tvbuff_t *tvb, packet_info *pinfo,
gint offset;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
item_size = 1;
proto_tree_add_item(sub_tree, hf_raknet_raknet_proto_ver, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_raknet_proto_ver, tvb,
offset, 1, ENC_BIG_ENDIAN);
offset += 1;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
item_size, ENC_NA);
}
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
8, ENC_NA);
offset += 8;
return tvb_reported_length(tvb);
return offset;
}
static int
@ -581,21 +540,16 @@ raknet_dissect_connection_failed(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
gint offset;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
item_size, ENC_NA);
offset += item_size;
}
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
8, ENC_NA);
offset += 8;
return tvb_reported_length(tvb);
return offset;
}
static int
@ -603,131 +557,110 @@ raknet_dissect_unconnected_pong(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
void *data _U_)
{
proto_tree *sub_tree;
guint32 str_size;
gint offset;
sub_tree = init_raknet_offline_message(tvb, pinfo, tree, &offset);
if (sub_tree) {
gint item_size;
guint32 str_size;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
item_size = 8;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_server_guid, tvb, offset,
8, ENC_NA);
offset += 8;
item_size = 16;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(sub_tree, hf_raknet_offline_message_data_id, tvb, offset,
16, ENC_NA);
offset += 16;
/* raknet precedes strings with a short (2 bytes) holding string length. */
item_size = 2;
proto_tree_add_item_ret_uint(sub_tree, hf_raknet_0x1C_server_id_str_len, tvb,
offset, item_size, ENC_BIG_ENDIAN, &str_size);
offset += item_size;
/* raknet precedes strings with a short (2 bytes) holding string length. */
proto_tree_add_item_ret_uint(sub_tree, hf_raknet_0x1C_server_id_str_len, tvb,
offset, 2, ENC_BIG_ENDIAN, &str_size);
offset += 2;
proto_tree_add_item(sub_tree, hf_raknet_0x1C_server_id_str, tvb, offset,
str_size, ENC_NA|ENC_ASCII);
}
proto_tree_add_item(sub_tree, hf_raknet_0x1C_server_id_str, tvb, offset,
str_size, ENC_NA|ENC_ASCII);
offset += str_size;
return tvb_reported_length(tvb);
return offset;
}
static int
raknet_dissect_connected_ping(tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *tree, void* data _U_)
{
if (tree) {
gint item_size;
gint offset = 1;
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
}
return tvb_reported_length(tvb);
gint offset = 1;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
return offset;
}
static int
raknet_dissect_connected_pong(tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *tree, void* data _U_)
{
if (tree) {
gint item_size;
gint offset = 1;
gint offset = 1;
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
}
return tvb_reported_length(tvb);
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
return offset;
}
static int
raknet_dissect_connection_request(tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *tree, void* data _U_)
{
if (tree) {
gint item_size;
gint offset = 1;
gboolean use_encryption;
gint offset = 1;
gboolean use_encryption;
item_size = 8;
proto_tree_add_item(tree, hf_raknet_client_guid, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(tree, hf_raknet_client_guid, tvb, offset,
8, ENC_NA);
offset += 8;
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
use_encryption = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
use_encryption = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
item_size = 1;
proto_tree_add_item(tree, hf_raknet_use_encryption, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(tree, hf_raknet_use_encryption, tvb, offset,
1, ENC_NA);
offset += 1;
if (use_encryption) {
gboolean use_client_key;
if (use_encryption) {
gboolean use_client_key;
item_size = RAKNET_PROOF_LENGTH;
proto_tree_add_item(tree, hf_raknet_client_proof, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(tree, hf_raknet_client_proof, tvb, offset,
32, ENC_NA);
offset += 32;
use_client_key = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
use_client_key = tvb_get_guint8(tvb, offset) ? TRUE : FALSE;
item_size = 1;
proto_tree_add_item(tree, hf_raknet_use_client_key, tvb, offset,
item_size, ENC_NA);
offset += item_size;
proto_tree_add_item(tree, hf_raknet_use_client_key, tvb, offset,
1, ENC_NA);
offset += 1;
if (use_client_key) {
item_size = RAKNET_IDENTITY_LENGTH;
proto_tree_add_item(tree, hf_raknet_client_identity, tvb, offset,
item_size, ENC_NA);
offset += item_size;
}
if (use_client_key) {
proto_tree_add_item(tree, hf_raknet_client_identity, tvb, offset,
160, ENC_NA);
offset += 160;
}
item_size = tvb_captured_length_remaining(tvb, offset);
proto_tree_add_item(tree, hf_raknet_password, tvb, offset,
item_size, ENC_NA);
}
proto_tree_add_item(tree, hf_raknet_password, tvb, offset,
-1, ENC_NA);
return tvb_reported_length(tvb);
}
@ -735,61 +668,54 @@ static int
raknet_dissect_connection_request_accepted(tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *tree, void* data _U_)
{
if (tree) {
gint item_size;
gint offset = 1;
gint i;
gint offset = 1;
gint i;
raknet_dissect_system_address(tree, hf_raknet_client_address, tvb, &offset);
raknet_dissect_system_address(tree, hf_raknet_client_address, tvb, &offset);
item_size = 2;
proto_tree_add_item(tree, hf_raknet_system_index, tvb, offset,
item_size, ENC_BIG_ENDIAN);
offset += item_size;
proto_tree_add_item(tree, hf_raknet_system_index, tvb, offset,
2, ENC_BIG_ENDIAN);
offset += 2;
for (i = 0; i < RAKNET_NUMBER_OF_INTERNAL_IDS; i++) {
raknet_dissect_system_address(tree, hf_raknet_internal_address, tvb, &offset);
}
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
for (i = 0; i < RAKNET_NUMBER_OF_INTERNAL_IDS; i++) {
raknet_dissect_system_address(tree, hf_raknet_internal_address, tvb, &offset);
}
return tvb_reported_length(tvb);
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
return offset;
}
static int
raknet_dissect_new_incoming_connection(tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree *tree, void* data _U_)
{
if (tree) {
gint item_size;
gint offset = 1;
gint i;
raknet_dissect_system_address(tree, hf_raknet_server_address, tvb, &offset);
gint offset = 1;
gint i;
for (i = 0; i < RAKNET_NUMBER_OF_INTERNAL_IDS; i++) {
raknet_dissect_system_address(tree, hf_raknet_internal_address, tvb, &offset);
}
raknet_dissect_system_address(tree, hf_raknet_server_address, tvb, &offset);
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
item_size = 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, item_size, ENC_BIG_ENDIAN);
offset += item_size;
for (i = 0; i < RAKNET_NUMBER_OF_INTERNAL_IDS; i++) {
raknet_dissect_system_address(tree, hf_raknet_internal_address, tvb, &offset);
}
return tvb_reported_length(tvb);
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
proto_tree_add_item(tree, hf_raknet_timestamp, tvb,
offset, 8, ENC_BIG_ENDIAN);
offset += 8;
return offset;
}
/*
@ -918,7 +844,6 @@ static int
raknet_dissect_ACK(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, void* data)
{
gint item_size;
gint offset = 0;
proto_tree *sub_tree;
guint32 count;
@ -931,10 +856,9 @@ raknet_dissect_ACK(tvbuff_t *tvb, packet_info *pinfo,
col_add_str(pinfo->cinfo, COL_INFO, "NAK");
}
item_size = 2;
proto_tree_add_item_ret_uint(tree, hf_raknet_NACK_record_count, tvb,
offset, item_size, ENC_BIG_ENDIAN, &count);
offset += item_size;
offset, 2, ENC_BIG_ENDIAN, &count);
offset += 2;
for (i = 0; i < count; i++) {
proto_item *ti;
@ -953,22 +877,19 @@ raknet_dissect_ACK(tvbuff_t *tvb, packet_info *pinfo,
col_append_fstr(pinfo->cinfo, COL_INFO, "#%" G_GUINT32_FORMAT, min);
item_size = 1 + 3;
ti = proto_tree_add_string_format_value(tree, hf_raknet_packet_number_range, tvb,
offset, 1 + 3, "",
"%" G_GUINT32_FORMAT " .. %" G_GUINT32_FORMAT,
min, min);
sub_tree = proto_item_add_subtree(ti, ett_raknet_packet_number_range);
item_size = 1;
proto_tree_add_item(sub_tree, hf_raknet_range_max_equal_to_min, tvb,
offset, item_size, ENC_NA);
offset += item_size;
offset, 1, ENC_NA);
offset += 1;
item_size = 3;
proto_tree_add_item(sub_tree, hf_raknet_packet_number_min, tvb,
offset, item_size, ENC_LITTLE_ENDIAN);
offset += item_size;
offset, 3, ENC_LITTLE_ENDIAN);
offset += 3;
}
else {
min = tvb_get_guint24(tvb, offset + 1 , ENC_LITTLE_ENDIAN);
@ -978,26 +899,22 @@ raknet_dissect_ACK(tvbuff_t *tvb, packet_info *pinfo,
"#%" G_GUINT32_FORMAT "..%" G_GUINT32_FORMAT,
min, max);
item_size = 1 + 3 + 3;
ti = proto_tree_add_string_format_value(tree, hf_raknet_packet_number_range, tvb,
offset, 1 + 3 + 3, "",
"%" G_GUINT32_FORMAT " .. %" G_GUINT32_FORMAT, min, max);
sub_tree = proto_item_add_subtree(ti, ett_raknet_packet_number_range);
item_size = 1;
proto_tree_add_item(sub_tree, hf_raknet_range_max_equal_to_min, tvb,
offset, item_size, ENC_NA);
offset += item_size;
offset, 1, ENC_NA);
offset += 1;
item_size = 3;
proto_tree_add_item(sub_tree, hf_raknet_packet_number_min, tvb,
offset, item_size, ENC_LITTLE_ENDIAN);
offset += item_size;
offset, 3, ENC_LITTLE_ENDIAN);
offset += 3;
item_size = 3;
proto_tree_add_item(sub_tree, hf_raknet_packet_number_max, tvb,
offset, item_size, ENC_LITTLE_ENDIAN);
offset += item_size;
offset, 3, ENC_LITTLE_ENDIAN);
offset += 3;
}
}
@ -1007,7 +924,6 @@ raknet_dissect_ACK(tvbuff_t *tvb, packet_info *pinfo,
static int
raknet_dissect_common_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *raknet_tree, void *data)
{
gint item_size;
gint offset = 0;
gboolean *has_multiple_messages;
proto_item *ti;
@ -1040,15 +956,13 @@ raknet_dissect_common_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *rak
msg_tree = proto_item_add_subtree(msg_ti, ett_raknet_message);
proto_item_append_text(msg_ti, ", ");
item_size = 1;
proto_tree_add_bitmask_ret_uint64(msg_tree, tvb, offset, hf_raknet_message_flags,
ett_raknet_message_flags, flag_flds, ENC_NA, &msg_flags);
offset += item_size;
offset += 1;
item_size = 2;
ti = proto_tree_add_item_ret_uint(msg_tree, hf_raknet_payload_length, tvb,
offset, item_size, ENC_BIG_ENDIAN, &payload_bits);
offset += item_size;
offset, 2, ENC_BIG_ENDIAN, &payload_bits);
offset += 2;
payload_octets = payload_bits / 8 + (payload_bits % 8 > 0); /* ceil(bits / 8) */
proto_item_append_text(ti, " bits (%" G_GUINT32_FORMAT " octets)", payload_octets);
@ -1059,34 +973,30 @@ raknet_dissect_common_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *rak
reliability == RAKNET_RELIABLE_SEQUENCED ||
reliability == RAKNET_RELIABLE_ORDERED ) {
item_size = 3;
proto_tree_add_item(msg_tree, hf_raknet_reliable_message_number, tvb,
offset, item_size, ENC_LITTLE_ENDIAN);
offset += item_size;
offset, 3, ENC_LITTLE_ENDIAN);
offset += 3;
}
if (reliability == RAKNET_UNRELIABLE_SEQUENCED ||
reliability == RAKNET_RELIABLE_SEQUENCED) {
item_size = 3;
proto_tree_add_item(msg_tree, hf_raknet_message_sequencing_index, tvb,
offset, item_size, ENC_LITTLE_ENDIAN);
offset += item_size;
offset, 3, ENC_LITTLE_ENDIAN);
offset += 3;
}
if (reliability == RAKNET_UNRELIABLE_SEQUENCED ||
reliability == RAKNET_RELIABLE_SEQUENCED ||
reliability == RAKNET_RELIABLE_ORDERED) {
item_size = 3;
proto_tree_add_item(msg_tree, hf_raknet_message_ordering_index, tvb,
offset, item_size, ENC_LITTLE_ENDIAN);
offset += item_size;
offset, 3, ENC_LITTLE_ENDIAN);
offset += 3;
item_size = 1;
proto_tree_add_item(msg_tree, hf_raknet_message_ordering_channel, tvb,
offset, item_size, ENC_NA);
offset += item_size;
offset, 1, ENC_NA);
offset += 1;
}
if (has_split_packet) {
@ -1096,20 +1006,18 @@ raknet_dissect_common_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *rak
guint32 split_packet_index;
fragment_head *frag_msg;
item_size = 4;
proto_tree_add_item_ret_uint(msg_tree, hf_raknet_split_packet_count, tvb,
offset, item_size, ENC_BIG_ENDIAN, &split_packet_count);
offset += item_size;
offset, 4, ENC_BIG_ENDIAN, &split_packet_count);
offset += 4;
item_size = 2;
proto_tree_add_item_ret_uint(msg_tree, hf_raknet_split_packet_id, tvb,
offset, item_size, ENC_BIG_ENDIAN, &split_packet_id);
offset += item_size;
offset, 2, ENC_BIG_ENDIAN, &split_packet_id);
offset += 2;
item_size = 4;
proto_tree_add_item_ret_uint(msg_tree, hf_raknet_split_packet_index, tvb,
offset, item_size, ENC_BIG_ENDIAN, &split_packet_index);
offset += item_size;
offset, 4, ENC_BIG_ENDIAN, &split_packet_index);
offset += 4;
/*
* Reassemble the fragmented packet.
@ -1385,16 +1293,14 @@ raknet_dissect_connected_message(tvbuff_t *tvb, packet_info *pinfo,
proto_item_append_text(ti, ", ACK");
raknet_tree = proto_item_add_subtree(ti, ett_raknet);
item_size = 1;
proto_tree_add_bitmask(raknet_tree, tvb, offset, hf_raknet_packet_type,
ett_raknet_packet_type, ack_flds, ENC_NA);
offset += item_size;
offset += 1;
if (msg_type & (1 << 5)) { /* hasBAndAS */
item_size = 4;
proto_tree_add_item(raknet_tree, hf_raknet_AS, tvb, offset,
item_size, ENC_BIG_ENDIAN);
offset += item_size;
4, ENC_BIG_ENDIAN);
offset += 4;
}
if (raknet_tree) {
@ -1418,10 +1324,9 @@ raknet_dissect_connected_message(tvbuff_t *tvb, packet_info *pinfo,
proto_item_append_text(ti, ", NAK");
raknet_tree = proto_item_add_subtree(ti, ett_raknet);
item_size = 1;
proto_tree_add_bitmask(raknet_tree, tvb, offset, hf_raknet_packet_type,
ett_raknet_packet_type, nak_flds, ENC_NA);
offset += item_size;
offset += 1;
if (raknet_tree) {
gboolean is_ACK = FALSE;
@ -1453,15 +1358,13 @@ raknet_dissect_connected_message(tvbuff_t *tvb, packet_info *pinfo,
ti = proto_tree_add_item(root_tree, proto_raknet, tvb, 0, 0, ENC_NA);
raknet_tree = proto_item_add_subtree(ti, ett_raknet);
item_size = 1;
proto_tree_add_bitmask(raknet_tree, tvb, offset, hf_raknet_packet_type,
ett_raknet_packet_type, common_flds, ENC_NA);
offset += item_size;
offset += 1;
item_size = 3;
proto_tree_add_item_ret_uint(raknet_tree, hf_raknet_packet_number, tvb,
offset, item_size, ENC_LITTLE_ENDIAN, &packet_number);
offset += item_size;
offset, 3, ENC_LITTLE_ENDIAN, &packet_number);
offset += 3;
proto_item_append_text(ti, ", Message #%" G_GUINT32_FORMAT, packet_number);
col_add_fstr(pinfo->cinfo, COL_INFO, "#%" G_GUINT32_FORMAT ": ", packet_number);