# gsm_map.cnf # gsm_map conformation file # $Id$ #.MODULE_IMPORT #.EXPORTS #.PDU #.NO_EMIT #.TYPE_RENAME #.FIELD_RENAME Ext-SS-Info/ss-Data ext-ss-Data RequestedInfo/subscriberState subscriberState-flg RequestedSubscriptionInfo/supportedVLR-CAMEL-Phases supportedVLR-CAMEL-Phases_flg RequestedSubscriptionInfo/supportedSGSN-CAMEL-Phases supportedSGSN-CAMEL-Phases_flg PrepareGroupCallArg/teleservice ext-teleservice BasicServiceCode/teleservice teleservice-code PDP-ContextInfo/qos-Subscribed ext-qos-Subscribed AccessNetworkSignalInfo/signalInfo longsignalInfo Ext-SS-Info/callBarringInfo ext-callBarringInfo RequestedInfo/locationInformation locationInformation_flg RequestedInfo/imei imei_flg Ext-ForwFeature/forwardingOptions ext-forwardingOptions Ext-SS-Info/forwardingInfo ext-forwardingInfo RegisterSS-Arg/forwardedToNumber forwardedToNumber_addr ModificationRequestFor-CF-Info/forwardedToNumber forwardedToNumber_addr Ext-ForwFeature/basicService ext-basicService Ext-CallBarringFeature/basicService ext-basicService CUG-Feature/basicService ext-basicService SendRoutingInfoRes/basicService ext-basicService ModificationRequestFor-CF-Info/basicService ext-basicService ModificationRequestFor-CB-Info/basicService ext-basicService SendRoutingInfoArg/basicServiceGroup ext-basicServiceGroup ResumeCallHandlingArg/basicServiceGroup ext-basicServiceGroup Ext-ForwFeature/ss-Status ext-ss-Status Ext-CallBarringFeature/ss-Status ext-ss-Status Ext-SS-Data/ss-Status ext-ss-Status LCS-PrivacyClass/ss-Status ext-ss-Status MOLR-Class/ss-Status ext-ss-Status MC-SS-Info/ss-Status ext-ss-Status ModificationRequestFor-CF-Info/ss-Status ext-ss-Status ModificationRequestFor-CB-Info/ss-Status ext-ss-Status SS-Data/basicServiceGroupList ext-basicServiceGroupList InterrogateSS-Res/basicServiceGroupList ext-basicServiceGroupList Ext-CallBarInfo/callBarringFeatureList ext-callBarringFeatureList CallBarringData/callBarringFeatureList ext-callBarringFeatureList Ext-CallBarringInfoFor-CSE/callBarringFeatureList ext-callBarringFeatureList Ext-ForwInfo/forwardingFeatureList ext-forwardingFeatureList CallForwardingData/forwardingFeatureList ext-forwardingFeatureList Ext-ForwardingInfoFor-CSE/forwardingFeatureList ext-forwardingFeatureList Ext-ForwFeature/noReplyConditionTime ext-noReplyConditionTime ModificationRequestFor-CF-Info/noReplyConditionTime ext-noReplyConditionTime #---------------------------------------------------------------------------------------- #.FN_BODY Sm-RP-UI tvbuff_t *tpdu_tvb; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &tpdu_tvb); /* * dissect the embedded TPDU message */ if (!tpdu_tvb) return offset; dissector_try_port(sms_dissector_table, 0, tpdu_tvb, pinfo, top_tree); #.END #---------------------------------------------------------------------------------------- #.FN_BODY IMSI tvbuff_t *parameter_tvb; char *digit_str; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); if (!parameter_tvb) return offset; digit_str = unpack_digits(parameter_tvb, 0); proto_tree_add_string(tree, hf_gsm_map_imsi_digits, parameter_tvb, 0, -1, digit_str); if (digit_str) g_free(digit_str); #.END #---------------------------------------------------------------------------------------- #.FN_BODY ServiceCentreAddress tvbuff_t *parameter_tvb; char *digit_str; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); if (!parameter_tvb) return offset; proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE); digit_str = unpack_digits(parameter_tvb, 1); proto_tree_add_string(tree, hf_gsm_map_servicecentreaddress_digits, parameter_tvb, 1, -1, digit_str); if (digit_str) g_free(digit_str); pinfo->p2p_dir = P2P_DIR_SENT; #.END #---------------------------------------------------------------------------------------- #.FN_BODY ISDN-AddressString tvbuff_t *parameter_tvb; char *digit_str; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); if (!parameter_tvb) return offset; proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE); digit_str = unpack_digits(parameter_tvb, 1); proto_tree_add_string(tree, hf_gsm_map_isdn_address_digits, parameter_tvb, 1, -1, digit_str); if (digit_str) g_free(digit_str); pinfo->p2p_dir = P2P_DIR_RECV; #.END #---------------------------------------------------------------------------------------- #.FN_BODY AddressString tvbuff_t *parameter_tvb; char *digit_str; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); if (!parameter_tvb) return offset; proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE); digit_str = unpack_digits(parameter_tvb, 1); proto_tree_add_string(tree, hf_gsm_map_address_digits, parameter_tvb, 1, -1, digit_str); if (digit_str) g_free(digit_str); #---------------------------------------------------------------------------------------- #.FN_BODY SS-Status tvbuff_t *parameter_tvb; guint8 octet; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); if (!parameter_tvb) return offset; octet = tvb_get_guint8(parameter_tvb,0); proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet); if ((octet & 0x01)== 1) proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet); proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet); proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet); proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet); #.END #---------------------------------------------------------------------------------------- #.FN_BODY Ext-SS-Status /* Note Ext-SS-Status can have more than one byte */ tvbuff_t *parameter_tvb; guint8 octet; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); if (!parameter_tvb) return offset; octet = tvb_get_guint8(parameter_tvb,0); proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet); if ((octet & 0x01)== 1) proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet); proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet); proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet); proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet); #.END #---------------------------------------------------------------------------------------- #.FN_PARS ProtocolId VAL_PTR = &protocolId #---------------------------------------------------------------------------------------- #.FN_PARS AccessNetworkProtocolId VAL_PTR = &AccessNetworkProtocolId #---------------------------------------------------------------------------------------- #.FN_HDR SignalInfo tvbuff_t *parameter_tvb; guint8 octet; guint8 length; tvbuff_t *next_tvb; #.FN_PARS SignalInfo VAL_PTR = ¶meter_tvb #.FN_FTR SignalInfo if (!parameter_tvb) return offset; switch (protocolId){ /* gsm-0408 */ case 1: break; /* gsm-0806 */ case 2: break; /* gsm-BSSMAP TODO Is it correct to stripp off tw first octets here?*/ case 3: octet = tvb_get_guint8(parameter_tvb,0); length = tvb_get_guint8(parameter_tvb,1); if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1); dissect_bssmap(next_tvb, pinfo, tree); } break; /* ets-300102-1 (~Q.931 ) */ case 4: octet = tvb_get_guint8(parameter_tvb,0); length = tvb_get_guint8(parameter_tvb,1); if ( octet == 4 ) dissect_q931_bearer_capability_ie(parameter_tvb, 2, length, tree); break; default: break; } #---------------------------------------------------------------------------------------- #.FN_HDR LongSignalInfo tvbuff_t *parameter_tvb; guint8 octet; guint8 length; tvbuff_t *next_tvb; #.FN_PARS LongSignalInfo VAL_PTR = ¶meter_tvb #.FN_FTR LongSignalInfo if (!parameter_tvb) return offset; switch (AccessNetworkProtocolId){ /* ts3G-48006 */ case 1: octet = tvb_get_guint8(parameter_tvb,0); length = tvb_get_guint8(parameter_tvb,1); if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ /* gsm-BSSMAP? */ next_tvb = tvb_new_subset(parameter_tvb, 2, -1, -1); dissect_bssmap(next_tvb, pinfo, tree); } break; /* ts3G-25413 */ case 2: break; default: break; } #---------------------------------------------------------------------------------------- #.FN_BODY PrivateExtension/extType proto_tree_add_text(tree, tvb, offset, -1, "Extension Data"); call_dissector(data_handle, tvb, pinfo, tree); offset = tvb_length_remaining(tvb,offset); #.END #.FN_FTR ForwardingOptions proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE); #.FN_FTR Ext-ForwFeature/forwardingOptions proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE); proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE); #.FN_HDR PDP-Type guint8 pdp_type_org; tvbuff_t *parameter_tvb; #.FN_PARS PDP-Type VAL_PTR = ¶meter_tvb #.FN_FTR PDP-Type if (!parameter_tvb) return offset; proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,FALSE); pdp_type_org = tvb_get_guint8(parameter_tvb,1); switch (pdp_type_org){ case 0: /* ETSI */ proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,FALSE); break; case 1: /* IETF */ proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,FALSE); break; default: break; } #.FN_HDR QoS-Subscribed tvbuff_t *parameter_tvb; #.FN_PARS QoS-Subscribed VAL_PTR = ¶meter_tvb #.FN_FTR QoS-Subscribed if (!parameter_tvb) return offset; de_sm_qos(parameter_tvb, tree, 0, 3, NULL); #.FN_HDR Ext-QoS-Subscribed tvbuff_t *parameter_tvb; #.FN_PARS Ext-QoS-Subscribed VAL_PTR = ¶meter_tvb #.FN_FTR Ext-QoS-Subscribed if (!parameter_tvb) return offset; de_sm_qos(parameter_tvb, tree, 0, 9, NULL); #---------------------------------------------------------------------------------------- #.TYPE_ATTR SS-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals) Teleservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals) Bearerservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals) TeleserviceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals) BearerServiceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals) Ext-TeleserviceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals) Ext-BearerServiceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals) ChargingCharacteristics TYPE = FT_UINT16 DISPLAY = BASE_DEC BITMASK = 0x0f00 STRINGS = VALS(chargingcharacteristics_values) #.END