aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cql.c
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2016-10-13 07:51:45 +0200
committerAnders Broman <a.broman58@gmail.com>2016-10-14 03:49:43 +0000
commit1a42bc06d4d3baec0039eb4ac2d0522bc2b86ea3 (patch)
tree74b80fedc1e7b074375e86fd6ad1fc148a03495a /epan/dissectors/packet-cql.c
parent37252634c4f102054057c2bdbb32949642506bbc (diff)
CQL: Enhance flags dissection
Always display unused/reserved field 5th argument of proto_tree_add_bitmask is ett_ value add a display field for query flags Ping-Bug: 12818 Change-Id: I9f906f75c5fe8328bba41e560878dafdb6b6608d Reviewed-on: https://code.wireshark.org/review/18187 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-cql.c')
-rw-r--r--epan/dissectors/packet-cql.c60
1 files changed, 48 insertions, 12 deletions
diff --git a/epan/dissectors/packet-cql.c b/epan/dissectors/packet-cql.c
index 760801b721..16d71cd786 100644
--- a/epan/dissectors/packet-cql.c
+++ b/epan/dissectors/packet-cql.c
@@ -45,6 +45,7 @@ static int hf_cql_version = -1;
static int hf_cql_flags_bitmap = -1;
static int hf_cql_flag_compression = -1;
static int hf_cql_flag_tracing = -1;
+static int hf_cql_flag_reserved3 = -1;
static int hf_cql_stream = -1;
static int hf_cql_opcode = -1;
static int hf_cql_length = -1;
@@ -76,6 +77,7 @@ static int hf_cql_error_code = -1;
static int hf_cql_result_kind = -1;
static int hf_cql_result_rows_data_type = -1;
+static int hf_cql_query_flags_bitmap = -1;
static int hf_cql_query_flags_values = -1;
static int hf_cql_query_flags_skip_metadata = -1;
static int hf_cql_query_flags_page_size = -1;
@@ -83,7 +85,7 @@ static int hf_cql_query_flags_paging_state = -1;
static int hf_cql_query_flags_serial_consistency = -1;
static int hf_cql_query_flags_default_timestamp = -1;
static int hf_cql_query_flags_names_for_values = -1;
-
+static int hf_cql_query_flags_reserved3 = -1;
static int hf_cql_result_rows_flags_values = -1;
static int hf_cql_result_rows_flag_global_tables_spec = -1;
@@ -103,7 +105,8 @@ static int ett_cql_message = -1;
static int ett_cql_result_columns = -1;
static int ett_cql_result_metadata = -1;
static int ett_cql_result_rows = -1;
-
+static int ett_cql_header_flags_bitmap = -1;
+static int ett_cql_query_flags_bitmap = -1;
static int hf_cql_response_in = -1;
static int hf_cql_response_to = -1;
@@ -167,8 +170,9 @@ static const value_string cql_opcode_names[] = {
typedef enum {
- CQL_FLAG_COMPRESSION = 0x01,
- CQL_FLAG_TRACING = 0x02
+ CQL_HEADER_FLAG_COMPRESSION = 0x01,
+ CQL_HEADER_FLAG_TRACING = 0x02,
+ CQL_HEADER_FLAG_V3_RESERVED = 0xFC
} cql_flags;
typedef enum {
@@ -178,7 +182,8 @@ typedef enum {
CQL_QUERY_FLAG_PAGING_STATE = 0x08,
CQL_QUERY_FLAG_SERIAL_CONSISTENCY = 0x10,
CQL_QUERY_FLAG_DEFAULT_TIMESTAMP = 0x20,
- CQL_QUERY_FLAG_VALUE_NAMES = 0x40
+ CQL_QUERY_FLAG_VALUE_NAMES = 0x40,
+ CQL_QUERY_FLAG_V3_RESERVED = 0x80
} cql_query_flags;
@@ -319,7 +324,7 @@ dissect_cql_query_parameters(proto_tree* cql_subtree, tvbuff_t* tvb, gint offset
guint32 string_length = 0;
guint32 value_count = 0;
- static const int * bitmaps[] = {
+ static const int * cql_query_bitmaps[] = {
&hf_cql_query_flags_values,
&hf_cql_query_flags_skip_metadata,
&hf_cql_query_flags_page_size,
@@ -327,6 +332,7 @@ dissect_cql_query_parameters(proto_tree* cql_subtree, tvbuff_t* tvb, gint offset
&hf_cql_query_flags_serial_consistency,
&hf_cql_query_flags_default_timestamp,
&hf_cql_query_flags_names_for_values,
+ &hf_cql_query_flags_reserved3,
NULL
};
@@ -335,7 +341,7 @@ dissect_cql_query_parameters(proto_tree* cql_subtree, tvbuff_t* tvb, gint offset
offset += 2;
/* flags */
- proto_tree_add_bitmask(cql_subtree, tvb, offset, hf_cql_flags_bitmap, hf_cql_flags_bitmap, bitmaps, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask(cql_subtree, tvb, offset, hf_cql_query_flags_bitmap, ett_cql_query_flags_bitmap, cql_query_bitmaps, ENC_BIG_ENDIAN);
flags = tvb_get_guint8(tvb, offset);
offset += 1;
@@ -517,9 +523,10 @@ dissect_cql_tcp_pdu(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* d
cql_conversation_type* cql_conv;
cql_transaction_type* cql_trans = NULL;
- static const int * bitmaps[] = {
+ static const int * cql_header_bitmaps_v3[] = {
&hf_cql_flag_compression,
&hf_cql_flag_tracing,
+ &hf_cql_flag_reserved3,
NULL
};
@@ -550,7 +557,7 @@ dissect_cql_tcp_pdu(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* d
proto_tree_add_item(cql_tree, hf_cql_version, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- proto_tree_add_bitmask(cql_tree, tvb, offset, hf_cql_flags_bitmap, hf_cql_flags_bitmap, bitmaps, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask(cql_tree, tvb, offset, hf_cql_flags_bitmap, ett_cql_header_flags_bitmap, cql_header_bitmaps_v3, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item_ret_int(cql_tree, hf_cql_stream, tvb, offset, 2, ENC_BIG_ENDIAN, &stream);
offset += 2;
@@ -999,7 +1006,7 @@ proto_register_cql(void)
{
"Compression", "cql.flags.compression",
FT_BOOLEAN, 8,
- NULL, CQL_FLAG_COMPRESSION,
+ NULL, CQL_HEADER_FLAG_COMPRESSION,
NULL, HFILL
}
},
@@ -1008,7 +1015,25 @@ proto_register_cql(void)
{
"Tracing", "cql.flags.tracing",
FT_BOOLEAN, 8,
- NULL, CQL_FLAG_TRACING,
+ NULL, CQL_HEADER_FLAG_TRACING,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_cql_flag_reserved3,
+ {
+ "Reserved", "cql.flags.reserved",
+ FT_UINT8, BASE_HEX,
+ NULL, CQL_HEADER_FLAG_V3_RESERVED,
+ NULL, HFILL
+ }
+ },
+ {
+ &hf_cql_query_flags_bitmap,
+ {
+ "Flags", "cql.query.flags",
+ FT_UINT8, BASE_HEX,
+ NULL, 0x0,
NULL, HFILL
}
},
@@ -1076,6 +1101,15 @@ proto_register_cql(void)
}
},
{
+ &hf_cql_query_flags_reserved3,
+ {
+ "Reserved", "cql.query_flags.reserved",
+ FT_UINT8, BASE_HEX,
+ NULL, CQL_QUERY_FLAG_V3_RESERVED,
+ NULL, HFILL
+ }
+ },
+ {
&hf_cql_stream,
{
"Stream Identifier", "cql.stream",
@@ -1375,7 +1409,9 @@ proto_register_cql(void)
&ett_cql_message,
&ett_cql_result_columns,
&ett_cql_result_metadata,
- &ett_cql_result_rows
+ &ett_cql_result_rows,
+ &ett_cql_header_flags_bitmap,
+ &ett_cql_query_flags_bitmap,
};
proto_cql = proto_register_protocol("Cassandra CQL Protocol", "CQL", "cql" );