forked from osmocom/wireshark
QUIC: Fix Connection ID flag with draft-08
With draft-08 Connection ID is changed to Omit Connection ID in Short Header frame Bug: 13881 Change-Id: I9e53dc370ea692636143d2129754a3dc62d068bd Reviewed-on: https://code.wireshark.org/review/25136 Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
parent
0f3aa8522e
commit
cc040d88c8
|
@ -51,6 +51,7 @@ static int hf_quic_connection_id = -1;
|
||||||
static int hf_quic_packet_number = -1;
|
static int hf_quic_packet_number = -1;
|
||||||
static int hf_quic_version = -1;
|
static int hf_quic_version = -1;
|
||||||
static int hf_quic_short_cid_flag = -1;
|
static int hf_quic_short_cid_flag = -1;
|
||||||
|
static int hf_quic_short_ocid_flag = -1;
|
||||||
static int hf_quic_short_kp_flag = -1;
|
static int hf_quic_short_kp_flag = -1;
|
||||||
static int hf_quic_short_packet_type = -1;
|
static int hf_quic_short_packet_type = -1;
|
||||||
static int hf_quic_cleartext_protected_payload = -1;
|
static int hf_quic_cleartext_protected_payload = -1;
|
||||||
|
@ -155,7 +156,8 @@ static const value_string quic_short_long_header_vals[] = {
|
||||||
{ 0, NULL }
|
{ 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SH_CID 0x40
|
#define SH_CID 0x40 /* <= draft-07*/
|
||||||
|
#define SH_OCID 0x40
|
||||||
#define SH_KP 0x20
|
#define SH_KP 0x20
|
||||||
#define SH_PT 0x1F
|
#define SH_PT 0x1F
|
||||||
|
|
||||||
|
@ -1351,22 +1353,33 @@ dissect_quic_long_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *quic_tre
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
dissect_quic_short_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *quic_tree, guint offset, quic_info_data_t *quic_info _U_){
|
dissect_quic_short_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *quic_tree, guint offset, quic_info_data_t *quic_info){
|
||||||
guint8 short_flags;
|
guint8 short_flags;
|
||||||
guint64 cid = 0;
|
guint64 cid = 0;
|
||||||
guint32 pkn_len, pkn;
|
guint32 pkn_len, pkn;
|
||||||
|
|
||||||
short_flags = tvb_get_guint8(tvb, offset);
|
short_flags = tvb_get_guint8(tvb, offset);
|
||||||
|
if (quic_info->version <= 0xff000007) {
|
||||||
proto_tree_add_item(quic_tree, hf_quic_short_cid_flag, tvb, offset, 1, ENC_NA);
|
proto_tree_add_item(quic_tree, hf_quic_short_cid_flag, tvb, offset, 1, ENC_NA);
|
||||||
|
} else {
|
||||||
|
proto_tree_add_item(quic_tree, hf_quic_short_ocid_flag, tvb, offset, 1, ENC_NA);
|
||||||
|
}
|
||||||
proto_tree_add_item(quic_tree, hf_quic_short_kp_flag, tvb, offset, 1, ENC_NA);
|
proto_tree_add_item(quic_tree, hf_quic_short_kp_flag, tvb, offset, 1, ENC_NA);
|
||||||
proto_tree_add_item(quic_tree, hf_quic_short_packet_type, tvb, offset, 1, ENC_NA);
|
proto_tree_add_item(quic_tree, hf_quic_short_packet_type, tvb, offset, 1, ENC_NA);
|
||||||
offset += 1;
|
offset += 1;
|
||||||
|
|
||||||
/* Connection ID */
|
/* Connection ID */
|
||||||
|
if (quic_info->version <= 0xff000007) {
|
||||||
if (short_flags & SH_CID){
|
if (short_flags & SH_CID){
|
||||||
proto_tree_add_item_ret_uint64(quic_tree, hf_quic_connection_id, tvb, offset, 8, ENC_BIG_ENDIAN, &cid);
|
proto_tree_add_item_ret_uint64(quic_tree, hf_quic_connection_id, tvb, offset, 8, ENC_BIG_ENDIAN, &cid);
|
||||||
offset += 8;
|
offset += 8;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if ((short_flags & SH_OCID) == 0){
|
||||||
|
proto_tree_add_item_ret_uint64(quic_tree, hf_quic_connection_id, tvb, offset, 8, ENC_BIG_ENDIAN, &cid);
|
||||||
|
offset += 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
/* Packet Number */
|
/* Packet Number */
|
||||||
pkn_len = get_len_packet_number(short_flags);
|
pkn_len = get_len_packet_number(short_flags);
|
||||||
proto_tree_add_item_ret_uint(quic_tree, hf_quic_packet_number, tvb, offset, pkn_len, ENC_BIG_ENDIAN, &pkn);
|
proto_tree_add_item_ret_uint(quic_tree, hf_quic_packet_number, tvb, offset, pkn_len, ENC_BIG_ENDIAN, &pkn);
|
||||||
|
@ -1461,11 +1474,16 @@ proto_register_quic(void)
|
||||||
FT_UINT32, BASE_HEX, VALS(quic_version_vals), 0x0,
|
FT_UINT32, BASE_HEX, VALS(quic_version_vals), 0x0,
|
||||||
NULL, HFILL }
|
NULL, HFILL }
|
||||||
},
|
},
|
||||||
{ &hf_quic_short_cid_flag,
|
{ &hf_quic_short_cid_flag, /* <= draft-07 */
|
||||||
{ "Connection ID Flag", "quic.short.cid_flag",
|
{ "Connection ID Flag", "quic.short.cid_flag",
|
||||||
FT_BOOLEAN, 8, NULL, SH_CID,
|
FT_BOOLEAN, 8, NULL, SH_CID,
|
||||||
NULL, HFILL }
|
NULL, HFILL }
|
||||||
},
|
},
|
||||||
|
{ &hf_quic_short_ocid_flag,
|
||||||
|
{ "Omit Connection ID Flag", "quic.short.ocid_flag",
|
||||||
|
FT_BOOLEAN, 8, NULL, SH_OCID,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
{ &hf_quic_short_kp_flag,
|
{ &hf_quic_short_kp_flag,
|
||||||
{ "Key Phase Bit", "quic.short.kp_flag",
|
{ "Key Phase Bit", "quic.short.kp_flag",
|
||||||
FT_BOOLEAN, 8, NULL, SH_KP,
|
FT_BOOLEAN, 8, NULL, SH_KP,
|
||||||
|
|
Loading…
Reference in New Issue