From dee9a1745aef39814d9314b932bfe527de277f62 Mon Sep 17 00:00:00 2001 From: Anders Broman Date: Fri, 5 Jan 2007 07:32:39 +0000 Subject: - Dissect IA5 digits - Update info column - Call subdissectors - fix some asn1 bugs - clean up .cnf file. svn path=/trunk/; revision=20325 --- asn1/ansi_map/ansi_map.asn | 12 +- asn1/ansi_map/ansi_map.cnf | 197 +++++++++---------------------- asn1/ansi_map/packet-ansi_map-template.c | 47 +++++++- 3 files changed, 104 insertions(+), 152 deletions(-) (limited to 'asn1') diff --git a/asn1/ansi_map/ansi_map.asn b/asn1/ansi_map/ansi_map.asn index d34e140673..fc74d55572 100644 --- a/asn1/ansi_map/ansi_map.asn +++ b/asn1/ansi_map/ansi_map.asn @@ -1715,11 +1715,11 @@ LocationRequestRes ::= [PRIVATE 18] SET { -- O 6.5.2.60 i dmh-BillingDigits [142] IMPLICIT DMH-BillingDigits OPTIONAL, -- O 6.5.2.61 i - dmh-RedirectionIndicator [88] DMH-RedirectionIndicator OPTIONAL, + dmh-RedirectionIndicator [88] IMPLICIT DMH-RedirectionIndicator OPTIONAL, -- O 6.5.2.62 j dmh-ServiceID [177] IMPLICIT DMH-ServiceID OPTIONAL, -- O 6.5.2.ei q - groupInformation [163] GroupInformation OPTIONAL, + groupInformation [163] IMPLICIT GroupInformation OPTIONAL, -- O 6.5.2.69 k mobileDirectoryNumber [93] IMPLICIT MobileDirectoryNumber OPTIONAL, -- O 6.5.2.80 i @@ -5785,7 +5785,7 @@ SystemOperatorCode ::= OCTET STRING -- 1 0 0 1 1 1 1 1 (0x9f) -- 1 0 0 0 0 0 0 1 (0x81) -- 0 1 0 1 1 0 0 1 (0x59)() --- SecondInterMSCCircuitID +-- SecondInterMSCCircuitID N.S0008-0 v 1.0 -- 6.5.2.ak (N.S0007-0 v 1.0) -- 1 0 1 1 1 1 1 1 (0x9f) @@ -5874,7 +5874,7 @@ DataPrivacyParameters ::= OCTET STRING -- 0 1 0 1 1 0 0 1 (0x59)(217) ISLPInformation ::= OCTET STRING --- 6.5.2.aw ReasonList +-- 6.5.2.aw ReasonList N.S0008-0 v 1.0 -- 1 0 0 1 1 1 1 1 (0x9f) -- 1 0 0 0 0 0 0 1 (0x81) -- 0 1 0 1 1 0 1 0 (0x5a)(218) @@ -5888,14 +5888,14 @@ ReasonList ::= ENUMERATED { required-parameters-unavailable (6) } --- 6.5.2.ay +-- 6.5.2.ay N.S0008-0 v 1.0 -- 1 0 0 1 1 1 1 1 (0x9f) -- 1 0 0 0 0 0 0 1 (0x81) -- 0 1 0 1 1 1 0 0 (0x5c)(220) TDMABandwidth ::= OCTET STRING --- 6.5.2.az +-- 6.5.2.az N.S0008-0 v 1.0 -- 1 0 0 1 1 1 1 1 (0x9f) -- 1 0 0 0 0 0 0 1 (0x81) -- 0 1 0 1 1 1 0 1 (0x5d)(221) diff --git a/asn1/ansi_map/ansi_map.cnf b/asn1/ansi_map/ansi_map.cnf index 152d44c02b..65776a711c 100644 --- a/asn1/ansi_map/ansi_map.cnf +++ b/asn1/ansi_map/ansi_map.cnf @@ -35,42 +35,26 @@ OriginationRequestRes #.FN_BODY RejectParameters -#.FN_PARS PrivateOperationCode - -VAL_PTR = &OperationCode - -#.FN_BODY PrivateOperationCode +#.FN_BODY PrivateOperationCode VAL_PTR = &OperationCode %(DEFAULT_BODY)s proto_tree_add_item(tree, hf_ansi_map_op_code_fam, tvb, offset-2,1,FALSE); proto_tree_add_item(tree, hf_ansi_map_op_code, tvb, offset-1,1,FALSE); -#.FN_PARS MINType - -VAL_PTR = ¶meter_tvb - -#.FN_BODY MINType +#.FN_BODY MINType VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_ansi_map_min_type(parameter_tvb,pinfo,tree); } -#.FN_PARS DigitsType - -VAL_PTR = ¶meter_tvb - -#.FN_BODY DigitsType +#.FN_BODY DigitsType VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_ansi_map_digits_type(parameter_tvb,pinfo,tree); } -#.FN_PARS Subaddress - -VAL_PTR = ¶meter_tvb - -#.FN_BODY Subaddress +#.FN_BODY Subaddress VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -78,10 +62,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.3 AlertCode -#.FN_PARS AlertCode -VAL_PTR = ¶meter_tvb - -#.FN_BODY AlertCode +#.FN_BODY AlertCode VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -89,10 +70,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.5 AnnouncementCode -#.FN_PARS AnnouncementCode -VAL_PTR = ¶meter_tvb - -#.FN_BODY AnnouncementCode +#.FN_BODY AnnouncementCode VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -100,10 +78,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.14 AuthorizationPeriod -#.FN_PARS AuthorizationPeriod -VAL_PTR = ¶meter_tvb - -#.FN_BODY AuthorizationPeriod +#.FN_BODY AuthorizationPeriod VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -112,10 +87,7 @@ VAL_PTR = ¶meter_tvb # 6.5.2.16 BillingID -#.FN_PARS BillingID -VAL_PTR = ¶meter_tvb - -#.FN_BODY BillingID +#.FN_BODY BillingID VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -123,30 +95,21 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.20 CallingFeaturesIndicator -#.FN_PARS CallingFeaturesIndicator -VAL_PTR = ¶meter_tvb - -#.FN_BODY CallingFeaturesIndicator +#.FN_BODY CallingFeaturesIndicator VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_ansi_map_callingfeaturesindicator(parameter_tvb,pinfo,tree); } # 6.5.2.29 CDMACallMode -#.FN_PARS CDMACallMode -VAL_PTR = ¶meter_tvb - -#.FN_BODY CDMACallMode +#.FN_BODY CDMACallMode VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_ansi_map_cdmacallmode(parameter_tvb,pinfo,tree); } # 6.5.2.41 CDMAStationClassMark -#.FN_PARS CDMAStationClassMark -VAL_PTR = ¶meter_tvb - -#.FN_BODY CDMAStationClassMark +#.FN_BODY CDMAStationClassMark VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -154,10 +117,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.47 ChannelData -#.FN_PARS ChannelData -VAL_PTR = ¶meter_tvb - -#.FN_BODY ChannelData +#.FN_BODY ChannelData VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -165,10 +125,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.50 ConfidentialityModes -#.FN_PARS ConfidentialityModes -VAL_PTR = ¶meter_tvb - -#.FN_BODY ConfidentialityModes +#.FN_BODY ConfidentialityModes VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -176,10 +133,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.53 DeniedAuthorizationPeriod -#.FN_PARS DeniedAuthorizationPeriod -VAL_PTR = ¶meter_tvb - -#.FN_BODY DeniedAuthorizationPeriod +#.FN_BODY DeniedAuthorizationPeriod VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -187,10 +141,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.64 ExtendedMSCID -#.FN_PARS ExtendedMSCID -VAL_PTR = ¶meter_tvb - -#.FN_BODY ExtendedMSCID +#.FN_BODY ExtendedMSCID VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -198,20 +149,14 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.65 ExtendedSystemMyTypeCode -#.FN_PARS ExtendedSystemMyTypeCode -VAL_PTR = ¶meter_tvb - -#.FN_BODY ExtendedSystemMyTypeCode +#.FN_BODY ExtendedSystemMyTypeCode VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_ansi_map_extendedsystemmytypecode(parameter_tvb,pinfo,tree); } #6.5.2.71 HandoffState -#.FN_PARS HandoffState -VAL_PTR = ¶meter_tvb - -#.FN_BODY HandoffState +#.FN_BODY HandoffState VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -219,10 +164,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.72 InterMSCCircuitID -#.FN_PARS InterMSCCircuitID -VAL_PTR = ¶meter_tvb - -#.FN_BODY InterMSCCircuitID +#.FN_BODY InterMSCCircuitID VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -230,10 +172,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.78 MessageWaitingNotificationCount -#.FN_PARS MessageWaitingNotificationCount -VAL_PTR = ¶meter_tvb - -#.FN_BODY MessageWaitingNotificationCount +#.FN_BODY MessageWaitingNotificationCount VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -241,10 +180,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.79 MessageWaitingNotificationType -#.FN_PARS MessageWaitingNotificationType -VAL_PTR = ¶meter_tvb - -#.FN_BODY MessageWaitingNotificationType +#.FN_BODY MessageWaitingNotificationType VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -253,20 +189,15 @@ VAL_PTR = ¶meter_tvb # 6.5.2.82 MSCID -#.FN_PARS MSCID -VAL_PTR = ¶meter_tvb - -#.FN_BODY MSCID +#.FN_BODY MSCID VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_ansi_map_mscid(parameter_tvb,pinfo,tree); } -# 6.5.2.84 MSLocation -#.FN_PARS MSLocation -VAL_PTR = ¶meter_tvb -#.FN_BODY MSLocation +# 6.5.2.84 MSLocation +#.FN_BODY MSLocation VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -274,10 +205,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.85 NAMPSCallMode -#.FN_PARS NAMPSCallMode -VAL_PTR = ¶meter_tvb - -#.FN_BODY NAMPSCallMode +#.FN_BODY NAMPSCallMode VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -285,10 +213,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.86 NAMPSChannelData -#.FN_PARS NAMPSChannelData -VAL_PTR = ¶meter_tvb - -#.FN_BODY NAMPSChannelData +#.FN_BODY NAMPSChannelData VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -296,10 +221,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.88 OneTimeFeatureIndicator -#.FN_PARS OneTimeFeatureIndicator -VAL_PTR = ¶meter_tvb - -#.FN_BODY OneTimeFeatureIndicator +#.FN_BODY OneTimeFeatureIndicator VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -307,10 +229,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.90 OriginationTriggers -#.FN_PARS OriginationTriggers -VAL_PTR = ¶meter_tvb - -#.FN_BODY OriginationTriggers +#.FN_BODY OriginationTriggers VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -318,10 +237,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.91 PACAIndicator -#.FN_PARS PACAIndicator -VAL_PTR = ¶meter_tvb - -#.FN_BODY PACAIndicator +#.FN_BODY PACAIndicator VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -329,10 +245,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.93 PC_SSN -#.FN_PARS PC-SSN -VAL_PTR = ¶meter_tvb - -#.FN_BODY PC-SSN +#.FN_BODY PC-SSN VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -340,10 +253,8 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.94 PilotBillingID -#.FN_PARS PilotBillingID -VAL_PTR = ¶meter_tvb +#.FN_BODY PilotBillingID VAL_PTR = ¶meter_tvb -#.FN_BODY PilotBillingID tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -379,7 +290,6 @@ static gint32 ansi_map_sms_tele_id = -1; # 6.5.2.159 TerminationTriggers - #.FN_BODY TerminationTriggers VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s @@ -388,10 +298,7 @@ static gint32 ansi_map_sms_tele_id = -1; } # 6.5.2.160 TransactionCapability -#.FN_PARS TransactionCapability -VAL_PTR = ¶meter_tvb - -#.FN_BODY TransactionCapability +#.FN_BODY TransactionCapability VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -402,10 +309,7 @@ VAL_PTR = ¶meter_tvb # -- XXX Same code as ISLPinformation??? # 6.5.2.bw CallingPartyName N.S0012-0 v 1.0 -#.FN_PARS CallingPartyName -VAL_PTR = ¶meter_tvb - -#.FN_BODY CallingPartyName +#.FN_BODY CallingPartyName VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -413,10 +317,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.df TriggerCapability -#.FN_PARS TriggerCapability -VAL_PTR = ¶meter_tvb - -#.FN_BODY TriggerCapability +#.FN_BODY TriggerCapability VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -424,10 +325,7 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.dj WINOperationsCapability -#.FN_PARS WINOperationsCapability -VAL_PTR = ¶meter_tvb - -#.FN_BODY WINOperationsCapability +#.FN_BODY WINOperationsCapability VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ @@ -435,16 +333,35 @@ VAL_PTR = ¶meter_tvb } # 6.5.2.ek ControlNetworkID -#.FN_PARS ControlNetworkID -VAL_PTR = ¶meter_tvb - -#.FN_BODY ControlNetworkID +#.FN_BODY ControlNetworkID VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb = NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_ansi_map_controlnetworkid(parameter_tvb,pinfo,tree); } +#6.5.2.wB ServiceIndicator +#.FN_BODY ServiceIndicator VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb = NULL; + guint8 ServiceIndicator; +%(DEFAULT_BODY)s + if (parameter_tvb){ + if (SMS_BearerData_tvb !=NULL) + { + ServiceIndicator = tvb_get_guint8(parameter_tvb,0); + switch(ServiceIndicator){ + case 1: /* CDMA OTASP Service */ + case 3: /* CDMA OTAPA Service */ + dissector_try_port(is683_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree); + break; + case 4: /* CDMA Position Determination Service */ + dissector_try_port(is801_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree); + break; + default: + break; + } + } + } #.TYPE_ATTR ActionCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_ActionCode_vals) diff --git a/asn1/ansi_map/packet-ansi_map-template.c b/asn1/ansi_map/packet-ansi_map-template.c index 1c0da173e5..1c66977d9b 100644 --- a/asn1/ansi_map/packet-ansi_map-template.c +++ b/asn1/ansi_map/packet-ansi_map-template.c @@ -133,6 +133,7 @@ static int hf_ansi_map_digits_enc = -1; static int hf_ansi_map_np = -1; static int hf_ansi_map_nr_digits = -1; static int hf_ansi_map_bcd_digits = -1; +static int hf_ansi_map_ia5_digits = -1; static int hf_ansi_map_subaddr_type = -1; static int hf_ansi_map_subaddr_odd_even = -1; static int hf_ansi_alertcode_cadence = -1; @@ -636,12 +637,23 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree case 2:/* Telephony Numbering (ITU-T Rec. E.164,E.163). */ case 6:/* Land Mobile Numbering (ITU-T Rec. E.212) */ case 7:/* Private Numbering Plan */ - if ((octet&0xf) == 1){ + proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE); + offset++; + switch ((octet&0xf)){ + case 1: /* BCD Coding */ - proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE); - offset++; digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd); proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str); + break; + case 2: + /* IA5 Coding */ + proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, FALSE); + break; + case 3: + /* Octet string */ + break; + default: + break; } break; case 13:/* ANSI SS7 Point Code (PC) and Subsystem Number (SSN). */ @@ -2009,17 +2021,26 @@ dissect_ansi_map_pc_ssn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree){ int offset = 0; proto_item *item; proto_tree *subtree; + guint8 b1,b2,b3,b4; item = get_ber_last_created_item(); subtree = proto_item_add_subtree(item, ett_billingid); /* Type (octet 1) */ proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, FALSE); offset++; - /* TODO Put this info in the tree ( use function from MTP3 ? ) /* Point Code Member Number octet 2 */ + b1 = tvb_get_guint8(tvb,offset); + offset++; /* Point Code Cluster Number octet 3 */ + b2 = tvb_get_guint8(tvb,offset); + offset++; /* Point Code Network Number octet 4 */ + b3 = tvb_get_guint8(tvb,offset); + offset++; /* Subsystem Number (SSN) octet 5 */ + b4 = tvb_get_guint8(tvb,offset); + proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u SSN %u", + b3, b2, b1, b4); } /* 6.5.2.94 PilotBillingID */ @@ -3158,11 +3179,17 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv if (pinfo->private_data != NULL){ p_private_tcap=pinfo->private_data; opcode = g_malloc(sizeof(gint)); - *opcode = OperationCode&0x00ff; + OperationCode = OperationCode&0x00ff; + *opcode = OperationCode; g_hash_table_insert(TransactionId_table, g_strdup(p_private_tcap->TransactionID_str), opcode); } - switch(OperationCode & 0x00ff){ + ansi_map_is_invoke = TRUE; + if (check_col(pinfo->cinfo, COL_INFO)){ + col_set_str(pinfo->cinfo, COL_INFO, val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)")); + } + + switch(OperationCode){ case 1: /*Handoff Measurement Request*/ offset = dissect_ansi_map_HandoffMeasurementRequest(TRUE, tvb, offset, pinfo, tree, -1); break; @@ -3511,6 +3538,10 @@ static int dissect_returnData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv item = proto_tree_add_text(tree, tvb, offset, -1, "OperationCode %s",val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown %u")); PROTO_ITEM_SET_GENERATED(item); + if (check_col(pinfo->cinfo, COL_INFO)){ + col_clear(pinfo->cinfo, COL_INFO); + col_add_fstr(pinfo->cinfo, COL_INFO,"%s Response", val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)")); + } switch(OperationCode){ case 1: /*Handoff Measurement Request*/ @@ -3826,6 +3857,10 @@ void proto_register_ansi_map(void) { { "BCD digits", "gsm_map.bcd_digits", FT_STRING, BASE_NONE, NULL, 0, "BCD digits", HFILL }}, + { &hf_ansi_map_ia5_digits, + { "IA5 digits", "gsm_map.ia5_digits", + FT_STRING, BASE_NONE, NULL, 0, + "IA5 digits", HFILL }}, { &hf_ansi_map_subaddr_type, { "Type of Subaddress", "ansi_subaddr_type", FT_UINT8, BASE_DEC, VALS(ansi_map_sub_addr_type_vals), 0x70, -- cgit v1.2.3