Have asn1_ctx_t passed into the "h245.gef.name" and "h245.gef.content" subdissectors...
authorMichael Mann <mmann78@netscape.net>
Sun, 3 Nov 2013 02:45:22 +0000 (02:45 -0000)
committerMichael Mann <mmann78@netscape.net>
Sun, 3 Nov 2013 02:45:22 +0000 (02:45 -0000)
svn path=/trunk/; revision=53055

asn1/h225/h225.cnf
asn1/h245/h245.cnf
asn1/h460/packet-h460-template.c
epan/dissectors/packet-amr.c
epan/dissectors/packet-h225.c
epan/dissectors/packet-h245.c
epan/dissectors/packet-h264.c
epan/dissectors/packet-h460.c
epan/dissectors/packet-mp4ves.c

index 57bf82d86e05ef81e67c8019dbd575ed5c0eda47..f5bc55c04306408a5437c7ac852dc83498173be3 100644 (file)
@@ -673,8 +673,7 @@ H221NonStandard/manufacturerCode  VAL_PTR = &manufacturerCode
   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, NULL);
+    dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
   }
   actx->private_data = gefx;  /* subdissector could overwrite it */
 #.END
@@ -706,7 +705,7 @@ H221NonStandard/manufacturerCode  VAL_PTR = &manufacturerCode
   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, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
 #.END
 
index 23d8cf070dc5f8a794af60db878fdc8e11acd567..5993b4dd6ce21cf9a009b983c9610a493b6b07b8 100644 (file)
@@ -698,7 +698,7 @@ if (h245_pi != NULL)
   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, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
   actx->private_data = parent_gefx;
 #.END
@@ -720,8 +720,7 @@ if (h245_pi != NULL)
   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, NULL);
+    dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
   }
   actx->private_data = gefx;  /* subdissector could overwrite it */
 #.END
@@ -751,8 +750,7 @@ if (h245_pi != NULL)
   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, NULL);
+    dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
   }
   actx->private_data = gefx;  /* subdissector could overwrite it */
 #.END
@@ -780,7 +778,7 @@ if (h245_pi != NULL)
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint8), sizeof(guint8));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %%s", gefx->key);*/
     add_new_data_source(%(ACTX)s->pinfo, value_tvb, "booleanArray");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
 #.END
 #.FN_BODY ParameterValue/unsignedMin  VAL_PTR = &value
@@ -797,7 +795,7 @@ if (h245_pi != NULL)
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint16), sizeof(guint16));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %%s", gefx->key);*/
     add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsignedMin");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
 #.END
 #.FN_BODY ParameterValue/unsignedMax  VAL_PTR = &value
@@ -814,7 +812,7 @@ if (h245_pi != NULL)
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint16), sizeof(guint16));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %%s", gefx->key);*/
     add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsignedMax");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
 #.END
 #.FN_BODY ParameterValue/unsigned32Min  VAL_PTR = &value
@@ -831,7 +829,7 @@ if (h245_pi != NULL)
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint32), sizeof(guint32));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %%s", gefx->key);*/
     add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsigned32Min");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
 #.END
 #.FN_BODY ParameterValue/unsigned32Max  VAL_PTR = &value
@@ -848,7 +846,7 @@ if (h245_pi != NULL)
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint32), sizeof(guint32));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %%s", gefx->key);*/
     add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsigned32Max");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
 #.END
 #.FN_BODY ParameterValue/octetString  VAL_PTR = &value_tvb
@@ -859,7 +857,7 @@ if (h245_pi != NULL)
   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, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
   }
 #.END
 
index fe4989592a2f5f990497fea09302e546c48f4f40..4490fbc835cad1dc22b4b1f23df317efa4dbd93f 100644 (file)
@@ -216,12 +216,11 @@ static h460_feature_t *find_ftr(const gchar *key) {
 
 /*--- dissect_h460_name -------------------------------------------*/
 static int
-dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void *data _U_) {
+dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void *data) {
   int offset = 0;
-  asn1_ctx_t *actx;
+  asn1_ctx_t *actx = get_asn1_ctx(data);
   h460_feature_t *ftr;
 
-  actx = get_asn1_ctx(pinfo->private_data);
   DISSECTOR_ASSERT(actx);
   if (tree) {
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, 0, 0, "*** DEBUG dissect_h460_name: %s", pinfo->match_string);*/
index 3314a6d38387ef883d2ff386105697c79a373c25..3f15a4d5df7b804a904ed4a452859f3708c477b7 100644 (file)
@@ -589,12 +589,11 @@ static amr_capability_t *find_cap(const gchar *id) {
     return ftr;
 }
 
-static void
-dissect_amr_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_amr_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void* data)
 {
-    asn1_ctx_t       *actx;
+    asn1_ctx_t *actx = get_asn1_ctx(data);
 
-    actx = get_asn1_ctx(pinfo->private_data);
     DISSECTOR_ASSERT(actx != NULL);
     if (tree && (actx != NULL)) {
         amr_capability_t *ftr;
@@ -606,6 +605,8 @@ dissect_amr_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree)
             proto_item_append_text(actx->created_item, " - unknown(%s)", pinfo->match_string);
         }
     }
+
+    return tvb_length(tvb);
 }
 
 void proto_reg_handoff_amr(void);
@@ -816,7 +817,7 @@ proto_reg_handoff_amr(void)
         /*
          * Register H.245 Generic parameter name(s)
          */
-        amr_name_handle = create_dissector_handle(dissect_amr_name, proto_amr);
+        amr_name_handle = new_create_dissector_handle(dissect_amr_name, proto_amr);
         for (ftr=amr_capability_tab; ftr->id; ftr++) {
             if (ftr->name)
                 dissector_add_string("h245.gef.name", ftr->id, amr_name_handle);
index 0a7b7a44e75beb2c193f539cb1c36b6c58d0307c..a990942bf25f14a49a181cfc0f59332624f8512c 100644 (file)
@@ -1892,7 +1892,7 @@ dissect_h225_PartyNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
 
 static int
 dissect_h225_TBCD_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 719 "../../asn1/h225/h225.cnf"
+#line 718 "../../asn1/h225/h225.cnf"
   int min_len, max_len;
   gboolean has_extension;
 
@@ -3678,7 +3678,7 @@ dissect_h225_CircuitIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 static int
 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 683 "../../asn1/h225/h225.cnf"
+#line 682 "../../asn1/h225/h225.cnf"
   guint32 value_int = (guint32)-1;
   gef_ctx_t *gefx;
 
@@ -3696,7 +3696,7 @@ dissect_h225_T_standard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_,
 
 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 692 "../../asn1/h225/h225.cnf"
+#line 691 "../../asn1/h225/h225.cnf"
   const gchar *oid_str = NULL;
   gef_ctx_t *gefx;
 
@@ -3739,8 +3739,7 @@ dissect_h225_GenericIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
   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, NULL);
+    dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
   }
   actx->private_data = gefx;  /* subdissector could overwrite it */
 
@@ -3751,7 +3750,7 @@ dissect_h225_GenericIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 static int
 dissect_h225_T_raw(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 702 "../../asn1/h225/h225.cnf"
+#line 701 "../../asn1/h225/h225.cnf"
   tvbuff_t *value_tvb;
   gef_ctx_t *gefx;
 
@@ -3761,7 +3760,7 @@ dissect_h225_T_raw(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot
   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, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
 
 
index c91f1d635c63ffe0b93a2c709fadba0a5186680a..a2ef490bc6977467f0e899ada7ea3aa1f1540da2 100644 (file)
@@ -2510,7 +2510,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 970 "../../asn1/h245/h245.cnf"
+#line 968 "../../asn1/h245/h245.cnf"
   t35CountryCode = 0;
   t35Extension = 0;
   manufacturerCode = 0;
@@ -2518,7 +2518,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 974 "../../asn1/h245/h245.cnf"
+#line 972 "../../asn1/h245/h245.cnf"
   h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
   proto_tree_add_uint(tree, hf_h245Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard);
 
@@ -2540,7 +2540,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 951 "../../asn1/h245/h245.cnf"
+#line 949 "../../asn1/h245/h245.cnf"
        gint32 value;
 
        nsiOID = "";
@@ -2569,7 +2569,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 985 "../../asn1/h245/h245.cnf"
+#line 983 "../../asn1/h245/h245.cnf"
   tvbuff_t *next_tvb = NULL;
 
   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -2592,7 +2592,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 983 "../../asn1/h245/h245.cnf"
+#line 981 "../../asn1/h245/h245.cnf"
   nsp_handle = NULL;
 
   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -3545,7 +3545,7 @@ 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 730 "../../asn1/h245/h245.cnf"
+#line 729 "../../asn1/h245/h245.cnf"
   const gchar *standard_oid_str = NULL;
   gef_ctx_t *gefx;
 
@@ -3618,8 +3618,7 @@ dissect_h245_CapabilityIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
   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, NULL);
+    dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
   }
   actx->private_data = gefx;  /* subdissector could overwrite it */
 
@@ -3640,7 +3639,7 @@ 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 761 "../../asn1/h245/h245.cnf"
+#line 759 "../../asn1/h245/h245.cnf"
   guint32 value_int = (guint32)-1;
   gef_ctx_t *gefx;
 
@@ -3673,21 +3672,20 @@ static const per_choice_t ParameterIdentifier_choice[] = {
 
 static int
 dissect_h245_ParameterIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 747 "../../asn1/h245/h245.cnf"
+#line 746 "../../asn1/h245/h245.cnf"
   gef_ctx_t *gefx;
 
   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
                                  ett_h245_ParameterIdentifier, ParameterIdentifier_choice,
                                  NULL);
 
-#line 749 "../../asn1/h245/h245.cnf"
+#line 748 "../../asn1/h245/h245.cnf"
   gef_ctx_update_key(gef_ctx_get(actx->private_data));
   /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG ParameterIdentifier: %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, NULL);
+    dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
   }
   actx->private_data = gefx;  /* subdissector could overwrite it */
 
@@ -3698,7 +3696,7 @@ dissect_h245_ParameterIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
 
 static int
 dissect_h245_T_booleanArray(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 770 "../../asn1/h245/h245.cnf"
+#line 768 "../../asn1/h245/h245.cnf"
   guint32 value;
   guint8 *buf;
   tvbuff_t *value_tvb;
@@ -3714,7 +3712,7 @@ dissect_h245_T_booleanArray(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint8), sizeof(guint8));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/
     add_new_data_source(actx->pinfo, value_tvb, "booleanArray");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
 
 
@@ -3725,7 +3723,7 @@ dissect_h245_T_booleanArray(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 static int
 dissect_h245_T_unsignedMin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 787 "../../asn1/h245/h245.cnf"
+#line 785 "../../asn1/h245/h245.cnf"
   guint32 value;
   guint8 *buf;
   tvbuff_t *value_tvb;
@@ -3741,7 +3739,7 @@ dissect_h245_T_unsignedMin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint16), sizeof(guint16));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/
     add_new_data_source(actx->pinfo, value_tvb, "unsignedMin");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
 
 
@@ -3752,7 +3750,7 @@ dissect_h245_T_unsignedMin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
 
 static int
 dissect_h245_T_unsignedMax(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 804 "../../asn1/h245/h245.cnf"
+#line 802 "../../asn1/h245/h245.cnf"
   guint32 value;
   guint8 *buf;
   tvbuff_t *value_tvb;
@@ -3768,7 +3766,7 @@ dissect_h245_T_unsignedMax(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint16), sizeof(guint16));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/
     add_new_data_source(actx->pinfo, value_tvb, "unsignedMax");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
 
 
@@ -3779,7 +3777,7 @@ dissect_h245_T_unsignedMax(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
 
 static int
 dissect_h245_T_unsigned32Min(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 821 "../../asn1/h245/h245.cnf"
+#line 819 "../../asn1/h245/h245.cnf"
   guint32 value;
   guint8 *buf;
   tvbuff_t *value_tvb;
@@ -3795,7 +3793,7 @@ dissect_h245_T_unsigned32Min(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint32), sizeof(guint32));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/
     add_new_data_source(actx->pinfo, value_tvb, "unsigned32Min");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
 
 
@@ -3806,7 +3804,7 @@ dissect_h245_T_unsigned32Min(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 static int
 dissect_h245_T_unsigned32Max(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 838 "../../asn1/h245/h245.cnf"
+#line 836 "../../asn1/h245/h245.cnf"
   guint32 value;
   guint8 *buf;
   tvbuff_t *value_tvb;
@@ -3822,7 +3820,7 @@ dissect_h245_T_unsigned32Max(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
     value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint32), sizeof(guint32));
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, offset>>3, 0, "*** DEBUG dissector_try_string: %s", gefx->key);*/
     add_new_data_source(actx->pinfo, value_tvb, "unsigned32Max");
-    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
 
 
@@ -3833,7 +3831,7 @@ dissect_h245_T_unsigned32Max(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 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 855 "../../asn1/h245/h245.cnf"
+#line 853 "../../asn1/h245/h245.cnf"
   tvbuff_t *value_tvb;
   gef_ctx_t *gefx;
 
@@ -3843,7 +3841,7 @@ dissect_h245_T_octetString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
   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, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
 
 
@@ -4006,7 +4004,7 @@ dissect_h245_T_nonCollapsingRaw(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
   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, NULL);
+    dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
   }
   actx->private_data = parent_gefx;
 
@@ -4223,7 +4221,7 @@ dissect_h245_T_payloadDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
 
 static int
 dissect_h245_T_rtpPayloadType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 936 "../../asn1/h245/h245.cnf"
+#line 934 "../../asn1/h245/h245.cnf"
   unsigned int pt;
 
   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@@ -4247,7 +4245,7 @@ static const per_sequence_t RTPPayloadType_sequence[] = {
 
 static int
 dissect_h245_RTPPayloadType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 928 "../../asn1/h245/h245.cnf"
+#line 926 "../../asn1/h245/h245.cnf"
   rfc_number = 0;
 
   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -7235,7 +7233,7 @@ static const per_choice_t DataType_choice[] = {
 
 static int
 dissect_h245_DataType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 1012 "../../asn1/h245/h245.cnf"
+#line 1010 "../../asn1/h245/h245.cnf"
 gint choice_index;
 
   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
@@ -7973,7 +7971,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 870 "../../asn1/h245/h245.cnf"
+#line 868 "../../asn1/h245/h245.cnf"
   tvbuff_t *value_tvb;
 
   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -7993,7 +7991,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 881 "../../asn1/h245/h245.cnf"
+#line 879 "../../asn1/h245/h245.cnf"
   guint32 tsapIdentifier;
 
   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@@ -8250,13 +8248,13 @@ 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 900 "../../asn1/h245/h245.cnf"
+#line 898 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = &upcoming_channel->media_addr;
 
   offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index);
 
-#line 904 "../../asn1/h245/h245.cnf"
+#line 902 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = NULL;
 
@@ -8267,13 +8265,13 @@ 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 918 "../../asn1/h245/h245.cnf"
+#line 916 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = &upcoming_channel->media_control_addr;
 
   offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index);
 
-#line 922 "../../asn1/h245/h245.cnf"
+#line 920 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = NULL;
 
@@ -10952,13 +10950,13 @@ 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 891 "../../asn1/h245/h245.cnf"
+#line 889 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = &upcoming_channel->media_addr;
 
   offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index);
 
-#line 895 "../../asn1/h245/h245.cnf"
+#line 893 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = NULL;
 
@@ -10969,13 +10967,13 @@ 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 909 "../../asn1/h245/h245.cnf"
+#line 907 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = &upcoming_channel->media_control_addr;
 
   offset = dissect_h245_TransportAddress(tvb, offset, actx, tree, hf_index);
 
-#line 913 "../../asn1/h245/h245.cnf"
+#line 911 "../../asn1/h245/h245.cnf"
   if (upcoming_channel)
     upcoming_channel->upcoming_addr = NULL;
 
@@ -14230,7 +14228,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 994 "../../asn1/h245/h245.cnf"
+#line 992 "../../asn1/h245/h245.cnf"
   tvbuff_t *next_tvb = NULL;
   proto_item *item;
   proto_tree *subtree;
index a1b3d7273633789058410bcc9c33897b96aca1b0..8d59be5c967e5c17cc93d9d17cd8b2c9765ab1c7 100644 (file)
@@ -2022,9 +2022,8 @@ dissect_h264_par_level(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_,
     int          offset = 0;
     guint16      lvl;
     const gchar *p;
-    asn1_ctx_t  *actx;
+    asn1_ctx_t  *actx = get_asn1_ctx(data);
 
-    actx = get_asn1_ctx(pinfo->private_data);
     DISSECTOR_ASSERT(actx);
 
     lvl = tvb_get_ntohs(tvb, offset);
@@ -2037,11 +2036,10 @@ dissect_h264_par_level(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_,
 }
 
 static int
-dissect_h264_par_DecoderConfigurationInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+dissect_h264_par_DecoderConfigurationInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
 {
-    asn1_ctx_t *actx;
+    asn1_ctx_t *actx = get_asn1_ctx(data);
 
-    actx = get_asn1_ctx(pinfo->private_data);
     DISSECTOR_ASSERT(actx);
 
     dissect_h264_nal_unit(tvb, pinfo, tree);
@@ -2088,12 +2086,11 @@ static h264_capability_t *find_cap(const gchar *id) {
     return ftr;
 }
 
-static void
-dissect_h264_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_h264_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void* data _U_)
 {
-    asn1_ctx_t        *actx;
+    asn1_ctx_t *actx = get_asn1_ctx(data);
 
-    actx = get_asn1_ctx(pinfo->private_data);
     DISSECTOR_ASSERT(actx);
     if (tree) {
         h264_capability_t *ftr;
@@ -2105,6 +2102,8 @@ dissect_h264_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree)
             proto_item_append_text(actx->created_item, " - unknown(%s)", pinfo->match_string);
         }
     }
+
+    return tvb_length(tvb);
 }
 
 
@@ -2820,7 +2819,7 @@ proto_reg_handoff_h264(void)
         h264_handle = find_dissector("h264");
         dissector_add_string("rtp_dyn_payload_type","H264", h264_handle);
 
-        h264_name_handle = create_dissector_handle(dissect_h264_name, proto_h264);
+        h264_name_handle = new_create_dissector_handle(dissect_h264_name, proto_h264);
         for (ftr=h264_capability_tab; ftr->id; ftr++) {
             if (ftr->name)
                 dissector_add_string("h245.gef.name", ftr->id, h264_name_handle);
index 1782dc906176f62352fc3a5f11af493b52ff51a6..2f88793e73a007f9452d1cc969df61dbcd05dfdd 100644 (file)
@@ -2128,12 +2128,11 @@ static h460_feature_t *find_ftr(const gchar *key) {
 
 /*--- dissect_h460_name -------------------------------------------*/
 static int
-dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void *data _U_) {
+dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void *data) {
   int offset = 0;
-  asn1_ctx_t *actx;
+  asn1_ctx_t *actx = get_asn1_ctx(data);
   h460_feature_t *ftr;
 
-  actx = get_asn1_ctx(pinfo->private_data);
   DISSECTOR_ASSERT(actx);
   if (tree) {
     /* DEBUG */ /*proto_tree_add_text(tree, tvb, 0, 0, "*** DEBUG dissect_h460_name: %s", pinfo->match_string);*/
@@ -2871,7 +2870,7 @@ void proto_register_h460(void) {
         "UnicastAddress", HFILL }},
 
 /*--- End of included file: packet-h460-hfarr.c ---*/
-#line 248 "../../asn1/h460/packet-h460-template.c"
+#line 247 "../../asn1/h460/packet-h460-template.c"
   };
 
   /* List of subtrees */
@@ -2970,7 +2969,7 @@ void proto_register_h460(void) {
     &ett_h460_21_TransmitCapabilities,
 
 /*--- End of included file: packet-h460-ettarr.c ---*/
-#line 253 "../../asn1/h460/packet-h460-template.c"
+#line 252 "../../asn1/h460/packet-h460-template.c"
   };
 
   /* Register protocol */
index 7829f1a18ef41f5ee93552efc8d02dd50e81a4fc..7649fee80b443687eedc2346f7dc65772d866de9 100644 (file)
@@ -782,14 +782,13 @@ dissect_mp4ves(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
  * unsignedMax       INTEGER(0..65535), -- Look for max
  */
 static int
-dissect_mp4ves_par_profile(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_)
+dissect_mp4ves_par_profile(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void *data)
 {
        int offset = 0;
        guint16 lvl;
        const gchar *p = NULL;
-       asn1_ctx_t *actx;
+       asn1_ctx_t *actx = get_asn1_ctx(data);
 
-       actx = get_asn1_ctx(pinfo->private_data);
        DISSECTOR_ASSERT(actx);
 
        lvl = tvb_get_ntohs(tvb, offset);
@@ -801,14 +800,13 @@ dissect_mp4ves_par_profile(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
        return offset;
 }
 static int
-dissect_mp4ves_par_video_object_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_)
+dissect_mp4ves_par_video_object_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void *data)
 {
        int offset = 0;
        guint16 lvl;
        const gchar *p = NULL;
-       asn1_ctx_t *actx;
+       asn1_ctx_t *actx = get_asn1_ctx(data);
 
-       actx = get_asn1_ctx(pinfo->private_data);
        DISSECTOR_ASSERT(actx);
 
        lvl = tvb_get_ntohs(tvb, offset);
@@ -821,11 +819,10 @@ dissect_mp4ves_par_video_object_type(tvbuff_t *tvb, packet_info *pinfo _U_, prot
 }
 
 static int
-dissect_mp4ves_par_decoderConfigurationInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+dissect_mp4ves_par_decoderConfigurationInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
 {
-       asn1_ctx_t *actx;
+       asn1_ctx_t *actx = get_asn1_ctx(data);
 
-       actx = get_asn1_ctx(pinfo->private_data);
        DISSECTOR_ASSERT(actx);
 
        dissect_mp4ves_config(tvb, pinfo, tree);
@@ -859,13 +856,12 @@ static mp4ves_capability_t *find_cap(const gchar *id) {
        return ftr;
 }
 
-static void
-dissect_mp4ves_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_mp4ves_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void* data)
 {
-       asn1_ctx_t *actx;
-       mp4ves_capability_t *ftr = NULL;
+       asn1_ctx_t *actx = get_asn1_ctx(data);
+       mp4ves_capability_t *ftr;
 
-       actx = get_asn1_ctx(pinfo->private_data);
        DISSECTOR_ASSERT(actx);
        if (tree) {
                ftr = find_cap(pinfo->match_string);
@@ -876,6 +872,8 @@ dissect_mp4ves_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree)
                        proto_item_append_text(actx->created_item, " - unknown(%s)", pinfo->match_string);
                }
        }
+
+       return tvb_length(tvb);
 }
 
 void
@@ -1010,7 +1008,7 @@ proto_reg_handoff_mp4ves(void)
                dissector_add_string("rtp_dyn_payload_type","MP4V-ES", mp4ves_handle);
                mp4ves_prefs_initialized = TRUE;
 
-               mp4ves_name_handle = create_dissector_handle(dissect_mp4ves_name, proto_mp4ves);
+               mp4ves_name_handle = new_create_dissector_handle(dissect_mp4ves_name, proto_mp4ves);
                for (ftr=mp4ves_capability_tab; ftr->id; ftr++) {
                    if (ftr->name)
                                dissector_add_string("h245.gef.name", ftr->id, mp4ves_name_handle);