Start to get rid of the "old" ANSI TCAP stuff.

svn path=/trunk/; revision=26189
This commit is contained in:
Anders Broman 2008-09-13 16:38:21 +00:00
parent 16512c7b8c
commit eb9dc794b2
4 changed files with 33 additions and 885 deletions

View File

@ -104,7 +104,6 @@ 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_ANSI_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;
@ -650,57 +649,6 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
return offset;
}
/*
* Call ANSI Subdissector to decode the Tcap Component
*/
static int
dissect_tcap_ANSI_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_)
{
dissector_handle_t subdissector_handle;
gboolean is_subdissector=FALSE;
struct tcaphash_context_t * p_tcap_context=NULL;
gchar str[20];
/*
* Handle The TCAP Service Response Time
*/
if ( gtcap_HandleSRT ) {
if (!tcap_subdissector_used) {
p_tcap_context=tcapsrt_call_matching(tvb, actx->pinfo, tcap_stat_tree, gp_tcapsrt_info);
tcap_subdissector_used=TRUE;
gp_tcap_context=p_tcap_context;
tcap_private.context=p_tcap_context;
} else {
/* Take the last TCAP context */
p_tcap_context = gp_tcap_context;
tcap_private.context=p_tcap_context;
}
}
if (p_tcap_context) {
/* tcap_private.TransactionID_str = bytes_to_str(&(p_tcap_context->session_id),4); */
g_snprintf(str, sizeof(str), "(%d)",p_tcap_context->session_id);
tcap_private.TransactionID_str = str;
}
if ( (subdissector_handle
= get_ansi_tcap_subdissector(actx->pinfo->match_port))) {
/* Found according to SSN */
is_subdissector=TRUE;
} else {
/* Nothing found, take the Data handler */
subdissector_handle = data_handle;
is_subdissector=TRUE;
} /* SSN */
/* Call the sub dissector if present, and not already called */
if (is_subdissector)
call_dissector(subdissector_handle, tvb, actx->pinfo, tree);
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_)

View File

@ -132,13 +132,11 @@ TCMessage ::= CHOICE {
continue [APPLICATION 5] IMPLICIT Continue,
abort [APPLICATION 7] IMPLICIT Abort ,
-- and we now get clever making this ansi and itu!
ansiunidirectional [ PRIVATE 1 ] IMPLICIT UniTransactionPDU ,
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 ,
ansiabort [ PRIVATE 22 ] IMPLICIT AbortPDU
ansiconversationWithoutPerm [ PRIVATE 6 ] IMPLICIT TransactionPDU
}
Unidirectional ::= SEQUENCE{
@ -353,21 +351,11 @@ ReturnErrorProblem ::= INTEGER { unrecognizedInvokeID (0),
mistypedParameter (4) }
UniTransactionPDU ::= SEQUENCE
{
identifier TransactionID ,
dialoguePortionansi DialoguePortionANSI OPTIONAL ,
componentPortion ComponentSequence OPTIONAL
}
TransactionPDU ::= SEQUENCE
{
identifier TransactionID ,
dialoguePortionansi DialoguePortionANSI OPTIONAL ,
componentPortion ComponentSequence OPTIONAL
dialoguePortionansi DialoguePortionANSI OPTIONAL
}
--TransactionPDU should include either a Dialogue Portion , a Component Sequence or both
@ -378,32 +366,6 @@ TransactionID ::= [PRIVATE 7 ] IMPLICIT OCTET STRING
-- 8 Octet for Conversation in the order Originating then Responding TID
AbortPDU ::= SEQUENCE
{
identifier TransactionID ,
dialoguePortionansi DialoguePortionANSI OPTIONAL ,
causeInformation CHOICE {
abortCause P-Abort-cause ,
userInformation UserInformation -- UserAbortInformation
} OPTIONAL
}
--when the Abort package is generated by the Transaction sublayer,
--the P-Abort-cause must be present
P-Abort-cause ::= [ PRIVATE 23 ] IMPLICIT INTEGER {
unrecognizedPackageType ( 1 ) ,
incorrestTransactionPortion ( 2 ) ,
badlyStructuredTransactionPortion ( 3 ) ,
unassignedRespondingTransactionID ( 4 ) ,
permissionToReleaseProblem ( 5 ) ,
resourceUnavilable ( 6 ) ,
unrecognizedDialoguePortionID ( 7 ) ,
badlyStructuredDialoguePortion ( 8 ) ,
missingDialoguePortion ( 9 ) ,
inconsistentDialoguePortion ( 10 ) }
DialoguePortionANSI ::= [ PRIVATE 25 ] IMPLICIT SEQUENCE {
version ProtocolVersion OPTIONAL ,
applicationContext [0] CHOICE {
@ -435,85 +397,6 @@ Confidentiality ::= SEQUENCE {
... }
--UserAbortInformation ::= [ PRIVATE 24 ] EXTERNAL
ComponentSequence ::= [ PRIVATE 8 ] IMPLICIT SEQUENCE OF ComponentPDU
ComponentPDU ::=
CHOICE {
invokeLastansi [ PRIVATE 9 ] IMPLICIT InvokePDU ,
returnResultLastansi [ PRIVATE 10 ] IMPLICIT ReturnResultPDU,
returnErroransi [ PRIVATE 11 ] IMPLICIT ReturnErrorPDU ,
rejectansi [ PRIVATE 12 ] IMPLICIT RejectPDU ,
invokeNotLastansi [ PRIVATE 13 ] IMPLICIT InvokePDU ,
returnResultNotLastansi [ PRIVATE 14 ] IMPLICIT ReturnResultPDU
}
InvokePDU ::= SEQUENCE {
componentIDs [ PRIVATE 15 ] IMPLICIT OCTET STRING (SIZE(0..2)) OPTIONAL ,
operationCode OperationCode OPTIONAL,
parameterinv ANSIparamch
}
ANSIParameters ::= ANY
ANSIparamch ::= SEQUENCE {
ansiparams ANSIParameters OPTIONAL,
ansiparams1 ANSIParameters OPTIONAL,
ansiparams2 ANSIParameters OPTIONAL,
ansiparams3 ANSIParameters OPTIONAL,
ansiparams4 ANSIParameters OPTIONAL,
ansiparams5 ANSIParameters OPTIONAL,
ansiparams6 ANSIParameters OPTIONAL,
ansiparams7 ANSIParameters OPTIONAL,
ansiparams8 ANSIParameters OPTIONAL,
ansiparams9 ANSIParameters OPTIONAL,
ansiparams10 ANSIParameters OPTIONAL,
ansiparams11 ANSIParameters OPTIONAL,
ansiparams12 ANSIParameters OPTIONAL,
ansiparams13 ANSIParameters OPTIONAL,
ansiparams14 ANSIParameters OPTIONAL,
ansiparams15 ANSIParameters OPTIONAL,
ansiparams16 ANSIParameters OPTIONAL,
ansiparams17 ANSIParameters OPTIONAL,
ansiparams18 ANSIParameters OPTIONAL,
ansiparams19 ANSIParameters OPTIONAL,
ansiparams20 ANSIParameters OPTIONAL,
ansiparams21 ANSIParameters OPTIONAL
}
ReturnResultPDU ::= SEQUENCE {
componentID ComponentID,
parameterrr ANSIparamch
}
ComponentID ::= [ PRIVATE 15 ] IMPLICIT OCTET STRING ( SIZE(1) )
ReturnErrorPDU ::= SEQUENCE {
componentID ComponentID ,
errorCode ErrorCode ,
parameterre ANSIparamch
}
RejectPDU ::= SEQUENCE {
componentID ComponentID ,
rejectProblem [PRIVATE 21 ] IMPLICIT ProblemPDU,
parameterrj ANSIparamch
}
ProblemPDU ::= INTEGER {
general-unrecognisedComponentType (257) ,
general-incorrectComponentPortion ( 258 ) ,
general-badlyStructuredCompPortion ( 259 )
}
OperationCode ::= CHOICE
{
national [PRIVATE 16] IMPLICIT INTEGER (-32768..32767),
private [PRIVATE 17] IMPLICIT INTEGER
}
ErrorCode ::= CHOICE
{

View File

@ -139,38 +139,6 @@ dissect_tcap_TheExternUserInfo(implicit_tag, next_tvb, 0, actx, tcap_top_tree, h
return comp_offset+len;
#----------------------------------------------------------------------------------------
#.FN_BODY ANSIParameters
/* we are doing the ParamSet here so need to look at the tags*/
guint32 len;
len = tvb_length_remaining(tvb, offset);
if (len > 2) /* arghhh I dont know whether this is constructed or not! */
offset = dissect_tcap_param(actx,tree,tvb,offset);
else
offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, 0, hf_index,
NULL);
#----------------------------------------------------------------------------------------
#.FN_BODY ComponentPDU
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 offset;
%(DEFAULT_BODY)s
dissect_tcap_ANSI_ComponentPDU(implicit_tag, next_tvb, 0, actx, tcap_top_tree, hf_index);
#----------------------------------------------------------------------------------------
#.FN_BODY OrigTransactionID
tvbuff_t *parameter_tvb;
@ -285,14 +253,6 @@ if (check_col(actx->pinfo->cinfo, COL_INFO))
#.END
#.FN_HDR AbortPDU
gp_tcapsrt_info->ope=TC_ANSI_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))

View File

@ -99,13 +99,11 @@ 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_ansiunidirectional = -1; /* UniTransactionPDU */
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_ansiabort = -1; /* AbortPDU */
static int hf_tcap_dialoguePortion = -1; /* DialoguePortion */
static int hf_tcap_components = -1; /* ComponentPortion */
static int hf_tcap_otid = -1; /* OrigTransactionID */
@ -137,14 +135,11 @@ 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_componentPortion = -1; /* ComponentSequence */
static int hf_tcap_causeInformation = -1; /* T_causeInformation */
static int hf_tcap_abortCause = -1; /* P_Abort_cause */
static int hf_tcap_userInformation = -1; /* UserInformation */
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 */
@ -152,45 +147,6 @@ 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__untag_item_01 = -1; /* ComponentPDU */
static int hf_tcap_invokeLastansi = -1; /* InvokePDU */
static int hf_tcap_returnResultLastansi = -1; /* ReturnResultPDU */
static int hf_tcap_returnErroransi = -1; /* ReturnErrorPDU */
static int hf_tcap_rejectansi = -1; /* RejectPDU */
static int hf_tcap_invokeNotLastansi = -1; /* InvokePDU */
static int hf_tcap_returnResultNotLastansi = -1; /* ReturnResultPDU */
static int hf_tcap_componentIDs = -1; /* OCTET_STRING_SIZE_0_2 */
static int hf_tcap_operationCode = -1; /* OperationCode */
static int hf_tcap_parameterinv = -1; /* ANSIparamch */
static int hf_tcap_ansiparams = -1; /* ANSIParameters */
static int hf_tcap_ansiparams1 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams2 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams3 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams4 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams5 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams6 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams7 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams8 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams9 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams10 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams11 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams12 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams13 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams14 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams15 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams16 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams17 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams18 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams19 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams20 = -1; /* ANSIParameters */
static int hf_tcap_ansiparams21 = -1; /* ANSIParameters */
static int hf_tcap_componentID = -1; /* ComponentID */
static int hf_tcap_parameterrr = -1; /* ANSIparamch */
static int hf_tcap_parameterre = -1; /* ANSIparamch */
static int hf_tcap_rejectProblem = -1; /* ProblemPDU */
static int hf_tcap_parameterrj = -1; /* ANSIparamch */
static int hf_tcap_national = -1; /* INTEGER_M32768_32767 */
static int hf_tcap_private = -1; /* INTEGER */
static int hf_tcap_nationaler = -1; /* INTEGER_M32768_32767 */
static int hf_tcap_privateer = -1; /* INTEGER */
static int hf_tcap_unidialoguePDU = -1; /* AUDT_apdu */
@ -251,23 +207,12 @@ 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_UniTransactionPDU = -1;
static gint ett_tcap_TransactionPDU = -1;
static gint ett_tcap_AbortPDU = -1;
static gint ett_tcap_T_causeInformation = -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_SEQUENCE_OF_ComponentPDU = -1;
static gint ett_tcap_ComponentPDU = -1;
static gint ett_tcap_InvokePDU = -1;
static gint ett_tcap_ANSIparamch = -1;
static gint ett_tcap_ReturnResultPDU = -1;
static gint ett_tcap_ReturnErrorPDU = -1;
static gint ett_tcap_RejectPDU = -1;
static gint ett_tcap_OperationCode = -1;
static gint ett_tcap_ErrorCode = -1;
static gint ett_tcap_UniDialoguePDU = -1;
static gint ett_tcap_AUDT_apdu_U = -1;
@ -302,7 +247,6 @@ 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_ANSI_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;
@ -1201,7 +1145,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 176 "tcap.cnf"
#line 144 "tcap.cnf"
tvbuff_t *parameter_tvb;
guint8 len, i;
proto_item *tid_item;
@ -1254,7 +1198,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 250 "tcap.cnf"
#line 218 "tcap.cnf"
gp_tcapsrt_info->ope=TC_BEGIN;
/* Do not change col_add_str() to col_append_str() here: we _want_ this call
@ -1277,7 +1221,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 215 "tcap.cnf"
#line 183 "tcap.cnf"
tvbuff_t *parameter_tvb;
guint8 len , i;
proto_item *tid_item;
@ -1327,7 +1271,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 265 "tcap.cnf"
#line 233 "tcap.cnf"
gp_tcapsrt_info->ope=TC_END;
if (check_col(actx->pinfo->cinfo, COL_INFO))
@ -1350,7 +1294,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 273 "tcap.cnf"
#line 241 "tcap.cnf"
gp_tcapsrt_info->ope=TC_CONT;
if (check_col(actx->pinfo->cinfo, COL_INFO))
@ -1422,7 +1366,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 281 "tcap.cnf"
#line 249 "tcap.cnf"
gp_tcapsrt_info->ope=TC_ABORT;
if (check_col(actx->pinfo->cinfo, COL_INFO))
@ -1438,7 +1382,7 @@ 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 321 "tcap.cnf"
#line 281 "tcap.cnf"
tvbuff_t *next_tvb;
guint8 len;
@ -1630,276 +1574,9 @@ dissect_tcap_DialoguePortionANSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
}
static int
dissect_tcap_OCTET_STRING_SIZE_0_2(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 const value_string tcap_OperationCode_vals[] = {
{ 16, "national" },
{ 17, "private" },
{ 0, NULL }
};
static const ber_choice_t OperationCode_choice[] = {
{ 16, &hf_tcap_national , BER_CLASS_PRI, 16, BER_FLAGS_IMPLTAG, dissect_tcap_INTEGER_M32768_32767 },
{ 17, &hf_tcap_private , BER_CLASS_PRI, 17, BER_FLAGS_IMPLTAG, dissect_tcap_INTEGER },
{ 0, NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_OperationCode(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,
OperationCode_choice, hf_index, ett_tcap_OperationCode,
NULL);
return offset;
}
static int
dissect_tcap_ANSIParameters(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"
/* we are doing the ParamSet here so need to look at the tags*/
guint32 len;
len = tvb_length_remaining(tvb, offset);
if (len > 2) /* arghhh I dont know whether this is constructed or not! */
offset = dissect_tcap_param(actx,tree,tvb,offset);
else
offset = dissect_ber_octet_string(TRUE, actx, tree, tvb, 0, hf_index,
NULL);
return offset;
}
static const ber_sequence_t ANSIparamch_sequence[] = {
{ &hf_tcap_ansiparams , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams1 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams2 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams3 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams4 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams5 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams6 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams7 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams8 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams9 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams10 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams11 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams12 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams13 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams14 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams15 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams16 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams17 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams18 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams19 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams20 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ &hf_tcap_ansiparams21 , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIParameters },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_ANSIparamch(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,
ANSIparamch_sequence, hf_index, ett_tcap_ANSIparamch);
return offset;
}
static const ber_sequence_t InvokePDU_sequence[] = {
{ &hf_tcap_componentIDs , BER_CLASS_PRI, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_tcap_OCTET_STRING_SIZE_0_2 },
{ &hf_tcap_operationCode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_tcap_OperationCode },
{ &hf_tcap_parameterinv , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIparamch },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_InvokePDU(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,
InvokePDU_sequence, hf_index, ett_tcap_InvokePDU);
return offset;
}
static int
dissect_tcap_ComponentID(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, 15, TRUE, dissect_tcap_OCTET_STRING_SIZE_1);
return offset;
}
static const ber_sequence_t ReturnResultPDU_sequence[] = {
{ &hf_tcap_componentID , BER_CLASS_PRI, 15, BER_FLAGS_NOOWNTAG, dissect_tcap_ComponentID },
{ &hf_tcap_parameterrr , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIparamch },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_ReturnResultPDU(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,
ReturnResultPDU_sequence, hf_index, ett_tcap_ReturnResultPDU);
return offset;
}
static const ber_sequence_t ReturnErrorPDU_sequence[] = {
{ &hf_tcap_componentID , BER_CLASS_PRI, 15, BER_FLAGS_NOOWNTAG, dissect_tcap_ComponentID },
{ &hf_tcap_errorCode , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_tcap_ErrorCode },
{ &hf_tcap_parameterre , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIparamch },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_ReturnErrorPDU(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,
ReturnErrorPDU_sequence, hf_index, ett_tcap_ReturnErrorPDU);
return offset;
}
static const value_string tcap_ProblemPDU_vals[] = {
{ 257, "general-unrecognisedComponentType" },
{ 258, "general-incorrectComponentPortion" },
{ 259, "general-badlyStructuredCompPortion" },
{ 0, NULL }
};
static int
dissect_tcap_ProblemPDU(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_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const ber_sequence_t RejectPDU_sequence[] = {
{ &hf_tcap_componentID , BER_CLASS_PRI, 15, BER_FLAGS_NOOWNTAG, dissect_tcap_ComponentID },
{ &hf_tcap_rejectProblem , BER_CLASS_PRI, 21, BER_FLAGS_IMPLTAG, dissect_tcap_ProblemPDU },
{ &hf_tcap_parameterrj , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tcap_ANSIparamch },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_RejectPDU(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,
RejectPDU_sequence, hf_index, ett_tcap_RejectPDU);
return offset;
}
static const value_string tcap_ComponentPDU_vals[] = {
{ 9, "invokeLastansi" },
{ 10, "returnResultLastansi" },
{ 11, "returnErroransi" },
{ 12, "rejectansi" },
{ 13, "invokeNotLastansi" },
{ 14, "returnResultNotLastansi" },
{ 0, NULL }
};
static const ber_choice_t ComponentPDU_choice[] = {
{ 9, &hf_tcap_invokeLastansi , BER_CLASS_PRI, 9, BER_FLAGS_IMPLTAG, dissect_tcap_InvokePDU },
{ 10, &hf_tcap_returnResultLastansi, BER_CLASS_PRI, 10, BER_FLAGS_IMPLTAG, dissect_tcap_ReturnResultPDU },
{ 11, &hf_tcap_returnErroransi, BER_CLASS_PRI, 11, BER_FLAGS_IMPLTAG, dissect_tcap_ReturnErrorPDU },
{ 12, &hf_tcap_rejectansi , BER_CLASS_PRI, 12, BER_FLAGS_IMPLTAG, dissect_tcap_RejectPDU },
{ 13, &hf_tcap_invokeNotLastansi, BER_CLASS_PRI, 13, BER_FLAGS_IMPLTAG, dissect_tcap_InvokePDU },
{ 14, &hf_tcap_returnResultNotLastansi, BER_CLASS_PRI, 14, BER_FLAGS_IMPLTAG, dissect_tcap_ReturnResultPDU },
{ 0, NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_ComponentPDU(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 155 "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 offset;
offset = dissect_ber_choice(actx, tree, tvb, offset,
ComponentPDU_choice, hf_index, ett_tcap_ComponentPDU,
NULL);
dissect_tcap_ANSI_ComponentPDU(implicit_tag, next_tvb, 0, actx, tcap_top_tree, hf_index);
return offset;
}
static const ber_sequence_t SEQUENCE_OF_ComponentPDU_sequence_of[1] = {
{ &hf_tcap__untag_item_01 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_tcap_ComponentPDU },
};
static int
dissect_tcap_SEQUENCE_OF_ComponentPDU(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_of(implicit_tag, actx, tree, tvb, offset,
SEQUENCE_OF_ComponentPDU_sequence_of, hf_index, ett_tcap_SEQUENCE_OF_ComponentPDU);
return offset;
}
static int
dissect_tcap_ComponentSequence(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, 8, TRUE, dissect_tcap_SEQUENCE_OF_ComponentPDU);
return offset;
}
static const ber_sequence_t UniTransactionPDU_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 },
{ &hf_tcap_componentPortion, BER_CLASS_PRI, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ComponentSequence },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_UniTransactionPDU(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,
UniTransactionPDU_sequence, hf_index, ett_tcap_UniTransactionPDU);
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 },
{ &hf_tcap_componentPortion, BER_CLASS_PRI, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tcap_ComponentSequence },
{ NULL, 0, 0, 0, NULL }
};
@ -1915,7 +1592,7 @@ dissect_tcap_TransactionPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
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 297 "tcap.cnf"
#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 ");
@ -1929,7 +1606,7 @@ if (check_col(actx->pinfo->cinfo, COL_INFO))
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 301 "tcap.cnf"
#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 ");
@ -1943,7 +1620,7 @@ if (check_col(actx->pinfo->cinfo, COL_INFO))
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 305 "tcap.cnf"
#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 ");
@ -1957,7 +1634,7 @@ if (check_col(actx->pinfo->cinfo, COL_INFO))
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 309 "tcap.cnf"
#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 ");
@ -1971,7 +1648,7 @@ if (check_col(actx->pinfo->cinfo, COL_INFO))
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 313 "tcap.cnf"
#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 ");
@ -1983,97 +1660,17 @@ if (check_col(actx->pinfo->cinfo, COL_INFO))
}
static const value_string tcap_P_Abort_cause_U_vals[] = {
{ 1, "unrecognizedPackageType" },
{ 2, "incorrestTransactionPortion" },
{ 3, "badlyStructuredTransactionPortion" },
{ 4, "unassignedRespondingTransactionID" },
{ 5, "permissionToReleaseProblem" },
{ 6, "resourceUnavilable" },
{ 7, "unrecognizedDialoguePortionID" },
{ 8, "badlyStructuredDialoguePortion" },
{ 9, "missingDialoguePortion" },
{ 10, "inconsistentDialoguePortion" },
{ 0, NULL }
};
static int
dissect_tcap_P_Abort_cause_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_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int
dissect_tcap_P_Abort_cause(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, 23, TRUE, dissect_tcap_P_Abort_cause_U);
return offset;
}
static const value_string tcap_T_causeInformation_vals[] = {
{ 0, "abortCause" },
{ 1, "userInformation" },
{ 0, NULL }
};
static const ber_choice_t T_causeInformation_choice[] = {
{ 0, &hf_tcap_abortCause , BER_CLASS_PRI, 23, BER_FLAGS_NOOWNTAG, dissect_tcap_P_Abort_cause },
{ 1, &hf_tcap_userInformation, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_tcap_UserInformation },
{ 0, NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_T_causeInformation(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_causeInformation_choice, hf_index, ett_tcap_T_causeInformation,
NULL);
return offset;
}
static const ber_sequence_t AbortPDU_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 },
{ &hf_tcap_causeInformation, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_tcap_T_causeInformation },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_tcap_AbortPDU(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 289 "tcap.cnf"
gp_tcapsrt_info->ope=TC_ANSI_ABORT;
if (check_col(actx->pinfo->cinfo, COL_INFO))
col_set_str(actx->pinfo->cinfo, COL_INFO, "Abort ");
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
AbortPDU_sequence, hf_index, ett_tcap_AbortPDU);
return offset;
}
static const value_string tcap_TCMessage_vals[] = {
{ 0, "unidirectional" },
{ 1, "begin" },
{ 2, "end" },
{ 3, "continue" },
{ 4, "abort" },
{ 5, "ansiunidirectional" },
{ 6, "ansiqueryWithPerm" },
{ 7, "ansiqueryWithoutPerm" },
{ 8, "ansiresponse" },
{ 9, "ansiconversationWithPerm" },
{ 10, "ansiconversationWithoutPerm" },
{ 11, "ansiabort" },
{ 5, "ansiqueryWithPerm" },
{ 6, "ansiqueryWithoutPerm" },
{ 7, "ansiresponse" },
{ 8, "ansiconversationWithPerm" },
{ 9, "ansiconversationWithoutPerm" },
{ 0, NULL }
};
@ -2083,13 +1680,11 @@ static const ber_choice_t TCMessage_choice[] = {
{ 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_ansiunidirectional, BER_CLASS_PRI, 1, BER_FLAGS_IMPLTAG, dissect_tcap_UniTransactionPDU },
{ 6, &hf_tcap_ansiqueryWithPerm, BER_CLASS_PRI, 2, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiqueryWithPerm },
{ 7, &hf_tcap_ansiqueryWithoutPerm, BER_CLASS_PRI, 3, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiqueryWithoutPerm },
{ 8, &hf_tcap_ansiresponse , BER_CLASS_PRI, 4, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiresponse },
{ 9, &hf_tcap_ansiconversationWithPerm, BER_CLASS_PRI, 5, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiconversationWithPerm },
{ 10, &hf_tcap_ansiconversationWithoutPerm, BER_CLASS_PRI, 6, BER_FLAGS_IMPLTAG, dissect_tcap_T_ansiconversationWithoutPerm },
{ 11, &hf_tcap_ansiabort , BER_CLASS_PRI, 22, BER_FLAGS_IMPLTAG, dissect_tcap_AbortPDU },
{ 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 },
{ 0, NULL, 0, 0, 0, NULL }
};
@ -2227,7 +1822,7 @@ static void dissect_UniDialoguePDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_
/*--- End of included file: packet-tcap-fn.c ---*/
#line 147 "packet-tcap-template.c"
#line 146 "packet-tcap-template.c"
@ -2350,7 +1945,7 @@ proto_reg_handoff_tcap(void)
/*--- End of included file: packet-tcap-dis-tab.c ---*/
#line 262 "packet-tcap-template.c"
#line 261 "packet-tcap-template.c"
}
static void init_tcap(void);
@ -2523,10 +2118,6 @@ proto_register_tcap(void)
{ "abort", "tcap.abort",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.Abort", HFILL }},
{ &hf_tcap_ansiunidirectional,
{ "ansiunidirectional", "tcap.ansiunidirectional",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.UniTransactionPDU", HFILL }},
{ &hf_tcap_ansiqueryWithPerm,
{ "ansiqueryWithPerm", "tcap.ansiqueryWithPerm",
FT_NONE, BASE_NONE, NULL, 0,
@ -2547,10 +2138,6 @@ proto_register_tcap(void)
{ "ansiconversationWithoutPerm", "tcap.ansiconversationWithoutPerm",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.T_ansiconversationWithoutPerm", HFILL }},
{ &hf_tcap_ansiabort,
{ "ansiabort", "tcap.ansiabort",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.AbortPDU", HFILL }},
{ &hf_tcap_dialoguePortion,
{ "dialoguePortion", "tcap.dialoguePortion",
FT_BYTES, BASE_HEX, NULL, 0,
@ -2675,22 +2262,6 @@ proto_register_tcap(void)
{ "dialoguePortionansi", "tcap.dialoguePortionansi",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.DialoguePortionANSI", HFILL }},
{ &hf_tcap_componentPortion,
{ "componentPortion", "tcap.componentPortion",
FT_UINT32, BASE_DEC, NULL, 0,
"tcap.ComponentSequence", HFILL }},
{ &hf_tcap_causeInformation,
{ "causeInformation", "tcap.causeInformation",
FT_UINT32, BASE_DEC, VALS(tcap_T_causeInformation_vals), 0,
"tcap.T_causeInformation", HFILL }},
{ &hf_tcap_abortCause,
{ "abortCause", "tcap.abortCause",
FT_INT32, BASE_DEC, VALS(tcap_P_Abort_cause_U_vals), 0,
"tcap.P_Abort_cause", HFILL }},
{ &hf_tcap_userInformation,
{ "userInformation", "tcap.userInformation",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.UserInformation", HFILL }},
{ &hf_tcap_version,
{ "version", "tcap.version",
FT_BYTES, BASE_HEX, NULL, 0,
@ -2707,6 +2278,10 @@ proto_register_tcap(void)
{ "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,
@ -2735,162 +2310,6 @@ proto_register_tcap(void)
{ "objectConfidentialityId", "tcap.objectConfidentialityId",
FT_OID, BASE_NONE, NULL, 0,
"tcap.OBJECT_IDENTIFIER", HFILL }},
{ &hf_tcap__untag_item_01,
{ "Item", "tcap._untag_item",
FT_UINT32, BASE_DEC, VALS(tcap_ComponentPDU_vals), 0,
"tcap.ComponentPDU", HFILL }},
{ &hf_tcap_invokeLastansi,
{ "invokeLastansi", "tcap.invokeLastansi",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.InvokePDU", HFILL }},
{ &hf_tcap_returnResultLastansi,
{ "returnResultLastansi", "tcap.returnResultLastansi",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ReturnResultPDU", HFILL }},
{ &hf_tcap_returnErroransi,
{ "returnErroransi", "tcap.returnErroransi",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ReturnErrorPDU", HFILL }},
{ &hf_tcap_rejectansi,
{ "rejectansi", "tcap.rejectansi",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.RejectPDU", HFILL }},
{ &hf_tcap_invokeNotLastansi,
{ "invokeNotLastansi", "tcap.invokeNotLastansi",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.InvokePDU", HFILL }},
{ &hf_tcap_returnResultNotLastansi,
{ "returnResultNotLastansi", "tcap.returnResultNotLastansi",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ReturnResultPDU", HFILL }},
{ &hf_tcap_componentIDs,
{ "componentIDs", "tcap.componentIDs",
FT_BYTES, BASE_HEX, NULL, 0,
"tcap.OCTET_STRING_SIZE_0_2", HFILL }},
{ &hf_tcap_operationCode,
{ "operationCode", "tcap.operationCode",
FT_UINT32, BASE_DEC, VALS(tcap_OperationCode_vals), 0,
"tcap.OperationCode", HFILL }},
{ &hf_tcap_parameterinv,
{ "parameterinv", "tcap.parameterinv",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIparamch", HFILL }},
{ &hf_tcap_ansiparams,
{ "ansiparams", "tcap.ansiparams",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams1,
{ "ansiparams1", "tcap.ansiparams1",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams2,
{ "ansiparams2", "tcap.ansiparams2",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams3,
{ "ansiparams3", "tcap.ansiparams3",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams4,
{ "ansiparams4", "tcap.ansiparams4",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams5,
{ "ansiparams5", "tcap.ansiparams5",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams6,
{ "ansiparams6", "tcap.ansiparams6",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams7,
{ "ansiparams7", "tcap.ansiparams7",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams8,
{ "ansiparams8", "tcap.ansiparams8",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams9,
{ "ansiparams9", "tcap.ansiparams9",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams10,
{ "ansiparams10", "tcap.ansiparams10",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams11,
{ "ansiparams11", "tcap.ansiparams11",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams12,
{ "ansiparams12", "tcap.ansiparams12",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams13,
{ "ansiparams13", "tcap.ansiparams13",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams14,
{ "ansiparams14", "tcap.ansiparams14",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams15,
{ "ansiparams15", "tcap.ansiparams15",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams16,
{ "ansiparams16", "tcap.ansiparams16",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams17,
{ "ansiparams17", "tcap.ansiparams17",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams18,
{ "ansiparams18", "tcap.ansiparams18",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams19,
{ "ansiparams19", "tcap.ansiparams19",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams20,
{ "ansiparams20", "tcap.ansiparams20",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_ansiparams21,
{ "ansiparams21", "tcap.ansiparams21",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIParameters", HFILL }},
{ &hf_tcap_componentID,
{ "componentID", "tcap.componentID",
FT_BYTES, BASE_HEX, NULL, 0,
"tcap.ComponentID", HFILL }},
{ &hf_tcap_parameterrr,
{ "parameterrr", "tcap.parameterrr",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIparamch", HFILL }},
{ &hf_tcap_parameterre,
{ "parameterre", "tcap.parameterre",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIparamch", HFILL }},
{ &hf_tcap_rejectProblem,
{ "rejectProblem", "tcap.rejectProblem",
FT_INT32, BASE_DEC, VALS(tcap_ProblemPDU_vals), 0,
"tcap.ProblemPDU", HFILL }},
{ &hf_tcap_parameterrj,
{ "parameterrj", "tcap.parameterrj",
FT_NONE, BASE_NONE, NULL, 0,
"tcap.ANSIparamch", HFILL }},
{ &hf_tcap_national,
{ "national", "tcap.national",
FT_INT32, BASE_DEC, NULL, 0,
"tcap.INTEGER_M32768_32767", HFILL }},
{ &hf_tcap_private,
{ "private", "tcap.private",
FT_INT32, BASE_DEC, NULL, 0,
"tcap.INTEGER", HFILL }},
{ &hf_tcap_nationaler,
{ "nationaler", "tcap.nationaler",
FT_INT32, BASE_DEC, NULL, 0,
@ -2933,7 +2352,7 @@ proto_register_tcap(void)
"", HFILL }},
/*--- End of included file: packet-tcap-hfarr.c ---*/
#line 324 "packet-tcap-template.c"
#line 323 "packet-tcap-template.c"
};
/* Setup protocol subtree array */
@ -2974,23 +2393,12 @@ proto_register_tcap(void)
&ett_tcap_T_problem,
&ett_tcap_OPERATION,
&ett_tcap_ERROR,
&ett_tcap_UniTransactionPDU,
&ett_tcap_TransactionPDU,
&ett_tcap_AbortPDU,
&ett_tcap_T_causeInformation,
&ett_tcap_DialoguePortionANSI_U,
&ett_tcap_T_applicationContext,
&ett_tcap_T_securityContext,
&ett_tcap_Confidentiality,
&ett_tcap_T_confidentialityId,
&ett_tcap_SEQUENCE_OF_ComponentPDU,
&ett_tcap_ComponentPDU,
&ett_tcap_InvokePDU,
&ett_tcap_ANSIparamch,
&ett_tcap_ReturnResultPDU,
&ett_tcap_ReturnErrorPDU,
&ett_tcap_RejectPDU,
&ett_tcap_OperationCode,
&ett_tcap_ErrorCode,
&ett_tcap_UniDialoguePDU,
&ett_tcap_AUDT_apdu_U,
@ -2998,7 +2406,7 @@ proto_register_tcap(void)
&ett_tcap_AUDT_user_information,
/*--- End of included file: packet-tcap-ettarr.c ---*/
#line 334 "packet-tcap-template.c"
#line 333 "packet-tcap-template.c"
};
/*static enum_val_t tcap_options[] = {
@ -3318,57 +2726,6 @@ dissect_tcap_ITU_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
return offset;
}
/*
* Call ANSI Subdissector to decode the Tcap Component
*/
static int
dissect_tcap_ANSI_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_)
{
dissector_handle_t subdissector_handle;
gboolean is_subdissector=FALSE;
struct tcaphash_context_t * p_tcap_context=NULL;
gchar str[20];
/*
* Handle The TCAP Service Response Time
*/
if ( gtcap_HandleSRT ) {
if (!tcap_subdissector_used) {
p_tcap_context=tcapsrt_call_matching(tvb, actx->pinfo, tcap_stat_tree, gp_tcapsrt_info);
tcap_subdissector_used=TRUE;
gp_tcap_context=p_tcap_context;
tcap_private.context=p_tcap_context;
} else {
/* Take the last TCAP context */
p_tcap_context = gp_tcap_context;
tcap_private.context=p_tcap_context;
}
}
if (p_tcap_context) {
/* tcap_private.TransactionID_str = bytes_to_str(&(p_tcap_context->session_id),4); */
g_snprintf(str, sizeof(str), "(%d)",p_tcap_context->session_id);
tcap_private.TransactionID_str = str;
}
if ( (subdissector_handle
= get_ansi_tcap_subdissector(actx->pinfo->match_port))) {
/* Found according to SSN */
is_subdissector=TRUE;
} else {
/* Nothing found, take the Data handler */
subdissector_handle = data_handle;
is_subdissector=TRUE;
} /* SSN */
/* Call the sub dissector if present, and not already called */
if (is_subdissector)
call_dissector(subdissector_handle, tvb, actx->pinfo, tree);
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_)