Modify the errorcode defenition to suit ANSI MAP, this is (probably) OK as

ANSI MAP is currently the only user of ANSI TCAP.
Bug: 6112

Change-Id: I49f89c862ddc8351091a9a939415e4ba6e7603f5
Reviewed-on: https://code.wireshark.org/review/6546
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
AndersBroman 2015-01-15 16:01:40 +01:00 committed by Anders Broman
parent ef0435bdb5
commit 1e1d96f108
2 changed files with 49 additions and 7 deletions

View File

@ -121,8 +121,24 @@ OperationCode ::= CHOICE{
ErrorCode ::= CHOICE {
national [PRIVATE 19] INTEGER (-128..127),
private [PRIVATE 20] INTEGER
}
--WS adaptation This is only correct for ANSI MAP but that's the only user.
private [PRIVATE 20] IMPLICIT ANSIMAPPrivateErrorcode
}
ANSIMAPPrivateErrorcode ::= INTEGER {
unrecognized-MIN (129),
unrecognized-ESN (130),
mINorHLR-Mismatch (131),
operation-Sequence-Problem (132),
resource-Shortage (133),
operation-Not-Supported (134),
trunk-Unavailable (135),
parameter-Error (136),
system-Failure (137),
unrecognized-Parameter-Value (138),
feature-Inactive (139),
missing-Parameter (140)
} (0..255)
Priority ::= INTEGER (0..MAX)

View File

@ -72,7 +72,7 @@ static int hf_ansi_tcap_op_specifier = -1;
static int hf_ansi_tcap_national = -1; /* T_national */
static int hf_ansi_tcap_private = -1; /* T_private */
static int hf_ansi_tcap_national_01 = -1; /* INTEGER_M128_127 */
static int hf_ansi_tcap_private_01 = -1; /* INTEGER */
static int hf_ansi_tcap_private_01 = -1; /* ANSIMAPPrivateErrorcode */
static int hf_ansi_tcap_unidirectional = -1; /* T_unidirectional */
static int hf_ansi_tcap_queryWithPerm = -1; /* T_queryWithPerm */
static int hf_ansi_tcap_queryWithoutPerm = -1; /* T_queryWithoutPerm */
@ -567,9 +567,25 @@ dissect_ansi_tcap_INTEGER_M128_127(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
}
static const value_string ansi_tcap_ANSIMAPPrivateErrorcode_vals[] = {
{ 129, "unrecognized-MIN" },
{ 130, "unrecognized-ESN" },
{ 131, "mINorHLR-Mismatch" },
{ 132, "operation-Sequence-Problem" },
{ 133, "resource-Shortage" },
{ 134, "operation-Not-Supported" },
{ 135, "trunk-Unavailable" },
{ 136, "parameter-Error" },
{ 137, "system-Failure" },
{ 138, "unrecognized-Parameter-Value" },
{ 139, "feature-Inactive" },
{ 140, "missing-Parameter" },
{ 0, NULL }
};
static int
dissect_ansi_tcap_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
dissect_ansi_tcap_ANSIMAPPrivateErrorcode(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);
@ -585,7 +601,7 @@ static const value_string ansi_tcap_ErrorCode_vals[] = {
static const ber_choice_t ErrorCode_choice[] = {
{ 19, &hf_ansi_tcap_national_01, BER_CLASS_PRI, 19, 0, dissect_ansi_tcap_INTEGER_M128_127 },
{ 20, &hf_ansi_tcap_private_01, BER_CLASS_PRI, 20, 0, dissect_ansi_tcap_INTEGER },
{ 20, &hf_ansi_tcap_private_01, BER_CLASS_PRI, 20, BER_FLAGS_IMPLTAG, dissect_ansi_tcap_ANSIMAPPrivateErrorcode },
{ 0, NULL, 0, 0, 0, NULL }
};
@ -680,6 +696,16 @@ dissect_ansi_tcap_ProtocolVersion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_ansi_tcap_INTEGER(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_ansi_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,
@ -1539,8 +1565,8 @@ proto_register_ansi_tcap(void)
"INTEGER_M128_127", HFILL }},
{ &hf_ansi_tcap_private_01,
{ "private", "ansi_tcap.private",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER", HFILL }},
FT_UINT32, BASE_DEC, VALS(ansi_tcap_ANSIMAPPrivateErrorcode_vals), 0,
"ANSIMAPPrivateErrorcode", HFILL }},
{ &hf_ansi_tcap_unidirectional,
{ "unidirectional", "ansi_tcap.unidirectional_element",
FT_NONE, BASE_NONE, NULL, 0,