17 MAP-ExtensionDataTypes gsm_map
18 MAP-CommonDataTypes gsm_map
20 MAP-SS-DataTypes gsm_map.ss
21 MAP-OM-DataTypes gsm_map.om
22 MAP-ER-DataTypes gsm_map.er
23 MAP-SM-DataTypes gsm_map.sm
24 MAP-MS-DataTypes gsm_map.ms
25 MAP-LCS-DataTypes gsm_map.lcs
26 MAP-GR-DataTypes gsm_map.gr
27 MAP-CH-DataTypes gsm_map.ch
30 MAP-LocationServiceOperations gsm_map
31 MAP-Group-Call-Operations gsm_map
32 MAP-ShortMessageServiceOperations gsm_map
33 MAP-SupplementaryServiceOperations gsm_map
34 MAP-CallHandlingOperations gsm_map
35 MAP-OperationAndMaintenanceOperations gsm_map
36 MAP-MobileServiceOperations gsm_map
38 MAP-DialogueInformation gsm_map.dialogue
39 MAP-ApplicationContexts gsm_map
46 Add-GeographicalInformation
47 AgeOfLocationInformation
51 CellGlobalIdOrServiceAreaIdFixedLength
56 DeferredLocationEventType
60 Ext-GeographicalInformation
64 GeographicalInformation
88 OfferedCamel4Functionalities
102 USSD-DataCodingScheme
110 MAP-DialoguePDU B "0.4.0.0.1.1.1.1" "map-DialogueAS"
112 # Conformance for ROS stuff
114 #.FN_BODY InvokeParameter
115 offset = dissect_invokeData(tree, tvb, offset, actx);
117 #.FN_BODY ReturnResultParameter
118 offset = dissect_returnResultData(tree, tvb, offset, actx);
120 #.FN_BODY ReturnErrorParameter
121 offset = dissect_returnErrorData(tree, tvb, offset, actx);
123 #.FN_PARS GSMMAPOperationLocalvalue
127 #.FN_BODY GSMMAPOperationLocalvalue
130 if (check_col(actx->pinfo->cinfo, COL_INFO)){
131 col_append_fstr(actx->pinfo->cinfo, COL_INFO, gsm_map_opr_code(opcode));
134 #.FN_PARS GSMMAPLocalErrorcode
138 #----------------------------------------------------------------------------------------
140 #.FN_PARS PrivateExtension/extId FN_VARIANT = _str VAL_PTR = &obj_id
142 #.FN_BODY PrivateExtension/extType
143 proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
145 offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, tree);
147 call_dissector(data_handle, tvb, actx->pinfo, tree);
148 offset = tvb_length_remaining(tvb,offset);
151 #.FN_BODY AddressString VAL_PTR = ¶meter_tvb
153 tvbuff_t *parameter_tvb;
165 subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_isdn_address_string);
167 proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
168 proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
169 proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
171 digit_str = unpack_digits(parameter_tvb, 1);
173 proto_tree_add_string(tree, hf_gsm_map_address_digits, parameter_tvb, 1, -1, digit_str);
175 octet = tvb_get_guint8(parameter_tvb,0);
176 na = (octet & 0x70)>>4;
178 if ((na == 1) && (np==1))/*International Number & E164*/
179 dissect_e164_cc(parameter_tvb, subtree, 1, TRUE);
181 #.FN_BODY TBCD-STRING VAL_PTR = ¶meter_tvb
182 tvbuff_t *parameter_tvb;
190 digit_str = unpack_digits(parameter_tvb, 0);
191 proto_tree_add_string(tree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, digit_str);
193 #----------------------------------------------------------------------------------------
194 #.FN_BODY LongSignalInfo VAL_PTR = ¶meter_tvb
197 #This parameter includes one or two concatenated complete 3GPP TS 25.413 or 3GPP TS 48.006 [48] messages, as
198 #described in 3GPP TS 23.009 and 3GPP TS 29.010. The access network protocol ID indicates that the message or
199 #messages are according to either 3GPP TS 48.006 [48] or 3GPP TS 25.413. For the coding of the messages see 3GPP
200 #TS 25.413, 3GPP TS 48.006 [48] and 3GPP TS 48.008 [49].
202 tvbuff_t *parameter_tvb;
214 subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LongSignalInfo);
216 switch (AccessNetworkProtocolId){
219 octet = tvb_get_guint8(parameter_tvb,0);
220 length = tvb_get_guint8(parameter_tvb,1);
221 if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
223 next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1);
224 dissect_bssmap(next_tvb, actx->pinfo, tree);
229 call_dissector(ranap_handle, parameter_tvb, actx->pinfo, tree);
235 # Set SENT/RECEIVED depending if ISDN-AddressString or AddressString is used.
236 # as it's a CHOICE only one is present.
237 #.FN_BODY SM-RP-OAold/serviceCentreAddressOA
238 actx->pinfo->p2p_dir = P2P_DIR_SENT;
241 #.FN_BODY SM-RP-OA/serviceCentreAddressOA
242 actx->pinfo->p2p_dir = P2P_DIR_SENT;
245 #.FN_BODY SM-RP-OAold/msisdn
246 actx->pinfo->p2p_dir = P2P_DIR_RECV;
249 #.FN_BODY SM-RP-OA/msisdn
250 actx->pinfo->p2p_dir = P2P_DIR_RECV;
253 #.FN_BODY SignalInfo VAL_PTR = ¶meter_tvb
254 tvbuff_t *parameter_tvb;
257 actx->value_ptr = parameter_tvb;
259 #.FN_BODY ForwardSM-Arg
261 /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
264 if (!actx->value_ptr)
266 dissector_try_port(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
268 #.FN_BODY MO-ForwardSM-Arg
270 /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
273 if (!actx->value_ptr)
275 dissector_try_port(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
277 #.FN_BODY MT-ForwardSM-Arg
279 /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
282 if (!actx->value_ptr)
284 dissector_try_port(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
286 #.FN_BODY SS-Status VAL_PTR = ¶meter_tvb
288 tvbuff_t *parameter_tvb;
296 octet = tvb_get_guint8(parameter_tvb,0);
298 proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
299 if ((octet & 0x01)== 1)
300 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
302 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);
303 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);
304 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);
306 #.FN_BODY Ext-SS-Status VAL_PTR = ¶meter_tvb
307 /* Note Ext-SS-Status can have more than one byte */
309 tvbuff_t *parameter_tvb;
317 octet = tvb_get_guint8(parameter_tvb,0);
319 proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
320 if ((octet & 0x01)== 1)
321 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);
323 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);
324 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);
325 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);
329 #.FN_BODY USSD-DataCodingScheme VAL_PTR = ¶meter_tvb
330 #-- The structure of the USSD-DataCodingScheme is defined by
331 #-- the Cell Broadcast Data Coding Scheme as described in
332 #-- TS 3GPP TS 23.038
334 /*The structure of the USSD-DataCodingScheme is defined by
335 * the Cell Broadcast Data Coding Scheme as described in
337 * TODO: Should smpp_handle_dcs return encoding type? - like 7bit Alphabet
339 int CodingScheme_offset = 0;
340 tvbuff_t *parameter_tvb;
344 smpp_handle_dcs(tree, parameter_tvb, &CodingScheme_offset);
346 #.FN_BODY USSD-String VAL_PTR = ¶meter_tvb
348 tvbuff_t *parameter_tvb;
351 /* XXX - The maximum item label length is 240. Does this really need to be 1024?
353 * TODO: Shouldent this function use USSD-DataCodingScheme to chose decoding method???
355 static unsigned char bigbuf[1024];
361 length = tvb_length_remaining(parameter_tvb,0);
363 out_len = gsm_sms_char_7bit_unpack(0, length, sizeof(bigbuf),
364 tvb_get_ptr(parameter_tvb, 0, length), bigbuf);
366 bigbuf[out_len] = '\0';
367 gsm_sms_char_ascii_decode(bigbuf, bigbuf, out_len);
369 proto_tree_add_text(tree, parameter_tvb, 0, length, "USSD String: %%s", bigbuf);
371 #.FN_FTR ForwardingOptions
373 proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
374 proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
375 proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
376 proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
377 #.FN_FTR Ext-ForwFeature/forwardingOptions
379 proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
380 proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
381 proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
382 proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);
385 #.FN_BODY PDP-Type VAL_PTR = ¶meter_tvb
387 tvbuff_t *parameter_tvb;
394 proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,FALSE);
395 pdp_type_org = tvb_get_guint8(parameter_tvb,1);
396 switch (pdp_type_org){
398 proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,FALSE);
401 proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,FALSE);
407 #.FN_BODY QoS-Subscribed VAL_PTR = ¶meter_tvb
410 tvbuff_t *parameter_tvb;
416 de_sm_qos(parameter_tvb, tree, 0, 3, NULL,0);
418 #.FN_BODY Ext-QoS-Subscribed VAL_PTR = ¶meter_tvb
420 tvbuff_t *parameter_tvb;
426 dissect_gsm_map_ext_qos_subscribed(tvb, actx->pinfo, tree);
428 #.FN_BODY GSN-Address VAL_PTR = ¶meter_tvb
430 tvbuff_t *parameter_tvb;
439 item = get_ber_last_created_item();
440 subtree = proto_item_add_subtree(item, ett_gsm_map_pdptypenumber);
442 octet = tvb_get_guint8(parameter_tvb,0);
444 case 0x04: /* IPv4 */
445 proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
447 case 0x50: /* IPv4 */
448 proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
454 #.FN_BODY RAIdentity VAL_PTR = ¶meter_tvb
456 tvbuff_t *parameter_tvb;
464 item = get_ber_last_created_item();
465 subtree = proto_item_add_subtree(item, ett_gsm_map_RAIdentity);
466 de_gmm_rai(parameter_tvb, subtree, 0, 3, NULL,0);
468 #.FN_BODY LAIFixedLength VAL_PTR = ¶meter_tvb
470 tvbuff_t *parameter_tvb;
478 item = get_ber_last_created_item();
479 subtree = proto_item_add_subtree(item, ett_gsm_map_LAIFixedLength);
480 dissect_e212_mcc_mnc(parameter_tvb, subtree, 0);
482 #.FN_BODY RadioResourceInformation VAL_PTR = ¶meter_tvb
483 tvbuff_t *parameter_tvb;
492 item = get_ber_last_created_item();
493 subtree = proto_item_add_subtree(item, ett_gsm_map_RadioResourceInformation);
494 be_chan_type(tvb, subtree, 0, tvb_length_remaining(tvb,0), NULL, 0);
496 #.FN_BODY RANAP-ServiceHandover VAL_PTR = ¶meter_tvb
497 tvbuff_t *parameter_tvb;
505 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
506 dissect_ranap_Service_Handover(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_ranap_service_Handover);
508 #.FN_BODY IntegrityProtectionInformation VAL_PTR = ¶meter_tvb
509 tvbuff_t *parameter_tvb;
517 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
518 dissect_ranap_IntegrityProtectionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_mapIntegrityProtectionInformation);
520 #.FN_BODY EncryptionInformation VAL_PTR = ¶meter_tvb
521 tvbuff_t *parameter_tvb;
529 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
530 dissect_ranap_EncryptionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_mapEncryptionInformation);
532 #----------------------------------------------------------------------------------------
534 SS-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals)
535 Teleservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals)
536 Bearerservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals)
537 TeleserviceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals)
538 BearerServiceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals)
539 Ext-TeleserviceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals)
540 Ext-BearerServiceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals)
541 ChargingCharacteristics TYPE = FT_UINT16 DISPLAY = BASE_DEC BITMASK = 0x0f00 STRINGS = VALS(chargingcharacteristics_values)