wireshark/asn1/gsmmap/gsmmap.cnf

496 lines
13 KiB
Plaintext
Raw Normal View History

# 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
#----------------------------------------------------------------------------------------
#.PDU
Component
#.FN_BODY InvokeParameter
offset = dissect_invokeData(pinfo, tree, tvb, offset);
#.FN_BODY ReturnResultParameter
offset = dissect_returnResultData(pinfo, tree, tvb, offset);
#.FN_BODY ReturnErrorParameter
offset = dissect_returnErrorData(pinfo, tree, tvb, offset);
#.FN_PARS OperationLocalvalue
VAL_PTR = &opcode
#.FN_BODY OperationLocalvalue
%(DEFAULT_BODY)s
if (check_col(pinfo->cinfo, COL_INFO)){
col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, gsm_map_opr_code_strings, "Unknown GSM-MAP (%%u)"));
}
#.FN_PARS LocalErrorcode
VAL_PTR = &errorCode
#.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 = &parameter_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 = &parameter_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 = &parameter_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 = &parameter_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 = &parameter_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 = &parameter_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 = &parameter_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 two 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 = &parameter_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 = &parameter_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 = &parameter_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 = &parameter_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