diff options
-rw-r--r-- | asn1/c1222/c1222.asn | 27 | ||||
-rw-r--r-- | asn1/c1222/c1222.cnf | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-c1222.c | 68 |
3 files changed, 67 insertions, 29 deletions
diff --git a/asn1/c1222/c1222.asn b/asn1/c1222/c1222.asn index 40012c380e..4b75bc1047 100644 --- a/asn1/c1222/c1222.asn +++ b/asn1/c1222/c1222.asn @@ -5,19 +5,22 @@ C1222-PROTOCOL DEFINITIONS ::= BEGIN C1222-MESSAGE ::= [APPLICATION 0] IMPLICIT SEQUENCE { - aSO-context [1] ASO-qualifier OPTIONAL, - called-AP-title [2] Called-AP-title OPTIONAL, - called-AP-invocation-id [4] Called-AP-invocation-id OPTIONAL, - calling-AP-title [6] Calling-AP-title OPTIONAL, - calling-AE-qualifier [7] Calling-AE-qualifier OPTIONAL, - calling-AP-invocation-id [8] Calling-AP-invocation-id, - mechanism-name [11] IMPLICIT Mechanism-name OPTIONAL, - calling-authentication-value [12] Calling-authentication-value OPTIONAL, - user-information [30] User-information + aSO-context [1] ASO-qualifier OPTIONAL, + called-AP-title [2] Called-AP-title OPTIONAL, + called-AP-invocation-id [4] Called-AP-invocation-id OPTIONAL, + calling-AP-title [6] Calling-AP-title OPTIONAL, + calling-AE-qualifier [7] Calling-AE-qualifier OPTIONAL, + calling-AP-invocation-id [8] Calling-AP-invocation-id, + mechanism-name [11] IMPLICIT Mechanism-name OPTIONAL, + calling-authentication-value [12] Calling-authentication-value OPTIONAL, + user-information [30] User-information } ASO-qualifier ::= OBJECT IDENTIFIER -AP-title ::= OBJECT IDENTIFIER +AP-title ::= CHOICE { + ap-title-form2 OBJECT IDENTIFIER, + ap-title-form4 [0] IMPLICIT OBJECT IDENTIFIER -- RELATIVE-OID +} Called-AP-title ::= AP-title Calling-AP-title ::= AP-title AP-invocation-id ::= INTEGER @@ -35,8 +38,8 @@ Calling-authentication-value ::= [2] IMPLICIT SEQUENCE { } Authentication-value-encoding ::= CHOICE { - calling-authentication-value-single-asn1 [0] Calling-authentication-value-single-asn1, - calling-authentication-value-octet-aligned [1] IMPLICIT OCTET STRING + calling-authentication-value-single-asn1 [0] Calling-authentication-value-single-asn1, + calling-authentication-value-octet-aligned [1] IMPLICIT OCTET STRING } Calling-authentication-value-single-asn1 ::= CHOICE { diff --git a/asn1/c1222/c1222.cnf b/asn1/c1222/c1222.cnf index 4bdecf686e..d53bb9aa0c 100644 --- a/asn1/c1222/c1222.cnf +++ b/asn1/c1222/c1222.cnf @@ -22,6 +22,7 @@ C1222-MESSAGE Calling-authentication-value-c1222/_untag/iv-element BLURB="c1222.iv-element" Calling-authentication-value-c1222/_untag/key-id-element BLURB = "c1222.key-id-element" AP-invocation-id TYPE=FT_UINT32 +AE-qualifier TYPE=FT_UINT32 #.FN_BODY User-information gint8 end_device_class; diff --git a/epan/dissectors/packet-c1222.c b/epan/dissectors/packet-c1222.c index f06249763f..5959fbc8bc 100644 --- a/epan/dissectors/packet-c1222.c +++ b/epan/dissectors/packet-c1222.c @@ -108,6 +108,8 @@ static int hf_c1222_calling_AP_invocation_id = -1; /* Calling_AP_invocation_id static int hf_c1222_mechanism_name = -1; /* Mechanism_name */ static int hf_c1222_calling_authentication_value = -1; /* Calling_authentication_value */ static int hf_c1222_user_information = -1; /* User_information */ +static int hf_c1222_ap_title_form2 = -1; /* OBJECT_IDENTIFIER */ +static int hf_c1222_ap_title_form4 = -1; /* OBJECT_IDENTIFIER */ static int hf_c1222_calling_authentication_value_indirect = -1; /* INTEGER */ static int hf_c1222_calling_authentication_value_encoding = -1; /* Authentication_value_encoding */ static int hf_c1222_calling_authentication_value_single_asn1 = -1; /* Calling_authentication_value_single_asn1 */ @@ -217,6 +219,7 @@ static guint32 iv_element_len = 0; /*--- Included file: packet-c1222-ett.c ---*/ #line 1 "../../asn1/c1222/packet-c1222-ett.c" static gint ett_c1222_C1222_MESSAGE_U = -1; +static gint ett_c1222_AP_title = -1; static gint ett_c1222_Calling_authentication_value_U = -1; static gint ett_c1222_Authentication_value_encoding = -1; static gint ett_c1222_Calling_authentication_value_single_asn1 = -1; @@ -1036,7 +1039,7 @@ dissect_epsem(tvbuff_t *tvb, int offset, guint32 len, packet_info *pinfo, proto_ static int dissect_c1222_ASO_qualifier(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 51 "../../asn1/c1222/c1222.cnf" +#line 52 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -1050,17 +1053,39 @@ dissect_c1222_ASO_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int -dissect_c1222_AP_title(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_c1222_OBJECT_IDENTIFIER(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); return offset; } +static const value_string c1222_AP_title_vals[] = { + { 0, "ap-title-form2" }, + { 1, "ap-title-form4" }, + { 0, NULL } +}; + +static const ber_choice_t AP_title_choice[] = { + { 0, &hf_c1222_ap_title_form2, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_c1222_OBJECT_IDENTIFIER }, + { 1, &hf_c1222_ap_title_form4, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_c1222_OBJECT_IDENTIFIER }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_c1222_AP_title(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, + AP_title_choice, hf_index, ett_c1222_AP_title, + NULL); + + return offset; +} + + static int dissect_c1222_Called_AP_title(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 56 "../../asn1/c1222/c1222.cnf" +#line 57 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_c1222_AP_title(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -1085,7 +1110,7 @@ dissect_c1222_AP_invocation_id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static int dissect_c1222_Called_AP_invocation_id(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 61 "../../asn1/c1222/c1222.cnf" +#line 62 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_c1222_AP_invocation_id(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -1100,7 +1125,7 @@ dissect_c1222_Called_AP_invocation_id(gboolean implicit_tag _U_, tvbuff_t *tvb _ static int dissect_c1222_Calling_AP_title(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 86 "../../asn1/c1222/c1222.cnf" +#line 87 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_c1222_AP_title(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -1125,7 +1150,7 @@ dissect_c1222_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int dissect_c1222_Calling_AE_qualifier(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 66 "../../asn1/c1222/c1222.cnf" +#line 67 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_c1222_AE_qualifier(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -1140,7 +1165,7 @@ dissect_c1222_Calling_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_c1222_Calling_AP_invocation_id(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 "../../asn1/c1222/c1222.cnf" +#line 72 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_c1222_AP_invocation_id(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -1155,7 +1180,7 @@ dissect_c1222_Calling_AP_invocation_id(gboolean implicit_tag _U_, tvbuff_t *tvb static int dissect_c1222_Mechanism_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 76 "../../asn1/c1222/c1222.cnf" +#line 77 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -1180,7 +1205,7 @@ dissect_c1222_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _ static int dissect_c1222_Key_id_element(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 91 "../../asn1/c1222/c1222.cnf" +#line 92 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -1196,7 +1221,7 @@ dissect_c1222_Key_id_element(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_c1222_Iv_element(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 96 "../../asn1/c1222/c1222.cnf" +#line 97 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -1370,7 +1395,7 @@ dissect_c1222_Calling_authentication_value_U(gboolean implicit_tag _U_, tvbuff_t static int dissect_c1222_Calling_authentication_value(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 81 "../../asn1/c1222/c1222.cnf" +#line 82 "../../asn1/c1222/c1222.cnf" FILL_START; offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_CON, 2, TRUE, dissect_c1222_Calling_authentication_value_U); @@ -1386,7 +1411,7 @@ dissect_c1222_Calling_authentication_value(gboolean implicit_tag _U_, tvbuff_t * static int dissect_c1222_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 27 "../../asn1/c1222/c1222.cnf" +#line 28 "../../asn1/c1222/c1222.cnf" gint8 end_device_class; gboolean pc, ind; gint32 tag; @@ -1418,9 +1443,9 @@ dissect_c1222_User_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static const ber_sequence_t C1222_MESSAGE_U_sequence[] = { { &hf_c1222_aSO_context , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_c1222_ASO_qualifier }, - { &hf_c1222_called_AP_title, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_c1222_Called_AP_title }, + { &hf_c1222_called_AP_title, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_c1222_Called_AP_title }, { &hf_c1222_called_AP_invocation_id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_c1222_Called_AP_invocation_id }, - { &hf_c1222_calling_AP_title, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_c1222_Calling_AP_title }, + { &hf_c1222_calling_AP_title, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_c1222_Calling_AP_title }, { &hf_c1222_calling_AE_qualifier, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_c1222_Calling_AE_qualifier }, { &hf_c1222_calling_AP_invocation_id, BER_CLASS_CON, 8, 0, dissect_c1222_Calling_AP_invocation_id }, { &hf_c1222_mechanism_name, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_c1222_Mechanism_name }, @@ -1746,7 +1771,7 @@ void proto_register_c1222(void) { "ASO_qualifier", HFILL }}, { &hf_c1222_called_AP_title, { "called-AP-title", "c1222.called_AP_title", - FT_OID, BASE_NONE, NULL, 0, + FT_UINT32, BASE_DEC, VALS(c1222_AP_title_vals), 0, NULL, HFILL }}, { &hf_c1222_called_AP_invocation_id, { "called-AP-invocation-id", "c1222.called_AP_invocation_id", @@ -1754,11 +1779,11 @@ void proto_register_c1222(void) { NULL, HFILL }}, { &hf_c1222_calling_AP_title, { "calling-AP-title", "c1222.calling_AP_title", - FT_OID, BASE_NONE, NULL, 0, + FT_UINT32, BASE_DEC, VALS(c1222_AP_title_vals), 0, NULL, HFILL }}, { &hf_c1222_calling_AE_qualifier, { "calling-AE-qualifier", "c1222.calling_AE_qualifier", - FT_INT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_c1222_calling_AP_invocation_id, { "calling-AP-invocation-id", "c1222.calling_AP_invocation_id", @@ -1776,6 +1801,14 @@ void proto_register_c1222(void) { { "user-information", "c1222.user_information_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_c1222_ap_title_form2, + { "ap-title-form2", "c1222.ap_title_form2", + FT_OID, BASE_NONE, NULL, 0, + "OBJECT_IDENTIFIER", HFILL }}, + { &hf_c1222_ap_title_form4, + { "ap-title-form4", "c1222.ap_title_form4", + FT_OID, BASE_NONE, NULL, 0, + "OBJECT_IDENTIFIER", HFILL }}, { &hf_c1222_calling_authentication_value_indirect, { "calling-authentication-value-indirect", "c1222.calling_authentication_value_indirect", FT_INT32, BASE_DEC, NULL, 0, @@ -1836,6 +1869,7 @@ void proto_register_c1222(void) { /*--- Included file: packet-c1222-ettarr.c ---*/ #line 1 "../../asn1/c1222/packet-c1222-ettarr.c" &ett_c1222_C1222_MESSAGE_U, + &ett_c1222_AP_title, &ett_c1222_Calling_authentication_value_U, &ett_c1222_Authentication_value_encoding, &ett_c1222_Calling_authentication_value_single_asn1, |