aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--asn1/Makefile.am1
-rw-r--r--asn1/Makefile.nmake9
-rw-r--r--asn1/h225/h225.cnf69
-rw-r--r--asn1/h225/packet-h225-template.c5
-rw-r--r--asn1/h235/Makefile.common8
-rw-r--r--asn1/h235/h235.cnf5
-rw-r--r--asn1/h235/packet-h235-template.c40
-rw-r--r--asn1/h245/h245.cnf141
-rw-r--r--asn1/h245/packet-h245-template.c8
-rw-r--r--asn1/h323/Makefile.am26
-rw-r--r--asn1/h323/Makefile.common53
-rw-r--r--asn1/h323/Makefile.nmake29
-rw-r--r--asn1/h323/RAS-PROTOCOL-TUNNEL.asn27
-rw-r--r--asn1/h323/ROBUSTNESS-DATA.asn89
-rw-r--r--asn1/h323/h323.cnf17
-rw-r--r--asn1/h323/packet-h323-template.c145
-rw-r--r--configure.in1
-rw-r--r--epan/dissectors/Makefile.common1
-rw-r--r--epan/dissectors/packet-h225.c145
-rw-r--r--epan/dissectors/packet-h225.h2
-rw-r--r--epan/dissectors/packet-h235.c72
-rw-r--r--epan/dissectors/packet-h235.h5
-rw-r--r--epan/dissectors/packet-h245.c331
-rw-r--r--epan/dissectors/packet-h245.h2
-rw-r--r--epan/dissectors/packet-h323.c628
-rw-r--r--epan/dissectors/packet-h450-ros.c4
-rw-r--r--epan/dissectors/packet-h450-ros.h4
-rw-r--r--epan/dissectors/packet-h450.c18
-rw-r--r--epan/dissectors/packet-t38.c4
-rw-r--r--epan/dissectors/packet-t38.h4
30 files changed, 1699 insertions, 194 deletions
diff --git a/asn1/Makefile.am b/asn1/Makefile.am
index ce2f6aed49..74e9198355 100644
--- a/asn1/Makefile.am
+++ b/asn1/Makefile.am
@@ -43,6 +43,7 @@ SUBDIRS = \
h235 \
h245 \
h248 \
+ h323 \
h450 \
h450-ros \
inap \
diff --git a/asn1/Makefile.nmake b/asn1/Makefile.nmake
index 2f1bb7092f..82decaf080 100644
--- a/asn1/Makefile.nmake
+++ b/asn1/Makefile.nmake
@@ -82,6 +82,7 @@ per: \
h225 \
h235 \
h245 \
+ h323 \
h450 \
h450-ros \
nbap \
@@ -153,6 +154,9 @@ clean:
cd h248
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
cd ..
+ cd h323
+ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
+ cd ..
cd h450
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
cd ..
@@ -395,6 +399,11 @@ h248::
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
cd ..
+h323::
+ cd h323
+ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
+ cd ..
+
h450::
cd h450
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
diff --git a/asn1/h225/h225.cnf b/asn1/h225/h225.cnf
index 146f7b5742..0f59a08ea3 100644
--- a/asn1/h225/h225.cnf
+++ b/asn1/h225/h225.cnf
@@ -620,6 +620,75 @@ H221NonStandard/manufacturerCode VAL_PTR = &manufacturerCode
}
#.END
+#=== Generic Extensible Framework =======================================================
+
+#.FN_HDR GenericData
+ 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;
+ }
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+
+#.FN_HDR GenericData/parameters/_item
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(parent_gefx, NULL);
+#.FN_FTR
+ actx->private_data = parent_gefx;
+#.END
+
+#----------------------------------------------------------------------------------------
+#.FN_HDR FeatureDescriptor
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(NULL, "FeatureDescriptor");
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+#----------------------------------------------------------------------------------------
+
+#.FN_HDR GenericIdentifier
+ gef_ctx_t *gefx;
+#.FN_FTR
+ 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 */
+#.END
+
+#.FN_BODY GenericIdentifier/standard VAL_PTR = &value_int
+ gint32 value_int = -1;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = ep_strdup_printf("%%d", value_int);
+#.END
+
+#.FN_BODY GenericIdentifier/oid FN_VARIANT = _str VAL_PTR = &oid_str
+ const gchar *oid_str = NULL;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = oid_str;
+#.END
+
+
+#=== end of GEF =========================================================================
+
#.TYPE_ATTR
H221NonStandard/t35CountryCode TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(T35CountryCode_vals)
TransportAddress/ipAddress/ip TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
diff --git a/asn1/h225/packet-h225-template.c b/asn1/h225/packet-h225-template.c
index 88490d6bd9..e1943fcb70 100644
--- a/asn1/h225/packet-h225-template.c
+++ b/asn1/h225/packet-h225-template.c
@@ -55,6 +55,7 @@
#include <epan/h225-persistentdata.h>
#include "packet-h235.h"
#include "packet-h245.h"
+#include "packet-h323.h"
#include "packet-q931.h"
#include "packet-ssl.h"
@@ -83,6 +84,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;
@@ -291,6 +294,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/asn1/h235/Makefile.common b/asn1/h235/Makefile.common
index fe9adec5fc..2ef4bba16f 100644
--- a/asn1/h235/Makefile.common
+++ b/asn1/h235/Makefile.common
@@ -20,9 +20,10 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-PROTOCOL_NAME=h235
+PROTOCOL_NAME = h235
-DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c \
+DISSECTOR_FILES = \
+ packet-$(PROTOCOL_NAME).c \
packet-$(PROTOCOL_NAME).h
NEED_PACKET_PROTO_H = 1
@@ -53,5 +54,6 @@ EXTRA_CNF = \
../h225/h225-exp.cnf
../h225/h225-exp.cnf:
- (cd ../h235 && $(MAKE_CNF_EXPORT))
+ (cd ../h225 && $(MAKE_CNF_EXPORT))
+
diff --git a/asn1/h235/h235.cnf b/asn1/h235/h235.cnf
index 5681c06d57..98644aa03f 100644
--- a/asn1/h235/h235.cnf
+++ b/asn1/h235/h235.cnf
@@ -16,10 +16,13 @@ ClearToken
CryptoToken
AuthenticationMechanism
-SrtpCryptoCapability
SrtpKeys
#.END
+#.PDU_NEW
+SrtpCryptoCapability
+#.END
+
#.OMIT_ASSIGNMENT
ECGDSASignature
H235CertificateSignature
diff --git a/asn1/h235/packet-h235-template.c b/asn1/h235/packet-h235-template.c
index 82f75869c2..235017b624 100644
--- a/asn1/h235/packet-h235-template.c
+++ b/asn1/h235/packet-h235-template.c
@@ -111,6 +111,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");
}
@@ -120,23 +124,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/asn1/h245/h245.cnf b/asn1/h245/h245.cnf
index c3c886421a..5a11e93005 100644
--- a/asn1/h245/h245.cnf
+++ b/asn1/h245/h245.cnf
@@ -533,52 +533,146 @@ if (h245_pi != NULL)
h245_pi->msg_type = H245_OpenLogChnAck;
#.END
#----------------------------------------------------------------------------------------
-#.FN_PARS CapabilityIdentifier/standard
- FN_VARIANT = _str VAL_PTR = &standard_oid_str
-#.FN_FTR CapabilityIdentifier/standard
- gen_par_prefix = ep_strdup(standard_oid_str);
- if(!h245_lc_dissector && strcmp(standard_oid_str,"0.0.8.245.1.1.1") == 0)
- h245_lc_dissector = amr_handle;
+
+#=== Generic Extensible Framework =======================================================
+
+#.FN_HDR GenericMessage
+ 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;
+ }
+#.FN_FTR
+ actx->private_data = priv_data;
#.END
+
+#.FN_BODY GenericMessage/subMessageIdentifier VAL_PTR = &subMessageIdentifer
+ guint32 subMessageIdentifer;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->subid = ep_strdup_printf("%%u", subMessageIdentifer);
+#.END
+
+#.FN_HDR GenericMessage/messageContent/_item
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(parent_gefx, NULL);
+#.FN_FTR
+ actx->private_data = parent_gefx;
+#.END
+
#----------------------------------------------------------------------------------------
+#.FN_HDR GenericInformation
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(NULL, "GenericInformation");
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+
+#--- GenericCapability ------------------------------------------------------------------
#.FN_HDR GenericCapability
- gen_par_prefix = "";
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(NULL, "GenericCapability");
+#.FN_FTR
+ actx->private_data = priv_data;
#.END
-#----------------------------------------------------------------------------------------
-#.FN_HDR GenericMessage
- gen_par_prefix = "";
+
+#.FN_FTR GenericCapability/capabilityIdentifier
+ 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);*/
#.END
-#----------------------------------------------------------------------------------------
-#.FN_HDR GenericMessage/subMessageIdentifier
- guint32 subMessageIdentifer;
-#.FN_PARS GenericMessage/subMessageIdentifier
- VAL_PTR = &subMessageIdentifer
+#.FN_HDR GenericCapability/collapsing/_item
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(parent_gefx, "collapsing");
+#.FN_FTR
+ actx->private_data = parent_gefx;
#.END
-#----------------------------------------------------------------------------------------
+
+#.FN_HDR GenericCapability/nonCollapsing/_item
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(parent_gefx, "nonCollapsing");
+#.FN_FTR
+ actx->private_data = parent_gefx;
+#.END
+
+#.FN_BODY GenericCapability/nonCollapsingRaw VAL_PTR = &value_tvb
+ 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");
+%(DEFAULT_BODY)s
+ 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)s->pinfo, %(TREE)s);
+ }
+ actx->private_data = parent_gefx;
+#.END
+
+#--- EncryptionSync ---------------------------------------------------------------------
#.FN_HDR EncryptionSync
- gen_par_prefix = "EncryptionSync";
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(NULL, "EncryptionSync");
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+#----------------------------------------------------------------------------------------
+
+#.FN_BODY CapabilityIdentifier/standard FN_VARIANT = _str VAL_PTR = &standard_oid_str
+ const gchar *standard_oid_str = NULL;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ 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;
#.END
#----------------------------------------------------------------------------------------
-#.FN_HDR GenericParameter
- gen_par_str = "";
#.FN_FTR GenericParameter/parameterIdentifier
- gen_par_str = ep_strdup_printf("%s-%s", gen_par_prefix, gen_par_str);
+ 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);*/
#.END
#----------------------------------------------------------------------------------------
#.FN_BODY ParameterIdentifier/standard VAL_PTR = &value_int
- gint32 value_int;
+ gint32 value_int = -1;
+ gef_ctx_t *gefx;
%(DEFAULT_BODY)s
- 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);
#.END
#----------------------------------------------------------------------------------------
#.FN_BODY ParameterValue/octetString VAL_PTR = &value_tvb
tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
%(DEFAULT_BODY)s
- dissector_try_string(gen_par_dissector_table, gen_par_str, value_tvb, %(ACTX)s->pinfo, %(TREE)s);
+ 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)s->pinfo, %(TREE)s);
+ }
#.END
+
+#=== end of GEF =========================================================================
+
#----------------------------------------------------------------------------------------
#.FN_BODY UnicastAddress/iPAddress/network VAL_PTR = &value_tvb
@@ -1187,6 +1281,7 @@ RTPPayloadType/payloadDescriptor/rfc-number TYPE = FT_UINT32 DISPLAY = BASE_DEC
NonStandardIdentifier/h221NonStandard/t35CountryCode TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(T35CountryCode_vals)
VendorIdentification/productNumber TYPE = FT_STRING DISPLAY = BASE_HEX STRINGS = NULL
VendorIdentification/versionNumber TYPE = FT_STRING DISPLAY = BASE_HEX STRINGS = NULL
+ParameterValue/octetString TYPE = FT_UINT32 DISPLAY = BASE_DEC
#----------------------------------------------------------------------------------------
#.FIELD_ATTR
diff --git a/asn1/h245/packet-h245-template.c b/asn1/h245/packet-h245-template.c
index da6ee1a139..ca4d2a4497 100644
--- a/asn1/h245/packet-h245-template.c
+++ b/asn1/h245/packet-h245-template.c
@@ -51,6 +51,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"
@@ -65,7 +66,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;
@@ -207,15 +208,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;
@@ -391,7 +389,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/asn1/h323/Makefile.am b/asn1/h323/Makefile.am
new file mode 100644
index 0000000000..0b7ca0ada3
--- /dev/null
+++ b/asn1/h323/Makefile.am
@@ -0,0 +1,26 @@
+# $Id: Makefile.am 23085 2007-10-07 21:07:33Z jmayer $
+#
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# 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.
+
+
+include ../Makefile.preinc
+include Makefile.common
+include ../Makefile.inc
+
diff --git a/asn1/h323/Makefile.common b/asn1/h323/Makefile.common
new file mode 100644
index 0000000000..152abac171
--- /dev/null
+++ b/asn1/h323/Makefile.common
@@ -0,0 +1,53 @@
+# $Id: Makefile.common 22951 2007-09-25 11:58:35Z kukosa $
+#
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# 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.
+
+
+PROTOCOL_NAME = h323
+
+DISSECTOR_FILES = \
+ packet-$(PROTOCOL_NAME).c \
+ packet-$(PROTOCOL_NAME).h
+
+NEED_PACKET_PROTO_H = 1
+
+EXT_ASN_FILE_LIST =
+
+ASN_FILE_LIST = \
+ RAS-PROTOCOL-TUNNEL.asn \
+ ROBUSTNESS-DATA.asn
+
+EXTRA_DIST = \
+ $(ASN_FILE_LIST) \
+ packet-$(PROTOCOL_NAME)-template.c \
+ $(PROTOCOL_NAME).cnf
+
+SRC_FILES = \
+ $(EXTRA_DIST) \
+ $(EXT_ASN_FILE_LIST)
+
+A2W_FLAGS =
+
+EXTRA_CNF = \
+ ../h225/h225-exp.cnf
+
+../h225/h225-exp.cnf:
+ (cd ../h225 && $(MAKE_CNF_EXPORT))
+
diff --git a/asn1/h323/Makefile.nmake b/asn1/h323/Makefile.nmake
new file mode 100644
index 0000000000..d8dc2a43eb
--- /dev/null
+++ b/asn1/h323/Makefile.nmake
@@ -0,0 +1,29 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id: Makefile.nmake 23085 2007-10-07 21:07:33Z jmayer $
+#
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# 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.
+
+
+include ../../config.nmake
+include ../Makefile.preinc.nmake
+include Makefile.common
+include ../Makefile.inc.nmake
+
diff --git a/asn1/h323/RAS-PROTOCOL-TUNNEL.asn b/asn1/h323/RAS-PROTOCOL-TUNNEL.asn
new file mode 100644
index 0000000000..20a7c41902
--- /dev/null
+++ b/asn1/h323/RAS-PROTOCOL-TUNNEL.asn
@@ -0,0 +1,27 @@
+-- RAS-PROTOCOL-TUNNEL.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h323/2006/RAS-PROTOCOL-TUNNEL.asn
+--
+-- $Id: H235-SECURITY-MESSAGES.asn 18339 2006-06-05 06:52:50Z kukosa $
+--
+
+-- Module RAS-PROTOCOL-TUNNEL (H.323:06/2006)
+RAS-PROTOCOL-TUNNEL DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS TunnelledProtocol, NonStandardParameter
+ FROM H323-MESSAGES;
+
+RasTunnelledSignallingMessage ::= SEQUENCE {
+ tunnelledProtocolID TunnelledProtocol, -- tunnelled signalling protocol ID
+ messageContent SEQUENCE OF OCTET STRING, -- sequence of entire message(s)
+ tunnellingRequired NULL OPTIONAL,
+ nonStandardData NonStandardParameter OPTIONAL,
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/asn1/h323/ROBUSTNESS-DATA.asn b/asn1/h323/ROBUSTNESS-DATA.asn
new file mode 100644
index 0000000000..b2fe7aed6c
--- /dev/null
+++ b/asn1/h323/ROBUSTNESS-DATA.asn
@@ -0,0 +1,89 @@
+-- ROBUSTNESS-DATA.asn
+--
+-- $Id: H235-SECURITY-MESSAGES.asn 18339 2006-06-05 06:52:50Z kukosa $
+--
+-- ITU-T Rec. H.323 (06/2006)
+--
+-- Annex R - Robustness methods for H.323 entities
+-- R.11 GenericData usage
+--
+
+ROBUSTNESS-DATA DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS
+ TransportAddress, AlternateTransportAddresses,
+ GloballyUniqueID, TimeToLive
+ FROM H323-MESSAGES;
+
+RobustnessData ::= SEQUENCE {
+ versionID INTEGER(1..256),
+ robustnessData
+ CHOICE {
+ rrqData Rrq-RD,
+ rcfData Rcf-RD,
+ setupData Setup-RD,
+ connectData Connect-RD,
+ statusData Status-RD,
+ statusInquiryData StatusInquiry-RD,
+ ...
+ },
+ ...
+}
+
+BackupCallSignalAddresses ::= SEQUENCE OF
+ CHOICE {
+ tcp TransportAddress,
+ alternateTransport AlternateTransportAddresses,
+ ...
+ }
+
+GloballyUniqueIdentifier ::= GloballyUniqueID
+
+Rrq-RD ::= SEQUENCE {
+ backupCallSignalAddresses BackupCallSignalAddresses,
+ hasSharedRepository NULL OPTIONAL,
+ ...
+}
+
+Rcf-RD ::= SEQUENCE {
+ hasSharedRepository NULL OPTIONAL,
+ ...,
+ irrFrequency INTEGER(1..65535) OPTIONAL -- in seconds;
+ -- not present
+ -- if GK does not
+ -- want IRRs for
+ -- recovered calls
+}
+
+Setup-RD ::= SEQUENCE {
+ backupCallSignalAddresses BackupCallSignalAddresses,
+ hasSharedRepository NULL OPTIONAL,
+ endpointGuid GloballyUniqueIdentifier OPTIONAL,
+ ...
+}
+
+Connect-RD ::= SEQUENCE {
+ backupCallSignalAddresses BackupCallSignalAddresses,
+ hasSharedRepository NULL OPTIONAL,
+ endpointGuid GloballyUniqueIdentifier OPTIONAL,
+ ...
+}
+
+Status-RD ::= SEQUENCE {
+ h245Address TransportAddress OPTIONAL,
+ fastStart SEQUENCE OF OCTET STRING OPTIONAL,
+ ...,
+ resetH245 NULL OPTIONAL
+}
+
+StatusInquiry-RD ::= SEQUENCE {
+ h245Address TransportAddress OPTIONAL,
+ timeToLive TimeToLive OPTIONAL,
+ includeFastStart NULL OPTIONAL,
+ ...
+}
+
+robustnessId GenericIdentifier ::= standard:1
+
+END
diff --git a/asn1/h323/h323.cnf b/asn1/h323/h323.cnf
new file mode 100644
index 0000000000..2ca21adaef
--- /dev/null
+++ b/asn1/h323/h323.cnf
@@ -0,0 +1,17 @@
+# h323.cnf
+# H.323 conformation file
+# 2007 Tomas Kukosa
+
+# $Id$
+
+#.IMPORT ../h225/h225-exp.cnf
+
+#.OPT
+PER
+ALIGNED
+#.END
+
+#.PDU_NEW
+RasTunnelledSignallingMessage
+RobustnessData
+#.END
diff --git a/asn1/h323/packet-h323-template.c b/asn1/h323/packet-h323-template.c
new file mode 100644
index 0000000000..bb3d268f61
--- /dev/null
+++ b/asn1/h323/packet-h323-template.c
@@ -0,0 +1,145 @@
+/* packet-h323.c
+ * Routines for H.323 packet dissection
+ * 2007 Tomas Kukosa
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * 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 <glib.h>
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/oids.h>
+#include <epan/asn1.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#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;
+#include "packet-h323-hf.c"
+
+/* Initialize the subtree pointers */
+#include "packet-h323-ett.c"
+
+#include "packet-h323-fn.c"
+
+/*--- proto_register_h323 ----------------------------------------------*/
+void proto_register_h323(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+#include "packet-h323-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+#include "packet-h323-ettarr.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/configure.in b/configure.in
index ef4e15df7e..f16cb705cc 100644
--- a/configure.in
+++ b/configure.in
@@ -1491,6 +1491,7 @@ AC_OUTPUT(
asn1/h235/Makefile
asn1/h245/Makefile
asn1/h248/Makefile
+ asn1/h323/Makefile
asn1/h450/Makefile
asn1/h450-ros/Makefile
asn1/inap/Makefile
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 <epan/h225-persistentdata.h>
#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;
}
@@ -3365,6 +3372,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,
0U, 4294967295U, NULL, FALSE);
@@ -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 <gerald@wireshark.org>
+ * 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 <glib.h>
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/oids.h>
+#include <epan/asn1.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#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 */