diff options
-rw-r--r-- | asn1/ansi_map/ansi_map.cnf | 9 | ||||
-rw-r--r-- | asn1/ansi_map/packet-ansi_map-template.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-ansi_map.c | 51 |
3 files changed, 43 insertions, 25 deletions
diff --git a/asn1/ansi_map/ansi_map.cnf b/asn1/ansi_map/ansi_map.cnf index 4878b54bb1..38e1444c8b 100644 --- a/asn1/ansi_map/ansi_map.cnf +++ b/asn1/ansi_map/ansi_map.cnf @@ -287,6 +287,13 @@ break; } } + else + { + if (ansi_map_sms_tele_id != -1) + { + dissector_try_port(is637_tele_id_dissector_table, ansi_map_sms_tele_id, SMS_BearerData_tvb, g_pinfo, g_tree); + } + } } # 6.5.2.136 SMS-OriginationRestrictions @@ -304,7 +311,7 @@ int length; proto_tree *subtree; tvbuff_t *parameter_tvb = NULL; - static gint32 ansi_map_sms_tele_id = -1; + ansi_map_sms_tele_id = -1; %(DEFAULT_BODY)s if (parameter_tvb){ diff --git a/asn1/ansi_map/packet-ansi_map-template.c b/asn1/ansi_map/packet-ansi_map-template.c index 821432bae5..05e7025cb8 100644 --- a/asn1/ansi_map/packet-ansi_map-template.c +++ b/asn1/ansi_map/packet-ansi_map-template.c @@ -362,6 +362,7 @@ static dissector_table_t is801_dissector_table; /* IS-801 (PLD) */ static packet_info *g_pinfo; static proto_tree *g_tree; tvbuff_t *SMS_BearerData_tvb = NULL; +gint32 ansi_map_sms_tele_id = -1; static gboolean is683_ota; static gboolean is801_pld; static gboolean ansi_map_is_invoke; @@ -704,7 +705,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre static void dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){ - guint8 octet; + guint8 octet , octet_len; guint8 b1,b2,b3,b4; int offset = 0; char *digit_str; @@ -761,9 +762,9 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_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 */ - octet = tvb_get_guint8(tvb,offset); + octet_len = tvb_get_guint8(tvb,offset); proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE); - if(octet == 0) + if(octet_len == 0) return; offset++; switch ((octet&0xf)){ @@ -4301,6 +4302,7 @@ dissect_ansi_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); SMS_BearerData_tvb = NULL; + ansi_map_sms_tele_id = -1; g_pinfo = pinfo; g_tree = tree; /* diff --git a/epan/dissectors/packet-ansi_map.c b/epan/dissectors/packet-ansi_map.c index 4e2424c1cf..0f5b24d68f 100644 --- a/epan/dissectors/packet-ansi_map.c +++ b/epan/dissectors/packet-ansi_map.c @@ -1133,6 +1133,7 @@ static dissector_table_t is801_dissector_table; /* IS-801 (PLD) */ static packet_info *g_pinfo; static proto_tree *g_tree; tvbuff_t *SMS_BearerData_tvb = NULL; +gint32 ansi_map_sms_tele_id = -1; static gboolean is683_ota; static gboolean is801_pld; static gboolean ansi_map_is_invoke; @@ -1475,7 +1476,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre static void dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){ - guint8 octet; + guint8 octet , octet_len; guint8 b1,b2,b3,b4; int offset = 0; char *digit_str; @@ -1532,9 +1533,9 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_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 */ - octet = tvb_get_guint8(tvb,offset); + octet_len = tvb_get_guint8(tvb,offset); proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE); - if(octet == 0) + if(octet_len == 0) return; offset++; switch ((octet&0xf)){ @@ -4934,7 +4935,7 @@ dissect_ansi_map_SystemAccessType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_ansi_map_SystemCapabilities(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 328 "ansi_map.cnf" +#line 335 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5187,7 +5188,7 @@ dissect_ansi_map_SuspiciousAccess(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_ansi_map_TransactionCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 345 "ansi_map.cnf" +#line 352 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5431,7 +5432,7 @@ dissect_ansi_map_ReauthenticationReport(gboolean implicit_tag _U_, tvbuff_t *tvb static int dissect_ansi_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 425 "ansi_map.cnf" +#line 432 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5972,7 +5973,7 @@ dissect_ansi_map_AlertCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int dissect_ansi_map_CDMA2000HandoffInvokeIOSData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 403 "ansi_map.cnf" +#line 410 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; @@ -6087,7 +6088,7 @@ dissect_ansi_map_CDMAConnectionReference(gboolean implicit_tag _U_, tvbuff_t *tv static int dissect_ansi_map_CDMAServiceOption(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 353 "ansi_map.cnf" +#line 360 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6580,7 +6581,7 @@ dissect_ansi_map_BSMCStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_ansi_map_CDMA2000HandoffResponseIOSData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 414 "ansi_map.cnf" +#line 421 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; proto_tree *subtree; @@ -6821,7 +6822,7 @@ dissect_ansi_map_ACGEncountered(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in static int dissect_ansi_map_CallingPartyName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 364 "ansi_map.cnf" +#line 371 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -7311,7 +7312,7 @@ dissect_ansi_map_LegInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in static int dissect_ansi_map_TerminationTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 337 "ansi_map.cnf" +#line 344 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -7500,7 +7501,7 @@ dissect_ansi_map_DestinationAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ static int dissect_ansi_map_WIN_TriggerList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 387 "ansi_map.cnf" +#line 394 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9033,7 +9034,7 @@ dissect_ansi_map_TriggerType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_ansi_map_TriggerCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 372 "ansi_map.cnf" +#line 379 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9051,7 +9052,7 @@ dissect_ansi_map_TriggerCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_ansi_map_WINOperationsCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 380 "ansi_map.cnf" +#line 387 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9137,7 +9138,7 @@ dissect_ansi_map_LocationRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i static int dissect_ansi_map_ControlNetworkID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 395 "ansi_map.cnf" +#line 402 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9596,7 +9597,7 @@ dissect_ansi_map_RestrictionDigits(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_ansi_map_SMS_OriginationRestrictions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 294 "ansi_map.cnf" +#line 301 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -10608,6 +10609,13 @@ dissect_ansi_map_SMS_BearerData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in break; } } + else + { + if (ansi_map_sms_tele_id != -1) + { + dissector_try_port(is637_tele_id_dissector_table, ansi_map_sms_tele_id, SMS_BearerData_tvb, g_pinfo, g_tree); + } + } } @@ -10619,12 +10627,12 @@ dissect_ansi_map_SMS_BearerData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in static int dissect_ansi_map_SMS_TeleserviceIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 303 "ansi_map.cnf" +#line 310 "ansi_map.cnf" int length; proto_tree *subtree; tvbuff_t *parameter_tvb = NULL; - static gint32 ansi_map_sms_tele_id = -1; + ansi_map_sms_tele_id = -1; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -15151,7 +15159,7 @@ dissect_ansi_map_ReturnData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of /*--- End of included file: packet-ansi_map-fn.c ---*/ -#line 3627 "packet-ansi_map-template.c" +#line 3628 "packet-ansi_map-template.c" /* * 6.5.2.dk N.S0013-0 v 1.0,X.S0004-550-E v1.0 2.301 @@ -15829,6 +15837,7 @@ dissect_ansi_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); SMS_BearerData_tvb = NULL; + ansi_map_sms_tele_id = -1; g_pinfo = pinfo; g_tree = tree; /* @@ -18897,7 +18906,7 @@ void proto_register_ansi_map(void) { "ansi_map.StatusRequestRes", HFILL }}, /*--- End of included file: packet-ansi_map-hfarr.c ---*/ -#line 5220 "packet-ansi_map-template.c" +#line 5222 "packet-ansi_map-template.c" }; /* List of subtrees */ @@ -19151,7 +19160,7 @@ void proto_register_ansi_map(void) { &ett_ansi_map_ReturnData, /*--- End of included file: packet-ansi_map-ettarr.c ---*/ -#line 5253 "packet-ansi_map-template.c" +#line 5255 "packet-ansi_map-template.c" }; |