diff options
-rw-r--r-- | asn1/tcap/packet-tcap-template.c | 21 | ||||
-rw-r--r-- | asn1/tcap/tcap.asn | 83 | ||||
-rw-r--r-- | asn1/tcap/tcap.cnf | 88 | ||||
-rw-r--r-- | epan/dissectors/packet-tcap.c | 593 |
4 files changed, 60 insertions, 725 deletions
diff --git a/asn1/tcap/packet-tcap-template.c b/asn1/tcap/packet-tcap-template.c index 7318547352..a2ffe8490d 100644 --- a/asn1/tcap/packet-tcap-template.c +++ b/asn1/tcap/packet-tcap-template.c @@ -102,9 +102,7 @@ static dissector_handle_t ansi_tcap_handle; static void raz_tcap_private(struct tcap_private_t * p_tcap_private); static int dissect_tcap_param(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset); -static int dissect_tcap_UserInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_); static int dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_); -static int dissect_tcap_TheExternUserInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_); static GHashTable* ansi_sub_dissectors = NULL; static GHashTable* itu_sub_dissectors = NULL; @@ -649,25 +647,6 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs return offset; } - -static int -dissect_tcap_TheExternUserInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) -{ - /* - * ok lets look at the oid and ssn and try and find a dissector, otherwise lets decode it. - */ - ber_oid_dissector_table = find_dissector_table("ber.oid"); - - if (ber_oid_dissector_table && tcapext_oid){ - if(!dissector_try_string(ber_oid_dissector_table, tcapext_oid, tvb, actx->pinfo, tree)) - { - return dissect_tcap_param(actx,tree,tvb,0); - } - } - return offset; -} - - void call_tcap_dissector(dissector_handle_t handle, tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree) { requested_subdissector_handle = handle; diff --git a/asn1/tcap/tcap.asn b/asn1/tcap/tcap.asn index 99e3e5f24c..f16b6c7c30 100644 --- a/asn1/tcap/tcap.asn +++ b/asn1/tcap/tcap.asn @@ -26,18 +26,9 @@ ExternalPDU ::= [UNIVERSAL 8] IMPLICIT SEQUENCE dialog [0] IMPLICIT Dialog1 } -UserInformation ::= [UNIVERSAL 8] IMPLICIT SEQUENCE - { - useroid UserInfoOID, - externuserinfo [0] IMPLICIT ExternUserInfo - } - -ExternUserInfo ::= OCTET STRING - + Dialog1 ::= OCTET STRING -UserInfoOID ::= OBJECT IDENTIFIER - Applicationcontext ::= OBJECT IDENTIFIER AARQ-apdu ::= [APPLICATION 0] IMPLICIT SEQUENCE { @@ -53,31 +44,30 @@ AARE-apdu ::= [APPLICATION 1] IMPLICIT SEQUENCE { application-context-name [1] OBJECT IDENTIFIER, result [2] Associate-result, result-source-diagnostic [3] Associate-source-diagnostic, - user-information [30] IMPLICIT User-information - OPTIONAL } + user-information [30] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL +} -- RLRQ PDU is currently not used. -- It is included for completeness only. RLRQ-apdu ::= [APPLICATION 2] IMPLICIT SEQUENCE { reasonrq [0] IMPLICIT Release-request-reason OPTIONAL, - user-information [30] IMPLICIT User-information - OPTIONAL } + user-information [30] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL + } -- RLRE PDU is currently not used. -- It is included for completeness only RLRE-apdu ::= [APPLICATION 3] IMPLICIT SEQUENCE { reasonre [0] IMPLICIT Release-response-reason OPTIONAL, - user-information [30] IMPLICIT User-information - OPTIONAL } + user-information [30] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL + } ABRT-apdu ::= [APPLICATION 4] IMPLICIT SEQUENCE { abort-source [0] IMPLICIT ABRT-source, - user-information [30] IMPLICIT User-information - OPTIONAL } + user-information [30] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL + } -User-information ::= OCTET STRING ABRT-source ::= INTEGER { dialogue-service-user (0), dialogue-service-provider (1) } @@ -130,13 +120,7 @@ TCMessage ::= CHOICE { begin [APPLICATION 2] IMPLICIT Begin, end [APPLICATION 4] IMPLICIT End, continue [APPLICATION 5] IMPLICIT Continue, - abort [APPLICATION 7] IMPLICIT Abort , - -- and we now get clever making this ansi and itu! - ansiqueryWithPerm [ PRIVATE 2 ] IMPLICIT TransactionPDU , - ansiqueryWithoutPerm [ PRIVATE 3 ] IMPLICIT TransactionPDU , - ansiresponse [ PRIVATE 4 ] IMPLICIT TransactionPDU , - ansiconversationWithPerm [ PRIVATE 5 ] IMPLICIT TransactionPDU , - ansiconversationWithoutPerm [ PRIVATE 6 ] IMPLICIT TransactionPDU + abort [APPLICATION 7] IMPLICIT Abort } Unidirectional ::= SEQUENCE{ @@ -351,53 +335,6 @@ ReturnErrorProblem ::= INTEGER { unrecognizedInvokeID (0), mistypedParameter (4) } -TransactionPDU ::= SEQUENCE - { - - identifier TransactionID , - dialoguePortionansi DialoguePortionANSI OPTIONAL - } - ---TransactionPDU should include either a Dialogue Portion , a Component Sequence or both - -TransactionID ::= [PRIVATE 7 ] IMPLICIT OCTET STRING - --- 0 (zero) Octet for Unidirectional,4 Octet for Query , Response And Abort - --- 8 Octet for Conversation in the order Originating then Responding TID - -DialoguePortionANSI ::= [ PRIVATE 25 ] IMPLICIT SEQUENCE { - version ProtocolVersion OPTIONAL , - applicationContext [0] CHOICE { - integerApplicationId IntegerApplicationContext , - objectApplicationId ObjectIDApplicationContext - } OPTIONAL , - userInformation UserInformation OPTIONAL , - securityContext CHOICE { - integerSecurityId [ 0 ] IMPLICIT INTEGER , - objectSecurityId [ 1 ] IMPLICIT OBJECT IDENTIFIER - } OPTIONAL , - confidentiality [ 2 ] IMPLICIT Confidentiality OPTIONAL , - ... } - - -ProtocolVersion ::= [ PRIVATE 26 ] IMPLICIT OCTET STRING ( SIZE(1) ) - -IntegerApplicationContext ::= [ PRIVATE 27 ] IMPLICIT INTEGER - -ObjectIDApplicationContext ::= [ PRIVATE 28 ] IMPLICIT OBJECT IDENTIFIER - ---UserInformation ::= [ PRIVATE 29 ] IMPLICIT SEQUENCE OF EXTERNAL - -Confidentiality ::= SEQUENCE { - confidentialityId CHOICE { - integerConfidentialityId [ 0 ] IMPLICIT INTEGER , - objectConfidentialityId [ 1 ] IMPLICIT OBJECT IDENTIFIER - } OPTIONAL , - ... } - ---UserAbortInformation ::= [ PRIVATE 24 ] EXTERNAL - ErrorCode ::= CHOICE { nationaler [PRIVATE 19] IMPLICIT INTEGER (-32768..32767), diff --git a/asn1/tcap/tcap.cnf b/asn1/tcap/tcap.cnf index 98b4577aec..e2e75e8764 100644 --- a/asn1/tcap/tcap.cnf +++ b/asn1/tcap/tcap.cnf @@ -67,11 +67,6 @@ return dissect_tcap_DialoguePDU(TRUE, tvb, offset, actx, tree, -1); return dissect_tcap_param(actx,tree,tvb,offset); #---------------------------------------------------------------------------------------- -#.FN_BODY User-information - -return dissect_tcap_UserInformation(FALSE, tvb, offset, actx, tree, -1); - -#---------------------------------------------------------------------------------------- #.FN_BODY Component tvbuff_t *next_tvb; gint8 class; @@ -110,36 +105,6 @@ if (!next_tvb) tcap_private.oid= (void*) cur_oid; tcap_private.acv=TRUE; #---------------------------------------------------------------------------------------- -# Do not overwrite the ApplicationContext with the UserInfoOID ! -# -#---------------------------------------------------------------------------------------- -#.FN_BODY UserInfoOID FN_VARIANT = _str VAL_PTR = &tcapext_oid -%(DEFAULT_BODY)s - -#---------------------------------------------------------------------------------------- -#.FN_BODY ExternUserInfo -tvbuff_t *next_tvb; -gint8 class; -gboolean pc; -gint tag; -guint32 len, comp_offset; -gint ind_field; - -comp_offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag); -comp_offset = dissect_ber_length(actx->pinfo, tree, tvb, comp_offset, &len, &ind_field); -/* we can believe the length now */ -next_tvb = tvb_new_subset(tvb, offset, len+comp_offset-offset, len+comp_offset-offset); - -if (!next_tvb) - return comp_offset; - -%(DEFAULT_BODY)s - -dissect_tcap_TheExternUserInfo(implicit_tag, next_tvb, 0, actx, tcap_top_tree, hf_index); - -return comp_offset+len; - -#---------------------------------------------------------------------------------------- #.FN_BODY OrigTransactionID tvbuff_t *parameter_tvb; guint8 len, i; @@ -251,56 +216,3 @@ gp_tcapsrt_info->ope=TC_ABORT; if (check_col(actx->pinfo->cinfo, COL_INFO)) col_set_str(actx->pinfo->cinfo, COL_INFO, "Abort "); #.END - - -#.FN_HDR TCMessage/ansiqueryWithPerm -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "QueryWithPerm "); -#.FN_HDR TCMessage/ansiqueryWithoutPerm -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "QueryWithOutPerm "); -#.FN_HDR TCMessage/ansiresponse -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "Response "); -#.FN_HDR TCMessage/ansiconversationWithPerm -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithPerm "); -#.FN_HDR TCMessage/ansiconversationWithoutPerm -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithoutPerm "); - -#.END - -#---------------------------------------------------------------------------------------- -#.FN_BODY TransactionID/_untag VAL_PTR = &next_tvb - -tvbuff_t *next_tvb; -guint8 len; - -%(DEFAULT_BODY)s - -if(next_tvb) { - tcap_private.TransactionID_str = tvb_bytes_to_str(next_tvb, 0,tvb_length(next_tvb)); - len = tvb_length_remaining(next_tvb, 0); - switch(len) { - case 1: - gp_tcapsrt_info->src_tid=tvb_get_guint8(next_tvb, 0); - break; - case 2: - gp_tcapsrt_info->src_tid=tvb_get_ntohs(next_tvb, 0); - break; - case 4: - gp_tcapsrt_info->src_tid=tvb_get_ntohl(next_tvb, 0); - break; - default: - gp_tcapsrt_info->src_tid=0; - break; - } -} - -#.END diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c index 386b584111..d7aac0a96c 100644 --- a/epan/dissectors/packet-tcap.c +++ b/epan/dissectors/packet-tcap.c @@ -79,8 +79,6 @@ static int hf_tcap_dialogueResponse = -1; /* AARE_apdu */ static int hf_tcap_dialogueAbort = -1; /* ABRT_apdu */ static int hf_tcap_oid = -1; /* OBJECT_IDENTIFIER */ static int hf_tcap_dialog = -1; /* Dialog1 */ -static int hf_tcap_useroid = -1; /* UserInfoOID */ -static int hf_tcap_externuserinfo = -1; /* ExternUserInfo */ static int hf_tcap_protocol_versionrq = -1; /* T_protocol_versionrq */ static int hf_tcap_aarq_application_context_name = -1; /* AARQ_application_context_name */ static int hf_tcap_aarq_user_information = -1; /* AARQ_user_information */ @@ -90,8 +88,10 @@ static int hf_tcap_aare_application_context_name = -1; /* AARE_application_cont static int hf_tcap_result = -1; /* Associate_result */ static int hf_tcap_result_source_diagnostic = -1; /* Associate_source_diagnostic */ static int hf_tcap_aare_user_information = -1; /* AARE_user_information */ +static int hf_tcap_aare_user_information_item = -1; /* EXTERNAL */ static int hf_tcap_abort_source = -1; /* ABRT_source */ static int hf_tcap_abrt_user_information = -1; /* ABRT_user_information */ +static int hf_tcap_abrt_user_information_item = -1; /* EXTERNAL */ static int hf_tcap_dialogue_service_user = -1; /* T_dialogue_service_user */ static int hf_tcap_dialogue_service_provider = -1; /* T_dialogue_service_provider */ static int hf_tcap_unidirectional = -1; /* Unidirectional */ @@ -99,11 +99,6 @@ static int hf_tcap_begin = -1; /* Begin */ static int hf_tcap_end = -1; /* End */ static int hf_tcap_continue = -1; /* Continue */ static int hf_tcap_abort = -1; /* Abort */ -static int hf_tcap_ansiqueryWithPerm = -1; /* T_ansiqueryWithPerm */ -static int hf_tcap_ansiqueryWithoutPerm = -1; /* T_ansiqueryWithoutPerm */ -static int hf_tcap_ansiresponse = -1; /* T_ansiresponse */ -static int hf_tcap_ansiconversationWithPerm = -1; /* T_ansiconversationWithPerm */ -static int hf_tcap_ansiconversationWithoutPerm = -1; /* T_ansiconversationWithoutPerm */ static int hf_tcap_dialoguePortion = -1; /* DialoguePortion */ static int hf_tcap_components = -1; /* ComponentPortion */ static int hf_tcap_otid = -1; /* OrigTransactionID */ @@ -133,20 +128,6 @@ static int hf_tcap_returnResultProblem = -1; /* ReturnResultProblem */ static int hf_tcap_returnErrorProblem = -1; /* ReturnErrorProblem */ static int hf_tcap_localValue = -1; /* INTEGER */ static int hf_tcap_globalValue = -1; /* OBJECT_IDENTIFIER */ -static int hf_tcap_identifier = -1; /* TransactionID */ -static int hf_tcap_dialoguePortionansi = -1; /* DialoguePortionANSI */ -static int hf_tcap_version = -1; /* ProtocolVersion */ -static int hf_tcap_applicationContext = -1; /* T_applicationContext */ -static int hf_tcap_integerApplicationId = -1; /* IntegerApplicationContext */ -static int hf_tcap_objectApplicationId = -1; /* ObjectIDApplicationContext */ -static int hf_tcap_userInformation = -1; /* UserInformation */ -static int hf_tcap_securityContext = -1; /* T_securityContext */ -static int hf_tcap_integerSecurityId = -1; /* INTEGER */ -static int hf_tcap_objectSecurityId = -1; /* OBJECT_IDENTIFIER */ -static int hf_tcap_confidentiality = -1; /* Confidentiality */ -static int hf_tcap_confidentialityId = -1; /* T_confidentialityId */ -static int hf_tcap_integerConfidentialityId = -1; /* INTEGER */ -static int hf_tcap_objectConfidentialityId = -1; /* OBJECT_IDENTIFIER */ static int hf_tcap_nationaler = -1; /* INTEGER_M32768_32767 */ static int hf_tcap_privateer = -1; /* INTEGER */ static int hf_tcap_unidialoguePDU = -1; /* AUDT_apdu */ @@ -181,13 +162,14 @@ static struct tcaphash_context_t * gp_tcap_context=NULL; #line 1 "packet-tcap-ett.c" static gint ett_tcap_DialoguePDU = -1; static gint ett_tcap_ExternalPDU_U = -1; -static gint ett_tcap_UserInformation_U = -1; static gint ett_tcap_AARQ_apdu_U = -1; static gint ett_tcap_T_protocol_versionrq = -1; static gint ett_tcap_AARQ_user_information = -1; static gint ett_tcap_AARE_apdu_U = -1; static gint ett_tcap_T_protocol_versionre = -1; +static gint ett_tcap_AARE_user_information = -1; static gint ett_tcap_ABRT_apdu_U = -1; +static gint ett_tcap_ABRT_user_information = -1; static gint ett_tcap_Associate_source_diagnostic = -1; static gint ett_tcap_TCMessage = -1; static gint ett_tcap_Unidirectional = -1; @@ -207,12 +189,6 @@ static gint ett_tcap_T_invokeIDRej = -1; static gint ett_tcap_T_problem = -1; static gint ett_tcap_OPERATION = -1; static gint ett_tcap_ERROR = -1; -static gint ett_tcap_TransactionPDU = -1; -static gint ett_tcap_DialoguePortionANSI_U = -1; -static gint ett_tcap_T_applicationContext = -1; -static gint ett_tcap_T_securityContext = -1; -static gint ett_tcap_Confidentiality = -1; -static gint ett_tcap_T_confidentialityId = -1; static gint ett_tcap_ErrorCode = -1; static gint ett_tcap_UniDialoguePDU = -1; static gint ett_tcap_AUDT_apdu_U = -1; @@ -245,9 +221,7 @@ static dissector_handle_t ansi_tcap_handle; static void raz_tcap_private(struct tcap_private_t * p_tcap_private); static int dissect_tcap_param(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset); -static int dissect_tcap_UserInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_); static int dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_); -static int dissect_tcap_TheExternUserInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_); static GHashTable* ansi_sub_dissectors = NULL; static GHashTable* itu_sub_dissectors = NULL; @@ -307,7 +281,7 @@ dissect_tcap_T_protocol_versionrq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_tcap_AARQ_application_context_name(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 104 "tcap.cnf" +#line 99 "tcap.cnf" offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &cur_oid); tcap_private.oid= (void*) cur_oid; @@ -384,7 +358,7 @@ dissect_tcap_T_protocol_versionre(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_tcap_AARE_application_context_name(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 109 "tcap.cnf" +#line 104 "tcap.cnf" offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &cur_oid); tcap_private.oid= (void*) cur_oid; @@ -467,23 +441,14 @@ dissect_tcap_Associate_source_diagnostic(gboolean implicit_tag _U_, tvbuff_t *tv } - -static int -dissect_tcap_User_information(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 71 "tcap.cnf" - -return dissect_tcap_UserInformation(FALSE, tvb, offset, actx, tree, -1); - - - - return offset; -} - - +static const ber_sequence_t AARE_user_information_sequence_of[1] = { + { &hf_tcap_aare_user_information_item, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_tcap_EXTERNAL }, +}; static int dissect_tcap_AARE_user_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_tcap_User_information(implicit_tag, tvb, offset, actx, tree, hf_index); + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + AARE_user_information_sequence_of, hf_index, ett_tcap_AARE_user_information); return offset; } @@ -533,10 +498,14 @@ dissect_tcap_ABRT_source(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse } +static const ber_sequence_t ABRT_user_information_sequence_of[1] = { + { &hf_tcap_abrt_user_information_item, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_tcap_EXTERNAL }, +}; static int dissect_tcap_ABRT_user_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_tcap_User_information(implicit_tag, tvb, offset, actx, tree, hf_index); + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + ABRT_user_information_sequence_of, hf_index, ett_tcap_ABRT_user_information); return offset; } @@ -645,77 +614,6 @@ dissect_tcap_ExternalPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse static int -dissect_tcap_UserInfoOID(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 117 "tcap.cnf" - offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &tcapext_oid); - - - - - return offset; -} - - - -static int -dissect_tcap_ExternUserInfo(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 121 "tcap.cnf" -tvbuff_t *next_tvb; -gint8 class; -gboolean pc; -gint tag; -guint32 len, comp_offset; -gint ind_field; - -comp_offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag); -comp_offset = dissect_ber_length(actx->pinfo, tree, tvb, comp_offset, &len, &ind_field); -/* we can believe the length now */ -next_tvb = tvb_new_subset(tvb, offset, len+comp_offset-offset, len+comp_offset-offset); - -if (!next_tvb) - return comp_offset; - - offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); - - -dissect_tcap_TheExternUserInfo(implicit_tag, next_tvb, 0, actx, tcap_top_tree, hf_index); - -return comp_offset+len; - - - - return offset; -} - - -static const ber_sequence_t UserInformation_U_sequence[] = { - { &hf_tcap_useroid , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_tcap_UserInfoOID }, - { &hf_tcap_externuserinfo , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tcap_ExternUserInfo }, - { NULL, 0, 0, 0, NULL } -}; - -static int -dissect_tcap_UserInformation_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, - UserInformation_U_sequence, hf_index, ett_tcap_UserInformation_U); - - return offset; -} - - - -static int -dissect_tcap_UserInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, - hf_index, BER_CLASS_UNI, 8, TRUE, dissect_tcap_UserInformation_U); - - return offset; -} - - - -static int dissect_tcap_Applicationcontext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -1063,7 +961,7 @@ static const ber_choice_t Component_choice[] = { static int dissect_tcap_Component(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 76 "tcap.cnf" +#line 71 "tcap.cnf" tvbuff_t *next_tvb; gint8 class; gboolean pc; @@ -1145,7 +1043,7 @@ dissect_tcap_OCTET_STRING_SIZE_1_4(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_tcap_OrigTransactionID(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 144 "tcap.cnf" +#line 109 "tcap.cnf" tvbuff_t *parameter_tvb; guint8 len, i; proto_item *tid_item; @@ -1198,7 +1096,7 @@ static const ber_sequence_t Begin_sequence[] = { static int dissect_tcap_Begin(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 218 "tcap.cnf" +#line 183 "tcap.cnf" gp_tcapsrt_info->ope=TC_BEGIN; /* Do not change col_add_str() to col_append_str() here: we _want_ this call @@ -1221,7 +1119,7 @@ if (check_col(actx->pinfo->cinfo, COL_INFO)) static int dissect_tcap_DestTransactionID(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 183 "tcap.cnf" +#line 148 "tcap.cnf" tvbuff_t *parameter_tvb; guint8 len , i; proto_item *tid_item; @@ -1271,7 +1169,7 @@ static const ber_sequence_t End_sequence[] = { static int dissect_tcap_End(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 233 "tcap.cnf" +#line 198 "tcap.cnf" gp_tcapsrt_info->ope=TC_END; if (check_col(actx->pinfo->cinfo, COL_INFO)) @@ -1294,7 +1192,7 @@ static const ber_sequence_t Continue_sequence[] = { static int dissect_tcap_Continue(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 241 "tcap.cnf" +#line 206 "tcap.cnf" gp_tcapsrt_info->ope=TC_CONT; if (check_col(actx->pinfo->cinfo, COL_INFO)) @@ -1366,7 +1264,7 @@ static const ber_sequence_t Abort_sequence[] = { static int dissect_tcap_Abort(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 249 "tcap.cnf" +#line 214 "tcap.cnf" gp_tcapsrt_info->ope=TC_ABORT; if (check_col(actx->pinfo->cinfo, COL_INFO)) @@ -1379,312 +1277,21 @@ if (check_col(actx->pinfo->cinfo, COL_INFO)) } - -static int -dissect_tcap_TransactionID_U(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 281 "tcap.cnf" - -tvbuff_t *next_tvb; -guint8 len; - - offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, - &next_tvb); - - -if(next_tvb) { - tcap_private.TransactionID_str = tvb_bytes_to_str(next_tvb, 0,tvb_length(next_tvb)); - len = tvb_length_remaining(next_tvb, 0); - switch(len) { - case 1: - gp_tcapsrt_info->src_tid=tvb_get_guint8(next_tvb, 0); - break; - case 2: - gp_tcapsrt_info->src_tid=tvb_get_ntohs(next_tvb, 0); - break; - case 4: - gp_tcapsrt_info->src_tid=tvb_get_ntohl(next_tvb, 0); - break; - default: - gp_tcapsrt_info->src_tid=0; - break; - } -} - - - - return offset; -} - - - -static int -dissect_tcap_TransactionID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, - hf_index, BER_CLASS_PRI, 7, TRUE, dissect_tcap_TransactionID_U); - - return offset; -} - - - -static int -dissect_tcap_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, - NULL); - - return offset; -} - - - -static int -dissect_tcap_ProtocolVersion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, - hf_index, BER_CLASS_PRI, 26, TRUE, dissect_tcap_OCTET_STRING_SIZE_1); - - return offset; -} - - - -static int -dissect_tcap_IntegerApplicationContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, - hf_index, BER_CLASS_PRI, 27, TRUE, dissect_tcap_INTEGER); - - return offset; -} - - - -static int -dissect_tcap_ObjectIDApplicationContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, - hf_index, BER_CLASS_PRI, 28, TRUE, dissect_tcap_OBJECT_IDENTIFIER); - - return offset; -} - - -static const value_string tcap_T_applicationContext_vals[] = { - { 27, "integerApplicationId" }, - { 28, "objectApplicationId" }, - { 0, NULL } -}; - -static const ber_choice_t T_applicationContext_choice[] = { - { 27, &hf_tcap_integerApplicationId, BER_CLASS_PRI, 27, BER_FLAGS_NOOWNTAG, dissect_tcap_IntegerApplicationContext }, - { 28, &hf_tcap_objectApplicationId, BER_CLASS_PRI, 28, BER_FLAGS_NOOWNTAG, dissect_tcap_ObjectIDApplicationContext }, - { 0, NULL, 0, 0, 0, NULL } -}; - -static int -dissect_tcap_T_applicationContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_choice(actx, tree, tvb, offset, - T_applicationContext_choice, hf_index, ett_tcap_T_applicationContext, - NULL); - - return offset; -} - - -static const value_string tcap_T_securityContext_vals[] = { - { 0, "integerSecurityId" }, - { 1, "objectSecurityId" }, - { 0, NULL } -}; - -static const ber_choice_t T_securityContext_choice[] = { - { 0, &hf_tcap_integerSecurityId, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tcap_INTEGER }, - { 1, &hf_tcap_objectSecurityId, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_tcap_OBJECT_IDENTIFIER }, - { 0, NULL, 0, 0, 0, NULL } -}; - -static int -dissect_tcap_T_securityContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_choice(actx, tree, tvb, offset, - T_securityContext_choice, hf_index, ett_tcap_T_securityContext, - NULL); - - return offset; -} - - -static const value_string tcap_T_confidentialityId_vals[] = { - { 0, "integerConfidentialityId" }, - { 1, "objectConfidentialityId" }, - { 0, NULL } -}; - -static const ber_choice_t T_confidentialityId_choice[] = { - { 0, &hf_tcap_integerConfidentialityId, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tcap_INTEGER }, - { 1, &hf_tcap_objectConfidentialityId, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_tcap_OBJECT_IDENTIFIER }, - { 0, NULL, 0, 0, 0, NULL } -}; - -static int -dissect_tcap_T_confidentialityId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_choice(actx, tree, tvb, offset, - T_confidentialityId_choice, hf_index, ett_tcap_T_confidentialityId, - NULL); - - return offset; -} - - -static const ber_sequence_t Confidentiality_sequence[] = { - { &hf_tcap_confidentialityId, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_tcap_T_confidentialityId }, - { NULL, 0, 0, 0, NULL } -}; - -static int -dissect_tcap_Confidentiality(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, - Confidentiality_sequence, hf_index, ett_tcap_Confidentiality); - - return offset; -} - - -static const ber_sequence_t DialoguePortionANSI_U_sequence[] = { - { &hf_tcap_version , BER_CLASS_PRI, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ProtocolVersion }, - { &hf_tcap_applicationContext, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_tcap_T_applicationContext }, - { &hf_tcap_userInformation, BER_CLASS_UNI, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_UserInformation }, - { &hf_tcap_securityContext, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_tcap_T_securityContext }, - { &hf_tcap_confidentiality, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tcap_Confidentiality }, - { NULL, 0, 0, 0, NULL } -}; - -static int -dissect_tcap_DialoguePortionANSI_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, - DialoguePortionANSI_U_sequence, hf_index, ett_tcap_DialoguePortionANSI_U); - - return offset; -} - - - -static int -dissect_tcap_DialoguePortionANSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, - hf_index, BER_CLASS_PRI, 25, TRUE, dissect_tcap_DialoguePortionANSI_U); - - return offset; -} - - -static const ber_sequence_t TransactionPDU_sequence[] = { - { &hf_tcap_identifier , BER_CLASS_PRI, 7, BER_FLAGS_NOOWNTAG, dissect_tcap_TransactionID }, - { &hf_tcap_dialoguePortionansi, BER_CLASS_PRI, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_DialoguePortionANSI }, - { NULL, 0, 0, 0, NULL } -}; - -static int -dissect_tcap_TransactionPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, - TransactionPDU_sequence, hf_index, ett_tcap_TransactionPDU); - - return offset; -} - - - -static int -dissect_tcap_T_ansiqueryWithPerm(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 257 "tcap.cnf" -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "QueryWithPerm "); - - offset = dissect_tcap_TransactionPDU(implicit_tag, tvb, offset, actx, tree, hf_index); - - return offset; -} - - - -static int -dissect_tcap_T_ansiqueryWithoutPerm(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 261 "tcap.cnf" -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "QueryWithOutPerm "); - - offset = dissect_tcap_TransactionPDU(implicit_tag, tvb, offset, actx, tree, hf_index); - - return offset; -} - - - -static int -dissect_tcap_T_ansiresponse(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 265 "tcap.cnf" -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "Response "); - - offset = dissect_tcap_TransactionPDU(implicit_tag, tvb, offset, actx, tree, hf_index); - - return offset; -} - - - -static int -dissect_tcap_T_ansiconversationWithPerm(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 269 "tcap.cnf" -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithPerm "); - - offset = dissect_tcap_TransactionPDU(implicit_tag, tvb, offset, actx, tree, hf_index); - - return offset; -} - - - -static int -dissect_tcap_T_ansiconversationWithoutPerm(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 273 "tcap.cnf" -gp_tcapsrt_info->ope=TC_ANSI_ALL; -if (check_col(actx->pinfo->cinfo, COL_INFO)) - col_set_str(actx->pinfo->cinfo, COL_INFO, "ConversationWithoutPerm "); - - - offset = dissect_tcap_TransactionPDU(implicit_tag, tvb, offset, actx, tree, hf_index); - - return offset; -} - - static const value_string tcap_TCMessage_vals[] = { - { 0, "unidirectional" }, - { 1, "begin" }, - { 2, "end" }, - { 3, "continue" }, - { 4, "abort" }, - { 5, "ansiqueryWithPerm" }, - { 6, "ansiqueryWithoutPerm" }, - { 7, "ansiresponse" }, - { 8, "ansiconversationWithPerm" }, - { 9, "ansiconversationWithoutPerm" }, + { 1, "unidirectional" }, + { 2, "begin" }, + { 4, "end" }, + { 5, "continue" }, + { 7, "abort" }, { 0, NULL } }; static const ber_choice_t TCMessage_choice[] = { - { 0, &hf_tcap_unidirectional , BER_CLASS_APP, 1, BER_FLAGS_IMPLTAG, dissect_tcap_Unidirectional }, - { 1, &hf_tcap_begin , BER_CLASS_APP, 2, BER_FLAGS_IMPLTAG, dissect_tcap_Begin }, - { 2, &hf_tcap_end , BER_CLASS_APP, 4, BER_FLAGS_IMPLTAG, dissect_tcap_End }, - { 3, &hf_tcap_continue , BER_CLASS_APP, 5, BER_FLAGS_IMPLTAG, dissect_tcap_Continue }, - { 4, &hf_tcap_abort , BER_CLASS_APP, 7, BER_FLAGS_IMPLTAG, dissect_tcap_Abort }, - { 5, &hf_tcap_ansiqueryWithPerm, BER_CLASS_PRI, 2, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiqueryWithPerm }, - { 6, &hf_tcap_ansiqueryWithoutPerm, BER_CLASS_PRI, 3, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiqueryWithoutPerm }, - { 7, &hf_tcap_ansiresponse , BER_CLASS_PRI, 4, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiresponse }, - { 8, &hf_tcap_ansiconversationWithPerm, BER_CLASS_PRI, 5, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiconversationWithPerm }, - { 9, &hf_tcap_ansiconversationWithoutPerm, BER_CLASS_PRI, 6, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiconversationWithoutPerm }, + { 1, &hf_tcap_unidirectional , BER_CLASS_APP, 1, BER_FLAGS_IMPLTAG, dissect_tcap_Unidirectional }, + { 2, &hf_tcap_begin , BER_CLASS_APP, 2, BER_FLAGS_IMPLTAG, dissect_tcap_Begin }, + { 4, &hf_tcap_end , BER_CLASS_APP, 4, BER_FLAGS_IMPLTAG, dissect_tcap_End }, + { 5, &hf_tcap_continue , BER_CLASS_APP, 5, BER_FLAGS_IMPLTAG, dissect_tcap_Continue }, + { 7, &hf_tcap_abort , BER_CLASS_APP, 7, BER_FLAGS_IMPLTAG, dissect_tcap_Abort }, { 0, NULL, 0, 0, 0, NULL } }; @@ -1738,7 +1345,7 @@ dissect_tcap_T_protocol_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in static int dissect_tcap_AUDT_application_context_name(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 99 "tcap.cnf" +#line 94 "tcap.cnf" offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &cur_oid); tcap_private.oid= (void*) cur_oid; @@ -1822,7 +1429,7 @@ static void dissect_UniDialoguePDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ /*--- End of included file: packet-tcap-fn.c ---*/ -#line 146 "packet-tcap-template.c" +#line 144 "packet-tcap-template.c" @@ -1945,7 +1552,7 @@ proto_reg_handoff_tcap(void) /*--- End of included file: packet-tcap-dis-tab.c ---*/ -#line 261 "packet-tcap-template.c" +#line 259 "packet-tcap-template.c" } static void init_tcap(void); @@ -2038,14 +1645,6 @@ proto_register_tcap(void) { "dialog", "tcap.dialog", FT_BYTES, BASE_HEX, NULL, 0, "tcap.Dialog1", HFILL }}, - { &hf_tcap_useroid, - { "useroid", "tcap.useroid", - FT_OID, BASE_NONE, NULL, 0, - "tcap.UserInfoOID", HFILL }}, - { &hf_tcap_externuserinfo, - { "externuserinfo", "tcap.externuserinfo", - FT_BYTES, BASE_HEX, NULL, 0, - "tcap.ExternUserInfo", HFILL }}, { &hf_tcap_protocol_versionrq, { "protocol-versionrq", "tcap.protocol_versionrq", FT_BYTES, BASE_HEX, NULL, 0, @@ -2080,16 +1679,24 @@ proto_register_tcap(void) "tcap.Associate_source_diagnostic", HFILL }}, { &hf_tcap_aare_user_information, { "user-information", "tcap.user_information", - FT_BYTES, BASE_HEX, NULL, 0, + FT_UINT32, BASE_DEC, NULL, 0, "tcap.AARE_user_information", HFILL }}, + { &hf_tcap_aare_user_information_item, + { "Item", "tcap.user_information_item", + FT_NONE, BASE_NONE, NULL, 0, + "tcap.EXTERNAL", HFILL }}, { &hf_tcap_abort_source, { "abort-source", "tcap.abort_source", FT_INT32, BASE_DEC, VALS(tcap_ABRT_source_vals), 0, "tcap.ABRT_source", HFILL }}, { &hf_tcap_abrt_user_information, { "user-information", "tcap.user_information", - FT_BYTES, BASE_HEX, NULL, 0, + FT_UINT32, BASE_DEC, NULL, 0, "tcap.ABRT_user_information", HFILL }}, + { &hf_tcap_abrt_user_information_item, + { "Item", "tcap.user_information_item", + FT_NONE, BASE_NONE, NULL, 0, + "tcap.EXTERNAL", HFILL }}, { &hf_tcap_dialogue_service_user, { "dialogue-service-user", "tcap.dialogue_service_user", FT_INT32, BASE_DEC, VALS(tcap_T_dialogue_service_user_vals), 0, @@ -2118,26 +1725,6 @@ proto_register_tcap(void) { "abort", "tcap.abort", FT_NONE, BASE_NONE, NULL, 0, "tcap.Abort", HFILL }}, - { &hf_tcap_ansiqueryWithPerm, - { "ansiqueryWithPerm", "tcap.ansiqueryWithPerm", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.T_ansiqueryWithPerm", HFILL }}, - { &hf_tcap_ansiqueryWithoutPerm, - { "ansiqueryWithoutPerm", "tcap.ansiqueryWithoutPerm", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.T_ansiqueryWithoutPerm", HFILL }}, - { &hf_tcap_ansiresponse, - { "ansiresponse", "tcap.ansiresponse", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.T_ansiresponse", HFILL }}, - { &hf_tcap_ansiconversationWithPerm, - { "ansiconversationWithPerm", "tcap.ansiconversationWithPerm", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.T_ansiconversationWithPerm", HFILL }}, - { &hf_tcap_ansiconversationWithoutPerm, - { "ansiconversationWithoutPerm", "tcap.ansiconversationWithoutPerm", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.T_ansiconversationWithoutPerm", HFILL }}, { &hf_tcap_dialoguePortion, { "dialoguePortion", "tcap.dialoguePortion", FT_BYTES, BASE_HEX, NULL, 0, @@ -2254,62 +1841,6 @@ proto_register_tcap(void) { "globalValue", "tcap.globalValue", FT_OID, BASE_NONE, NULL, 0, "tcap.OBJECT_IDENTIFIER", HFILL }}, - { &hf_tcap_identifier, - { "identifier", "tcap.identifier", - FT_BYTES, BASE_HEX, NULL, 0, - "tcap.TransactionID", HFILL }}, - { &hf_tcap_dialoguePortionansi, - { "dialoguePortionansi", "tcap.dialoguePortionansi", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.DialoguePortionANSI", HFILL }}, - { &hf_tcap_version, - { "version", "tcap.version", - FT_BYTES, BASE_HEX, NULL, 0, - "tcap.ProtocolVersion", HFILL }}, - { &hf_tcap_applicationContext, - { "applicationContext", "tcap.applicationContext", - FT_UINT32, BASE_DEC, VALS(tcap_T_applicationContext_vals), 0, - "tcap.T_applicationContext", HFILL }}, - { &hf_tcap_integerApplicationId, - { "integerApplicationId", "tcap.integerApplicationId", - FT_INT32, BASE_DEC, NULL, 0, - "tcap.IntegerApplicationContext", HFILL }}, - { &hf_tcap_objectApplicationId, - { "objectApplicationId", "tcap.objectApplicationId", - FT_OID, BASE_NONE, NULL, 0, - "tcap.ObjectIDApplicationContext", HFILL }}, - { &hf_tcap_userInformation, - { "userInformation", "tcap.userInformation", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.UserInformation", HFILL }}, - { &hf_tcap_securityContext, - { "securityContext", "tcap.securityContext", - FT_UINT32, BASE_DEC, VALS(tcap_T_securityContext_vals), 0, - "tcap.T_securityContext", HFILL }}, - { &hf_tcap_integerSecurityId, - { "integerSecurityId", "tcap.integerSecurityId", - FT_INT32, BASE_DEC, NULL, 0, - "tcap.INTEGER", HFILL }}, - { &hf_tcap_objectSecurityId, - { "objectSecurityId", "tcap.objectSecurityId", - FT_OID, BASE_NONE, NULL, 0, - "tcap.OBJECT_IDENTIFIER", HFILL }}, - { &hf_tcap_confidentiality, - { "confidentiality", "tcap.confidentiality", - FT_NONE, BASE_NONE, NULL, 0, - "tcap.Confidentiality", HFILL }}, - { &hf_tcap_confidentialityId, - { "confidentialityId", "tcap.confidentialityId", - FT_UINT32, BASE_DEC, VALS(tcap_T_confidentialityId_vals), 0, - "tcap.T_confidentialityId", HFILL }}, - { &hf_tcap_integerConfidentialityId, - { "integerConfidentialityId", "tcap.integerConfidentialityId", - FT_INT32, BASE_DEC, NULL, 0, - "tcap.INTEGER", HFILL }}, - { &hf_tcap_objectConfidentialityId, - { "objectConfidentialityId", "tcap.objectConfidentialityId", - FT_OID, BASE_NONE, NULL, 0, - "tcap.OBJECT_IDENTIFIER", HFILL }}, { &hf_tcap_nationaler, { "nationaler", "tcap.nationaler", FT_INT32, BASE_DEC, NULL, 0, @@ -2352,7 +1883,7 @@ proto_register_tcap(void) "", HFILL }}, /*--- End of included file: packet-tcap-hfarr.c ---*/ -#line 323 "packet-tcap-template.c" +#line 321 "packet-tcap-template.c" }; /* Setup protocol subtree array */ @@ -2367,13 +1898,14 @@ proto_register_tcap(void) #line 1 "packet-tcap-ettarr.c" &ett_tcap_DialoguePDU, &ett_tcap_ExternalPDU_U, - &ett_tcap_UserInformation_U, &ett_tcap_AARQ_apdu_U, &ett_tcap_T_protocol_versionrq, &ett_tcap_AARQ_user_information, &ett_tcap_AARE_apdu_U, &ett_tcap_T_protocol_versionre, + &ett_tcap_AARE_user_information, &ett_tcap_ABRT_apdu_U, + &ett_tcap_ABRT_user_information, &ett_tcap_Associate_source_diagnostic, &ett_tcap_TCMessage, &ett_tcap_Unidirectional, @@ -2393,12 +1925,6 @@ proto_register_tcap(void) &ett_tcap_T_problem, &ett_tcap_OPERATION, &ett_tcap_ERROR, - &ett_tcap_TransactionPDU, - &ett_tcap_DialoguePortionANSI_U, - &ett_tcap_T_applicationContext, - &ett_tcap_T_securityContext, - &ett_tcap_Confidentiality, - &ett_tcap_T_confidentialityId, &ett_tcap_ErrorCode, &ett_tcap_UniDialoguePDU, &ett_tcap_AUDT_apdu_U, @@ -2406,7 +1932,7 @@ proto_register_tcap(void) &ett_tcap_AUDT_user_information, /*--- End of included file: packet-tcap-ettarr.c ---*/ -#line 333 "packet-tcap-template.c" +#line 331 "packet-tcap-template.c" }; /*static enum_val_t tcap_options[] = { @@ -2726,25 +2252,6 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs return offset; } - -static int -dissect_tcap_TheExternUserInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) -{ - /* - * ok lets look at the oid and ssn and try and find a dissector, otherwise lets decode it. - */ - ber_oid_dissector_table = find_dissector_table("ber.oid"); - - if (ber_oid_dissector_table && tcapext_oid){ - if(!dissector_try_string(ber_oid_dissector_table, tcapext_oid, tvb, actx->pinfo, tree)) - { - return dissect_tcap_param(actx,tree,tvb,0); - } - } - return offset; -} - - void call_tcap_dissector(dissector_handle_t handle, tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree) { requested_subdissector_handle = handle; |