2004-11-02 01:19:23 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.OPT
|
|
|
|
-b
|
|
|
|
#-d satcom
|
2007-10-16 13:59:40 +00:00
|
|
|
#-s packet-gsm_map-tmp
|
2007-06-18 21:03:59 +00:00
|
|
|
-k
|
|
|
|
-o gsm_map
|
|
|
|
#.END
|
2004-11-02 01:19:23 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.MODULE
|
|
|
|
MAP-BS-Code gsm_map
|
|
|
|
MAP-TS-Code gsm_map
|
|
|
|
MAP-SS-Code gsm_map
|
|
|
|
MAP-ExtensionDataTypes gsm_map
|
|
|
|
MAP-CommonDataTypes gsm_map
|
|
|
|
|
|
|
|
MAP-SS-DataTypes gsm_map.ss
|
|
|
|
MAP-OM-DataTypes gsm_map.om
|
|
|
|
MAP-ER-DataTypes gsm_map.er
|
|
|
|
MAP-SM-DataTypes gsm_map.sm
|
|
|
|
MAP-MS-DataTypes gsm_map.ms
|
|
|
|
MAP-LCS-DataTypes gsm_map.lcs
|
|
|
|
MAP-GR-DataTypes gsm_map.gr
|
|
|
|
MAP-CH-DataTypes gsm_map.ch
|
|
|
|
|
|
|
|
MAP-Errors gsm_map
|
|
|
|
MAP-LocationServiceOperations gsm_map
|
|
|
|
MAP-Group-Call-Operations gsm_map
|
|
|
|
MAP-ShortMessageServiceOperations gsm_map
|
|
|
|
MAP-SupplementaryServiceOperations gsm_map
|
|
|
|
MAP-CallHandlingOperations gsm_map
|
|
|
|
MAP-OperationAndMaintenanceOperations gsm_map
|
|
|
|
MAP-MobileServiceOperations gsm_map
|
|
|
|
MAP-Protocol gsm_map
|
|
|
|
MAP-DialogueInformation gsm_map.dialogue
|
|
|
|
MAP-ApplicationContexts gsm_map
|
|
|
|
SS-DataTypes gsm_ss
|
|
|
|
SS-Operations gsm_ss
|
|
|
|
DummyMAP gsm_old
|
2004-11-02 01:19:23 +00:00
|
|
|
|
|
|
|
#.EXPORTS
|
2005-07-26 20:04:16 +00:00
|
|
|
AddressString
|
2005-11-25 20:18:36 +00:00
|
|
|
Add-GeographicalInformation
|
|
|
|
AgeOfLocationInformation
|
2005-08-03 20:51:54 +00:00
|
|
|
AlertingPattern
|
2005-11-25 20:18:36 +00:00
|
|
|
AreaEventInfo
|
2007-07-04 13:27:44 +00:00
|
|
|
CallReferenceNumber
|
2005-11-25 20:18:36 +00:00
|
|
|
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
|
2007-07-04 13:27:44 +00:00
|
|
|
GPRSMSClass
|
2007-02-16 21:02:19 +00:00
|
|
|
GSMMAPLocalErrorcode
|
2005-11-25 20:18:36 +00:00
|
|
|
GSN-Address
|
|
|
|
IMEI
|
|
|
|
IMSI
|
|
|
|
InterrogateSS-Res
|
2005-08-03 20:51:54 +00:00
|
|
|
ISDN-AddressString
|
|
|
|
ISDN-SubaddressString
|
2006-01-20 19:39:38 +00:00
|
|
|
LAIFixedLength
|
2005-08-03 20:51:54 +00:00
|
|
|
LCSClientExternalID
|
|
|
|
LCSClientName
|
|
|
|
LCSRequestorID
|
|
|
|
LCSCodeword
|
|
|
|
LCSServiceTypeID
|
2005-11-25 20:18:36 +00:00
|
|
|
LCS-ReferenceNumber
|
2005-08-03 20:51:54 +00:00
|
|
|
LCS-QoS
|
2005-11-25 20:18:36 +00:00
|
|
|
LocationInformation
|
|
|
|
LocationType
|
|
|
|
LSAIdentity
|
|
|
|
MS-Classmark2
|
|
|
|
NewPassword
|
|
|
|
NotificationToMSUser
|
|
|
|
OfferedCamel4Functionalities
|
|
|
|
ProtectedPayload
|
|
|
|
QoS-Subscribed
|
|
|
|
RAIdentity
|
|
|
|
RegisterCC-EntryRes
|
|
|
|
RegisterSS-Arg
|
|
|
|
SubscriberState
|
|
|
|
SecurityHeader
|
|
|
|
SupportedCamelPhases
|
2005-08-03 20:51:54 +00:00
|
|
|
SupportedGADShapes
|
2007-07-04 13:27:44 +00:00
|
|
|
SuppressionOfAnnouncement
|
2005-11-25 20:18:36 +00:00
|
|
|
SS-Code
|
|
|
|
SS-Status
|
2005-08-03 20:51:54 +00:00
|
|
|
SS-Info
|
|
|
|
SS-ForBS-Code
|
2005-11-25 20:18:36 +00:00
|
|
|
USSD-DataCodingScheme
|
|
|
|
USSD-String
|
2007-06-18 21:03:59 +00:00
|
|
|
USSD-Arg
|
|
|
|
USSD-Res
|
2005-11-25 20:18:36 +00:00
|
|
|
UU-Data
|
2007-06-18 21:03:59 +00:00
|
|
|
VelocityEstimate
|
|
|
|
#.END
|
|
|
|
#.REGISTER
|
|
|
|
MAP-DialoguePDU B "0.4.0.0.1.1.1.1" "map-DialogueAS"
|
2005-11-25 20:18:36 +00:00
|
|
|
|
2007-08-29 16:10:47 +00:00
|
|
|
# This table creates the value_sting to name GSM MAP operation codes and errors
|
|
|
|
# in file packet-camel-table.c which is included in the template file
|
|
|
|
#
|
2007-07-04 13:27:44 +00:00
|
|
|
#.TABLE_BODY OPERATION
|
2007-08-29 16:10:47 +00:00
|
|
|
{ %(&operationCode)s, "%(_ident)s" },
|
2007-07-04 13:27:44 +00:00
|
|
|
#.END
|
|
|
|
|
2007-08-29 16:10:47 +00:00
|
|
|
#.TABLE2_BODY ERROR
|
|
|
|
{ %(&errorCode)s, "%(_ident)s" },
|
2007-07-04 13:27:44 +00:00
|
|
|
#.END
|
|
|
|
|
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
# Conformance for ROS stuff
|
2005-12-19 19:34:52 +00:00
|
|
|
|
|
|
|
#.FN_BODY InvokeParameter
|
2007-05-13 20:58:29 +00:00
|
|
|
offset = dissect_invokeData(tree, tvb, offset, actx);
|
2005-12-19 19:34:52 +00:00
|
|
|
|
|
|
|
#.FN_BODY ReturnResultParameter
|
2007-05-13 20:58:29 +00:00
|
|
|
offset = dissect_returnResultData(tree, tvb, offset, actx);
|
2005-12-19 19:34:52 +00:00
|
|
|
|
|
|
|
#.FN_BODY ReturnErrorParameter
|
2007-05-13 20:58:29 +00:00
|
|
|
offset = dissect_returnErrorData(tree, tvb, offset, actx);
|
2005-12-19 19:34:52 +00:00
|
|
|
|
2007-02-16 21:02:19 +00:00
|
|
|
#.FN_PARS GSMMAPOperationLocalvalue
|
2005-12-19 19:34:52 +00:00
|
|
|
|
|
|
|
VAL_PTR = &opcode
|
|
|
|
|
2007-02-16 21:02:19 +00:00
|
|
|
#.FN_BODY GSMMAPOperationLocalvalue
|
2005-12-19 19:34:52 +00:00
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
2007-05-13 20:58:29 +00:00
|
|
|
if (check_col(actx->pinfo->cinfo, COL_INFO)){
|
2007-10-23 05:50:00 +00:00
|
|
|
col_append_str(actx->pinfo->cinfo, COL_INFO, gsm_map_opr_code(opcode));
|
2005-12-19 19:34:52 +00:00
|
|
|
}
|
|
|
|
|
2007-02-16 21:02:19 +00:00
|
|
|
#.FN_PARS GSMMAPLocalErrorcode
|
2005-12-19 19:34:52 +00:00
|
|
|
|
|
|
|
VAL_PTR = &errorCode
|
2007-06-18 21:03:59 +00:00
|
|
|
# End ROS
|
2005-01-26 20:07:35 +00:00
|
|
|
#----------------------------------------------------------------------------------------
|
2005-08-03 20:51:54 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_PARS PrivateExtension/extId FN_VARIANT = _str VAL_PTR = &obj_id
|
2005-01-26 20:07:35 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY PrivateExtension/extType
|
|
|
|
proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
|
|
|
|
if (obj_id){
|
|
|
|
offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, tree);
|
|
|
|
}else{
|
|
|
|
call_dissector(data_handle, tvb, actx->pinfo, tree);
|
|
|
|
offset = tvb_length_remaining(tvb,offset);
|
|
|
|
}
|
2005-08-03 20:51:54 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY AddressString VAL_PTR = ¶meter_tvb
|
2005-01-26 20:07:35 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
char *digit_str;
|
2006-05-03 18:57:32 +00:00
|
|
|
guint8 octet;
|
|
|
|
guint8 na;
|
|
|
|
guint8 np;
|
|
|
|
proto_tree *subtree;
|
2005-01-26 20:07:35 +00:00
|
|
|
|
2005-08-03 20:51:54 +00:00
|
|
|
%(DEFAULT_BODY)s
|
2005-01-26 20:07:35 +00:00
|
|
|
|
2005-02-03 21:22:09 +00:00
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_isdn_address_string);
|
2006-05-03 18:57:32 +00:00
|
|
|
|
2007-12-05 21:58:58 +00:00
|
|
|
proto_tree_add_item(subtree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE);
|
|
|
|
proto_tree_add_item(subtree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE);
|
|
|
|
proto_tree_add_item(subtree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE);
|
2005-01-26 20:07:35 +00:00
|
|
|
|
|
|
|
digit_str = unpack_digits(parameter_tvb, 1);
|
|
|
|
|
2007-12-05 21:58:58 +00:00
|
|
|
proto_tree_add_string(subtree, hf_gsm_map_address_digits, parameter_tvb, 1, -1, digit_str);
|
2006-05-03 18:57:32 +00:00
|
|
|
|
|
|
|
octet = tvb_get_guint8(parameter_tvb,0);
|
|
|
|
na = (octet & 0x70)>>4;
|
|
|
|
np = octet & 0x0f;
|
|
|
|
if ((na == 1) && (np==1))/*International Number & E164*/
|
|
|
|
dissect_e164_cc(parameter_tvb, subtree, 1, TRUE);
|
2008-01-09 21:14:01 +00:00
|
|
|
else if(np==6)
|
|
|
|
dissect_e212_mcc_mnc(parameter_tvb, subtree, 1);
|
2005-01-26 20:07:35 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY TBCD-STRING VAL_PTR = ¶meter_tvb
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
char *digit_str;
|
2005-05-11 21:46:16 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
%(DEFAULT_BODY)s
|
2005-07-11 19:24:30 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
2005-08-03 20:51:54 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
digit_str = unpack_digits(parameter_tvb, 0);
|
|
|
|
proto_tree_add_string(tree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, digit_str);
|
2005-08-03 20:51:54 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#----------------------------------------------------------------------------------------
|
|
|
|
#.FN_BODY LongSignalInfo VAL_PTR = ¶meter_tvb
|
|
|
|
#
|
|
|
|
#7.6.9.1 AN-apdu
|
|
|
|
#This parameter includes one or two concatenated complete 3GPP TS 25.413 or 3GPP TS 48.006 [48] messages, as
|
|
|
|
#described in 3GPP TS 23.009 and 3GPP TS 29.010. The access network protocol ID indicates that the message or
|
|
|
|
#messages are according to either 3GPP TS 48.006 [48] or 3GPP TS 25.413. For the coding of the messages see 3GPP
|
|
|
|
#TS 25.413, 3GPP TS 48.006 [48] and 3GPP TS 48.008 [49].
|
2005-07-11 19:24:30 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
2006-05-03 18:57:32 +00:00
|
|
|
guint8 octet;
|
2007-06-18 21:03:59 +00:00
|
|
|
guint8 length;
|
|
|
|
tvbuff_t *next_tvb;
|
2006-05-03 18:57:32 +00:00
|
|
|
proto_tree *subtree;
|
2005-07-11 19:24:30 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
|
2005-08-03 20:51:54 +00:00
|
|
|
%(DEFAULT_BODY)s
|
2005-07-11 19:24:30 +00:00
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LongSignalInfo);
|
2006-05-03 18:57:32 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
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, actx->pinfo, tree);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
/* ts3G-25413 */
|
|
|
|
case 2:
|
|
|
|
call_dissector(ranap_handle, parameter_tvb, actx->pinfo, tree);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
2005-07-11 19:24:30 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
}
|
|
|
|
# Set SENT/RECEIVED depending if ISDN-AddressString or AddressString is used.
|
|
|
|
# as it's a CHOICE only one is present.
|
|
|
|
#.FN_BODY SM-RP-OAold/serviceCentreAddressOA
|
|
|
|
actx->pinfo->p2p_dir = P2P_DIR_SENT;
|
|
|
|
%(DEFAULT_BODY)s
|
2005-07-11 19:24:30 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY SM-RP-OA/serviceCentreAddressOA
|
|
|
|
actx->pinfo->p2p_dir = P2P_DIR_SENT;
|
|
|
|
%(DEFAULT_BODY)s
|
2005-02-03 21:22:09 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY SM-RP-OAold/msisdn
|
|
|
|
actx->pinfo->p2p_dir = P2P_DIR_RECV;
|
|
|
|
%(DEFAULT_BODY)s
|
2006-05-03 18:57:32 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY SM-RP-OA/msisdn
|
|
|
|
actx->pinfo->p2p_dir = P2P_DIR_RECV;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
2007-06-20 21:54:40 +00:00
|
|
|
#.FN_BODY SignalInfo VAL_PTR = ¶meter_tvb
|
2007-06-18 21:03:59 +00:00
|
|
|
tvbuff_t *parameter_tvb;
|
2005-08-03 20:51:54 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
actx->value_ptr = parameter_tvb;
|
|
|
|
|
|
|
|
#.FN_BODY ForwardSM-Arg
|
2005-08-03 20:51:54 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!actx->value_ptr)
|
|
|
|
return offset;
|
|
|
|
dissector_try_port(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
|
|
|
|
|
2007-06-20 21:54:40 +00:00
|
|
|
#.FN_BODY MO-ForwardSM-Arg
|
|
|
|
|
|
|
|
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!actx->value_ptr)
|
|
|
|
return offset;
|
|
|
|
dissector_try_port(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
|
|
|
|
|
|
|
|
#.FN_BODY MT-ForwardSM-Arg
|
|
|
|
|
|
|
|
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!actx->value_ptr)
|
|
|
|
return offset;
|
|
|
|
dissector_try_port(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);
|
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY SS-Status VAL_PTR = ¶meter_tvb
|
2005-02-14 16:21:47 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
2005-06-25 17:25:44 +00:00
|
|
|
guint8 octet;
|
2005-02-14 16:21:47 +00:00
|
|
|
|
2005-08-03 20:51:54 +00:00
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
2005-02-14 16:21:47 +00:00
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2005-06-25 17:25:44 +00:00
|
|
|
octet = tvb_get_guint8(parameter_tvb,0);
|
2005-02-14 16:21:47 +00:00
|
|
|
|
2005-06-25 17:25:44 +00:00
|
|
|
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);
|
2005-02-14 16:21:47 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY Ext-SS-Status VAL_PTR = ¶meter_tvb
|
2005-06-25 17:25:44 +00:00
|
|
|
/* Note Ext-SS-Status can have more than one byte */
|
2005-01-26 20:07:35 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
guint8 octet;
|
|
|
|
|
2005-08-03 20:51:54 +00:00
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
2005-02-03 21:22:09 +00:00
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
2005-01-26 20:07:35 +00:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
2005-01-24 22:33:36 +00:00
|
|
|
#.END
|
2005-07-04 19:09:38 +00:00
|
|
|
|
2006-06-15 21:12:47 +00:00
|
|
|
#.FN_BODY USSD-DataCodingScheme VAL_PTR = ¶meter_tvb
|
|
|
|
/*The structure of the USSD-DataCodingScheme is defined by
|
|
|
|
* the Cell Broadcast Data Coding Scheme as described in
|
|
|
|
* TS 3GPP TS 23.038
|
2008-01-06 21:55:30 +00:00
|
|
|
* TODO: Should dissect_cbs_data_coding_scheme return encoding type? - like 7bit Alphabet
|
2006-06-15 21:12:47 +00:00
|
|
|
*/
|
|
|
|
tvbuff_t *parameter_tvb;
|
2008-01-06 21:55:30 +00:00
|
|
|
proto_tree *subtree;
|
|
|
|
|
2006-06-15 21:12:47 +00:00
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
2008-01-06 21:55:30 +00:00
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_cbs_data_coding);
|
|
|
|
dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree);
|
2006-03-27 18:48:33 +00:00
|
|
|
|
2006-06-15 21:12:47 +00:00
|
|
|
#.FN_BODY USSD-String VAL_PTR = ¶meter_tvb
|
2006-03-27 18:48:33 +00:00
|
|
|
|
2006-06-15 21:12:47 +00:00
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
int length;
|
2006-03-27 18:48:33 +00:00
|
|
|
guint8 out_len;
|
2008-01-08 05:29:38 +00:00
|
|
|
gchar *utf8_text = NULL;
|
|
|
|
GIConv cd;
|
|
|
|
GError *l_conv_error = NULL;
|
2006-06-15 21:12:47 +00:00
|
|
|
/* XXX - The maximum item label length is 240. Does this really need to be 1024?
|
|
|
|
* use ep_alloc ?
|
|
|
|
*/
|
2007-02-16 21:02:19 +00:00
|
|
|
static unsigned char bigbuf[1024];
|
2006-03-27 18:48:33 +00:00
|
|
|
|
2006-06-15 21:12:47 +00:00
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2008-01-08 05:29:38 +00:00
|
|
|
length = tvb_length_remaining(parameter_tvb,0);
|
|
|
|
switch(sms_encoding){
|
|
|
|
case SMS_ENCODING_7BIT:
|
|
|
|
case SMS_ENCODING_7BIT_LANG:
|
2008-01-06 21:55:30 +00:00
|
|
|
out_len = gsm_sms_char_7bit_unpack(0, length, sizeof(bigbuf),
|
2006-06-15 21:12:47 +00:00
|
|
|
tvb_get_ptr(parameter_tvb, 0, length), bigbuf);
|
|
|
|
|
2008-01-06 21:55:30 +00:00
|
|
|
bigbuf[out_len] = '\0';
|
|
|
|
gsm_sms_char_ascii_decode(bigbuf, bigbuf, out_len);
|
|
|
|
bigbuf[1023] = '\0';
|
|
|
|
proto_tree_add_text(tree, parameter_tvb, 0, length, "USSD String: %%s", bigbuf);
|
2008-01-08 05:29:38 +00:00
|
|
|
break;
|
|
|
|
case SMS_ENCODING_8BIT:
|
|
|
|
proto_tree_add_text(tree, parameter_tvb , 0, length, "USSD String: %%s",tvb_get_ptr(parameter_tvb, 0, length));
|
|
|
|
break;
|
|
|
|
case SMS_ENCODING_UCS2:
|
|
|
|
case SMS_ENCODING_UCS2_LANG:
|
|
|
|
if ((cd = g_iconv_open("UTF-8","UCS-2BE")) != (GIConv) -1)
|
|
|
|
{
|
|
|
|
utf8_text = g_convert_with_iconv(parameter_tvb->real_data , length , cd , NULL , NULL , &l_conv_error);
|
|
|
|
if(!l_conv_error)
|
|
|
|
proto_tree_add_text(tree , parameter_tvb , 0 , length, "USSD String: %%s", utf8_text);
|
|
|
|
else
|
|
|
|
proto_tree_add_text(tree , parameter_tvb , 0 , length, "USSD String: g_convert_with_iconv FAILED");
|
|
|
|
if(utf8_text)
|
|
|
|
g_free(utf8_text);
|
|
|
|
g_iconv_close(cd);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
proto_tree_add_text(tree , parameter_tvb , 0 , length, "USSD String: g_iconv_open FAILED contact wireshark");
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
2008-01-06 21:55:30 +00:00
|
|
|
}
|
2006-06-15 21:12:47 +00:00
|
|
|
|
2005-07-11 19:24:30 +00:00
|
|
|
#.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);
|
|
|
|
|
2005-08-03 20:51:54 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY PDP-Type VAL_PTR = ¶meter_tvb
|
2005-07-11 19:24:30 +00:00
|
|
|
guint8 pdp_type_org;
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
|
|
|
|
|
2005-08-03 20:51:54 +00:00
|
|
|
%(DEFAULT_BODY)s
|
2005-07-11 19:24:30 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY QoS-Subscribed VAL_PTR = ¶meter_tvb
|
2005-07-11 19:24:30 +00:00
|
|
|
|
2005-08-03 20:51:54 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
2005-07-11 19:24:30 +00:00
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
2005-08-22 16:19:31 +00:00
|
|
|
de_sm_qos(parameter_tvb, tree, 0, 3, NULL,0);
|
2005-07-11 19:24:30 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY Ext-QoS-Subscribed VAL_PTR = ¶meter_tvb
|
2005-08-03 20:51:54 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
2005-07-11 19:24:30 +00:00
|
|
|
|
2006-01-19 18:20:14 +00:00
|
|
|
if (!parameter_tvb)
|
2005-07-11 19:24:30 +00:00
|
|
|
return offset;
|
2008-01-04 12:39:52 +00:00
|
|
|
dissect_gsm_map_ext_qos_subscribed(tvb, actx->pinfo, tree, actx);
|
2006-01-20 19:39:38 +00:00
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY GSN-Address VAL_PTR = ¶meter_tvb
|
2006-01-20 19:39:38 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
guint8 octet;
|
2006-01-22 21:16:33 +00:00
|
|
|
proto_tree *subtree;
|
2006-01-20 19:39:38 +00:00
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
2007-12-05 21:58:58 +00:00
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_pdptypenumber);
|
2006-01-22 21:16:33 +00:00
|
|
|
|
2006-01-20 19:39:38 +00:00
|
|
|
octet = tvb_get_guint8(parameter_tvb,0);
|
|
|
|
switch(octet){
|
|
|
|
case 0x04: /* IPv4 */
|
2006-01-22 21:16:33 +00:00
|
|
|
proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
|
2006-01-20 19:39:38 +00:00
|
|
|
break;
|
|
|
|
case 0x50: /* IPv4 */
|
2006-01-22 21:16:33 +00:00
|
|
|
proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
|
2006-01-20 19:39:38 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
2006-01-22 21:16:33 +00:00
|
|
|
}
|
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY RAIdentity VAL_PTR = ¶meter_tvb
|
2006-01-22 21:16:33 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
proto_tree *subtree;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
2007-12-05 21:58:58 +00:00
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RAIdentity);
|
2006-01-22 21:16:33 +00:00
|
|
|
de_gmm_rai(parameter_tvb, subtree, 0, 3, NULL,0);
|
|
|
|
|
2007-06-18 21:03:59 +00:00
|
|
|
#.FN_BODY LAIFixedLength VAL_PTR = ¶meter_tvb
|
2006-01-31 05:46:36 +00:00
|
|
|
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
proto_tree *subtree;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
2007-12-05 21:58:58 +00:00
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LAIFixedLength);
|
2006-01-31 05:46:36 +00:00
|
|
|
dissect_e212_mcc_mnc(parameter_tvb, subtree, 0);
|
|
|
|
|
2006-07-11 19:46:52 +00:00
|
|
|
#.FN_BODY RadioResourceInformation VAL_PTR = ¶meter_tvb
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
proto_tree *subtree;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2007-12-05 21:58:58 +00:00
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RadioResourceInformation);
|
2006-07-11 19:46:52 +00:00
|
|
|
be_chan_type(tvb, subtree, 0, tvb_length_remaining(tvb,0), NULL, 0);
|
|
|
|
|
2007-02-19 06:09:33 +00:00
|
|
|
#.FN_BODY RANAP-ServiceHandover VAL_PTR = ¶meter_tvb
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
asn1_ctx_t asn1_ctx;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2007-05-13 20:58:29 +00:00
|
|
|
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
|
2007-02-19 06:09:33 +00:00
|
|
|
dissect_ranap_Service_Handover(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_ranap_service_Handover);
|
|
|
|
|
|
|
|
#.FN_BODY IntegrityProtectionInformation VAL_PTR = ¶meter_tvb
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
asn1_ctx_t asn1_ctx;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2007-05-13 20:58:29 +00:00
|
|
|
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
|
2008-01-11 07:29:27 +00:00
|
|
|
dissect_ranap_IntegrityProtectionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_IntegrityProtectionInformation);
|
2007-02-19 06:09:33 +00:00
|
|
|
|
|
|
|
#.FN_BODY EncryptionInformation VAL_PTR = ¶meter_tvb
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
asn1_ctx_t asn1_ctx;
|
|
|
|
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
|
|
|
|
if (!parameter_tvb)
|
|
|
|
return offset;
|
|
|
|
|
2007-05-13 20:58:29 +00:00
|
|
|
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
|
2008-01-11 07:29:27 +00:00
|
|
|
dissect_ranap_EncryptionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_EncryptionInformation);
|
2007-02-19 06:09:33 +00:00
|
|
|
|
2007-12-05 21:58:58 +00:00
|
|
|
#.FN_PARS ProtocolId VAL_PTR = &ProtocolId
|
|
|
|
|
|
|
|
#.FN_BODY ExternalSignalInfo
|
|
|
|
guint8 octet;
|
|
|
|
guint8 length;
|
|
|
|
tvbuff_t *next_tvb;
|
|
|
|
proto_tree *subtree;
|
|
|
|
|
|
|
|
ProtocolId = 0xffffffff;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!actx->value_ptr)
|
|
|
|
return offset;
|
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo);
|
|
|
|
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(actx->value_ptr,0);
|
|
|
|
length = tvb_get_guint8(actx->value_ptr,1);
|
|
|
|
if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
|
|
|
|
next_tvb = tvb_new_subset(actx->value_ptr, 2, -1, -1);
|
|
|
|
dissect_bssmap(next_tvb, actx->pinfo, subtree);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
/* ets-300102-1 (~Q.931 ) */
|
|
|
|
case 4:
|
|
|
|
octet = tvb_get_guint8(actx->value_ptr,0);
|
|
|
|
length = tvb_get_guint8(actx->value_ptr,1);
|
|
|
|
if ( octet == 4 )
|
|
|
|
dissect_q931_bearer_capability_ie(actx->value_ptr, 2, length, subtree);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-24 22:33:36 +00:00
|
|
|
#----------------------------------------------------------------------------------------
|
2004-11-02 01:19:23 +00:00
|
|
|
#.TYPE_ATTR
|
2005-06-25 17:25:44 +00:00
|
|
|
SS-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals)
|
2004-11-02 01:19:23 +00:00
|
|
|
Teleservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals)
|
2005-04-15 08:29:50 +00:00
|
|
|
Bearerservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals)
|
2005-07-04 19:09:38 +00:00
|
|
|
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)
|
2005-07-11 19:24:30 +00:00
|
|
|
ChargingCharacteristics TYPE = FT_UINT16 DISPLAY = BASE_DEC BITMASK = 0x0f00 STRINGS = VALS(chargingcharacteristics_values)
|
2007-12-05 21:58:58 +00:00
|
|
|
RoutingInfo TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gsm_map_ch_RoutingInfo_vals)
|
2004-11-02 01:19:23 +00:00
|
|
|
#.END
|