diff options
Diffstat (limited to 'epan/dissectors/packet-gsm_rlcmac.c')
-rw-r--r-- | epan/dissectors/packet-gsm_rlcmac.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/epan/dissectors/packet-gsm_rlcmac.c b/epan/dissectors/packet-gsm_rlcmac.c index c05a267a84..faad983858 100644 --- a/epan/dissectors/packet-gsm_rlcmac.c +++ b/epan/dissectors/packet-gsm_rlcmac.c @@ -2819,13 +2819,11 @@ CSN_DESCR_END (MS_RA_capability_value_t) * This one would be used to decode for instance MS RA Capabilities IE SGSN->MS on the PCU. * However, an ad-hoc decoder is used in this scenario in wireshark: See packet-gsm_a_gm.c de_gmm_ms_radio_acc_cap(). */ -#if 0 static const CSN_DESCR_BEGIN (MS_Radio_Access_capability_t) M_REC_TARRAY_1(MS_Radio_Access_capability_t, MS_RA_capability_value, MS_RA_capability_value_t, Count_MS_RA_capability_value, &hf_ms_ra_capability_value), M_PADDING_BITS(MS_Radio_Access_capability_t, &hf_padding), CSN_DESCR_END (MS_Radio_Access_capability_t) -#endif /* TS44.060 section 12.30 "MS Radio Access Capability 2". Same as above but without spare bits */ static const @@ -9903,6 +9901,20 @@ dissect_gsm_ec_rlcmac_uplink(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree return dissect_gsm_rlcmac_uplink(tvb, pinfo, tree, &rlc_mac); } +static int +dissect_gsm_rlcmac_racap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + csnStream_t ar; + MS_Radio_Access_capability_t racap = {0}; + int len = tvb_reported_length(tvb); + guint16 bit_length = len * 8; + + csnStreamInit(&ar, 0, bit_length, pinfo); + + csnStreamDissector(tree, &ar, CSNDESCR(MS_Radio_Access_capability_t), tvb, &racap, ett_gsm_rlcmac); + return len; +} + void proto_register_gsm_rlcmac(void) { @@ -18620,6 +18632,7 @@ proto_register_gsm_rlcmac(void) proto_register_subtree_array(ett, array_length(ett)); expert_gsm_rlcmac = expert_register_protocol(proto_gsm_rlcmac); expert_register_field_array(expert_gsm_rlcmac, ei, array_length(ei)); + register_dissector("gsm_rlcmac_racap", dissect_gsm_rlcmac_racap, proto_gsm_rlcmac); register_dissector("gsm_rlcmac_ul", dissect_gsm_rlcmac_uplink, proto_gsm_rlcmac); register_dissector("gsm_rlcmac_dl", dissect_gsm_rlcmac_downlink, proto_gsm_rlcmac); register_dissector("gsm_ec_rlcmac_ul", dissect_gsm_ec_rlcmac_uplink, proto_gsm_rlcmac); |