forked from osmocom/wireshark
Dissect some more fields
svn path=/trunk/; revision=14896
This commit is contained in:
parent
18527dc22e
commit
842d2f25df
|
@ -1020,6 +1020,18 @@ Ext2-QoS-Subscribed ::= OCTET STRING (SIZE (1..3))
|
|||
|
||||
ChargingCharacteristics ::= OCTET STRING (SIZE (2))
|
||||
-- Octets are coded according to 3GPP TS 32.015.
|
||||
-- From 3GPP TS 32.015.
|
||||
--
|
||||
-- Descriptions for the bits of the flag set:
|
||||
--
|
||||
-- Bit 1: H (Hot billing) := '00000001'B
|
||||
-- Bit 2: F (Flat rate) := '00000010'B
|
||||
-- Bit 3: P (Prepaid service) := '00000100'B
|
||||
-- Bit 4: N (Normal billing) := '00001000'B
|
||||
-- Bit 5: - (Reserved, set to 0) := '00010000'B
|
||||
-- Bit 6: - (Reserved, set to 0) := '00100000'B
|
||||
-- Bit 7: - (Reserved, set to 0) := '01000000'B
|
||||
-- Bit 8: - (Reserved, set to 0) := '10000000'B
|
||||
|
||||
LSAOnlyAccessIndicator ::= ENUMERATED {
|
||||
accessOutsideLSAsAllowed (0),
|
||||
|
|
|
@ -138,7 +138,29 @@ ModificationRequestFor-CF-Info/noReplyConditionTime ext-noReplyConditionTime
|
|||
|
||||
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
|
||||
|
@ -198,15 +220,18 @@ ModificationRequestFor-CF-Info/noReplyConditionTime ext-noReplyConditionTime
|
|||
VAL_PTR = &AccessNetworkProtocolId
|
||||
|
||||
#----------------------------------------------------------------------------------------
|
||||
#.FN_BODY SignalInfo
|
||||
#.FN_HDR SignalInfo
|
||||
|
||||
tvbuff_t *parameter_tvb;
|
||||
guint8 octet;
|
||||
guint8 length;
|
||||
tvbuff_t *next_tvb;
|
||||
|
||||
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
||||
¶meter_tvb);
|
||||
#.FN_PARS SignalInfo
|
||||
|
||||
VAL_PTR = ¶meter_tvb
|
||||
|
||||
#.FN_FTR SignalInfo
|
||||
if (!parameter_tvb)
|
||||
return offset;
|
||||
switch (protocolId){
|
||||
|
@ -237,15 +262,19 @@ ModificationRequestFor-CF-Info/noReplyConditionTime ext-noReplyConditionTime
|
|||
}
|
||||
|
||||
#----------------------------------------------------------------------------------------
|
||||
#.FN_BODY LongSignalInfo
|
||||
#.FN_HDR LongSignalInfo
|
||||
|
||||
tvbuff_t *parameter_tvb;
|
||||
guint8 octet;
|
||||
guint8 length;
|
||||
tvbuff_t *next_tvb;
|
||||
|
||||
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
|
||||
¶meter_tvb);
|
||||
#.FN_PARS LongSignalInfo
|
||||
|
||||
VAL_PTR = ¶meter_tvb
|
||||
|
||||
|
||||
#.FN_FTR LongSignalInfo
|
||||
if (!parameter_tvb)
|
||||
return offset;
|
||||
switch (AccessNetworkProtocolId){
|
||||
|
@ -274,6 +303,70 @@ ModificationRequestFor-CF-Info/noReplyConditionTime ext-noReplyConditionTime
|
|||
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)
|
||||
|
@ -283,6 +376,7 @@ TeleserviceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice
|
|||
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
|
||||
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@ static int hf_gsm_map_extension = -1;
|
|||
static int hf_gsm_map_nature_of_number = -1;
|
||||
static int hf_gsm_map_number_plan = -1;
|
||||
static int hf_gsm_map_isdn_address_digits = -1;
|
||||
static int hf_gsm_map_address_digits = -1;
|
||||
static int hf_gsm_map_servicecentreaddress_digits = -1;
|
||||
static int hf_gsm_map_imsi_digits = -1;
|
||||
static int hf_gsm_map_Ss_Status_unused = -1;
|
||||
|
@ -80,6 +81,13 @@ static int hf_gsm_map_Ss_Status_q_bit = -1;
|
|||
static int hf_gsm_map_Ss_Status_p_bit = -1;
|
||||
static int hf_gsm_map_Ss_Status_r_bit = -1;
|
||||
static int hf_gsm_map_Ss_Status_a_bit = -1;
|
||||
static int hf_gsm_map_notification_to_forwarding_party = -1;
|
||||
static int hf_gsm_map_redirecting_presentation = -1;
|
||||
static int hf_gsm_map_notification_to_calling_party = -1;
|
||||
static int hf_gsm_map_forwarding_reason = -1;
|
||||
static int hf_gsm_map_pdp_type_org = -1;
|
||||
static int hf_gsm_map_etsi_pdp_type_number = -1;
|
||||
static int hf_gsm_map_ietf_pdp_type_number = -1;
|
||||
|
||||
#include "packet-gsm_map-hf.c"
|
||||
|
||||
|
@ -1244,6 +1252,92 @@ static const value_string Bearerservice_vals[] = {
|
|||
{ 0, NULL }
|
||||
};
|
||||
|
||||
/* ForwardingOptions
|
||||
|
||||
-- bit 8: notification to forwarding party
|
||||
-- 0 no notification
|
||||
-- 1 notification
|
||||
*/
|
||||
static const true_false_string notification_value = {
|
||||
"Notification",
|
||||
"No notification"
|
||||
};
|
||||
/*
|
||||
-- bit 7: redirecting presentation
|
||||
-- 0 no presentation
|
||||
-- 1 presentation
|
||||
*/
|
||||
static const true_false_string redirecting_presentation_value = {
|
||||
"Presentation",
|
||||
"No presentationn"
|
||||
};
|
||||
/*
|
||||
-- bit 6: notification to calling party
|
||||
-- 0 no notification
|
||||
-- 1 notification
|
||||
*/
|
||||
/*
|
||||
-- bit 5: 0 (unused)
|
||||
-- bits 43: forwarding reason
|
||||
-- 00 ms not reachable
|
||||
-- 01 ms busy
|
||||
-- 10 no reply
|
||||
-- 11 unconditional when used in a SRI Result,
|
||||
-- or call deflection when used in a RCH Argument
|
||||
*/
|
||||
static const value_string forwarding_reason_values[] = {
|
||||
{0x0, "ms not reachable" },
|
||||
{0x1, "ms busy" },
|
||||
{0x2, "no reply" },
|
||||
{0x3, "unconditional when used in a SRI Result or call deflection when used in a RCH Argument" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
/*
|
||||
-- bits 21: 00 (unused)
|
||||
*/
|
||||
|
||||
static const value_string pdp_type_org_values[] = {
|
||||
{0x0, "ETSI" },
|
||||
{0x1, "IETF" },
|
||||
{0xf, "Empty PDP type" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const value_string etsi_pdp_type_number_values[] = {
|
||||
{0x0, "Reserved, used in earlier version of this protocol" },
|
||||
{0x1, "PPP" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const value_string ietf_pdp_type_number_values[] = {
|
||||
{0x21, "IPv4 Address" },
|
||||
{0x57, "IPv6 Address" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
/*
|
||||
ChargingCharacteristics ::= OCTET STRING (SIZE (2))
|
||||
-- Octets are coded according to 3GPP TS 32.015.
|
||||
-- From 3GPP TS 32.015.
|
||||
--
|
||||
-- Descriptions for the bits of the flag set:
|
||||
--
|
||||
-- Bit 1: H (Hot billing) := '00000001'B
|
||||
-- Bit 2: F (Flat rate) := '00000010'B
|
||||
-- Bit 3: P (Prepaid service) := '00000100'B
|
||||
-- Bit 4: N (Normal billing) := '00001000'B
|
||||
-- Bit 5: - (Reserved, set to 0) := '00010000'B
|
||||
-- Bit 6: - (Reserved, set to 0) := '00100000'B
|
||||
-- Bit 7: - (Reserved, set to 0) := '01000000'B
|
||||
-- Bit 8: - (Reserved, set to 0) := '10000000'B
|
||||
*/
|
||||
static const value_string chargingcharacteristics_values[] = {
|
||||
{0x1, "H (Hot billing)" },
|
||||
{0x2, "F (Flat rate)" },
|
||||
{0x4, "P (Prepaid service)" },
|
||||
{0x8, "N (Normal billing)" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
/*--- proto_reg_handoff_gsm_map ---------------------------------------*/
|
||||
static void range_delete_callback(guint32 ssn)
|
||||
{
|
||||
|
@ -1420,7 +1514,7 @@ void proto_register_gsm_map(void) {
|
|||
{ &hf_gsm_map_nature_of_number,
|
||||
{ "Nature of number", "gsm_map.nature_of_number",
|
||||
FT_UINT8, BASE_HEX, VALS(gsm_map_nature_of_number_values), 0x70,
|
||||
"ature of number", HFILL }},
|
||||
"Nature of number", HFILL }},
|
||||
{ &hf_gsm_map_number_plan,
|
||||
{ "Number plan", "gsm_map.number_plan",
|
||||
FT_UINT8, BASE_HEX, VALS(gsm_map_number_plan_values), 0x0f,
|
||||
|
@ -1429,6 +1523,10 @@ void proto_register_gsm_map(void) {
|
|||
{ "ISDN Address digits", "gsm_map.isdn.adress.digits",
|
||||
FT_STRING, BASE_NONE, NULL, 0,
|
||||
"ISDN Address digits", HFILL }},
|
||||
{ &hf_gsm_map_address_digits,
|
||||
{ "Address digits", "gsm_map.adress.digits",
|
||||
FT_STRING, BASE_NONE, NULL, 0,
|
||||
"Address digits", HFILL }},
|
||||
{ &hf_gsm_map_servicecentreaddress_digits,
|
||||
{ "ServiceCentreAddress digits", "gsm_map.servicecentreaddress_digits",
|
||||
FT_STRING, BASE_NONE, NULL, 0,
|
||||
|
@ -1457,6 +1555,35 @@ void proto_register_gsm_map(void) {
|
|||
{ "A bit", "gsm_map.ss_status_a_bit",
|
||||
FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01,
|
||||
"A bit", HFILL }},
|
||||
{ &hf_gsm_map_notification_to_forwarding_party,
|
||||
{ "Notification to forwarding party", "gsm_map.notification_to_forwarding_party",
|
||||
FT_BOOLEAN, 8, TFS(¬ification_value), 0x80,
|
||||
"Notification to forwarding party", HFILL }},
|
||||
{ &hf_gsm_map_redirecting_presentation,
|
||||
{ "Redirecting presentation", "gsm_map.redirecting_presentation",
|
||||
FT_BOOLEAN, 8, TFS(&redirecting_presentation_value), 0x40,
|
||||
"Redirecting presentation", HFILL }},
|
||||
{ &hf_gsm_map_notification_to_calling_party,
|
||||
{ "Notification to calling party", "gsm_map.notification_to_clling_party",
|
||||
FT_BOOLEAN, 8, TFS(¬ification_value), 0x20,
|
||||
"Notification to calling party", HFILL }},
|
||||
{ &hf_gsm_map_forwarding_reason,
|
||||
{ "Forwarding reason", "gsm_map.forwarding_reason",
|
||||
FT_UINT8, BASE_HEX, VALS(forwarding_reason_values), 0x0c,
|
||||
"forwarding reason", HFILL }},
|
||||
{ &hf_gsm_map_pdp_type_org,
|
||||
{ "PDP Type Organization", "gsm_map.pdp_type_org",
|
||||
FT_UINT8, BASE_HEX, VALS(pdp_type_org_values), 0x0f,
|
||||
"PDP Type Organization", HFILL }},
|
||||
{ &hf_gsm_map_etsi_pdp_type_number,
|
||||
{ "PDP Type Number", "gsm_map.pdp_type_org",
|
||||
FT_UINT8, BASE_HEX, VALS(etsi_pdp_type_number_values), 0,
|
||||
"ETSI PDP Type Number", HFILL }},
|
||||
{ &hf_gsm_map_ietf_pdp_type_number,
|
||||
{ "PDP Type Number", "gsm_map.ietf_pdp_type_number",
|
||||
FT_UINT8, BASE_HEX, VALS(ietf_pdp_type_number_values), 0,
|
||||
"IETF PDP Type Number", HFILL }},
|
||||
|
||||
|
||||
#include "packet-gsm_map-hfarr.c"
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue