aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2009-05-19 17:26:14 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2009-05-19 17:26:14 +0000
commit8315e941ac5d6e223b6c7981291cb63a393632ac (patch)
treeffaee2d0547972ad8384ac1a846762eb752232ca
parentfc3f1b5283ffb77cf1135800a616b202904879d7 (diff)
Add a few more missing ROHC RTP fields.
svn path=/trunk/; revision=28413
-rw-r--r--epan/dissectors/packet-pdcp-lte.c44
1 files changed, 40 insertions, 4 deletions
diff --git a/epan/dissectors/packet-pdcp-lte.c b/epan/dissectors/packet-pdcp-lte.c
index 89b744c43a..b9b19118a9 100644
--- a/epan/dissectors/packet-pdcp-lte.c
+++ b/epan/dissectors/packet-pdcp-lte.c
@@ -134,11 +134,14 @@ static int hf_pdcp_lte_rohc_dynamic_rtp_ts_stride = -1;
static int hf_pdcp_lte_rohc_ts = -1;
static int hf_pdcp_lte_rohc_m = -1;
+static int hf_pdcp_lte_uor2_sn = -1;
+static int hf_pdcp_lte_uor2_x = -1;
static int hf_pdcp_lte_add_cid = -1;
static int hf_pdcp_lte_large_cid = -1;
static int hf_pdcp_lte_uo0_sn = -1;
+static int hf_pdcp_lte_uo0_crc = -1;
static int hf_pdcp_lte_r0_sn = -1;
static int hf_pdcp_lte_r0_crc_sn = -1;
@@ -952,7 +955,8 @@ static int dissect_pdcp_uo_0_packet(proto_tree *tree,
sn = (tvb_get_guint8(tvb, offset) & 0x78) >> 3;
proto_tree_add_item(tree, hf_pdcp_lte_uo0_sn, tvb, offset, 1, FALSE);
- /* TODO: CRC... */
+ /* CRC (3 bits) */
+ proto_tree_add_item(tree, hf_pdcp_lte_uo0_crc, tvb, offset, 1, FALSE);
offset++;
@@ -1157,13 +1161,21 @@ static int dissect_pdcp_uor_2_packet(proto_tree *tree,
}
/* Last bit of TS is here */
- ts = (ts << 1) & (tvb_get_guint8(tvb, offset) >> 7);
+ ts = (ts << 1) | (tvb_get_guint8(tvb, offset) >> 7);
proto_tree_add_uint(tree, hf_pdcp_lte_rohc_ts, tvb, offset, 1, ts);
+ if (p_pdcp_info->profile == 1) {
+ /* M */
+ proto_tree_add_item(tree, hf_pdcp_lte_rohc_m, tvb, offset, 1, FALSE);
+ /* SN (6 bits) */
+ proto_tree_add_item(tree, hf_pdcp_lte_uor2_sn, tvb, offset, 1, FALSE);
+ offset++;
- if (p_pdcp_info->profile == 1) {
- /* TODO: */
+ /* X (one bit) */
+ proto_tree_add_item(tree, hf_pdcp_lte_uor2_x, tvb, offset, 1, FALSE);
+
+ /* TODO: CRC */
offset++;
}
else if (p_pdcp_info->profile == 2) {
@@ -2256,6 +2268,24 @@ void proto_register_pdcp(void)
"TS", HFILL
}
},
+ { &hf_pdcp_lte_rohc_m,
+ { "M",
+ "pdcp-lte.rohc.m", FT_UINT8, BASE_DEC, NULL, 0x40,
+ "M", HFILL
+ }
+ },
+ { &hf_pdcp_lte_uor2_sn,
+ { "SN",
+ "pdcp-lte.rohc.uor2.sn", FT_UINT8, BASE_DEC, NULL, 0x3f,
+ "SN", HFILL
+ }
+ },
+ { &hf_pdcp_lte_uor2_x,
+ { "X",
+ "pdcp-lte.rohc.uor2.x", FT_UINT8, BASE_DEC, NULL, 0x80,
+ "X", HFILL
+ }
+ },
{ &hf_pdcp_lte_add_cid,
{ "Add-CID",
@@ -2275,6 +2305,12 @@ void proto_register_pdcp(void)
"SN", HFILL
}
},
+ { &hf_pdcp_lte_uo0_crc,
+ { "CRC",
+ "pdcp-lte.rohc.uo0.crc", FT_UINT8, BASE_DEC, NULL, 0x07,
+ "3-bit CRC", HFILL
+ }
+ },
{ &hf_pdcp_lte_r0_sn,
{ "SN",
"pdcp-lte.rohc.r0.sn", FT_UINT8, BASE_DEC, NULL, 0x3f,