aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gsm_map.c
diff options
context:
space:
mode:
authorAndersBroman <anders.broman@ericsson.com>2017-08-17 16:54:29 +0200
committerAnders Broman <a.broman58@gmail.com>2017-08-18 08:14:08 +0000
commit6726d9e0cd61634c6bae95857efb2e549ab8f7be (patch)
tree8afff074030aca054b4c0cd0d32033154a78e000 /epan/dissectors/packet-gsm_map.c
parent5f52e655002de5fa4ff29d32869cfca2b7eda214 (diff)
[GSM MAP] Dissect Ext2-QoS-Subscribed, Ext3-QoS-Subscribed and
Ext4-QoS-Subscribed Change-Id: Ic6a0f80d5f2339fd90284d1fddffe57b66c6771d Reviewed-on: https://code.wireshark.org/review/23108 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-gsm_map.c')
-rw-r--r--epan/dissectors/packet-gsm_map.c371
1 files changed, 342 insertions, 29 deletions
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index 65a2d2b8fa..6c50e4d76f 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -158,6 +158,22 @@ static int hf_gsm_map_ericsson_locationInformation_lac = -1;
static int hf_gsm_map_ericsson_locationInformation_ci = -1;
static int hf_gsm_map_ericsson_locationInformation_sac = -1;
static int hf_gsm_map_ussd_string = -1;
+static int hf_gsm_map_spare_bits = -1;
+static int hf_gsm_map_qos_signalling_ind = -1;
+static int hf_gsm_map_qos_source_stat_desc = - 1;
+static int hf_gsm_map_qos_max_bitrate_upl_ext = -1;
+static int hf_gsm_map_qos_max_bitrate_downl_ext = -1;
+static int hf_gsm_map_qos_guar_bitrate_upl_ext = -1;
+static int hf_gsm_map_qos_guar_bitrate_downl_ext = -1;
+/*
+static int hf_gsm_map_qos_max_bitrate_upl_ext2 = -1;
+static int hf_gsm_map_qos_max_bitrate_downl_ext2 = -1;
+static int hf_gsm_map_qos_guar_bitrate_upl_ext2 = -1;
+static int hf_gsm_map_qos_guar_bitrate_downl_ext2 = -1;
+*/
+static int hf_gsm_map_earp_pci = -1;
+static int hf_gsm_map_earp_pl = -1;
+static int hf_gsm_map_earp_pvi = -1;
/*--- Included file: packet-gsm_map-hf.c ---*/
@@ -1973,7 +1989,7 @@ static int hf_NokiaMAP_Extensions_AccessSubscriptionListExt_item = -1; /* Acces
static int hf_NokiaMAP_Extensions_AllowedServiceData_amr_wb_allowed = -1;
/*--- End of included file: packet-gsm_map-hf.c ---*/
-#line 155 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 171 "./asn1/gsm_map/packet-gsm_map-template.c"
/* Initialize the subtree pointers */
static gint ett_gsm_map = -1;
@@ -2004,6 +2020,8 @@ static gint ett_gsm_map_ericsson_locationInformation = -1;
static gint ett_gsm_map_extension_data = -1;
static gint ett_gsm_map_tbcd_digits = -1;
static gint ett_gsm_map_ussd_string = -1;
+static gint ett_gsm_map_ext2_qos_subscribed = -1;
+static gint ett_gsm_map_ext3_qos_subscribed = -1;
/*--- Included file: packet-gsm_map-ett.c ---*/
@@ -2697,7 +2715,7 @@ static gint ett_NokiaMAP_Extensions_AccessSubscriptionListExt = -1;
static gint ett_NokiaMAP_Extensions_AllowedServiceData = -1;
/*--- End of included file: packet-gsm_map-ett.c ---*/
-#line 187 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 205 "./asn1/gsm_map/packet-gsm_map-template.c"
static expert_field ei_gsm_map_unknown_sequence3 = EI_INIT;
static expert_field ei_gsm_map_unknown_sequence = EI_INIT;
@@ -3022,7 +3040,7 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
*/
octet = tvb_get_guint8(tvb,offset);
if (octet == 0 ){
- proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, octet, "Reserved" );
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, octet, "Subscribed guaranteed bit rate for uplink/reserved");
}else{
proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
}
@@ -3033,13 +3051,202 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
*/
octet = tvb_get_guint8(tvb,offset);
if (octet == 0 ){
- proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, octet, "Reserved" );
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, octet, "Subscribed guaranteed bit rate for downlink/reserved");
}else{
proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
}
}
+/*
+Ext2-QoS-Subscribed ::= OCTET STRING (SIZE (1..3))
+-- Octets 1-3 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 14-16.
+-- If Quality of Service information is structured with 14 octet length, then
+-- Octet 1 is coded according to 3GPP TS 24.008 [35] Quality of Service Octet 14.
+
+*/
+
+static const true_false_string gsm_map_qos_signalling_ind_value = {
+ "Optimised for signalling traffic",
+ "Not optimised for signalling traffic"
+};
+#if 0
+/* Helper function returning the main bitrates in kbps */
+static guint32
+qos_calc_bitrate(guint8 oct)
+{
+ if (oct <= 0x3f)
+ return oct;
+ if (oct <= 0x7f)
+ return 64 + (oct - 0x40) * 8;
+
+ return 576 + (oct - 0x80) * 64;
+}
+#endif
+/* Helper function returning the extended bitrates in kbps */
+static guint32
+qos_calc_ext_bitrate(guint8 oct)
+{
+ if (oct <= 0x4a)
+ return 8600 + oct * 100;
+ if (oct <= 0xba)
+ return 16000 + (oct - 0x4a) * 1000;
+
+ return 128000 + (oct - 0xba) * 2000;
+}
+#if 0
+static guint32
+qos_calc_ext2_bitrate(guint8 oct)
+{
+ if (oct <= 0x3d)
+ return (256 + oct * 4);
+ if (oct <= 0xa1)
+ return (500 + (oct - 0x3d) * 10);
+ if (oct <= 0xf6)
+ return (1500 + (oct - 0xa1) * 100);
+
+ return 10000;
+}
+#endif
+static void
+dissect_gsm_map_ext2_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) {
+
+ int offset = 0;
+ proto_tree *subtree;
+ const gchar *str;
+ guint8 oct, tmp_oct;
+ guint32 temp32;
+ int length = tvb_reported_length(tvb);
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext2_qos_subscribed);
+
+ /* Ocet 14 */
+ oct = tvb_get_guint8(tvb, offset);
+ proto_tree_add_bits_item(subtree, hf_gsm_map_spare_bits, tvb, (offset << 3), 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_qos_signalling_ind, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ tmp_oct = oct & 7;
+ if (tmp_oct == 0x01)
+ str = "speech";
+ else
+ str = "unknown";
+
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_source_stat_desc, tvb,
+ offset, 1, oct, "%s (%u)", str, tmp_oct);
+
+ offset += 1;
+ if (length == offset) {
+ return;
+ }
+
+ /* Octet 15 */
+ oct = tvb_get_guint8(tvb, offset);
+
+ if (oct == 0x00)
+ str = "Use the value indicated by the Maximum bit rate for downlink";
+ else
+ {
+ temp32 = qos_calc_ext_bitrate(oct);
+ if (temp32 % 1000 == 0)
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u Mbps", temp32 / 1000);
+ else
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u kbps", temp32);
+ }
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_bitrate_downl_ext, tvb,
+ offset, 1, oct, "%s (%u)", str, oct);
+
+ offset += 1;
+ if (length == offset) {
+ return;
+ }
+
+ /* Octet 16 */
+ oct = tvb_get_guint8(tvb, offset);
+
+ if (oct == 0x00)
+ str = "Use the value indicated by the Guaranteed bit rate for downlink";
+ else
+ {
+ temp32 = qos_calc_ext_bitrate(oct);
+ if (temp32 % 1000 == 0)
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u Mbps", temp32 / 1000);
+ else
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u kbps", temp32);
+ }
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_guar_bitrate_downl_ext, tvb,
+ offset, 1, oct, "%s (%u)", str, oct);
+
+}
+
+/*
+Ext3-QoS-Subscribed ::= OCTET STRING (SIZE (1..2))
+-- Octets 1-2 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 17-18.
+
+*/
+static void
+dissect_gsm_map_ext3_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) {
+
+ int offset = 0;
+ proto_tree *subtree;
+ const gchar *str;
+ guint8 oct;
+ guint32 temp32;
+ int length = tvb_reported_length(tvb);
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext3_qos_subscribed);
+
+ /* Maximum bit rate for uplink (extended) Octet 17 */
+ oct = tvb_get_guint8(tvb, offset);
+
+ if (oct == 0x00)
+ str = "Use the value indicated by the Maximum bit rate for uplink";
+ else
+ {
+ temp32 = qos_calc_ext_bitrate(oct);
+ if (temp32 % 1000 == 0)
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u Mbps", temp32 / 1000);
+ else
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u kbps", temp32);
+ }
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_bitrate_upl_ext, tvb,
+ offset, 1, oct, "%s (%u)", str, oct);
+
+ offset += 1;
+ if (length == offset) {
+ return;
+ }
+
+ /* Guaranteed bit rate for uplink (extended) Octet 18 */
+ oct = tvb_get_guint8(tvb, offset);
+
+ if (oct == 0x00)
+ str = "Use the value indicated by the Guaranteed bit rate for uplink";
+ else
+ {
+ temp32 = qos_calc_ext_bitrate(oct);
+ if (temp32 % 1000 == 0)
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u Mbps", temp32 / 1000);
+ else
+ str = wmem_strdup_printf(wmem_packet_scope(), "%u kbps", temp32);
+ }
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_guar_bitrate_upl_ext, tvb,
+ offset, 1, oct, "%s (%u)", str, oct);
+
+ return;
+}
+
+static void
+dissect_gsm_map_ext4_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) {
+ int offset = 0;
+ proto_tree *subtree;
+
+ subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext3_qos_subscribed);
+
+ proto_tree_add_item(subtree, hf_gsm_map_earp_pvi, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_earp_pl, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_gsm_map_earp_pci, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+}
#define ELLIPSOID_POINT 0
#define ELLIPSOID_POINT_WITH_UNCERT_CIRC 1
#define ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE 3
@@ -3755,7 +3962,7 @@ static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = {
int
dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 946 "./asn1/gsm_map/gsm_map.cnf"
+#line 976 "./asn1/gsm_map/gsm_map.cnf"
/*
-- Information about the internal structure is given in
-- clause 7.6.9.
@@ -3977,7 +4184,7 @@ dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
int
dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 769 "./asn1/gsm_map/gsm_map.cnf"
+#line 799 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
guint8 octet;
@@ -4154,7 +4361,7 @@ dissect_gsm_map_HLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
int
dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1028 "./asn1/gsm_map/gsm_map.cnf"
+#line 1058 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -4431,7 +4638,7 @@ dissect_gsm_map_TA_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
int
dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 793 "./asn1/gsm_map/gsm_map.cnf"
+#line 823 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -4479,7 +4686,7 @@ dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_
int
dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 805 "./asn1/gsm_map/gsm_map.cnf"
+#line 835 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -8470,7 +8677,7 @@ dissect_gsm_map_ms_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *
static int
dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1089 "./asn1/gsm_map/gsm_map.cnf"
+#line 1119 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
const char *digit_str;
@@ -9160,7 +9367,7 @@ dissect_gsm_map_ms_SGSN_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_gsm_map_ms_APN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1062 "./asn1/gsm_map/gsm_map.cnf"
+#line 1092 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
int length, name_len, tmp;
@@ -9426,7 +9633,7 @@ dissect_gsm_map_ms_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 841 "./asn1/gsm_map/gsm_map.cnf"
+#line 871 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -9449,7 +9656,7 @@ dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvb
static int
dissect_gsm_map_ms_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 853 "./asn1/gsm_map/gsm_map.cnf"
+#line 883 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -9534,7 +9741,7 @@ dissect_gsm_map_ms_AllowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *t
static int
dissect_gsm_map_ms_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 817 "./asn1/gsm_map/gsm_map.cnf"
+#line 847 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -9605,7 +9812,7 @@ dissect_gsm_map_ms_BSSMAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *t
static int
dissect_gsm_map_ms_RANAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 829 "./asn1/gsm_map/gsm_map.cnf"
+#line 859 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -11803,8 +12010,19 @@ dissect_gsm_map_ms_ChargingCharacteristics(gboolean implicit_tag _U_, tvbuff_t *
int
dissect_gsm_map_ms_Ext2_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 769 "./asn1/gsm_map/gsm_map.cnf"
+
+ tvbuff_t *parameter_tvb;
+
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
- NULL);
+ &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+ dissect_gsm_map_ext2_qos_subscribed(tvb, actx->pinfo, tree, actx);
+
+
return offset;
}
@@ -11813,8 +12031,19 @@ dissect_gsm_map_ms_Ext2_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb
int
dissect_gsm_map_ms_Ext3_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 779 "./asn1/gsm_map/gsm_map.cnf"
+
+ tvbuff_t *parameter_tvb;
+
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
- NULL);
+ &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+ dissect_gsm_map_ext3_qos_subscribed(tvb, actx->pinfo, tree, actx);
+
+
return offset;
}
@@ -11823,8 +12052,19 @@ dissect_gsm_map_ms_Ext3_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_gsm_map_ms_Ext4_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 789 "./asn1/gsm_map/gsm_map.cnf"
+
+ tvbuff_t *parameter_tvb;
+
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
- NULL);
+ &parameter_tvb);
+
+
+ if (!parameter_tvb)
+ return offset;
+ dissect_gsm_map_ext4_qos_subscribed(tvb, actx->pinfo, tree, actx);
+
+
return offset;
}
@@ -16210,7 +16450,7 @@ dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(gboolean implicit_tag _U_, tvb
int
dissect_gsm_map_lcs_Ext_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1040 "./asn1/gsm_map/gsm_map.cnf"
+#line 1070 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -17679,7 +17919,7 @@ static const ber_sequence_t gsm_old_Bss_APDU_sequence[] = {
static int
dissect_gsm_old_Bss_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 866 "./asn1/gsm_map/gsm_map.cnf"
+#line 896 "./asn1/gsm_map/gsm_map.cnf"
guint8 octet;
guint8 length;
tvbuff_t *next_tvb;
@@ -19488,7 +19728,7 @@ dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(gboolean implicit_tag _U_, tv
static int
dissect_gsm_map_ericsson_T_locationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1118 "./asn1/gsm_map/gsm_map.cnf"
+#line 1148 "./asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
guint8 rat;
@@ -21137,7 +21377,7 @@ dissect_NokiaMAP_Extensions_AllowedServiceData(gboolean implicit_tag _U_, tvbuff
/*--- End of included file: packet-gsm_map-fn.c ---*/
-#line 904 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 1111 "./asn1/gsm_map/packet-gsm_map-template.c"
/* Specific translation for MAP V3 */
const value_string gsm_map_V1V2_opr_code_strings[] = {
@@ -21359,7 +21599,7 @@ const value_string gsm_map_opr_code_strings[] = {
/* Unknown or empty loop list OPERATION */
/*--- End of included file: packet-gsm_map-table.c ---*/
-#line 915 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 1122 "./asn1/gsm_map/packet-gsm_map-template.c"
{ 0, NULL }
};
@@ -21576,7 +21816,7 @@ static const value_string gsm_map_err_code_string_vals[] = {
/* Unknown or empty loop list OPERATION */
/*--- End of included file: packet-gsm_map-table.c ---*/
-#line 921 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 1128 "./asn1/gsm_map/packet-gsm_map-template.c"
{ 0, NULL }
};
#endif
@@ -21795,7 +22035,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
if (application_context_version == 3){
offset=dissect_gsm_map_ch_SendRoutingInfoArg(FALSE, tvb, offset, actx, tree, -1);
}else{
- offset=dissect_gsm_old_SendRoutingInfoArgV2(FALSE, tvb, offset, actx, tree, -1);
+ offset = dissect_gsm_old_SendRoutingInfoArgV2(FALSE, tvb, offset, actx, tree, -1);
}
break;
case 23: /*updateGprsLocation*/
@@ -23786,7 +24026,78 @@ void proto_register_gsm_map(void) {
{ "USSD String", "gsm_map.ussd_string",
FT_STRING, STR_UNICODE, NULL, 0,
NULL, HFILL }},
-
+ { &hf_gsm_map_spare_bits,
+ { "Spare bit(s)", "gsm_map.spare_bits",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_signalling_ind,
+ { "Signalling indication", "gsm_map.qos.signalling_ind",
+ FT_BOOLEAN, 8, TFS(&gsm_map_qos_signalling_ind_value), 0x10,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_source_stat_desc,
+ { "Source statistics description", "gsm_map.qos.source_stat_desc",
+ FT_UINT8, BASE_DEC, NULL, 0x0f,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_max_bitrate_upl_ext,
+ { "Maximum bitrate for uplink (extended)", "gsm_map.qos.max_bitrate_upl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_max_bitrate_downl_ext,
+ { "Maximum bitrate for downlink (extended)", "gsm_map.qos.max_bitrate_downl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_guar_bitrate_upl_ext,
+ { "Guaranteed bitrate for uplink (extended)", "gsm_map.qos.guar_bitrate_upl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_guar_bitrate_downl_ext,
+ { "Guaranteed bitrate for downlink (extended)", "gsm_map.qos.guar_bitrate_downl_ext",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+/*
+ { &hf_gsm_map_qos_max_bitrate_upl_ext2,
+ { "Maximum bitrate for uplink (extended-2)", "gsm_map.qos.max_bitrate_upl_ext2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_max_bitrate_downl_ext2,
+ { "Maximum bitrate for downlink (extended-2)", "gsm_map.qos.max_bitrate_downl_ext2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_guar_bitrate_upl_ext2,
+ { "Guaranteed bitrate for uplink (extended-2)", "gsm_map.qos.guar_bitrate_upl_ext2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_qos_guar_bitrate_downl_ext2,
+ { "Guaranteed bitrate for downlink (extended-2)", "gsm_map.qos.guar_bitrate_downl_ext2",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }
+ },
+ */
+ { &hf_gsm_map_earp_pvi,
+ { "PVI Pre-emption Vulnerability", "gsm_map.EARP_pre_emption_par_vulnerability",
+ FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x01,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_earp_pl,
+ { "PL Priority Level", "gsm_map.EARP_priority_level",
+ FT_UINT8, BASE_DEC, NULL, 0x3C,
+ NULL, HFILL }
+ },
+ { &hf_gsm_map_earp_pci,
+ { "PCI Pre-emption Capability", "gsm_map.EARP_pre_emption_Capability",
+ FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x40,
+ NULL, HFILL }
+ },
/*--- Included file: packet-gsm_map-hfarr.c ---*/
@@ -30866,7 +31177,7 @@ void proto_register_gsm_map(void) {
NULL, HFILL }},
/*--- End of included file: packet-gsm_map-hfarr.c ---*/
-#line 3133 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 3411 "./asn1/gsm_map/packet-gsm_map-template.c"
};
/* List of subtrees */
@@ -30899,6 +31210,8 @@ void proto_register_gsm_map(void) {
&ett_gsm_map_extension_data,
&ett_gsm_map_tbcd_digits,
&ett_gsm_map_ussd_string,
+ &ett_gsm_map_ext2_qos_subscribed,
+ &ett_gsm_map_ext3_qos_subscribed,
/*--- Included file: packet-gsm_map-ettarr.c ---*/
@@ -31592,7 +31905,7 @@ void proto_register_gsm_map(void) {
&ett_NokiaMAP_Extensions_AllowedServiceData,
/*--- End of included file: packet-gsm_map-ettarr.c ---*/
-#line 3167 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 3447 "./asn1/gsm_map/packet-gsm_map-template.c"
};
static ei_register_info ei[] = {
@@ -31736,7 +32049,7 @@ void proto_register_gsm_map(void) {
/*--- End of included file: packet-gsm_map-dis-tab.c ---*/
-#line 3227 "./asn1/gsm_map/packet-gsm_map-template.c"
+#line 3507 "./asn1/gsm_map/packet-gsm_map-template.c"
oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" );
oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2");
/*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" );