aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gsm_abis_om2000.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2016-10-15 22:02:47 +0200
committerMichael Mann <mmann78@netscape.net>2016-10-26 15:10:42 +0000
commit5172ec96aa0899e77e8a17dc701518d1a79f6b65 (patch)
treefbe4e736a8f13392afac1dc234aae414f5998a79 /epan/dissectors/packet-gsm_abis_om2000.c
parent61e3569c4d8b02010cac4ef1fad29e8ef59299f0 (diff)
gsm_abis_om2000: Add very basic dissection of "MO Record"
The MO Record is returned in response to a Capabilities Request and describes the capabilities of he MO in more detail. The exact coding of the contents is not yet known at this point. Change-Id: Iddfe60d286a85585bec58d340bdee793d3bfca2e Reviewed-on: https://code.wireshark.org/review/18456 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-gsm_abis_om2000.c')
-rw-r--r--epan/dissectors/packet-gsm_abis_om2000.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/epan/dissectors/packet-gsm_abis_om2000.c b/epan/dissectors/packet-gsm_abis_om2000.c
index 96ef007c41..4f7173dc70 100644
--- a/epan/dissectors/packet-gsm_abis_om2000.c
+++ b/epan/dissectors/packet-gsm_abis_om2000.c
@@ -747,6 +747,26 @@ dissect_om2k_negotiation_record1(tvbuff_t *tvb, gint base_offset, proto_tree *tr
}
static gint
+dissect_om2k_mo_record(tvbuff_t *tvb, gint base_offset, gint len, proto_tree *tree)
+{
+ gint offset = base_offset;
+ proto_tree_add_item(tree, hf_om2k_mo_class, tvb, offset++, 1, ENC_NA);
+ proto_tree_add_item(tree, hf_om2k_mo_instance, tvb, offset++, 1, ENC_NA);
+
+ while (offset < len) {
+ guint16 attr_id;
+ guint8 attr_len;
+
+ attr_id = tvb_get_guint16(tvb, offset, ENC_BIG_ENDIAN);
+ offset += 2;
+ attr_len = tvb_get_guint8(tvb, offset++);
+ offset += dissect_om2k_attr_unkn(tvb, offset, attr_len, attr_id, tree);
+ }
+
+ return offset - base_offset;
+}
+
+static gint
dissect_om2k_negotiation_record2(tvbuff_t *tvb, gint base_offset, proto_tree *tree)
{
gint offset = base_offset;
@@ -1024,6 +1044,9 @@ dissect_om2k_attrs(tvbuff_t *tvb, gint offset, proto_tree *tree)
offset, 2, ENC_BIG_ENDIAN);
offset += 2;
break;
+ case 0x85: /* MO Record */
+ offset += dissect_om2k_mo_record(tvb, offset, tvb_reported_length_remaining(tvb, offset), tree);
+ break;
case 0x87: /* TTA */
proto_tree_add_item(tree, hf_om2k_tta, tvb,
offset++, 1, ENC_BIG_ENDIAN);