forked from osmocom/wireshark
469 lines
12 KiB
INI
469 lines
12 KiB
INI
# gsm_map.cnf
|
|
# gsm_map conformation file
|
|
|
|
# $Id$
|
|
|
|
#.MODULE_IMPORT
|
|
|
|
#.EXPORTS
|
|
AddressString
|
|
Add-GeographicalInformation
|
|
AgeOfLocationInformation
|
|
AlertingPattern
|
|
AreaEventInfo
|
|
CCBS-Feature
|
|
CellGlobalIdOrServiceAreaIdFixedLength
|
|
CUG-Index
|
|
CUG-Interlock
|
|
CUG-Info
|
|
CurrentPassword
|
|
DeferredLocationEventType
|
|
EraseCC-EntryArg
|
|
EraseCC-EntryRes
|
|
Ext-BasicServiceCode
|
|
Ext-GeographicalInformation
|
|
Ext-QoS-Subscribed
|
|
Ext2-QoS-Subscribed
|
|
ExtensionContainer
|
|
GeographicalInformation
|
|
GetPasswordArg
|
|
GPRSChargingID
|
|
GSN-Address
|
|
IMEI
|
|
IMSI
|
|
InterrogateSS-Res
|
|
ISDN-AddressString
|
|
ISDN-SubaddressString
|
|
LCSClientExternalID
|
|
LCSClientName
|
|
LCSRequestorID
|
|
LCSCodeword
|
|
LCSServiceTypeID
|
|
LCS-ReferenceNumber
|
|
LCS-QoS
|
|
LocationInformation
|
|
LocationType
|
|
LSAIdentity
|
|
MS-Classmark2
|
|
NewPassword
|
|
NotificationToMSUser
|
|
OfferedCamel4Functionalities
|
|
ProtectedPayload
|
|
QoS-Subscribed
|
|
RAIdentity
|
|
RegisterCC-EntryRes
|
|
RegisterSS-Arg
|
|
SubscriberState
|
|
SecurityHeader
|
|
SupportedCamelPhases
|
|
SupportedGADShapes
|
|
SS-Code
|
|
SS-Status
|
|
SS-Info
|
|
SS-ForBS-Code
|
|
USSD-DataCodingScheme
|
|
USSD-String
|
|
Ussd-Arg
|
|
Ussd-Res
|
|
UU-Data
|
|
|
|
#.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_PARS Sm-RP-UI
|
|
|
|
VAL_PTR = &tpdu_tvb
|
|
|
|
#.FN_BODY Sm-RP-UI
|
|
|
|
tvbuff_t *tpdu_tvb;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
/*
|
|
* dissect the embedded TPDU message
|
|
*/
|
|
if (!tpdu_tvb)
|
|
return offset;
|
|
|
|
dissector_try_port(sms_dissector_table, 0, tpdu_tvb, pinfo, top_tree);
|
|
#.END
|
|
#----------------------------------------------------------------------------------------
|
|
#.FN_PARS IMSI
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY IMSI
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
char *digit_str;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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);
|
|
|
|
|
|
|
|
#.END
|
|
#----------------------------------------------------------------------------------------
|
|
#.FN_PARS ServiceCentreAddress
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY ServiceCentreAddress
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
char *digit_str;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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);
|
|
pinfo->p2p_dir = P2P_DIR_SENT;
|
|
|
|
#.END
|
|
#----------------------------------------------------------------------------------------
|
|
#.FN_PARS ISDN-AddressString
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY ISDN-AddressString
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
char *digit_str;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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);
|
|
|
|
pinfo->p2p_dir = P2P_DIR_RECV;
|
|
|
|
|
|
#.END
|
|
#----------------------------------------------------------------------------------------
|
|
#.FN_PARS AddressString
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY AddressString
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
char *digit_str;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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);
|
|
|
|
#----------------------------------------------------------------------------------------
|
|
#.FN_PARS SS-Status
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY SS-Status
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
guint8 octet;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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 Ext-SS-Status
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY Ext-SS-Status
|
|
/* Note Ext-SS-Status can have more than one byte */
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
guint8 octet;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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_PARS SignalInfo
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY SignalInfo
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
guint8 octet;
|
|
guint8 length;
|
|
tvbuff_t *next_tvb;
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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_PARS LongSignalInfo
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY LongSignalInfo
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
guint8 octet;
|
|
guint8 length;
|
|
tvbuff_t *next_tvb;
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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_PARS PDP-Type
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY PDP-Type
|
|
guint8 pdp_type_org;
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
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_PARS QoS-Subscribed
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY QoS-Subscribed
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!parameter_tvb)
|
|
return offset;
|
|
de_sm_qos(parameter_tvb, tree, 0, 3, NULL,0);
|
|
|
|
#.FN_PARS Ext-QoS-Subscribed
|
|
|
|
VAL_PTR = ¶meter_tvb
|
|
|
|
#.FN_BODY Ext-QoS-Subscribed
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!parameter_tvb)
|
|
return offset;
|
|
de_sm_qos(parameter_tvb, tree, 0, 9, NULL, 0);
|
|
|
|
#----------------------------------------------------------------------------------------
|
|
#.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
|
|
|
|
|