From 286f231eb9237bd800aa339aff2413f147300552 Mon Sep 17 00:00:00 2001 From: Tomas Kukosa Date: Wed, 17 Oct 2007 10:25:21 +0000 Subject: new H.323 dissector - Generic Extensible Framework helper - Annex M1 (QSIG over H.323) - Annex M4 - Annex R H.225/H.245 support for Generic Extensible Framework (GEF) H.235 register MIKEY into new H.225/H.245 GEF tables regenerate H.225,H.245,H.235,H.450,H.450-ROS,T.35 from new makefiles svn path=/trunk/; revision=23216 --- epan/dissectors/Makefile.common | 1 + epan/dissectors/packet-h225.c | 145 +++++++-- epan/dissectors/packet-h225.h | 2 +- epan/dissectors/packet-h235.c | 72 +++-- epan/dissectors/packet-h235.h | 5 +- epan/dissectors/packet-h245.c | 331 +++++++++++++++----- epan/dissectors/packet-h245.h | 2 +- epan/dissectors/packet-h323.c | 628 ++++++++++++++++++++++++++++++++++++++ epan/dissectors/packet-h450-ros.c | 4 +- epan/dissectors/packet-h450-ros.h | 4 +- epan/dissectors/packet-h450.c | 18 +- epan/dissectors/packet-t38.c | 4 +- epan/dissectors/packet-t38.h | 4 +- 13 files changed, 1074 insertions(+), 146 deletions(-) create mode 100644 epan/dissectors/packet-h323.c (limited to 'epan') diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index 69ff803162..dfdc131009 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -102,6 +102,7 @@ ASN_DISSECTOR_SRC = \ packet-h235.c \ packet-h245.c \ packet-h248.c \ + packet-h323.c \ packet-h450.c \ packet-h450-ros.c \ packet-inap.c \ diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c index 433ab9c7b0..5c91a867ce 100644 --- a/epan/dissectors/packet-h225.c +++ b/epan/dissectors/packet-h225.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h225.c */ +/* packet-h225.c */ /* ../../tools/asn2wrs.py -e -p h225 -c h225.cnf -s packet-h225-template H323-MESSAGES.asn */ /* Input file: packet-h225-template.c */ @@ -63,6 +63,7 @@ #include #include "packet-h235.h" #include "packet-h245.h" +#include "packet-h323.h" #include "packet-q931.h" #include "packet-ssl.h" @@ -91,6 +92,8 @@ static dissector_handle_t data_handle; static dissector_table_t nsp_object_dissector_table; static dissector_table_t nsp_h221_dissector_table; static dissector_table_t tp_dissector_table; +static dissector_table_t gef_name_dissector_table; +static dissector_table_t gef_content_dissector_table; static dissector_handle_t h245_handle=NULL; @@ -602,10 +605,10 @@ static int hf_h225_callDurationLimit = -1; /* INTEGER_1_4294967295 */ static int hf_h225_enforceCallDurationLimit = -1; /* BOOLEAN */ static int hf_h225_callStartingPoint = -1; /* CallCreditServiceControl_callStartingPoint */ static int hf_h225_id = -1; /* GenericIdentifier */ -static int hf_h225_parameters = -1; /* SEQUENCE_SIZE_1_512_OF_EnumeratedParameter */ -static int hf_h225_parameters_item = -1; /* EnumeratedParameter */ -static int hf_h225_standard = -1; /* INTEGER_0_16383_ */ -static int hf_h225_oid = -1; /* OBJECT_IDENTIFIER */ +static int hf_h225_parameters = -1; /* T_parameters */ +static int hf_h225_parameters_item = -1; /* T_parameters_item */ +static int hf_h225_standard = -1; /* T_standard */ +static int hf_h225_oid = -1; /* T_oid */ static int hf_h225_genericIdentifier_nonStandard = -1; /* GloballyUniqueID */ static int hf_h225_content = -1; /* Content */ static int hf_h225_raw = -1; /* OCTET_STRING */ @@ -882,7 +885,7 @@ static int hf_h225_stopped = -1; /* NULL */ static int hf_h225_notAvailable = -1; /* NULL */ /*--- End of included file: packet-h225-hf.c ---*/ -#line 111 "packet-h225-template.c" +#line 114 "packet-h225-template.c" /* Initialize the subtree pointers */ static gint ett_h225 = -1; @@ -1045,10 +1048,11 @@ static gint ett_h225_CallCreditServiceControl = -1; static gint ett_h225_T_billingMode = -1; static gint ett_h225_CallCreditServiceControl_callStartingPoint = -1; static gint ett_h225_GenericData = -1; -static gint ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter = -1; +static gint ett_h225_T_parameters = -1; static gint ett_h225_GenericIdentifier = -1; static gint ett_h225_EnumeratedParameter = -1; static gint ett_h225_Content = -1; +static gint ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter = -1; static gint ett_h225_SEQUENCE_SIZE_1_16_OF_GenericData = -1; static gint ett_h225_FeatureSet = -1; static gint ett_h225_TransportChannelInfo = -1; @@ -1128,7 +1132,7 @@ static gint ett_h225_ServiceControlResponse = -1; static gint ett_h225_T_result = -1; /*--- End of included file: packet-h225-ett.c ---*/ -#line 115 "packet-h225-template.c" +#line 118 "packet-h225-template.c" /* Preferences */ static guint h225_tls_port = TLS_PORT_CS; @@ -1162,7 +1166,7 @@ static const char *tpOID; /* EnumeratedParameter -> Content -> Content/compound -> EnumeratedParameter */ static int dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -/* GenericData -> GenericData/parameters -> EnumeratedParameter -> Content -> Content/nested -> GenericData */ +/* GenericData -> GenericData/parameters -> GenericData/parameters/_item -> EnumeratedParameter -> Content -> Content/nested -> GenericData */ int dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); @@ -3627,9 +3631,34 @@ dissect_h225_CircuitIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int -dissect_h225_INTEGER_0_16383_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_h225_T_standard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 672 "h225.cnf" + gint32 value_int = -1; + gef_ctx_t *gefx; + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 16383U, NULL, TRUE); + 0U, 16383U, &value_int, TRUE); + + gefx = gef_ctx_get(actx->private_data); + if (gefx) gefx->id = ep_strdup_printf("%d", value_int); + + + return offset; +} + + + +static int +dissect_h225_T_oid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 681 "h225.cnf" + const gchar *oid_str = NULL; + gef_ctx_t *gefx; + + offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &oid_str); + + gefx = gef_ctx_get(actx->private_data); + if (gefx) gefx->id = oid_str; + return offset; } @@ -3643,18 +3672,32 @@ const value_string h225_GenericIdentifier_vals[] = { }; static const per_choice_t GenericIdentifier_choice[] = { - { 0, &hf_h225_standard , ASN1_EXTENSION_ROOT , dissect_h225_INTEGER_0_16383_ }, - { 1, &hf_h225_oid , ASN1_EXTENSION_ROOT , dissect_h225_OBJECT_IDENTIFIER }, + { 0, &hf_h225_standard , ASN1_EXTENSION_ROOT , dissect_h225_T_standard }, + { 1, &hf_h225_oid , ASN1_EXTENSION_ROOT , dissect_h225_T_oid }, { 2, &hf_h225_genericIdentifier_nonStandard, ASN1_EXTENSION_ROOT , dissect_h225_GloballyUniqueID }, { 0, NULL, 0, NULL } }; int dissect_h225_GenericIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 658 "h225.cnf" + gef_ctx_t *gefx; + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_h225_GenericIdentifier, GenericIdentifier_choice, NULL); +#line 660 "h225.cnf" + gef_ctx_update_key(gef_ctx_get(actx->private_data)); + /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG GenericIdentifier: %s", gef_ctx_get(actx->private_data)->key);*/ + gefx = gef_ctx_get(actx->private_data); + if (gefx) { + /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/ + actx->pinfo->private_data = actx; + dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree); + } + actx->private_data = gefx; /* subdissector could overwrite it */ + return offset; } @@ -3690,7 +3733,7 @@ dissect_h225_BMPString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static const per_sequence_t SEQUENCE_SIZE_1_512_OF_EnumeratedParameter_sequence_of[1] = { - { &hf_h225_parameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_EnumeratedParameter }, + { &hf_h225_compound_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_EnumeratedParameter }, }; static int @@ -3774,17 +3817,63 @@ dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * } + +static int +dissect_h225_T_parameters_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 640 "h225.cnf" + gef_ctx_t *parent_gefx; + + parent_gefx = gef_ctx_get(actx->private_data); + actx->private_data = gef_ctx_alloc(parent_gefx, NULL); + + offset = dissect_h225_EnumeratedParameter(tvb, offset, actx, tree, hf_index); + +#line 645 "h225.cnf" + actx->private_data = parent_gefx; + + return offset; +} + + +static const per_sequence_t T_parameters_sequence_of[1] = { + { &hf_h225_parameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_parameters_item }, +}; + +static int +dissect_h225_T_parameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_h225_T_parameters, T_parameters_sequence_of, + 1, 512); + + return offset; +} + + static const per_sequence_t GenericData_sequence[] = { { &hf_h225_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_GenericIdentifier }, - { &hf_h225_parameters , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter }, + { &hf_h225_parameters , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_T_parameters }, { NULL, 0, 0, NULL } }; int dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 626 "h225.cnf" + void *priv_data = actx->private_data; + gef_ctx_t *gefx; + + /* check if not inherited from FeatureDescriptor */ + gefx = gef_ctx_get(actx->private_data); + if (!gefx) { + gefx = gef_ctx_alloc(NULL, "GenericData"); + actx->private_data = gefx; + } + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h225_GenericData, GenericData_sequence); +#line 636 "h225.cnf" + actx->private_data = priv_data; + return offset; } @@ -3821,8 +3910,15 @@ dissect_h225_CircuitInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_h225_FeatureDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 650 "h225.cnf" + void *priv_data = actx->private_data; + actx->private_data = gef_ctx_alloc(NULL, "FeatureDescriptor"); + offset = dissect_h225_GenericData(tvb, offset, actx, tree, hf_index); +#line 653 "h225.cnf" + actx->private_data = priv_data; + return offset; } @@ -7307,7 +7403,7 @@ dissect_h225_RasMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, /*--- End of included file: packet-h225-fn.c ---*/ -#line 141 "packet-h225-template.c" +#line 144 "packet-h225-template.c" /* Forward declaration we need below */ @@ -9362,19 +9458,19 @@ void proto_register_h225(void) { { &hf_h225_parameters, { "parameters", "h225.parameters", FT_UINT32, BASE_DEC, NULL, 0, - "h225.SEQUENCE_SIZE_1_512_OF_EnumeratedParameter", HFILL }}, + "h225.T_parameters", HFILL }}, { &hf_h225_parameters_item, { "Item", "h225.parameters_item", FT_NONE, BASE_NONE, NULL, 0, - "h225.EnumeratedParameter", HFILL }}, + "h225.T_parameters_item", HFILL }}, { &hf_h225_standard, { "standard", "h225.standard", FT_UINT32, BASE_DEC, NULL, 0, - "h225.INTEGER_0_16383_", HFILL }}, + "h225.T_standard", HFILL }}, { &hf_h225_oid, { "oid", "h225.oid", FT_OID, BASE_NONE, NULL, 0, - "h225.OBJECT_IDENTIFIER", HFILL }}, + "h225.T_oid", HFILL }}, { &hf_h225_genericIdentifier_nonStandard, { "nonStandard", "h225.nonStandard", FT_GUID, BASE_NONE, NULL, 0, @@ -10473,7 +10569,7 @@ void proto_register_h225(void) { "h225.NULL", HFILL }}, /*--- End of included file: packet-h225-hfarr.c ---*/ -#line 254 "packet-h225-template.c" +#line 257 "packet-h225-template.c" }; /* List of subtrees */ @@ -10638,10 +10734,11 @@ void proto_register_h225(void) { &ett_h225_T_billingMode, &ett_h225_CallCreditServiceControl_callStartingPoint, &ett_h225_GenericData, - &ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter, + &ett_h225_T_parameters, &ett_h225_GenericIdentifier, &ett_h225_EnumeratedParameter, &ett_h225_Content, + &ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter, &ett_h225_SEQUENCE_SIZE_1_16_OF_GenericData, &ett_h225_FeatureSet, &ett_h225_TransportChannelInfo, @@ -10721,7 +10818,7 @@ void proto_register_h225(void) { &ett_h225_T_result, /*--- End of included file: packet-h225-ettarr.c ---*/ -#line 260 "packet-h225-template.c" +#line 263 "packet-h225-template.c" }; module_t *h225_module; @@ -10756,6 +10853,8 @@ void proto_register_h225(void) { nsp_object_dissector_table = register_dissector_table("h225.nsp.object", "H.225 NonStandardParameter (object)", FT_STRING, BASE_NONE); nsp_h221_dissector_table = register_dissector_table("h225.nsp.h221", "H.225 NonStandardParameter (h221)", FT_UINT32, BASE_HEX); tp_dissector_table = register_dissector_table("h225.tp", "H.225 TunnelledProtocol", FT_STRING, BASE_NONE); + gef_name_dissector_table = register_dissector_table("h225.gef.name", "H.225 Generic Extensible Framework (names)", FT_STRING, BASE_NONE); + gef_content_dissector_table = register_dissector_table("h225.gef.content", "H.225 Generic Extensible Framework", FT_STRING, BASE_NONE); register_init_routine(&h225_init_routine); h225_tap = register_tap("h225"); diff --git a/epan/dissectors/packet-h225.h b/epan/dissectors/packet-h225.h index b0cb05349e..d549fcb175 100644 --- a/epan/dissectors/packet-h225.h +++ b/epan/dissectors/packet-h225.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h225.h */ +/* packet-h225.h */ /* ../../tools/asn2wrs.py -e -p h225 -c h225.cnf -s packet-h225-template H323-MESSAGES.asn */ /* Input file: packet-h225-template.h */ diff --git a/epan/dissectors/packet-h235.c b/epan/dissectors/packet-h235.c index a42e8ace16..13458bbca9 100644 --- a/epan/dissectors/packet-h235.c +++ b/epan/dissectors/packet-h235.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h235.c */ -/* ../../tools/asn2wrs.py -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ +/* packet-h235.c */ +/* ../../tools/asn2wrs.py -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ /* Input file: packet-h235-template.c */ @@ -65,6 +65,7 @@ int proto_h235 = -1; /*--- Included file: packet-h235-hf.c ---*/ #line 1 "packet-h235-hf.c" +static int hf_h235_SrtpCryptoCapability_PDU = -1; /* SrtpCryptoCapability */ static int hf_h235_nonStandardIdentifier = -1; /* OBJECT_IDENTIFIER */ static int hf_h235_data = -1; /* OCTET_STRING */ static int hf_h235_halfkey = -1; /* BIT_STRING_SIZE_0_2048 */ @@ -571,7 +572,7 @@ static const per_sequence_t ENCRYPTED_sequence[] = { int dissect_h235_ENCRYPTED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 56 "h235.cnf" +#line 59 "h235.cnf" proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -601,7 +602,7 @@ static const per_sequence_t SIGNED_sequence[] = { int dissect_h235_SIGNED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 53 "h235.cnf" +#line 56 "h235.cnf" proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -764,7 +765,7 @@ static const per_sequence_t ClearToken_sequence[] = { int dissect_h235_ClearToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 63 "h235.cnf" +#line 66 "h235.cnf" proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -783,7 +784,7 @@ static const per_sequence_t HASHED_sequence[] = { int dissect_h235_HASHED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 59 "h235.cnf" +#line 62 "h235.cnf" proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -866,7 +867,7 @@ static const per_choice_t CryptoToken_choice[] = { int dissect_h235_CryptoToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 67 "h235.cnf" +#line 70 "h235.cnf" proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE); offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -1015,7 +1016,7 @@ static const per_sequence_t SrtpCryptoCapability_sequence_of[1] = { { &hf_h235_SrtpCryptoCapability_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_SrtpCryptoInfo }, }; -int +static int dissect_h235_SrtpCryptoCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, ett_h235_SrtpCryptoCapability, SrtpCryptoCapability_sequence_of); @@ -1100,6 +1101,17 @@ dissect_h235_SrtpKeys(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p return offset; } +/*--- PDUs ---*/ + +static int dissect_SrtpCryptoCapability_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_h235_SrtpCryptoCapability(tvb, offset, &asn1_ctx, tree, hf_h235_SrtpCryptoCapability_PDU); + offset += 7; offset >>= 3; + return offset; +} + /*--- End of included file: packet-h235-fn.c ---*/ #line 71 "packet-h235-template.c" @@ -1113,6 +1125,10 @@ void proto_register_h235(void) { /*--- Included file: packet-h235-hfarr.c ---*/ #line 1 "packet-h235-hfarr.c" + { &hf_h235_SrtpCryptoCapability_PDU, + { "SrtpCryptoCapability", "h235.SrtpCryptoCapability", + FT_UINT32, BASE_DEC, NULL, 0, + "h235.SrtpCryptoCapability", HFILL }}, { &hf_h235_nonStandardIdentifier, { "nonStandardIdentifier", "h235.nonStandardIdentifier", FT_OID, BASE_NONE, NULL, 0, @@ -1619,6 +1635,10 @@ void proto_register_h235(void) { add_oid_str_name(OID_TG, "itu-t(0) recommendation(0) h(8) 235 version(0) 3 70 - TG"); /* H.235.7, Chapter 9.5 */ add_oid_str_name(OID_SG, "itu-t(0) recommendation(0) h(8) 235 version(0) 3 71 - SG"); + /* H.235.8, Chapter 4.2, Table 2 */ + add_oid_str_name("0.0.8.235.0.4.91", "itu-t(0) recommendation(0) h(8) 235 version(0) 4 91 - AES_CM_128_HMAC_SHA1_80"); + add_oid_str_name("0.0.8.235.0.4.92", "itu-t(0) recommendation(0) h(8) 235 version(0) 4 92 - AES_CM_128_HMAC_SHA1_32"); + add_oid_str_name("0.0.8.235.0.4.93", "itu-t(0) recommendation(0) h(8) 235 version(0) 4 93 - F8_128_HMAC_SHA1_80"); } @@ -1628,23 +1648,27 @@ void proto_reg_handoff_h235(void) { mikey_handle = find_dissector("mikey"); /* H.235.7, Chapter 7.1, MIKEY operation at "session level" */ - dissector_add_string("h245.gen_par", OID_MIKEY "-0", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_PS "-0", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_DHHMAC "-0", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_PK_SIGN "-0", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_DH_SIGN "-0", mikey_handle); - dissector_add_string("h245.gen_par", "EncryptionSync-0", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY "/nonCollapsing/0", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS "/nonCollapsing/0", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC "/nonCollapsing/0", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN "/nonCollapsing/0", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN "/nonCollapsing/0", mikey_handle); + dissector_add_string("h245.gef.content", "EncryptionSync/0", mikey_handle); /* H.235.7, Chapter 7.2, MIKEY operation at "media level" */ - dissector_add_string("h245.gen_par", "EncryptionSync-76", mikey_handle); - dissector_add_string("h245.gen_par", "EncryptionSync-72", mikey_handle); - dissector_add_string("h245.gen_par", "EncryptionSync-73", mikey_handle); - dissector_add_string("h245.gen_par", "EncryptionSync-74", mikey_handle); - dissector_add_string("h245.gen_par", "EncryptionSync-75", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY "-76", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_PS "-72", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_DHHMAC "-73", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_PK_SIGN "-74", mikey_handle); - dissector_add_string("h245.gen_par", OID_MIKEY_DH_SIGN "-75", mikey_handle); + dissector_add_string("h245.gef.content", "EncryptionSync/76", mikey_handle); + dissector_add_string("h245.gef.content", "EncryptionSync/72", mikey_handle); + dissector_add_string("h245.gef.content", "EncryptionSync/73", mikey_handle); + dissector_add_string("h245.gef.content", "EncryptionSync/74", mikey_handle); + dissector_add_string("h245.gef.content", "EncryptionSync/75", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY "/nonCollapsing/76", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS "/nonCollapsing/72", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC "/nonCollapsing/73", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN "/nonCollapsing/74", mikey_handle); + dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN "/nonCollapsing/75", mikey_handle); + + /* H.235.8, Chapter 4.1.2, SrtpCryptoCapability transport */ + dissector_add_string("h245.gef.content", "GenericCapability/0.0.8.235.0.4.90/nonCollapsingRaw", + new_create_dissector_handle(dissect_SrtpCryptoCapability_PDU, proto_h235)); } diff --git a/epan/dissectors/packet-h235.h b/epan/dissectors/packet-h235.h index 06be6de191..2bd6f3a98d 100644 --- a/epan/dissectors/packet-h235.h +++ b/epan/dissectors/packet-h235.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h235.h */ -/* ../../tools/asn2wrs.py -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ +/* packet-h235.h */ +/* ../../tools/asn2wrs.py -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ /* Input file: packet-h235-template.h */ @@ -46,7 +46,6 @@ int dissect_h235_SIGNED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, int dissect_h235_ENCRYPTED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_h235_HASHED(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_h235_CryptoToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); -int dissect_h235_SrtpCryptoCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_h235_SrtpKeys(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); /*--- End of included file: packet-h235-exp.h ---*/ diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c index f0b37a162f..34464e9a90 100644 --- a/epan/dissectors/packet-h245.c +++ b/epan/dissectors/packet-h245.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h245.c */ +/* packet-h245.c */ /* ../../tools/asn2wrs.py -e -p h245 -c h245.cnf -s packet-h245-template MULTIMEDIA-SYSTEM-CONTROL.asn */ /* Input file: packet-h245-template.c */ @@ -59,6 +59,7 @@ #include "tap.h" #include "packet-tpkt.h" #include "packet-per.h" +#include "packet-h323.h" #include "packet-h245.h" #include "packet-rtp.h" #include "packet-rtcp.h" @@ -73,7 +74,7 @@ static dissector_handle_t rtcp_handle=NULL; static dissector_handle_t t38_handle=NULL; static dissector_table_t nsp_object_dissector_table; static dissector_table_t nsp_h221_dissector_table; -static dissector_table_t gen_par_dissector_table; +static dissector_table_t gef_content_dissector_table; static dissector_handle_t nsp_handle; static dissector_handle_t data_handle; static dissector_handle_t h245_handle; @@ -215,15 +216,12 @@ static const value_string h245_AudioCapability_short_vals[] = { an OLC is read */ const char* codec_type = NULL; -static const char *standard_oid_str; static guint32 ipv4_address; static guint32 ipv4_port; static guint32 rtcp_ipv4_address; static guint32 rtcp_ipv4_port; static gboolean media_channel; static gboolean media_control_channel; -static const char *gen_par_prefix; -static const char *gen_par_str; /* NonStandardParameter */ static const char *nsiOID; @@ -373,8 +371,8 @@ static int hf_h245_mobileMultilinkReconfigurationIndication = -1; /* MobileMult static int hf_h245_genericIndication = -1; /* GenericMessage */ static int hf_h245_messageIdentifier = -1; /* CapabilityIdentifier */ static int hf_h245_subMessageIdentifier = -1; /* T_subMessageIdentifier */ -static int hf_h245_messageContent = -1; /* SEQUENCE_OF_GenericParameter */ -static int hf_h245_messageContent_item = -1; /* GenericParameter */ +static int hf_h245_messageContent = -1; /* T_messageContent */ +static int hf_h245_messageContent_item = -1; /* T_messageContent_item */ static int hf_h245_nonStandardData = -1; /* NonStandardParameter */ static int hf_h245_nonStandardIdentifier = -1; /* NonStandardIdentifier */ static int hf_h245_nsd_data = -1; /* T_nsd_data */ @@ -961,12 +959,12 @@ static int hf_h245_nonStandardParams_item = -1; /* NonStandardParameter */ static int hf_h245_chairControlCapability = -1; /* BOOLEAN */ static int hf_h245_videoIndicateMixingCapability = -1; /* BOOLEAN */ static int hf_h245_multipointVisualizationCapability = -1; /* BOOLEAN */ -static int hf_h245_capabilityIdentifier = -1; /* CapabilityIdentifier */ -static int hf_h245_collapsing = -1; /* SEQUENCE_OF_GenericParameter */ -static int hf_h245_collapsing_item = -1; /* GenericParameter */ -static int hf_h245_nonCollapsing = -1; /* SEQUENCE_OF_GenericParameter */ -static int hf_h245_nonCollapsing_item = -1; /* GenericParameter */ -static int hf_h245_nonCollapsingRaw = -1; /* OCTET_STRING */ +static int hf_h245_capabilityIdentifier = -1; /* T_capabilityIdentifier */ +static int hf_h245_collapsing = -1; /* T_collapsing */ +static int hf_h245_collapsing_item = -1; /* T_collapsing_item */ +static int hf_h245_nonCollapsing = -1; /* T_nonCollapsing */ +static int hf_h245_nonCollapsing_item = -1; /* T_nonCollapsing_item */ +static int hf_h245_nonCollapsingRaw = -1; /* T_nonCollapsingRaw */ static int hf_h245_transport = -1; /* DataProtocolCapability */ static int hf_h245_standardOid = -1; /* T_standardOid */ static int hf_h245_h221NonStandard = -1; /* NonStandardParameter */ @@ -1687,7 +1685,7 @@ static int hf_h245_encrypted = -1; /* OCTET_STRING */ static int hf_h245_encryptedAlphanumeric = -1; /* EncryptedAlphanumeric */ /*--- End of included file: packet-h245-hf.c ---*/ -#line 284 "packet-h245-template.c" +#line 282 "packet-h245-template.c" /* Initialize the subtree pointers */ @@ -1699,7 +1697,7 @@ static gint ett_h245_ResponseMessage = -1; static gint ett_h245_CommandMessage = -1; static gint ett_h245_IndicationMessage = -1; static gint ett_h245_GenericMessage = -1; -static gint ett_h245_SEQUENCE_OF_GenericParameter = -1; +static gint ett_h245_T_messageContent = -1; static gint ett_h245_NonStandardMessage = -1; static gint ett_h245_NonStandardParameter = -1; static gint ett_h245_NonStandardIdentifier = -1; @@ -1851,11 +1849,14 @@ static gint ett_h245_SEQUENCE_SIZE_1_16_OF_NonStandardParameter = -1; static gint ett_h245_ConferenceCapability = -1; static gint ett_h245_SEQUENCE_OF_NonStandardParameter = -1; static gint ett_h245_GenericCapability = -1; +static gint ett_h245_T_collapsing = -1; +static gint ett_h245_T_nonCollapsing = -1; static gint ett_h245_CapabilityIdentifier = -1; static gint ett_h245_GenericParameter = -1; static gint ett_h245_SEQUENCE_OF_ParameterIdentifier = -1; static gint ett_h245_ParameterIdentifier = -1; static gint ett_h245_ParameterValue = -1; +static gint ett_h245_SEQUENCE_OF_GenericParameter = -1; static gint ett_h245_MultiplexedStreamCapability = -1; static gint ett_h245_MultiplexFormat = -1; static gint ett_h245_AudioTelephonyEventCapability = -1; @@ -2183,7 +2184,7 @@ static gint ett_h245_FlowControlIndication = -1; static gint ett_h245_MobileMultilinkReconfigurationIndication = -1; /*--- End of included file: packet-h245-ett.c ---*/ -#line 287 "packet-h245-template.c" +#line 285 "packet-h245-template.c" /* Forward declarations */ static int dissect_h245_MultimediaSystemControlMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); @@ -2271,7 +2272,7 @@ static const per_sequence_t H221NonStandardID_sequence[] = { static int dissect_h245_H221NonStandardID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 769 "h245.cnf" +#line 863 "h245.cnf" t35CountryCode = 0; t35Extension = 0; manufacturerCode = 0; @@ -2279,7 +2280,7 @@ dissect_h245_H221NonStandardID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_H221NonStandardID, H221NonStandardID_sequence); -#line 773 "h245.cnf" +#line 867 "h245.cnf" h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode; proto_tree_add_uint(tree, hf_h245Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard); @@ -2301,7 +2302,7 @@ static const per_choice_t NonStandardIdentifier_choice[] = { static int dissect_h245_NonStandardIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 750 "h245.cnf" +#line 844 "h245.cnf" guint32 value; nsiOID = ""; @@ -2330,7 +2331,7 @@ dissect_h245_NonStandardIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_h245_T_nsd_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 784 "h245.cnf" +#line 878 "h245.cnf" tvbuff_t *next_tvb = NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -2353,7 +2354,7 @@ static const per_sequence_t NonStandardParameter_sequence[] = { static int dissect_h245_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 782 "h245.cnf" +#line 876 "h245.cnf" nsp_handle = NULL; offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, @@ -3306,13 +3307,19 @@ dissect_h245_T_t38fax(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p static int dissect_h245_T_standardOid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 637 "h245.cnf" + const gchar *standard_oid_str = NULL; + gef_ctx_t *gefx; + offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &standard_oid_str); -#line 539 "h245.cnf" - gen_par_prefix = ep_strdup(standard_oid_str); + gefx = gef_ctx_get(actx->private_data); + if (gefx) gefx->id = standard_oid_str; + if(!h245_lc_dissector && strcmp(standard_oid_str,"0.0.8.245.1.1.1") == 0) h245_lc_dissector = amr_handle; + return offset; } @@ -3364,6 +3371,19 @@ dissect_h245_CapabilityIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t +static int +dissect_h245_T_capabilityIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_h245_CapabilityIdentifier(tvb, offset, actx, tree, hf_index); + +#line 588 "h245.cnf" + gef_ctx_update_key(gef_ctx_get(actx->private_data)); + /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "***DEBUG capabilityIdentifier: %s", gef_ctx_get(actx->private_data)->key);*/ + + return offset; +} + + + static int dissect_h245_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -3376,13 +3396,15 @@ dissect_h245_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_h245_T_standard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 570 "h245.cnf" - gint32 value_int; +#line 654 "h245.cnf" + gint32 value_int = -1; + gef_ctx_t *gefx; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 127U, &value_int, FALSE); - gen_par_str = ep_strdup_printf("%d", value_int); + gefx = gef_ctx_get(actx->private_data); + if (gefx) gefx->id = ep_strdup_printf("%d", value_int); return offset; @@ -3420,8 +3442,9 @@ static int dissect_h245_T_parameterIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_h245_ParameterIdentifier(tvb, offset, actx, tree, hf_index); -#line 566 "h245.cnf" - gen_par_str = ep_strdup_printf("%s-%s", gen_par_prefix, gen_par_str); +#line 649 "h245.cnf" + gef_ctx_update_key(gef_ctx_get(actx->private_data)); + /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "***DEBUG capabilityIdentifier: %s", gef_ctx_get(actx->private_data)->key);*/ return offset; } @@ -3430,13 +3453,18 @@ dissect_h245_T_parameterIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_h245_T_octetString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 577 "h245.cnf" +#line 663 "h245.cnf" tvbuff_t *value_tvb; + gef_ctx_t *gefx; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, &value_tvb); - dissector_try_string(gen_par_dissector_table, gen_par_str, value_tvb, actx->pinfo, tree); + gefx = gef_ctx_get(actx->private_data); + if (gefx) { + /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/ + dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree); + } return offset; @@ -3444,7 +3472,7 @@ dissect_h245_T_octetString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static const per_sequence_t SEQUENCE_OF_GenericParameter_sequence_of[1] = { - { &hf_h245_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h245_GenericParameter }, + { &hf_h245_genericParameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h245_GenericParameter }, }; static int @@ -3512,9 +3540,6 @@ static const per_sequence_t GenericParameter_sequence[] = { static int dissect_h245_GenericParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 564 "h245.cnf" - gen_par_str = ""; - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_GenericParameter, GenericParameter_sequence); @@ -3522,24 +3547,116 @@ dissect_h245_GenericParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act } + +static int +dissect_h245_T_collapsing_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 593 "h245.cnf" + gef_ctx_t *parent_gefx; + + parent_gefx = gef_ctx_get(actx->private_data); + actx->private_data = gef_ctx_alloc(parent_gefx, "collapsing"); + + offset = dissect_h245_GenericParameter(tvb, offset, actx, tree, hf_index); + +#line 598 "h245.cnf" + actx->private_data = parent_gefx; + + return offset; +} + + +static const per_sequence_t T_collapsing_sequence_of[1] = { + { &hf_h245_collapsing_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h245_T_collapsing_item }, +}; + +static int +dissect_h245_T_collapsing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, + ett_h245_T_collapsing, T_collapsing_sequence_of); + + return offset; +} + + + +static int +dissect_h245_T_nonCollapsing_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 602 "h245.cnf" + gef_ctx_t *parent_gefx; + + parent_gefx = gef_ctx_get(actx->private_data); + actx->private_data = gef_ctx_alloc(parent_gefx, "nonCollapsing"); + + offset = dissect_h245_GenericParameter(tvb, offset, actx, tree, hf_index); + +#line 607 "h245.cnf" + actx->private_data = parent_gefx; + + return offset; +} + + +static const per_sequence_t T_nonCollapsing_sequence_of[1] = { + { &hf_h245_nonCollapsing_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h245_T_nonCollapsing_item }, +}; + +static int +dissect_h245_T_nonCollapsing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, + ett_h245_T_nonCollapsing, T_nonCollapsing_sequence_of); + + return offset; +} + + + +static int +dissect_h245_T_nonCollapsingRaw(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 611 "h245.cnf" + tvbuff_t *value_tvb; + gef_ctx_t *parent_gefx; + gef_ctx_t *gefx; + + parent_gefx = gef_ctx_get(actx->private_data); + actx->private_data = gef_ctx_alloc(parent_gefx, "nonCollapsingRaw"); + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, &value_tvb); + + gefx = gef_ctx_get(actx->private_data); + if (gefx) { + /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/ + actx->pinfo->private_data = actx; + dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree); + } + actx->private_data = parent_gefx; + + + return offset; +} + + static const per_sequence_t GenericCapability_sequence[] = { - { &hf_h245_capabilityIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h245_CapabilityIdentifier }, + { &hf_h245_capabilityIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h245_T_capabilityIdentifier }, { &hf_h245_maxBitRate2_0_4294967295, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_INTEGER_0_4294967295 }, - { &hf_h245_collapsing , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_SEQUENCE_OF_GenericParameter }, - { &hf_h245_nonCollapsing , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_SEQUENCE_OF_GenericParameter }, - { &hf_h245_nonCollapsingRaw, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_OCTET_STRING }, + { &hf_h245_collapsing , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_T_collapsing }, + { &hf_h245_nonCollapsing , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_T_nonCollapsing }, + { &hf_h245_nonCollapsingRaw, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_T_nonCollapsingRaw }, { &hf_h245_transport , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_DataProtocolCapability }, { NULL, 0, 0, NULL } }; static int dissect_h245_GenericCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 545 "h245.cnf" - gen_par_prefix = ""; +#line 581 "h245.cnf" + void *priv_data = actx->private_data; + actx->private_data = gef_ctx_alloc(NULL, "GenericCapability"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_GenericCapability, GenericCapability_sequence); +#line 584 "h245.cnf" + actx->private_data = priv_data; + return offset; } @@ -6118,13 +6235,48 @@ dissect_h245_SET_SIZE_1_256_OF_CapabilityDescriptor(tvbuff_t *tvb _U_, int offse static int dissect_h245_T_subMessageIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 553 "h245.cnf" +#line 554 "h245.cnf" guint32 subMessageIdentifer; - - + gef_ctx_t *gefx; + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 127U, &subMessageIdentifer, FALSE); + gefx = gef_ctx_get(actx->private_data); + if (gefx) gefx->subid = ep_strdup_printf("%u", subMessageIdentifer); + + + return offset; +} + + + +static int +dissect_h245_T_messageContent_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 563 "h245.cnf" + gef_ctx_t *parent_gefx; + + parent_gefx = gef_ctx_get(actx->private_data); + actx->private_data = gef_ctx_alloc(parent_gefx, NULL); + + offset = dissect_h245_GenericParameter(tvb, offset, actx, tree, hf_index); + +#line 568 "h245.cnf" + actx->private_data = parent_gefx; + + return offset; +} + + +static const per_sequence_t T_messageContent_sequence_of[1] = { + { &hf_h245_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h245_T_messageContent_item }, +}; + +static int +dissect_h245_T_messageContent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, + ett_h245_T_messageContent, T_messageContent_sequence_of); + return offset; } @@ -6132,18 +6284,29 @@ dissect_h245_T_subMessageIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static const per_sequence_t GenericMessage_sequence[] = { { &hf_h245_messageIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h245_CapabilityIdentifier }, { &hf_h245_subMessageIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_T_subMessageIdentifier }, - { &hf_h245_messageContent , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_SEQUENCE_OF_GenericParameter }, + { &hf_h245_messageContent , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_T_messageContent }, { NULL, 0, 0, NULL } }; static int dissect_h245_GenericMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 549 "h245.cnf" - gen_par_prefix = ""; +#line 540 "h245.cnf" + void *priv_data = actx->private_data; + gef_ctx_t *gefx; + + /* check if not inherited from GenericInformation */ + gefx = gef_ctx_get(actx->private_data); + if (!gefx) { + gefx = gef_ctx_alloc(NULL, "GenericMessage"); + actx->private_data = gefx; + } offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_GenericMessage, GenericMessage_sequence); +#line 550 "h245.cnf" + actx->private_data = priv_data; + return offset; } @@ -6151,8 +6314,15 @@ dissect_h245_GenericMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_h245_GenericInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 573 "h245.cnf" + void *priv_data = actx->private_data; + actx->private_data = gef_ctx_alloc(NULL, "GenericInformation"); + offset = dissect_h245_GenericMessage(tvb, offset, actx, tree, hf_index); +#line 576 "h245.cnf" + actx->private_data = priv_data; + return offset; } @@ -7362,7 +7532,7 @@ dissect_h245_V76LogicalChannelParameters(tvbuff_t *tvb _U_, int offset _U_, asn1 static int dissect_h245_Ipv4_network(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 584 "h245.cnf" +#line 678 "h245.cnf" tvbuff_t *value_tvb; @@ -7384,7 +7554,7 @@ dissect_h245_Ipv4_network(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_h245_TsapIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 597 "h245.cnf" +#line 691 "h245.cnf" guint32 tsapIdentifier; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -7643,14 +7813,14 @@ dissect_h245_TransportAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_h245_T_mediaChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 615 "h245.cnf" +#line 709 "h245.cnf" media_channel = TRUE; offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index); -#line 645 "h245.cnf" +#line 739 "h245.cnf" media_channel = FALSE; @@ -7662,14 +7832,14 @@ dissect_h245_T_mediaChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_h245_T_mediaControlChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 627 "h245.cnf" +#line 721 "h245.cnf" media_control_channel = TRUE; offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index); -#line 651 "h245.cnf" +#line 745 "h245.cnf" media_control_channel = FALSE; @@ -7849,7 +8019,7 @@ static const per_choice_t OLC_rev_multiplexParameters_choice[] = { static int dissect_h245_OLC_rev_multiplexParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 701 "h245.cnf" +#line 795 "h245.cnf" media_channel = FALSE; @@ -7860,7 +8030,7 @@ dissect_h245_OLC_rev_multiplexParameters(tvbuff_t *tvb _U_, int offset _U_, asn1 ett_h245_OLC_rev_multiplexParameters, OLC_rev_multiplexParameters_choice, NULL); -#line 709 "h245.cnf" +#line 803 "h245.cnf" if (!actx->pinfo->fd->flags.visited) { if (codec_type && (strcmp(codec_type, "t38fax")==0)) { @@ -8085,12 +8255,16 @@ static const per_sequence_t EncryptionSync_sequence[] = { static int dissect_h245_EncryptionSync(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 560 "h245.cnf" - gen_par_prefix = "EncryptionSync"; +#line 629 "h245.cnf" + void *priv_data = actx->private_data; + actx->private_data = gef_ctx_alloc(NULL, "EncryptionSync"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_EncryptionSync, EncryptionSync_sequence); +#line 632 "h245.cnf" + actx->private_data = priv_data; + return offset; } @@ -10355,14 +10529,14 @@ dissect_h245_OLC_ack_reverseLogicalChannelParameters(tvbuff_t *tvb _U_, int offs static int dissect_h245_Ack_mediaChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 609 "h245.cnf" +#line 703 "h245.cnf" media_channel = TRUE; offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index); -#line 633 "h245.cnf" +#line 727 "h245.cnf" media_channel = FALSE; @@ -10374,14 +10548,14 @@ dissect_h245_Ack_mediaChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_h245_Ack_mediaControlChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 621 "h245.cnf" +#line 715 "h245.cnf" media_control_channel = TRUE; offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index); -#line 639 "h245.cnf" +#line 733 "h245.cnf" media_control_channel = FALSE; @@ -10422,7 +10596,7 @@ static const per_choice_t T_forwardMultiplexAckParameters_choice[] = { static int dissect_h245_T_forwardMultiplexAckParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 657 "h245.cnf" +#line 751 "h245.cnf" media_channel = FALSE; @@ -10433,7 +10607,7 @@ dissect_h245_T_forwardMultiplexAckParameters(tvbuff_t *tvb _U_, int offset _U_, ett_h245_T_forwardMultiplexAckParameters, T_forwardMultiplexAckParameters_choice, NULL); -#line 665 "h245.cnf" +#line 759 "h245.cnf" if (!actx->pinfo->fd->flags.visited) { if (codec_type && strcmp(codec_type, "t38fax")==0) { @@ -13653,7 +13827,7 @@ dissect_h245_FunctionNotSupportedCause(tvbuff_t *tvb _U_, int offset _U_, asn1_c static int dissect_h245_T_returnedFunction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 793 "h245.cnf" +#line 887 "h245.cnf" tvbuff_t *next_tvb = NULL; proto_item *item; proto_tree *subtree; @@ -13914,7 +14088,7 @@ static void dissect_OpenLogicalChannel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo /*--- End of included file: packet-h245-fn.c ---*/ -#line 296 "packet-h245-template.c" +#line 294 "packet-h245-template.c" static void dissect_h245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) @@ -14313,11 +14487,11 @@ void proto_register_h245(void) { { &hf_h245_messageContent, { "messageContent", "h245.messageContent", FT_UINT32, BASE_DEC, NULL, 0, - "h245.SEQUENCE_OF_GenericParameter", HFILL }}, + "h245.T_messageContent", HFILL }}, { &hf_h245_messageContent_item, { "Item", "h245.messageContent_item", FT_NONE, BASE_NONE, NULL, 0, - "h245.GenericParameter", HFILL }}, + "h245.T_messageContent_item", HFILL }}, { &hf_h245_nonStandardData, { "nonStandardData", "h245.nonStandardData", FT_NONE, BASE_NONE, NULL, 0, @@ -16665,27 +16839,27 @@ void proto_register_h245(void) { { &hf_h245_capabilityIdentifier, { "capabilityIdentifier", "h245.capabilityIdentifier", FT_UINT32, BASE_DEC, VALS(h245_CapabilityIdentifier_vals), 0, - "h245.CapabilityIdentifier", HFILL }}, + "h245.T_capabilityIdentifier", HFILL }}, { &hf_h245_collapsing, { "collapsing", "h245.collapsing", FT_UINT32, BASE_DEC, NULL, 0, - "h245.SEQUENCE_OF_GenericParameter", HFILL }}, + "h245.T_collapsing", HFILL }}, { &hf_h245_collapsing_item, { "Item", "h245.collapsing_item", FT_NONE, BASE_NONE, NULL, 0, - "h245.GenericParameter", HFILL }}, + "h245.T_collapsing_item", HFILL }}, { &hf_h245_nonCollapsing, { "nonCollapsing", "h245.nonCollapsing", FT_UINT32, BASE_DEC, NULL, 0, - "h245.SEQUENCE_OF_GenericParameter", HFILL }}, + "h245.T_nonCollapsing", HFILL }}, { &hf_h245_nonCollapsing_item, { "Item", "h245.nonCollapsing_item", FT_NONE, BASE_NONE, NULL, 0, - "h245.GenericParameter", HFILL }}, + "h245.T_nonCollapsing_item", HFILL }}, { &hf_h245_nonCollapsingRaw, { "nonCollapsingRaw", "h245.nonCollapsingRaw", FT_BYTES, BASE_HEX, NULL, 0, - "h245.OCTET_STRING", HFILL }}, + "h245.T_nonCollapsingRaw", HFILL }}, { &hf_h245_transport, { "transport", "h245.transport", FT_UINT32, BASE_DEC, VALS(DataProtocolCapability_vals), 0, @@ -16752,7 +16926,7 @@ void proto_register_h245(void) { "h245.INTEGER_0_4294967295", HFILL }}, { &hf_h245_octetString, { "octetString", "h245.octetString", - FT_BYTES, BASE_HEX, NULL, 0, + FT_UINT32, BASE_DEC, NULL, 0, "h245.T_octetString", HFILL }}, { &hf_h245_genericParameters, { "genericParameter", "h245.genericParameter", @@ -19560,7 +19734,7 @@ void proto_register_h245(void) { "h245.EncryptedAlphanumeric", HFILL }}, /*--- End of included file: packet-h245-hfarr.c ---*/ -#line 361 "packet-h245-template.c" +#line 359 "packet-h245-template.c" }; /* List of subtrees */ @@ -19576,7 +19750,7 @@ void proto_register_h245(void) { &ett_h245_CommandMessage, &ett_h245_IndicationMessage, &ett_h245_GenericMessage, - &ett_h245_SEQUENCE_OF_GenericParameter, + &ett_h245_T_messageContent, &ett_h245_NonStandardMessage, &ett_h245_NonStandardParameter, &ett_h245_NonStandardIdentifier, @@ -19728,11 +19902,14 @@ void proto_register_h245(void) { &ett_h245_ConferenceCapability, &ett_h245_SEQUENCE_OF_NonStandardParameter, &ett_h245_GenericCapability, + &ett_h245_T_collapsing, + &ett_h245_T_nonCollapsing, &ett_h245_CapabilityIdentifier, &ett_h245_GenericParameter, &ett_h245_SEQUENCE_OF_ParameterIdentifier, &ett_h245_ParameterIdentifier, &ett_h245_ParameterValue, + &ett_h245_SEQUENCE_OF_GenericParameter, &ett_h245_MultiplexedStreamCapability, &ett_h245_MultiplexFormat, &ett_h245_AudioTelephonyEventCapability, @@ -20060,7 +20237,7 @@ void proto_register_h245(void) { &ett_h245_MobileMultilinkReconfigurationIndication, /*--- End of included file: packet-h245-ettarr.c ---*/ -#line 368 "packet-h245-template.c" +#line 366 "packet-h245-template.c" }; module_t *h245_module; @@ -20087,7 +20264,7 @@ void proto_register_h245(void) { nsp_object_dissector_table = register_dissector_table("h245.nsp.object", "H.245 NonStandardParameter (object)", FT_STRING, BASE_NONE); nsp_h221_dissector_table = register_dissector_table("h245.nsp.h221", "H.245 NonStandardParameter (h221)", FT_UINT32, BASE_HEX); - gen_par_dissector_table = register_dissector_table("h245.gen_par", "H.245 GenericParameter", FT_STRING, BASE_NONE); + gef_content_dissector_table = register_dissector_table("h245.gef.content", "H.245 Generic Extensible Framework", FT_STRING, BASE_NONE); h245_tap = register_tap("h245"); h245dg_tap = register_tap("h245dg"); diff --git a/epan/dissectors/packet-h245.h b/epan/dissectors/packet-h245.h index 259b6603db..d8d09e6175 100644 --- a/epan/dissectors/packet-h245.h +++ b/epan/dissectors/packet-h245.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h245.h */ +/* packet-h245.h */ /* ../../tools/asn2wrs.py -e -p h245 -c h245.cnf -s packet-h245-template MULTIMEDIA-SYSTEM-CONTROL.asn */ /* Input file: packet-h245-template.h */ diff --git a/epan/dissectors/packet-h323.c b/epan/dissectors/packet-h323.c new file mode 100644 index 0000000000..c91833eb2d --- /dev/null +++ b/epan/dissectors/packet-h323.c @@ -0,0 +1,628 @@ +/* Do not modify this file. */ +/* It is created automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-h323.c */ +/* ../../tools/asn2wrs.py -p h323 -c h323.cnf -s packet-h323-template RAS-PROTOCOL-TUNNEL.asn ROBUSTNESS-DATA.asn */ + +/* Input file: packet-h323-template.c */ + +#line 1 "packet-h323-template.c" +/* packet-h323.c + * Routines for H.323 packet dissection + * 2007 Tomas Kukosa + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include +#include + +#include "packet-per.h" +#include "packet-h225.h" +#include "packet-h323.h" + +#define PNAME "H.323" +#define PSNAME "H.323" +#define PFNAME "h323" + + +/* Generic Extensible Framework */ +gef_ctx_t* gef_ctx_alloc(gef_ctx_t *parent, const gchar *type) { + gef_ctx_t *gefx; + + gefx = ep_alloc0(sizeof(gef_ctx_t)); + gefx->signature = GEF_CTX_SIGNATURE; + gefx->parent = parent; + gefx->type = type; + return gefx; +} + +gboolean gef_ctx_check_signature(gef_ctx_t *gefx) { + return gefx && (gefx->signature == GEF_CTX_SIGNATURE); +} + +gef_ctx_t* gef_ctx_get(void *ptr) { + gef_ctx_t *gefx = (gef_ctx_t*)ptr; + asn1_ctx_t *actx = (asn1_ctx_t*)ptr; + + if (!asn1_ctx_check_signature(actx)) + actx = NULL; + + if (actx) + gefx = actx->private_data; + + if (!gef_ctx_check_signature(gefx)) + gefx = NULL; + + return gefx; +} + +void gef_ctx_update_key(gef_ctx_t *gefx) { + const gchar *parent_key; + + if (!gefx) return; + parent_key = (gefx->parent) ? gefx->parent->key : NULL; + gefx->key = ep_strdup_printf( + "%s%s" /* parent prefix */ + "%s%s%s" /* type, id */ + "%s%s" /* subid */, + (parent_key) ? parent_key : "", (parent_key) ? "/" : "", + (gefx->type) ? gefx->type : "", (gefx->type && (gefx->id || gefx->subid)) ? "/" : "", (gefx->id) ? gefx->id : "", + (gefx->subid) ? "-" : "", (gefx->subid) ? gefx->subid : "" + ); +} + +/* Subdissectors */ +static dissector_handle_t q931_handle = NULL; + +/* Initialize the protocol and registered fields */ +int proto_h323 = -1; + +/*--- Included file: packet-h323-hf.c ---*/ +#line 1 "packet-h323-hf.c" +static int hf_h323_RasTunnelledSignallingMessage_PDU = -1; /* RasTunnelledSignallingMessage */ +static int hf_h323_RobustnessData_PDU = -1; /* RobustnessData */ +static int hf_h323_tunnelledProtocolID = -1; /* TunnelledProtocol */ +static int hf_h323_messageContent = -1; /* T_messageContent */ +static int hf_h323_messageContent_item = -1; /* OCTET_STRING */ +static int hf_h323_tunnellingRequired = -1; /* NULL */ +static int hf_h323_nonStandardData = -1; /* NonStandardParameter */ +static int hf_h323_versionID = -1; /* INTEGER_1_256 */ +static int hf_h323_robustnessData = -1; /* T_robustnessData */ +static int hf_h323_rrqData = -1; /* Rrq_RD */ +static int hf_h323_rcfData = -1; /* Rcf_RD */ +static int hf_h323_setupData = -1; /* Setup_RD */ +static int hf_h323_connectData = -1; /* Connect_RD */ +static int hf_h323_statusData = -1; /* Status_RD */ +static int hf_h323_statusInquiryData = -1; /* StatusInquiry_RD */ +static int hf_h323_BackupCallSignalAddresses_item = -1; /* BackupCallSignalAddresses_item */ +static int hf_h323_tcp = -1; /* TransportAddress */ +static int hf_h323_alternateTransport = -1; /* AlternateTransportAddresses */ +static int hf_h323_backupCallSignalAddresses = -1; /* BackupCallSignalAddresses */ +static int hf_h323_hasSharedRepository = -1; /* NULL */ +static int hf_h323_irrFrequency = -1; /* INTEGER_1_65535 */ +static int hf_h323_endpointGuid = -1; /* GloballyUniqueIdentifier */ +static int hf_h323_h245Address = -1; /* TransportAddress */ +static int hf_h323_fastStart = -1; /* T_fastStart */ +static int hf_h323_fastStart_item = -1; /* OCTET_STRING */ +static int hf_h323_resetH245 = -1; /* NULL */ +static int hf_h323_timeToLive = -1; /* TimeToLive */ +static int hf_h323_includeFastStart = -1; /* NULL */ + +/*--- End of included file: packet-h323-hf.c ---*/ +#line 100 "packet-h323-template.c" + +/* Initialize the subtree pointers */ + +/*--- Included file: packet-h323-ett.c ---*/ +#line 1 "packet-h323-ett.c" +static gint ett_h323_RasTunnelledSignallingMessage = -1; +static gint ett_h323_T_messageContent = -1; +static gint ett_h323_RobustnessData = -1; +static gint ett_h323_T_robustnessData = -1; +static gint ett_h323_BackupCallSignalAddresses = -1; +static gint ett_h323_BackupCallSignalAddresses_item = -1; +static gint ett_h323_Rrq_RD = -1; +static gint ett_h323_Rcf_RD = -1; +static gint ett_h323_Setup_RD = -1; +static gint ett_h323_Connect_RD = -1; +static gint ett_h323_Status_RD = -1; +static gint ett_h323_T_fastStart = -1; +static gint ett_h323_StatusInquiry_RD = -1; + +/*--- End of included file: packet-h323-ett.c ---*/ +#line 103 "packet-h323-template.c" + + +/*--- Included file: packet-h323-fn.c ---*/ +#line 1 "packet-h323-fn.c" + + +static int +dissect_h323_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + NO_BOUND, NO_BOUND, NULL); + + return offset; +} + + +static const per_sequence_t T_messageContent_sequence_of[1] = { + { &hf_h323_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING }, +}; + +static int +dissect_h323_T_messageContent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, + ett_h323_T_messageContent, T_messageContent_sequence_of); + + return offset; +} + + + +static int +dissect_h323_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_null(tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const per_sequence_t RasTunnelledSignallingMessage_sequence[] = { + { &hf_h323_tunnelledProtocolID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol }, + { &hf_h323_messageContent , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_messageContent }, + { &hf_h323_tunnellingRequired, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL }, + { &hf_h323_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_RasTunnelledSignallingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_RasTunnelledSignallingMessage, RasTunnelledSignallingMessage_sequence); + + return offset; +} + + + +static int +dissect_h323_INTEGER_1_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 256U, NULL, FALSE); + + return offset; +} + + +static const value_string h323_BackupCallSignalAddresses_item_vals[] = { + { 0, "tcp" }, + { 1, "alternateTransport" }, + { 0, NULL } +}; + +static const per_choice_t BackupCallSignalAddresses_item_choice[] = { + { 0, &hf_h323_tcp , ASN1_EXTENSION_ROOT , dissect_h225_TransportAddress }, + { 1, &hf_h323_alternateTransport, ASN1_EXTENSION_ROOT , dissect_h225_AlternateTransportAddresses }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_h323_BackupCallSignalAddresses_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_h323_BackupCallSignalAddresses_item, BackupCallSignalAddresses_item_choice, + NULL); + + return offset; +} + + +static const per_sequence_t BackupCallSignalAddresses_sequence_of[1] = { + { &hf_h323_BackupCallSignalAddresses_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses_item }, +}; + +static int +dissect_h323_BackupCallSignalAddresses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, + ett_h323_BackupCallSignalAddresses, BackupCallSignalAddresses_sequence_of); + + return offset; +} + + +static const per_sequence_t Rrq_RD_sequence[] = { + { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses }, + { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_Rrq_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_Rrq_RD, Rrq_RD_sequence); + + return offset; +} + + + +static int +dissect_h323_INTEGER_1_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 65535U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t Rcf_RD_sequence[] = { + { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL }, + { &hf_h323_irrFrequency , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_INTEGER_1_65535 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_Rcf_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_Rcf_RD, Rcf_RD_sequence); + + return offset; +} + + + +static int +dissect_h323_GloballyUniqueIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const per_sequence_t Setup_RD_sequence[] = { + { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses }, + { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL }, + { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_Setup_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_Setup_RD, Setup_RD_sequence); + + return offset; +} + + +static const per_sequence_t Connect_RD_sequence[] = { + { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses }, + { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL }, + { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_Connect_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_Connect_RD, Connect_RD_sequence); + + return offset; +} + + +static const per_sequence_t T_fastStart_sequence_of[1] = { + { &hf_h323_fastStart_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING }, +}; + +static int +dissect_h323_T_fastStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index, + ett_h323_T_fastStart, T_fastStart_sequence_of); + + return offset; +} + + +static const per_sequence_t Status_RD_sequence[] = { + { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress }, + { &hf_h323_fastStart , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_T_fastStart }, + { &hf_h323_resetH245 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_Status_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_Status_RD, Status_RD_sequence); + + return offset; +} + + +static const per_sequence_t StatusInquiry_RD_sequence[] = { + { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress }, + { &hf_h323_timeToLive , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TimeToLive }, + { &hf_h323_includeFastStart, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_StatusInquiry_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_StatusInquiry_RD, StatusInquiry_RD_sequence); + + return offset; +} + + +static const value_string h323_T_robustnessData_vals[] = { + { 0, "rrqData" }, + { 1, "rcfData" }, + { 2, "setupData" }, + { 3, "connectData" }, + { 4, "statusData" }, + { 5, "statusInquiryData" }, + { 0, NULL } +}; + +static const per_choice_t T_robustnessData_choice[] = { + { 0, &hf_h323_rrqData , ASN1_EXTENSION_ROOT , dissect_h323_Rrq_RD }, + { 1, &hf_h323_rcfData , ASN1_EXTENSION_ROOT , dissect_h323_Rcf_RD }, + { 2, &hf_h323_setupData , ASN1_EXTENSION_ROOT , dissect_h323_Setup_RD }, + { 3, &hf_h323_connectData , ASN1_EXTENSION_ROOT , dissect_h323_Connect_RD }, + { 4, &hf_h323_statusData , ASN1_EXTENSION_ROOT , dissect_h323_Status_RD }, + { 5, &hf_h323_statusInquiryData, ASN1_EXTENSION_ROOT , dissect_h323_StatusInquiry_RD }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_h323_T_robustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_h323_T_robustnessData, T_robustnessData_choice, + NULL); + + return offset; +} + + +static const per_sequence_t RobustnessData_sequence[] = { + { &hf_h323_versionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_INTEGER_1_256 }, + { &hf_h323_robustnessData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_robustnessData }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_h323_RobustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_h323_RobustnessData, RobustnessData_sequence); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_RasTunnelledSignallingMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_h323_RasTunnelledSignallingMessage(tvb, offset, &asn1_ctx, tree, hf_h323_RasTunnelledSignallingMessage_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_RobustnessData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_h323_RobustnessData(tvb, offset, &asn1_ctx, tree, hf_h323_RobustnessData_PDU); + offset += 7; offset >>= 3; + return offset; +} + + +/*--- End of included file: packet-h323-fn.c ---*/ +#line 105 "packet-h323-template.c" + +/*--- proto_register_h323 ----------------------------------------------*/ +void proto_register_h323(void) { + + /* List of fields */ + static hf_register_info hf[] = { + +/*--- Included file: packet-h323-hfarr.c ---*/ +#line 1 "packet-h323-hfarr.c" + { &hf_h323_RasTunnelledSignallingMessage_PDU, + { "RasTunnelledSignallingMessage", "h323.RasTunnelledSignallingMessage", + FT_NONE, BASE_NONE, NULL, 0, + "h323.RasTunnelledSignallingMessage", HFILL }}, + { &hf_h323_RobustnessData_PDU, + { "RobustnessData", "h323.RobustnessData", + FT_NONE, BASE_NONE, NULL, 0, + "h323.RobustnessData", HFILL }}, + { &hf_h323_tunnelledProtocolID, + { "tunnelledProtocolID", "h323.tunnelledProtocolID", + FT_NONE, BASE_NONE, NULL, 0, + "h225.TunnelledProtocol", HFILL }}, + { &hf_h323_messageContent, + { "messageContent", "h323.messageContent", + FT_UINT32, BASE_DEC, NULL, 0, + "h323.T_messageContent", HFILL }}, + { &hf_h323_messageContent_item, + { "Item", "h323.messageContent_item", + FT_BYTES, BASE_HEX, NULL, 0, + "h323.OCTET_STRING", HFILL }}, + { &hf_h323_tunnellingRequired, + { "tunnellingRequired", "h323.tunnellingRequired", + FT_NONE, BASE_NONE, NULL, 0, + "h323.NULL", HFILL }}, + { &hf_h323_nonStandardData, + { "nonStandardData", "h323.nonStandardData", + FT_NONE, BASE_NONE, NULL, 0, + "h225.NonStandardParameter", HFILL }}, + { &hf_h323_versionID, + { "versionID", "h323.versionID", + FT_UINT32, BASE_DEC, NULL, 0, + "h323.INTEGER_1_256", HFILL }}, + { &hf_h323_robustnessData, + { "robustnessData", "h323.robustnessData", + FT_UINT32, BASE_DEC, VALS(h323_T_robustnessData_vals), 0, + "h323.T_robustnessData", HFILL }}, + { &hf_h323_rrqData, + { "rrqData", "h323.rrqData", + FT_NONE, BASE_NONE, NULL, 0, + "h323.Rrq_RD", HFILL }}, + { &hf_h323_rcfData, + { "rcfData", "h323.rcfData", + FT_NONE, BASE_NONE, NULL, 0, + "h323.Rcf_RD", HFILL }}, + { &hf_h323_setupData, + { "setupData", "h323.setupData", + FT_NONE, BASE_NONE, NULL, 0, + "h323.Setup_RD", HFILL }}, + { &hf_h323_connectData, + { "connectData", "h323.connectData", + FT_NONE, BASE_NONE, NULL, 0, + "h323.Connect_RD", HFILL }}, + { &hf_h323_statusData, + { "statusData", "h323.statusData", + FT_NONE, BASE_NONE, NULL, 0, + "h323.Status_RD", HFILL }}, + { &hf_h323_statusInquiryData, + { "statusInquiryData", "h323.statusInquiryData", + FT_NONE, BASE_NONE, NULL, 0, + "h323.StatusInquiry_RD", HFILL }}, + { &hf_h323_BackupCallSignalAddresses_item, + { "Item", "h323.BackupCallSignalAddresses_item", + FT_UINT32, BASE_DEC, VALS(h323_BackupCallSignalAddresses_item_vals), 0, + "h323.BackupCallSignalAddresses_item", HFILL }}, + { &hf_h323_tcp, + { "tcp", "h323.tcp", + FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0, + "h225.TransportAddress", HFILL }}, + { &hf_h323_alternateTransport, + { "alternateTransport", "h323.alternateTransport", + FT_NONE, BASE_NONE, NULL, 0, + "h225.AlternateTransportAddresses", HFILL }}, + { &hf_h323_backupCallSignalAddresses, + { "backupCallSignalAddresses", "h323.backupCallSignalAddresses", + FT_UINT32, BASE_DEC, NULL, 0, + "h323.BackupCallSignalAddresses", HFILL }}, + { &hf_h323_hasSharedRepository, + { "hasSharedRepository", "h323.hasSharedRepository", + FT_NONE, BASE_NONE, NULL, 0, + "h323.NULL", HFILL }}, + { &hf_h323_irrFrequency, + { "irrFrequency", "h323.irrFrequency", + FT_UINT32, BASE_DEC, NULL, 0, + "h323.INTEGER_1_65535", HFILL }}, + { &hf_h323_endpointGuid, + { "endpointGuid", "h323.endpointGuid", + FT_GUID, BASE_NONE, NULL, 0, + "h323.GloballyUniqueIdentifier", HFILL }}, + { &hf_h323_h245Address, + { "h245Address", "h323.h245Address", + FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0, + "h225.TransportAddress", HFILL }}, + { &hf_h323_fastStart, + { "fastStart", "h323.fastStart", + FT_UINT32, BASE_DEC, NULL, 0, + "h323.T_fastStart", HFILL }}, + { &hf_h323_fastStart_item, + { "Item", "h323.fastStart_item", + FT_BYTES, BASE_HEX, NULL, 0, + "h323.OCTET_STRING", HFILL }}, + { &hf_h323_resetH245, + { "resetH245", "h323.resetH245", + FT_NONE, BASE_NONE, NULL, 0, + "h323.NULL", HFILL }}, + { &hf_h323_timeToLive, + { "timeToLive", "h323.timeToLive", + FT_UINT32, BASE_DEC, NULL, 0, + "h225.TimeToLive", HFILL }}, + { &hf_h323_includeFastStart, + { "includeFastStart", "h323.includeFastStart", + FT_NONE, BASE_NONE, NULL, 0, + "h323.NULL", HFILL }}, + +/*--- End of included file: packet-h323-hfarr.c ---*/ +#line 112 "packet-h323-template.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + +/*--- Included file: packet-h323-ettarr.c ---*/ +#line 1 "packet-h323-ettarr.c" + &ett_h323_RasTunnelledSignallingMessage, + &ett_h323_T_messageContent, + &ett_h323_RobustnessData, + &ett_h323_T_robustnessData, + &ett_h323_BackupCallSignalAddresses, + &ett_h323_BackupCallSignalAddresses_item, + &ett_h323_Rrq_RD, + &ett_h323_Rcf_RD, + &ett_h323_Setup_RD, + &ett_h323_Connect_RD, + &ett_h323_Status_RD, + &ett_h323_T_fastStart, + &ett_h323_StatusInquiry_RD, + +/*--- End of included file: packet-h323-ettarr.c ---*/ +#line 117 "packet-h323-template.c" + }; + + /* Register protocol */ + proto_h323 = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_h323, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + +} + + +/*--- proto_reg_handoff_h323 -------------------------------------------*/ +void proto_reg_handoff_h323(void) +{ + q931_handle = find_dissector("q931"); + + /* H.323, Annex M1, Tunnelling of signalling protocols (QSIG) in H.323 */ + dissector_add_string("h225.tp", "1.3.12.9", q931_handle); + + /* H.323, Annex M4, Tunnelling of narrow-band signalling syntax (NSS) for H.323 */ + dissector_add_string("h225.gef.content", "GenericData/1000/1", + new_create_dissector_handle(dissect_RasTunnelledSignallingMessage_PDU, proto_h323)); + + /* H.323, Annex R, Robustness methods for H.323 entities */ + dissector_add_string("h225.gef.content", "GenericData/1/1", + new_create_dissector_handle(dissect_RobustnessData_PDU, proto_h323)); +} + diff --git a/epan/dissectors/packet-h450-ros.c b/epan/dissectors/packet-h450-ros.c index 5b2784e397..29f192f74d 100644 --- a/epan/dissectors/packet-h450-ros.c +++ b/epan/dissectors/packet-h450-ros.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h450-ros.c */ -/* ../../tools/asn2wrs.py -e -p h450.ros -I ../ros -c h450-ros.cnf -o h450-ros -s packet-h450-ros-template ../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn */ +/* packet-h450-ros.c */ +/* ../../tools/asn2wrs.py -e -p h450.ros -c h450-ros.cnf -s packet-h450-ros-template ../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn */ /* Input file: packet-h450-ros-template.c */ diff --git a/epan/dissectors/packet-h450-ros.h b/epan/dissectors/packet-h450-ros.h index 935357c847..b132fd08c3 100644 --- a/epan/dissectors/packet-h450-ros.h +++ b/epan/dissectors/packet-h450-ros.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h450-ros.h */ -/* ../../tools/asn2wrs.py -e -p h450.ros -I ../ros -c h450-ros.cnf -o h450-ros -s packet-h450-ros-template ../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn */ +/* packet-h450-ros.h */ +/* ../../tools/asn2wrs.py -e -p h450.ros -c h450-ros.cnf -s packet-h450-ros-template ../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn */ /* Input file: packet-h450-ros-template.h */ diff --git a/epan/dissectors/packet-h450.c b/epan/dissectors/packet-h450.c index 4a7c564c81..7387533530 100644 --- a/epan/dissectors/packet-h450.c +++ b/epan/dissectors/packet-h450.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h450.c */ +/* packet-h450.c */ /* ../../tools/asn2wrs.py -c h450.cnf -s packet-h450-template H4501-Supplementary-ServiceAPDU-Structure.asn Addressing-Data-Elements.asn H225-generic-parameters-definition.asn Manufacturer-specific-service-extension-definition.asn H4501-General-Error-List.asn Call-Transfer-Operations.asn Call-Diversion-Operations.asn Call-Hold-Operations.asn Call-Park-Pickup-Operations.asn Call-Waiting-Operations.asn Message-Waiting-Indication-Operations.asn Name-Operations.asn Call-Completion-Operations.asn Call-Offer-Operations.asn Call-Intrusion-Operations.asn Common-Information-Operations.asn */ /* Input file: packet-h450-template.c */ @@ -80,7 +80,7 @@ static int hf_h450_anyEntity = -1; /* NULL */ static int hf_h450_discardAnyUnrecognizedInvokePdu = -1; /* NULL */ static int hf_h450_clearCallIfAnyInvokePduNotRecognized = -1; /* NULL */ static int hf_h450_rejectAnyUnrecognizedInvokePdu = -1; /* NULL */ -static int hf_h450_rosApdus = -1; /* SEQUENCE_SIZE_1_MAX_OF_ROS */ +static int hf_h450_rosApdus = -1; /* T_rosApdus */ static int hf_h450_rosApdus_item = -1; /* T_rosApdus_item */ static int hf_h450_addressScreened_presentationAllowedAddress = -1; /* AddressScreened */ static int hf_h450_presentationRestricted = -1; /* NULL */ @@ -477,7 +477,7 @@ static gint ett_h450_NetworkFacilityExtension = -1; static gint ett_h450_EntityType = -1; static gint ett_h450_InterpretationApdu = -1; static gint ett_h450_ServiceApdus = -1; -static gint ett_h450_SEQUENCE_SIZE_1_MAX_OF_ROS = -1; +static gint ett_h450_T_rosApdus = -1; static gint ett_h450_PresentedAddressScreened = -1; static gint ett_h450_PresentedAddressUnscreened = -1; static gint ett_h450_PresentedNumberScreened = -1; @@ -952,14 +952,14 @@ dissect_h450_T_rosApdus_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } -static const per_sequence_t h450_SEQUENCE_SIZE_1_MAX_OF_ROS_sequence_of[1] = { +static const per_sequence_t h450_T_rosApdus_sequence_of[1] = { { &hf_h450_rosApdus_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h450_T_rosApdus_item }, }; static int -dissect_h450_SEQUENCE_SIZE_1_MAX_OF_ROS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_h450_T_rosApdus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_h450_SEQUENCE_SIZE_1_MAX_OF_ROS, h450_SEQUENCE_SIZE_1_MAX_OF_ROS_sequence_of, + ett_h450_T_rosApdus, h450_T_rosApdus_sequence_of, 1, NO_BOUND); return offset; @@ -972,7 +972,7 @@ static const value_string h450_ServiceApdus_vals[] = { }; static const per_choice_t h450_ServiceApdus_choice[] = { - { 0, &hf_h450_rosApdus , ASN1_EXTENSION_ROOT , dissect_h450_SEQUENCE_SIZE_1_MAX_OF_ROS }, + { 0, &hf_h450_rosApdus , ASN1_EXTENSION_ROOT , dissect_h450_T_rosApdus }, { 0, NULL, 0, NULL } }; @@ -5080,7 +5080,7 @@ void proto_register_h450(void) { { &hf_h450_rosApdus, { "rosApdus", "h450.rosApdus", FT_UINT32, BASE_DEC, NULL, 0, - "h450.SEQUENCE_SIZE_1_MAX_OF_ROS", HFILL }}, + "h450.T_rosApdus", HFILL }}, { &hf_h450_rosApdus_item, { "Item", "h450.rosApdus_item", FT_UINT32, BASE_DEC, VALS(h450_ros_ROS_vals), 0, @@ -6520,7 +6520,7 @@ void proto_register_h450(void) { &ett_h450_EntityType, &ett_h450_InterpretationApdu, &ett_h450_ServiceApdus, - &ett_h450_SEQUENCE_SIZE_1_MAX_OF_ROS, + &ett_h450_T_rosApdus, &ett_h450_PresentedAddressScreened, &ett_h450_PresentedAddressUnscreened, &ett_h450_PresentedNumberScreened, diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c index ae4adafb13..a011c768c7 100644 --- a/epan/dissectors/packet-t38.c +++ b/epan/dissectors/packet-t38.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-t38.c */ -/* ../../tools/asn2wrs.py -p t38 -c t38.cnf -s packet-t38-template T38(2002).asn */ +/* packet-t38.c */ +/* ../../tools/asn2wrs.py -p t38 -c t38.cnf -s packet-t38-template T38_2002.asn */ /* Input file: packet-t38-template.c */ diff --git a/epan/dissectors/packet-t38.h b/epan/dissectors/packet-t38.h index a3a31862fe..0d3af6db3a 100644 --- a/epan/dissectors/packet-t38.h +++ b/epan/dissectors/packet-t38.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-t38.h */ -/* ../../tools/asn2wrs.py -p t38 -c t38.cnf -s packet-t38-template T38(2002).asn */ +/* packet-t38.h */ +/* ../../tools/asn2wrs.py -p t38 -c t38.cnf -s packet-t38-template T38_2002.asn */ /* Input file: packet-t38-template.h */ -- cgit v1.2.3