aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-quic.c
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2017-09-01 16:29:23 +0200
committerAnders Broman <a.broman58@gmail.com>2017-09-04 19:57:05 +0000
commit8faa84d38ba8f83acf68653ef9800738dfd8bfbc (patch)
tree0c75ef3132d197b5c6f0500cbc1f04ad3270a760 /epan/dissectors/packet-quic.c
parentf7ff38bc782340b1e2540f59c0138f7fa56bc5dd (diff)
QUIC: Add STOP_SENDING frame
Ping-Bug: 13881 Change-Id: I039e7a3eb1572721553a067f0d3db44e9cd4d7bd Reviewed-on: https://code.wireshark.org/review/23388 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-quic.c')
-rw-r--r--epan/dissectors/packet-quic.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/epan/dissectors/packet-quic.c b/epan/dissectors/packet-quic.c
index 422303ad1d..d0da949229 100644
--- a/epan/dissectors/packet-quic.c
+++ b/epan/dissectors/packet-quic.c
@@ -93,6 +93,8 @@ static int hf_quic_frame_type_sb_stream_id = -1;
static int hf_quic_frame_type_nci_sequence = -1;
static int hf_quic_frame_type_nci_connection_id = -1;
static int hf_quic_frame_type_nci_stateless_reset_token = -1;
+static int hf_quic_frame_type_ss_stream_id = -1;
+static int hf_quic_frame_type_ss_error_code = -1;
static int hf_quic_hash = -1;
@@ -152,6 +154,7 @@ static const value_string quic_long_packet_type_vals[] = {
#define FT_STREAM_BLOCKED 0x09
#define FT_STREAM_ID_NEEDED 0x0a
#define FT_NEW_CONNECTION_ID 0x0b
+#define FT_STOP_SENDING 0x0c
#define FT_ACK_MIN 0xa0
#define FT_ACK_MAX 0xbf
#define FT_STREAM_MIN 0xc0
@@ -169,6 +172,7 @@ static const range_string quic_frame_type_vals[] = {
{ 0x09, 0x09, "STREAM_BLOCKED" },
{ 0x0a, 0x0a, "STREAM_ID_NEEDED" },
{ 0x0b, 0x0b, "NEW_CONNECTION_ID" },
+ { 0x0c, 0x0c, "STOP_SENDING" },
{ 0xa0, 0xbf, "ACK" },
{ 0xc0, 0xff, "STREAM" },
{ 0, 0, NULL },
@@ -632,6 +636,20 @@ dissect_quic_frame_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *quic_
}
break;
+ case FT_STOP_SENDING:{
+
+ proto_tree_add_item(ft_tree, hf_quic_frame_type_ss_stream_id, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_tree_add_item(ft_tree, hf_quic_frame_type_ss_error_code, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+
+ proto_item_set_len(ti_ft, 1 + 4 + 4 + 16);
+
+ col_prepend_fstr(pinfo->cinfo, COL_INFO, "Stop Sending");
+
+ }
+ break;
default:
expert_add_info_format(pinfo, ti_ft, &ei_quic_ft_unknown, "Unknown Frame Type %u", frame_type);
break;
@@ -1032,6 +1050,18 @@ proto_register_quic(void)
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
+ /* STOP_SENDING */
+ { &hf_quic_frame_type_ss_stream_id,
+ { "Stream ID", "quic.frame_type.ss.stream_id",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "Stream ID of the stream being ignored", HFILL }
+ },
+ { &hf_quic_frame_type_ss_error_code,
+ { "Error code", "quic.frame_type.ss.error_code",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &quic_error_code_vals_ext, 0x0,
+ "Indicates why the sender is ignoring the stream", HFILL }
+ },
+
{ &hf_quic_hash,
{ "Hash", "quic.hash",
FT_BYTES, BASE_NONE, NULL, 0x0,