aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-08-08 09:19:29 -0400
committerMichael Mann <mmann78@netscape.net>2014-08-09 01:57:08 +0000
commitcd02af56a1e39c66b44fd7957aff3b7b77a59e9d (patch)
tree4a3e859751bb73268115a607e9dffcec008bb411 /epan
parentbb15274a4a82fcab1c06935fa1e249f436420a02 (diff)
Eliminate (almost all) proto_tree_add_text calls from ASN.1 dissectors.
This mostly involved adding expert info capabilities to many of the dissectors so that they could correctly flag error conditions. Only remaining proto_tree_add_text calls are in H248.cnf, which has a convoluted way of using hf_ data to make its tree. Change-Id: I6412150c2ec1977d7fa38f3f0ed416680bdfb141 Reviewed-on: https://code.wireshark.org/review/3500 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-acse.c26
-rw-r--r--epan/dissectors/packet-ansi_map.c86
-rw-r--r--epan/dissectors/packet-ansi_tcap.c28
-rw-r--r--epan/dissectors/packet-atn-ulcs.c19
-rw-r--r--epan/dissectors/packet-charging_ase.c23
-rw-r--r--epan/dissectors/packet-cmip.c32
-rw-r--r--epan/dissectors/packet-dap.c31
-rw-r--r--epan/dissectors/packet-disp.c45
-rw-r--r--epan/dissectors/packet-dop.c32
-rw-r--r--epan/dissectors/packet-dsp.c40
-rw-r--r--epan/dissectors/packet-ftam.c22
-rw-r--r--epan/dissectors/packet-goose.c14
-rw-r--r--epan/dissectors/packet-gprscdr.c23
-rw-r--r--epan/dissectors/packet-gsm_map.c147
-rw-r--r--epan/dissectors/packet-h225.c33
-rw-r--r--epan/dissectors/packet-h245.c145
-rw-r--r--epan/dissectors/packet-h248.c17
-rw-r--r--epan/dissectors/packet-h450.c38
-rw-r--r--epan/dissectors/packet-h460.c6
-rw-r--r--epan/dissectors/packet-idmp.c23
-rw-r--r--epan/dissectors/packet-inap.c35
-rw-r--r--epan/dissectors/packet-isdn-sup.c38
-rw-r--r--epan/dissectors/packet-kerberos.c32
-rw-r--r--epan/dissectors/packet-ldap.c114
-rw-r--r--epan/dissectors/packet-lte-rrc.c49
-rw-r--r--epan/dissectors/packet-mms.c10
-rw-r--r--epan/dissectors/packet-p1.c22
-rw-r--r--epan/dissectors/packet-pkcs12.c27
-rw-r--r--epan/dissectors/packet-pktc.c4
-rw-r--r--epan/dissectors/packet-pres.c24
-rw-r--r--epan/dissectors/packet-q932.c46
-rw-r--r--epan/dissectors/packet-qsig.c39
-rw-r--r--epan/dissectors/packet-ros.c80
-rw-r--r--epan/dissectors/packet-snmp.c107
-rw-r--r--epan/dissectors/packet-snmp.h2
-rw-r--r--epan/dissectors/packet-spnego.c32
-rw-r--r--epan/dissectors/packet-sv.c10
-rw-r--r--epan/dissectors/packet-t38.c43
-rw-r--r--epan/dissectors/packet-tcap.c21
39 files changed, 942 insertions, 623 deletions
diff --git a/epan/dissectors/packet-acse.c b/epan/dissectors/packet-acse.c
index b7a7643542..07d7cbf216 100644
--- a/epan/dissectors/packet-acse.c
+++ b/epan/dissectors/packet-acse.c
@@ -190,6 +190,7 @@ static int hf_acse_ACSE_requirements_nested_association = -1;
/*--- End of included file: packet-acse-hf.c ---*/
#line 72 "../../asn1/acse/packet-acse-template.c"
+static gint hf_acse_user_data = -1;
/* Initialize the subtree pointers */
static gint ett_acse = -1;
@@ -233,9 +234,11 @@ static gint ett_acse_Authentication_value_other = -1;
static gint ett_acse_Authentication_value = -1;
/*--- End of included file: packet-acse-ett.c ---*/
-#line 76 "../../asn1/acse/packet-acse-template.c"
+#line 77 "../../asn1/acse/packet-acse-template.c"
static expert_field ei_acse_dissector_not_available = EI_INIT;
+static expert_field ei_acse_malformed = EI_INIT;
+static expert_field ei_acse_invalid_oid = EI_INIT;
static const char *object_identifier_id;
/* indirect_reference, used to pick up the signalling so we know what
@@ -1678,7 +1681,7 @@ dissect_acse_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
/*--- End of included file: packet-acse-fn.c ---*/
-#line 152 "../../asn1/acse/packet-acse-template.c"
+#line 155 "../../asn1/acse/packet-acse-template.c"
/*
@@ -1703,9 +1706,8 @@ dissect_acse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
/* first, try to check length */
/* do we have at least 2 bytes */
if (!tvb_bytes_exist(tvb, 0, 2)){
- proto_tree_add_text(parent_tree, tvb, offset,
- tvb_reported_length_remaining(tvb,offset),
- "User data");
+ proto_tree_add_item(parent_tree, hf_acse_user_data, tvb, offset,
+ tvb_reported_length_remaining(tvb,offset), ENC_NA);
return 0; /* no, it isn't a ACSE PDU */
}
@@ -1738,7 +1740,7 @@ dissect_acse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
oid=find_oid_by_pres_ctx_id(pinfo, indir_ref);
if(oid){
if(strcmp(oid, ACSE_APDU_OID) == 0){
- proto_tree_add_text(parent_tree, tvb, offset, -1,
+ proto_tree_add_expert_format(parent_tree, pinfo, &ei_acse_invalid_oid, tvb, offset, -1,
"Invalid OID: %s", ACSE_APDU_OID);
THROW(ReportedBoundsError);
}
@@ -1779,7 +1781,7 @@ dissect_acse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
int old_offset=offset;
offset = dissect_acse_ACSE_apdu(FALSE, tvb, offset, &asn1_ctx, tree, -1);
if(offset == old_offset ){
- proto_tree_add_text(tree, tvb, offset, -1,"Malformed packet");
+ proto_tree_add_expert(tree, pinfo, &ei_acse_malformed, tvb, offset, -1);
break;
}
}
@@ -1793,6 +1795,10 @@ void proto_register_acse(void) {
/* List of fields */
static hf_register_info hf[] = {
+ { &hf_acse_user_data,
+ { "User data", "acse.user_data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
/*--- Included file: packet-acse-hfarr.c ---*/
#line 1 "../../asn1/acse/packet-acse-hfarr.c"
@@ -2226,7 +2232,7 @@ void proto_register_acse(void) {
NULL, HFILL }},
/*--- End of included file: packet-acse-hfarr.c ---*/
-#line 267 "../../asn1/acse/packet-acse-template.c"
+#line 273 "../../asn1/acse/packet-acse-template.c"
};
/* List of subtrees */
@@ -2272,11 +2278,13 @@ void proto_register_acse(void) {
&ett_acse_Authentication_value,
/*--- End of included file: packet-acse-ettarr.c ---*/
-#line 273 "../../asn1/acse/packet-acse-template.c"
+#line 279 "../../asn1/acse/packet-acse-template.c"
};
static ei_register_info ei[] = {
{ &ei_acse_dissector_not_available, { "acse.dissector_not_available", PI_UNDECODED, PI_WARN, "Dissector is not available", EXPFILL }},
+ { &ei_acse_malformed, { "acse._malformed", PI_MALFORMED, PI_ERROR, "Malformed packet", EXPFILL }},
+ { &ei_acse_invalid_oid, { "acse.invalid_oid", PI_UNDECODED, PI_WARN, "Invalid OID", EXPFILL }},
};
expert_module_t* expert_acse;
diff --git a/epan/dissectors/packet-ansi_map.c b/epan/dissectors/packet-ansi_map.c
index af6cc499cf..b88d0692cf 100644
--- a/epan/dissectors/packet-ansi_map.c
+++ b/epan/dissectors/packet-ansi_map.c
@@ -95,6 +95,7 @@
#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
+#include <epan/expert.h>
#include <epan/tap.h>
#include <epan/asn1.h>
#include <epan/wmem/wmem.h>
@@ -328,6 +329,10 @@ static int hf_ansi_map_winoperationscapability_pos = -1;
static int hf_ansi_map_PACA_Level = -1;
static int hf_ansi_map_pacaindicator_pa = -1;
+static int hf_ansi_map_point_code = -1;
+static int hf_ansi_map_SSN = -1;
+static int hf_ansi_map_win_trigger_list = -1;
+
/*--- Included file: packet-ansi_map-hf.c ---*/
#line 1 "../../asn1/ansi_map/packet-ansi_map-hf.c"
@@ -880,7 +885,7 @@ static int hf_ansi_map_interSystemSMSDeliveryPointToPointRes = -1; /* InterSyst
static int hf_ansi_map_qualificationRequest2Res = -1; /* QualificationRequest2Res */
/*--- End of included file: packet-ansi_map-hf.c ---*/
-#line 324 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 329 "../../asn1/ansi_map/packet-ansi_map-template.c"
/* Initialize the subtree pointers */
static gint ett_ansi_map = -1;
@@ -1140,7 +1145,11 @@ static gint ett_ansi_map_InvokeData = -1;
static gint ett_ansi_map_ReturnData = -1;
/*--- End of included file: packet-ansi_map-ett.c ---*/
-#line 356 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 361 "../../asn1/ansi_map/packet-ansi_map-template.c"
+
+static expert_field ei_ansi_map_nr_not_used = EI_INIT;
+static expert_field ei_ansi_map_unknown_invokeData_blob = EI_INIT;
+static expert_field ei_ansi_map_no_data = EI_INIT;
/* Global variables */
static dissector_table_t is637_tele_id_dissector_table; /* IS-637 Teleservice ID */
@@ -1437,7 +1446,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
}
static void
-dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
+dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
guint8 octet , octet_len;
guint8 b1,b2,b3,b4;
@@ -1501,7 +1510,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
case 3:/* Data Numbering (ITU-T Rec. X.121) (not used in this Standard). */
case 4:/* Telex Numbering (ITU-T Rec. F.69) (not used in this Standard). */
case 5:/* Maritime Mobile Numbering (not used in this Standard). */
- proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
+ proto_tree_add_expert(subtree, pinfo, &ei_ansi_map_nr_not_used, tvb, offset, -1);
break;
case 2:/* Telephony Numbering (ITU-T Rec. E.164,E.163). */
case 6:/* Land Mobile Numbering (ITU-T Rec. E.212) */
@@ -1543,10 +1552,10 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
/* Point Code Network Number octet 4 */
b3 = tvb_get_guint8(tvb,offset);
offset++;
+ proto_tree_add_bytes_format_value(subtree, hf_ansi_map_point_code, tvb, offset-3, 3, NULL, "%u-%u-%u", b3, b2, b1);
/* Subsystem Number (SSN) octet 5 */
b4 = tvb_get_guint8(tvb,offset);
- proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u SSN %u",
- b3, b2, b1, b4);
+ proto_tree_add_item(subtree, hf_ansi_map_SSN, tvb, offset, 1, ENC_NA);
proto_item_append_text(actx->created_item, " - Point Code %u-%u-%u SSN %u", b3, b2, b1, b4);
break;
default:
@@ -1556,7 +1565,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
case 14:/* Internet Protocol (IP) Address. */
break;
default:
- proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
+ proto_tree_add_expert(subtree, pinfo, &ei_ansi_map_nr_not_used, tvb, offset, -1);
break;
}
@@ -3031,7 +3040,7 @@ dissect_ansi_map_pc_ssn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
int offset = 0;
proto_tree *subtree;
- guint8 b1,b2,b3,b4;
+ guint8 b1,b2,b3;
subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
@@ -3047,11 +3056,8 @@ dissect_ansi_map_pc_ssn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
/* Point Code Network Number octet 4 */
b3 = tvb_get_guint8(tvb,offset);
offset++;
- /* Subsystem Number (SSN) octet 5 */
- b4 = tvb_get_guint8(tvb,offset);
- proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u SSN %u",
- b3, b2, b1, b4);
-
+ proto_tree_add_bytes_format_value(subtree, hf_ansi_map_point_code, tvb, offset-3, 3, NULL, "%u-%u-%u", b3, b2, b1);
+ proto_tree_add_item(subtree, hf_ansi_map_SSN, tvb, offset, 1, ENC_NA);
}
/* 6.5.2.94 PilotBillingID */
static void
@@ -15466,7 +15472,7 @@ dissect_ansi_map_ReturnData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
/*--- End of included file: packet-ansi_map-fn.c ---*/
-#line 3630 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 3636 "../../asn1/ansi_map/packet-ansi_map-template.c"
/*
* 6.5.2.dk N.S0013-0 v 1.0,X.S0004-550-E v1.0 2.301
@@ -15487,23 +15493,23 @@ dissect_ansi_map_win_trigger_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
octet = tvb_get_guint8(tvb,offset);
switch (octet){
case 0xdc:
- proto_tree_add_text(subtree, tvb, offset, 1, "TDP-R's armed");
+ proto_tree_add_uint_format(subtree, hf_ansi_map_win_trigger_list, tvb, offset, 1, octet, "TDP-R's armed");
j=0;
break;
case 0xdd:
- proto_tree_add_text(subtree, tvb, offset, 1, "TDP-N's armed");
+ proto_tree_add_uint_format(subtree, hf_ansi_map_win_trigger_list, tvb, offset, 1, octet, "TDP-N's armed");
j=0;
break;
case 0xde:
- proto_tree_add_text(subtree, tvb, offset, 1, "EDP-R's armed");
+ proto_tree_add_uint_format(subtree, hf_ansi_map_win_trigger_list, tvb, offset, 1, octet, "EDP-R's armed");
j=0;
break;
case 0xdf:
- proto_tree_add_text(subtree, tvb, offset, 1, "EDP-N's armed");
+ proto_tree_add_uint_format(subtree, hf_ansi_map_win_trigger_list, tvb, offset, 1, octet, "EDP-N's armed");
j=0;
break;
default:
- proto_tree_add_text(subtree, tvb, offset, 1, "[%u] (%u) %s",j,octet,val_to_str_ext(octet, &ansi_map_TriggerType_vals_ext, "Unknown TriggerType (%u)"));
+ proto_tree_add_uint_format(subtree, hf_ansi_map_win_trigger_list, tvb, offset, 1, octet, "[%u] (%u) %s",j,octet,val_to_str_ext(octet, &ansi_map_TriggerType_vals_ext, "Unknown TriggerType (%u)"));
j++;
break;
}
@@ -15536,7 +15542,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
offset = dissect_ansi_map_FacilitiesDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesDirective);
break;
case 3: /*Mobile On Channel*/
- proto_tree_add_text(tree, tvb, offset, -1, "[Carries no data]");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_ansi_map_no_data, tvb, offset, -1);
break;
case 4: /*Handoff Back*/
offset = dissect_ansi_map_HandoffBack(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffBack);
@@ -15581,16 +15587,16 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
offset = dissect_ansi_map_FeatureRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_featureRequest);
break;
case 18: /*Reserved 18 (Service Profile Request, IS-41-C)*/
- proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob(18 (Service Profile Request, IS-41-C)");
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_ansi_map_unknown_invokeData_blob, tvb, offset, -1, "Unknown invokeData blob(18 (Service Profile Request, IS-41-C)");
break;
case 19: /*Reserved 19 (Service Profile Directive, IS-41-C)*/
- proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob(19 Service Profile Directive, IS-41-C)");
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_ansi_map_unknown_invokeData_blob, tvb, offset, -1, "Unknown invokeData blob(19 Service Profile Directive, IS-41-C)");
break;
case 20: /*Unreliable Roamer Data Directive*/
offset = dissect_ansi_map_UnreliableRoamerDataDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_unreliableRoamerDataDirective);
break;
case 21: /*Reserved 21 (Call Data Request, IS-41-C)*/
- proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob(Reserved 21 (Call Data Request, IS-41-C)");
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_ansi_map_unknown_invokeData_blob, tvb, offset, -1, "Unknown invokeData blob(Reserved 21 (Call Data Request, IS-41-C)");
break;
case 22: /*MS Inactive*/
offset = dissect_ansi_map_MSInactive(TRUE, tvb, offset, actx, tree, hf_ansi_map_mSInactive);
@@ -15650,7 +15656,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
offset = dissect_ansi_map_AuthenticationStatusReport(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationStatusReport);
break;
case 41: /*Reserved 41*/
- proto_tree_add_text(tree, tvb, offset, -1, "Reserved 41, Unknown invokeData blob");
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_ansi_map_unknown_invokeData_blob, tvb, offset, -1, "Reserved 41, Unknown invokeData blob");
break;
case 42: /*Information Directive*/
offset = dissect_ansi_map_InformationDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_informationDirective);
@@ -15875,7 +15881,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
offset = dissect_ansi_map_QualificationRequest2(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2);
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_ansi_map_unknown_invokeData_blob, tvb, offset, -1);
opCodeKnown = FALSE;
break;
}
@@ -15952,7 +15958,7 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
break;
case 26: /*Flash Request*/
/* No data */
- proto_tree_add_text(tree, tvb, offset, -1, "No Data");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_ansi_map_no_data, tvb, offset, -1);
break;
case 27: /*Authentication Directive*/
offset = dissect_ansi_map_AuthenticationDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationDirectiveRes);
@@ -16146,7 +16152,7 @@ static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
offset = dissect_ansi_map_QualificationRequest2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2Res);
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_ansi_map_unknown_invokeData_blob, tvb, offset, -1);
opCodeKnown = FALSE;
break;
}
@@ -17110,6 +17116,18 @@ void proto_register_ansi_map(void) {
{ "PACA Level", "ansi_map.PACA_Level",
FT_UINT8, BASE_DEC, VALS(ansi_map_PACA_Level_vals), 0x1e,
NULL, HFILL }},
+ { &hf_ansi_map_point_code,
+ { "Point Code", "ansi_map.point_code",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ansi_map_SSN,
+ { "SSN", "ansi_map.SSN",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_ansi_map_win_trigger_list,
+ { "WIN trigger list", "ansi_map.win_trigger_list",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
/*--- Included file: packet-ansi_map-hfarr.c ---*/
@@ -19304,7 +19322,7 @@ void proto_register_ansi_map(void) {
NULL, HFILL }},
/*--- End of included file: packet-ansi_map-hfarr.c ---*/
-#line 5275 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 5293 "../../asn1/ansi_map/packet-ansi_map-template.c"
};
/* List of subtrees */
@@ -19565,9 +19583,17 @@ void proto_register_ansi_map(void) {
&ett_ansi_map_ReturnData,
/*--- End of included file: packet-ansi_map-ettarr.c ---*/
-#line 5308 "../../asn1/ansi_map/packet-ansi_map-template.c"
+#line 5326 "../../asn1/ansi_map/packet-ansi_map-template.c"
};
+ static ei_register_info ei[] = {
+ { &ei_ansi_map_nr_not_used, { "ansi_map.nr_not_used", PI_PROTOCOL, PI_WARN, "This Number plan should not have been used", EXPFILL }},
+ { &ei_ansi_map_unknown_invokeData_blob, { "ansi_map.unknown_invokeData_blob", PI_PROTOCOL, PI_WARN, "Unknown invokeData blob", EXPFILL }},
+ { &ei_ansi_map_no_data, { "ansi_map.no_data", PI_PROTOCOL, PI_NOTE, "Carries no data", EXPFILL }},
+ };
+
+ expert_module_t* expert_ansi_map;
+
static const enum_val_t ansi_map_response_matching_type_values[] = {
{"Only Transaction ID will be used in Invoke/response matching", "Transaction ID only", 0},
{"Transaction ID and Source will be used in Invoke/response matching", "Transaction ID and Source", 1},
@@ -19580,6 +19606,8 @@ void proto_register_ansi_map(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_ansi_map, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_ansi_map = expert_register_protocol(proto_ansi_map);
+ expert_register_field_array(expert_ansi_map, ei, array_length(ei));
new_register_dissector("ansi_map", dissect_ansi_map, proto_ansi_map);
diff --git a/epan/dissectors/packet-ansi_tcap.c b/epan/dissectors/packet-ansi_tcap.c
index b850febaec..0735243b2e 100644
--- a/epan/dissectors/packet-ansi_tcap.c
+++ b/epan/dissectors/packet-ansi_tcap.c
@@ -36,6 +36,7 @@
#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
+#include <epan/expert.h>
#include <epan/oids.h>
#include <epan/wmem/wmem.h>
#include <epan/asn1.h>
@@ -124,7 +125,7 @@ static int hf_ansi_tcap_paramSequence = -1; /* T_paramSequence */
static int hf_ansi_tcap_paramSet = -1; /* T_paramSet */
/*--- End of included file: packet-ansi_tcap-hf.c ---*/
-#line 64 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
+#line 65 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
/* Initialize the subtree pointers */
static gint ett_tcap = -1;
@@ -135,6 +136,8 @@ static gint ett_otid = -1;
static gint ett_dtid = -1;
static gint ett_ansi_tcap_stat = -1;
+static expert_field ei_ansi_tcap_dissector_not_implemented = EI_INIT;
+
static struct tcapsrt_info_t * gp_tcapsrt_info;
static gboolean tcap_subdissector_used=FALSE;
@@ -170,7 +173,7 @@ static gint ett_ansi_tcap_T_paramSequence = -1;
static gint ett_ansi_tcap_T_paramSet = -1;
/*--- End of included file: packet-ansi_tcap-ett.c ---*/
-#line 83 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
+#line 86 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
#define MAX_SSN 254
@@ -412,22 +415,20 @@ find_tcap_subdissector(tvbuff_t *tvb, asn1_ctx_t *actx, proto_tree *tree){
guint8 family = (ansi_tcap_private.d.OperationCode_national & 0x7f00)>>8;
guint8 specifier = (guint8)(ansi_tcap_private.d.OperationCode_national & 0xff);
if(!dissector_try_uint(ansi_tcap_national_opcode_table, ansi_tcap_private.d.OperationCode_national, tvb, actx->pinfo, tcap_top_tree)){
- item = proto_tree_add_text(tree, tvb, 0, -1,
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_ansi_tcap_dissector_not_implemented, tvb, 0, -1,
"Dissector for ANSI TCAP NATIONAL code:0x%x(Family %u, Specifier %u) \n"
"not implemented. Contact Wireshark developers if you want this supported(Spec required)",
ansi_tcap_private.d.OperationCode_national, family, specifier);
- PROTO_ITEM_SET_GENERATED(item);
return FALSE;
}
return TRUE;
}else if(ansi_tcap_private.d.OperationCode == 1){
/* private */
if((ansi_tcap_private.d.OperationCode_private & 0x0900) != 0x0900){
- item = proto_tree_add_text(tree, tvb, 0, -1,
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_ansi_tcap_dissector_not_implemented, tvb, 0, -1,
"Dissector for ANSI TCAP PRIVATE code:%u not implemented.\n"
"Contact Wireshark developers if you want this supported(Spec required)",
ansi_tcap_private.d.OperationCode_private);
- PROTO_ITEM_SET_GENERATED(item);
return FALSE;
}
}
@@ -1389,7 +1390,7 @@ dissect_ansi_tcap_PackageType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
/*--- End of included file: packet-ansi_tcap-fn.c ---*/
-#line 358 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
+#line 359 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
@@ -1733,7 +1734,7 @@ proto_register_ansi_tcap(void)
NULL, HFILL }},
/*--- End of included file: packet-ansi_tcap-hfarr.c ---*/
-#line 493 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
+#line 494 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
};
/* Setup protocol subtree array */
@@ -1771,9 +1772,15 @@ proto_register_ansi_tcap(void)
&ett_ansi_tcap_T_paramSet,
/*--- End of included file: packet-ansi_tcap-ettarr.c ---*/
-#line 504 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
+#line 505 "../../asn1/ansi_tcap/packet-ansi_tcap-template.c"
};
+ static ei_register_info ei[] = {
+ { &ei_ansi_tcap_dissector_not_implemented, { "ansi_tcap.dissector_not_implemented", PI_UNDECODED, PI_WARN, "Dissector not implemented", EXPFILL }},
+ };
+
+ expert_module_t* expert_ansi_tcap;
+
static const enum_val_t ansi_tcap_response_matching_type_values[] = {
{"Only Transaction ID will be used in Invoke/response matching", "Transaction ID only", 0},
{"Transaction ID and Source will be used in Invoke/response matching", "Transaction ID and Source", 1},
@@ -1781,7 +1788,6 @@ proto_register_ansi_tcap(void)
{NULL, NULL, -1}
};
-
/* Register the protocol name and description */
proto_ansi_tcap = proto_register_protocol(PNAME, PSNAME, PFNAME);
register_dissector("ansi_tcap", dissect_ansi_tcap, proto_ansi_tcap);
@@ -1791,6 +1797,8 @@ proto_register_ansi_tcap(void)
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array(proto_ansi_tcap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_ansi_tcap = expert_register_protocol(proto_ansi_tcap);
+ expert_register_field_array(expert_ansi_tcap, ei, array_length(ei));
ansi_tcap_module = prefs_register_protocol(proto_ansi_tcap, proto_reg_handoff_ansi_tcap);
diff --git a/epan/dissectors/packet-atn-ulcs.c b/epan/dissectors/packet-atn-ulcs.c
index bc3334e448..2c6ad90512 100644
--- a/epan/dissectors/packet-atn-ulcs.c
+++ b/epan/dissectors/packet-atn-ulcs.c
@@ -1690,6 +1690,7 @@ const value_string atn_ses_type[] =
#define ATN_PRES_PROTO "ICAO Doc9705 ULCS Presentation (ISO 8822/8823-1:1994)"
static int hf_atn_pres_err = -1;
+static int hf_atn_pres_pdu_type = -1;
static gint ett_atn_pres = -1;
#define ATN_SES_PRES_MASK 0xf803
@@ -2073,13 +2074,11 @@ dissect_atn_ulcs(
/* need session context to identify PPDU type */
/* note: */
- /* it is *unfeasible* to use proto_tree_add_item here: */
- /* presentation type is always the same constant but its type */
- /* is implicitly determined by preceding session context */
- proto_tree_add_text(atn_ulcs_tree,
+ proto_tree_add_uint_format(atn_ulcs_tree, hf_atn_pres_pdu_type,
tvb,
offset,
1,
+ value_ses_pres,
"%s (0x%02x)",
val_to_str( value_ses_pres & ATN_SES_PRES_MASK , atn_pres_vals, "?"),
value_pres);
@@ -2482,7 +2481,7 @@ void proto_register_atn_ulcs (void)
NULL, HFILL }},
/*--- End of included file: packet-atn-ulcs-hfarr.c ---*/
-#line 796 "../../asn1/atn-ulcs/packet-atn-ulcs-template.c"
+#line 795 "../../asn1/atn-ulcs/packet-atn-ulcs-template.c"
{&hf_atn_ses_type,
{ "SPDU Type",
"atn-ulcs.ses.type",
@@ -2529,6 +2528,14 @@ void proto_register_atn_ulcs (void)
PRES_CPR_ER_MASK,
NULL,
HFILL}},
+ { &hf_atn_pres_pdu_type,
+ { "PDU type", "atn-ulcs.pres.pdu_type",
+ FT_UINT8,
+ BASE_HEX,
+ NULL,
+ ATN_SES_PRES_MASK,
+ NULL,
+ HFILL}},
};
static gint *ett[] = {
@@ -2562,7 +2569,7 @@ void proto_register_atn_ulcs (void)
&ett_atn_ulcs_AttributeTypeAndValue,
/*--- End of included file: packet-atn-ulcs-ettarr.c ---*/
-#line 846 "../../asn1/atn-ulcs/packet-atn-ulcs-template.c"
+#line 853 "../../asn1/atn-ulcs/packet-atn-ulcs-template.c"
&ett_atn_ses,
&ett_atn_pres,
&ett_atn_acse,
diff --git a/epan/dissectors/packet-charging_ase.c b/epan/dissectors/packet-charging_ase.c
index f3418a4e94..41d9c23478 100644
--- a/epan/dissectors/packet-charging_ase.c
+++ b/epan/dissectors/packet-charging_ase.c
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/asn1.h>
#include "packet-ber.h"
@@ -115,7 +116,7 @@ static int hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff = -1;
static int hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff = -1;
/*--- End of included file: packet-charging_ase-hf.c ---*/
-#line 44 "../../asn1/charging_ase/packet-charging_ase-template.c"
+#line 45 "../../asn1/charging_ase/packet-charging_ase-template.c"
static int ett_charging_ase = -1;
@@ -153,7 +154,9 @@ static gint ett_charging_ase_T_tariffControlIndicators_01 = -1;
static gint ett_charging_ase_ChargingReferenceIdentification = -1;
/*--- End of included file: packet-charging_ase-ett.c ---*/
-#line 47 "../../asn1/charging_ase/packet-charging_ase-template.c"
+#line 48 "../../asn1/charging_ase/packet-charging_ase-template.c"
+
+static expert_field ei_charging_ase_extensions_not_dissected = EI_INIT;
static dissector_handle_t charging_ase_handle;
@@ -534,7 +537,7 @@ static int
dissect_charging_ase_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 13 "../../asn1/charging_ase/charging_ase.cnf"
- proto_tree_add_text(tree, tvb, offset, -1, "Extensions not dissected");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_charging_ase_extensions_not_dissected, tvb, offset, -1);
return tvb_length(tvb);
@@ -839,7 +842,7 @@ int dissect_charging_ase_ChargingMessageType_PDU(tvbuff_t *tvb _U_, packet_info
/*--- End of included file: packet-charging_ase-fn.c ---*/
-#line 51 "../../asn1/charging_ase/packet-charging_ase-template.c"
+#line 54 "../../asn1/charging_ase/packet-charging_ase-template.c"
static void
dissect_charging_ase(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -1111,7 +1114,7 @@ proto_register_charging_ase(void)
NULL, HFILL }},
/*--- End of included file: packet-charging_ase-hfarr.c ---*/
-#line 74 "../../asn1/charging_ase/packet-charging_ase-template.c"
+#line 77 "../../asn1/charging_ase/packet-charging_ase-template.c"
};
/* List of subtrees */
@@ -1152,13 +1155,21 @@ proto_register_charging_ase(void)
&ett_charging_ase_ChargingReferenceIdentification,
/*--- End of included file: packet-charging_ase-ettarr.c ---*/
-#line 80 "../../asn1/charging_ase/packet-charging_ase-template.c"
+#line 83 "../../asn1/charging_ase/packet-charging_ase-template.c"
};
+ static ei_register_info ei[] = {
+ { &ei_charging_ase_extensions_not_dissected, { "charging_ase.extensions_not_dissected", PI_UNDECODED, PI_WARN, "Extensions not dissected", EXPFILL }},
+ };
+
+ expert_module_t* expert_charging_ase;
+
proto_charging_ase = proto_register_protocol(PNAME, PSNAME, PFNAME);
proto_register_field_array(proto_charging_ase, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_charging_ase = expert_register_protocol(proto_charging_ase);
+ expert_register_field_array(expert_charging_ase, ei, array_length(ei));
}
/* The registration hand-off routine */
diff --git a/epan/dissectors/packet-cmip.c b/epan/dissectors/packet-cmip.c
index dd075150e1..c6681e03b3 100644
--- a/epan/dissectors/packet-cmip.c
+++ b/epan/dissectors/packet-cmip.c
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/oids.h>
#include <epan/asn1.h>
@@ -343,7 +344,7 @@ static int hf_cmip_T_daysOfWeek_friday = -1;
static int hf_cmip_T_daysOfWeek_saturday = -1;
/*--- End of included file: packet-cmip-hf.c ---*/
-#line 58 "../../asn1/cmip/packet-cmip-template.c"
+#line 59 "../../asn1/cmip/packet-cmip-template.c"
/* Initialize the subtree pointers */
static gint ett_cmip = -1;
@@ -473,7 +474,9 @@ static gint ett_cmip_T_modificationList = -1;
static gint ett_cmip_T_modificationList_item = -1;
/*--- End of included file: packet-cmip-ett.c ---*/
-#line 62 "../../asn1/cmip/packet-cmip-template.c"
+#line 63 "../../asn1/cmip/packet-cmip-template.c"
+
+static expert_field ei_wrong_spdu_type = EI_INIT;
static guint32 opcode;
@@ -532,7 +535,7 @@ static const value_string cmip_error_code_vals[] = {
/*--- End of included file: packet-cmip-table.c ---*/
-#line 69 "../../asn1/cmip/packet-cmip-template.c"
+#line 72 "../../asn1/cmip/packet-cmip-template.c"
static int opcode_type;
#define OPCODE_INVOKE 1
@@ -644,7 +647,7 @@ static const char *objectclass_identifier_id;
#define noInvokeId NULL
/*--- End of included file: packet-cmip-val.h ---*/
-#line 92 "../../asn1/cmip/packet-cmip-template.c"
+#line 95 "../../asn1/cmip/packet-cmip-template.c"
/*--- Included file: packet-cmip-fn.c ---*/
#line 1 "../../asn1/cmip/packet-cmip-fn.c"
@@ -4366,7 +4369,7 @@ static void dissect_WeekMask_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, prot
/*--- End of included file: packet-cmip-fn.c ---*/
-#line 93 "../../asn1/cmip/packet-cmip-template.c"
+#line 96 "../../asn1/cmip/packet-cmip-template.c"
@@ -4387,8 +4390,8 @@ dissect_cmip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
session = (struct SESSION_DATA_STRUCTURE*)data;
if(session->spdu_type == 0 ) {
- proto_tree_add_text(parent_tree, tvb, 0, -1,
- "Internal error:wrong spdu type %x from session dissector.",session->spdu_type);
+ proto_tree_add_expert_format(parent_tree, pinfo, &ei_wrong_spdu_type, tvb, 0, -1,
+ "Internal error: wrong spdu type %x from session dissector.", session->spdu_type);
return 0;
}
@@ -5563,7 +5566,7 @@ void proto_register_cmip(void) {
NULL, HFILL }},
/*--- End of included file: packet-cmip-hfarr.c ---*/
-#line 185 "../../asn1/cmip/packet-cmip-template.c"
+#line 188 "../../asn1/cmip/packet-cmip-template.c"
};
/* List of subtrees */
@@ -5695,9 +5698,15 @@ void proto_register_cmip(void) {
&ett_cmip_T_modificationList_item,
/*--- End of included file: packet-cmip-ettarr.c ---*/
-#line 191 "../../asn1/cmip/packet-cmip-template.c"
+#line 194 "../../asn1/cmip/packet-cmip-template.c"
+ };
+
+ static ei_register_info ei[] = {
+ { &ei_wrong_spdu_type, { "cmip.wrong_spdu_type", PI_PROTOCOL, PI_ERROR, "Internal error: wrong spdu type", EXPFILL }},
};
+ expert_module_t* expert_cmip;
+
/* Register protocol */
proto_cmip = proto_register_protocol(PNAME, PSNAME, PFNAME);
new_register_dissector("cmip", dissect_cmip, proto_cmip);
@@ -5705,6 +5714,9 @@ void proto_register_cmip(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_cmip, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_cmip = expert_register_protocol(proto_cmip);
+ expert_register_field_array(expert_cmip, ei, array_length(ei));
+
/*--- Included file: packet-cmip-dis-tab.c ---*/
#line 1 "../../asn1/cmip/packet-cmip-dis-tab.c"
@@ -5781,7 +5793,7 @@ void proto_register_cmip(void) {
/*--- End of included file: packet-cmip-dis-tab.c ---*/
-#line 201 "../../asn1/cmip/packet-cmip-template.c"
+#line 213 "../../asn1/cmip/packet-cmip-template.c"
oid_add_from_string("discriminatorId(1)","2.9.3.2.7.1");
attribute_id_dissector_table = register_dissector_table("cmip.attribute_id", "CMIP Attribute Id", FT_UINT32, BASE_DEC);
diff --git a/epan/dissectors/packet-dap.c b/epan/dissectors/packet-dap.c
index 12da234f02..c05e810db7 100644
--- a/epan/dissectors/packet-dap.c
+++ b/epan/dissectors/packet-dap.c
@@ -34,6 +34,7 @@
#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
+#include <epan/expert.h>
#include <epan/oids.h>
#include <epan/asn1.h>
@@ -480,7 +481,7 @@ static int hf_dap_SearchControlOptions_separateFamilyMembers = -1;
static int hf_dap_SearchControlOptions_searchFamily = -1;
/*--- End of included file: packet-dap-hf.c ---*/
-#line 66 "../../asn1/dap/packet-dap-template.c"
+#line 67 "../../asn1/dap/packet-dap-template.c"
/* Initialize the subtree pointers */
static gint ett_dap = -1;
@@ -659,7 +660,9 @@ static gint ett_dap_UpdateError = -1;
static gint ett_dap_T_signedUpdateError = -1;
/*--- End of included file: packet-dap-ett.c ---*/
-#line 70 "../../asn1/dap/packet-dap-template.c"
+#line 71 "../../asn1/dap/packet-dap-template.c"
+
+static expert_field ei_dap_anonymous = EI_INIT;
/*--- Included file: packet-dap-val.h ---*/
@@ -684,7 +687,7 @@ static gint ett_dap_T_signedUpdateError = -1;
#define id_errcode_dsaReferral 9
/*--- End of included file: packet-dap-val.h ---*/
-#line 72 "../../asn1/dap/packet-dap-template.c"
+#line 75 "../../asn1/dap/packet-dap-template.c"
/*--- Included file: packet-dap-table.c ---*/
@@ -722,7 +725,7 @@ static const value_string dap_err_code_string_vals[] = {
/*--- End of included file: packet-dap-table.c ---*/
-#line 74 "../../asn1/dap/packet-dap-template.c"
+#line 77 "../../asn1/dap/packet-dap-template.c"
/*--- Included file: packet-dap-fn.c ---*/
@@ -2064,7 +2067,7 @@ dissect_dap_DirectoryBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
if(len == 0) {
/* its an empty set - i.e anonymous (assuming version is DEFAULTed) */
- proto_tree_add_text(tree, tvb, offset, -1,"Anonymous");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_dap_anonymous, tvb, offset, -1);
col_append_str(actx->pinfo->cinfo, COL_INFO, " anonymous");
@@ -4772,7 +4775,7 @@ static int dissect_UpdateError_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr
/*--- End of included file: packet-dap-fn.c ---*/
-#line 76 "../../asn1/dap/packet-dap-template.c"
+#line 79 "../../asn1/dap/packet-dap-template.c"
/*--- Included file: packet-dap-table11.c ---*/
@@ -4804,7 +4807,7 @@ static const ros_opr_t dap_opr_tab[] = {
/*--- End of included file: packet-dap-table11.c ---*/
-#line 78 "../../asn1/dap/packet-dap-template.c"
+#line 81 "../../asn1/dap/packet-dap-template.c"
/*--- Included file: packet-dap-table21.c ---*/
#line 1 "../../asn1/dap/packet-dap-table21.c"
@@ -4833,7 +4836,7 @@ static const ros_err_t dap_err_tab[] = {
/*--- End of included file: packet-dap-table21.c ---*/
-#line 79 "../../asn1/dap/packet-dap-template.c"
+#line 82 "../../asn1/dap/packet-dap-template.c"
static const ros_info_t dap_ros_info = {
"DAP",
@@ -6473,7 +6476,7 @@ void proto_register_dap(void) {
NULL, HFILL }},
/*--- End of included file: packet-dap-hfarr.c ---*/
-#line 98 "../../asn1/dap/packet-dap-template.c"
+#line 101 "../../asn1/dap/packet-dap-template.c"
};
/* List of subtrees */
@@ -6654,9 +6657,15 @@ void proto_register_dap(void) {
&ett_dap_T_signedUpdateError,
/*--- End of included file: packet-dap-ettarr.c ---*/
-#line 104 "../../asn1/dap/packet-dap-template.c"
+#line 107 "../../asn1/dap/packet-dap-template.c"
};
+
+ static ei_register_info ei[] = {
+ { &ei_dap_anonymous, { "dap.anonymous", PI_PROTOCOL, PI_NOTE, "Anonymous", EXPFILL }},
+ };
+
module_t *dap_module;
+ expert_module_t* expert_dap;
/* Register protocol */
proto_dap = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -6664,6 +6673,8 @@ void proto_register_dap(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_dap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_dap = expert_register_protocol(proto_dap);
+ expert_register_field_array(expert_dap, ei, array_length(ei));
/* Register our configuration options for DAP, particularly our port */
diff --git a/epan/dissectors/packet-disp.c b/epan/dissectors/packet-disp.c
index 1e8e829faf..9034bef96e 100644
--- a/epan/dissectors/packet-disp.c
+++ b/epan/dissectors/packet-disp.c
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/prefs.h>
#include <epan/oids.h>
#include <epan/asn1.h>
@@ -182,7 +183,7 @@ static int hf_disp_signedShadowError = -1; /* T_signedShadowError */
static int hf_disp_shadowError = -1; /* ShadowErrorData */
/*--- End of included file: packet-disp-hf.c ---*/
-#line 66 "../../asn1/disp/packet-disp-template.c"
+#line 67 "../../asn1/disp/packet-disp-template.c"
/* Initialize the subtree pointers */
static gint ett_disp = -1;
@@ -245,7 +246,12 @@ static gint ett_disp_ShadowError = -1;
static gint ett_disp_T_signedShadowError = -1;
/*--- End of included file: packet-disp-ett.c ---*/
-#line 70 "../../asn1/disp/packet-disp-template.c"
+#line 71 "../../asn1/disp/packet-disp-template.c"
+
+static expert_field ei_disp_unsupported_opcode = EI_INIT;
+static expert_field ei_disp_unsupported_errcode = EI_INIT;
+static expert_field ei_disp_unsupported_pdu = EI_INIT;
+static expert_field ei_disp_zero_pdu = EI_INIT;
/*--- Included file: packet-disp-fn.c ---*/
@@ -1471,7 +1477,7 @@ static void dissect_ShadowingAgreementInfo_PDU(tvbuff_t *tvb _U_, packet_info *p
/*--- End of included file: packet-disp-fn.c ---*/
-#line 72 "../../asn1/disp/packet-disp-template.c"
+#line 78 "../../asn1/disp/packet-disp-template.c"
/*
* Dissect DISP PDUs inside a ROS PDUs
@@ -1531,8 +1537,8 @@ dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
disp_op_name = "Coordinate-Shadow-Update-Argument";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
- session->ros_op & ROS_OP_OPCODE_MASK);
+ proto_tree_add_expert_format(tree, pinfo, &ei_disp_unsupported_opcode, tvb, offset, -1,
+ "Unsupported DISP opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
@@ -1551,8 +1557,8 @@ dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
disp_op_name = "Coordinate-Shadow-Update-Result";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP opcode (%d)",
- session->ros_op & ROS_OP_OPCODE_MASK);
+ proto_tree_add_expert_format(tree, pinfo, &ei_disp_unsupported_opcode, tvb, offset, -1,
+ "Unsupported DISP opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
@@ -1563,13 +1569,13 @@ dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
disp_op_name = "Shadow-Error";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP errcode (%d)",
- session->ros_op & ROS_OP_OPCODE_MASK);
+ proto_tree_add_expert_format(tree, pinfo, &ei_disp_unsupported_errcode, tvb, offset, -1,
+ "Unsupported DISP errcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DISP PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_disp_unsupported_pdu, tvb, offset, -1);
return tvb_captured_length(tvb);
}
@@ -1580,7 +1586,7 @@ dissect_disp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
old_offset=offset;
offset=(*disp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
if(offset == old_offset){
- proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DISP PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_disp_zero_pdu, tvb, offset, -1);
break;
}
}
@@ -2029,7 +2035,7 @@ void proto_register_disp(void) {
"ShadowErrorData", HFILL }},
/*--- End of included file: packet-disp-hfarr.c ---*/
-#line 197 "../../asn1/disp/packet-disp-template.c"
+#line 203 "../../asn1/disp/packet-disp-template.c"
};
/* List of subtrees */
@@ -2094,9 +2100,18 @@ void proto_register_disp(void) {
&ett_disp_T_signedShadowError,
/*--- End of included file: packet-disp-ettarr.c ---*/
-#line 203 "../../asn1/disp/packet-disp-template.c"
+#line 209 "../../asn1/disp/packet-disp-template.c"
};
+
+ static ei_register_info ei[] = {
+ { &ei_disp_unsupported_opcode, { "disp.unsupported_opcode", PI_UNDECODED, PI_WARN, "Unsupported DISP opcode", EXPFILL }},
+ { &ei_disp_unsupported_errcode, { "disp.unsupported_errcode", PI_UNDECODED, PI_WARN, "Unsupported DISP errcode", EXPFILL }},
+ { &ei_disp_unsupported_pdu, { "disp.unsupported_pdu", PI_UNDECODED, PI_WARN, "Unsupported DISP PDU", EXPFILL }},
+ { &ei_disp_zero_pdu, { "disp.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte DISP PDU", EXPFILL }},
+ };
+
module_t *disp_module;
+ expert_module_t* expert_disp;
/* Register protocol */
proto_disp = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -2105,6 +2120,8 @@ void proto_register_disp(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_disp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_disp = expert_register_protocol(proto_disp);
+ expert_register_field_array(expert_disp, ei, array_length(ei));
/* Register our configuration options for DISP, particularly our port */
@@ -2133,7 +2150,7 @@ void proto_reg_handoff_disp(void) {
/*--- End of included file: packet-disp-dis-tab.c ---*/
-#line 231 "../../asn1/disp/packet-disp-template.c"
+#line 248 "../../asn1/disp/packet-disp-template.c"
/* APPLICATION CONTEXT */
diff --git a/epan/dissectors/packet-dop.c b/epan/dissectors/packet-dop.c
index def700ece0..d340a8db66 100644
--- a/epan/dissectors/packet-dop.c
+++ b/epan/dissectors/packet-dop.c
@@ -347,6 +347,10 @@ static gint ett_dop_GrantsAndDenials = -1;
#line 72 "../../asn1/dop/packet-dop-template.c"
static expert_field ei_dop_unknown_binding_parameter = EI_INIT;
+static expert_field ei_dop_unsupported_opcode = EI_INIT;
+static expert_field ei_dop_unsupported_errcode = EI_INIT;
+static expert_field ei_dop_unsupported_pdu = EI_INIT;
+static expert_field ei_dop_zero_pdu = EI_INIT;
/* Dissector table */
static dissector_table_t dop_dissector_table;
@@ -2015,7 +2019,7 @@ static void dissect_ACIItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto
/*--- End of included file: packet-dop-fn.c ---*/
-#line 87 "../../asn1/dop/packet-dop-template.c"
+#line 91 "../../asn1/dop/packet-dop-template.c"
static int
call_dop_oid_callback(const char *base_string, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, const char *col_info, void* data)
@@ -2101,8 +2105,8 @@ dissect_dop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
dop_op_name = "Modify-Operational-Binding-Argument";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Argument opcode (%d)",
- session->ros_op & ROS_OP_OPCODE_MASK);
+ proto_tree_add_expert_format(tree, pinfo, &ei_dop_unsupported_opcode, tvb, offset, -1,
+ "Unsupported DOP Argument opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
@@ -2121,8 +2125,8 @@ dissect_dop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
dop_op_name = "Modify-Operational-Binding-Result";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Result opcode (%d)",
- session->ros_op & ROS_OP_OPCODE_MASK);
+ proto_tree_add_expert_format(tree, pinfo, &ei_dop_unsupported_opcode, tvb, offset, -1,
+ "Unsupported DOP Result opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
@@ -2133,13 +2137,13 @@ dissect_dop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
dop_op_name = "Operational-Binding-Error";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP Error opcode (%d)",
- session->ros_op & ROS_OP_OPCODE_MASK);
+ proto_tree_add_expert_format(tree, pinfo, &ei_dop_unsupported_errcode, tvb, offset, -1,
+ "Unsupported DOP Error opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DOP PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_dop_unsupported_pdu, tvb, offset, -1);
return tvb_captured_length(tvb);
}
@@ -2150,7 +2154,7 @@ dissect_dop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
old_offset=offset;
offset=(*dop_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
if(offset == old_offset){
- proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DOP PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_dop_zero_pdu, tvb, offset, -1);
break;
}
}
@@ -2932,7 +2936,7 @@ void proto_register_dop(void) {
NULL, HFILL }},
/*--- End of included file: packet-dop-hfarr.c ---*/
-#line 239 "../../asn1/dop/packet-dop-template.c"
+#line 243 "../../asn1/dop/packet-dop-template.c"
};
/* List of subtrees */
@@ -3011,11 +3015,15 @@ void proto_register_dop(void) {
&ett_dop_GrantsAndDenials,
/*--- End of included file: packet-dop-ettarr.c ---*/
-#line 246 "../../asn1/dop/packet-dop-template.c"
+#line 250 "../../asn1/dop/packet-dop-template.c"
};
static ei_register_info ei[] = {
{ &ei_dop_unknown_binding_parameter, { "dop.unknown_binding_parameter", PI_UNDECODED, PI_WARN, "Unknown binding-parameter", EXPFILL }},
+ { &ei_dop_unsupported_opcode, { "dop.unsupported_opcode", PI_UNDECODED, PI_WARN, "Unsupported DOP opcode", EXPFILL }},
+ { &ei_dop_unsupported_errcode, { "dop.unsupported_errcode", PI_UNDECODED, PI_WARN, "Unsupported DOP errcode", EXPFILL }},
+ { &ei_dop_unsupported_pdu, { "dop.unsupported_pdu", PI_UNDECODED, PI_WARN, "Unsupported DOP PDU", EXPFILL }},
+ { &ei_dop_zero_pdu, { "dop.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte DOP PDU", EXPFILL }},
};
expert_module_t* expert_dop;
@@ -3074,7 +3082,7 @@ void proto_reg_handoff_dop(void) {
/*--- End of included file: packet-dop-dis-tab.c ---*/
-#line 286 "../../asn1/dop/packet-dop-template.c"
+#line 294 "../../asn1/dop/packet-dop-template.c"
/* APPLICATION CONTEXT */
oid_add_from_string("id-ac-directory-operational-binding-management","2.5.3.3");
diff --git a/epan/dissectors/packet-dsp.c b/epan/dissectors/packet-dsp.c
index 89ceeee9e2..6bd024d670 100644
--- a/epan/dissectors/packet-dsp.c
+++ b/epan/dissectors/packet-dsp.c
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/prefs.h>
#include <epan/oids.h>
#include <epan/asn1.h>
@@ -206,7 +207,7 @@ static int hf_dsp_signed = -1; /* BOOLEAN */
static int hf_dsp_other = -1; /* EXTERNAL */
/*--- End of included file: packet-dsp-hf.c ---*/
-#line 60 "../../asn1/dsp/packet-dsp-template.c"
+#line 61 "../../asn1/dsp/packet-dsp-template.c"
/* Initialize the subtree pointers */
static gint ett_dsp = -1;
@@ -286,7 +287,12 @@ static gint ett_dsp_AuthenticationLevel = -1;
static gint ett_dsp_T_basicLevels = -1;
/*--- End of included file: packet-dsp-ett.c ---*/
-#line 64 "../../asn1/dsp/packet-dsp-template.c"
+#line 65 "../../asn1/dsp/packet-dsp-template.c"
+
+static expert_field ei_dsp_unsupported_opcode = EI_INIT;
+static expert_field ei_dsp_unsupported_errcode = EI_INIT;
+static expert_field ei_dsp_unsupported_pdu = EI_INIT;
+static expert_field ei_dsp_zero_pdu = EI_INIT;
/*--- Included file: packet-dsp-fn.c ---*/
@@ -1682,7 +1688,7 @@ static void dissect_DitBridgeKnowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo
/*--- End of included file: packet-dsp-fn.c ---*/
-#line 66 "../../asn1/dsp/packet-dsp-template.c"
+#line 72 "../../asn1/dsp/packet-dsp-template.c"
/*
* Dissect X518 PDUs inside a ROS PDUs
@@ -1766,8 +1772,8 @@ dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
dsp_op_name = "ChainedModify-DN-Argument";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP opcode (%d)",
- session->ros_op & ROS_OP_OPCODE_MASK);
+ proto_tree_add_expert_format(tree, pinfo, &ei_dsp_unsupported_opcode, tvb, offset, -1,
+ "Unsupported DSP opcode (%d)", session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
@@ -1810,7 +1816,7 @@ dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
dsp_op_name = "ChainedModify-DN-Result";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP opcode");
+ proto_tree_add_expert(tree, pinfo, &ei_dsp_unsupported_opcode, tvb, offset, -1);
break;
}
break;
@@ -1853,12 +1859,12 @@ dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
dsp_op_name = "DSA-Referral";
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP errcode");
+ proto_tree_add_expert(tree, pinfo, &ei_dsp_unsupported_errcode, tvb, offset, -1);
break;
}
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DSP PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_dsp_unsupported_pdu, tvb, offset, -1);
return tvb_captured_length(tvb);
}
@@ -1869,7 +1875,7 @@ dissect_dsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* da
old_offset=offset;
offset=(*dsp_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
if(offset == old_offset){
- proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DSP PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_dsp_zero_pdu, tvb, offset, -1);
break;
}
}
@@ -2438,7 +2444,7 @@ void proto_register_dsp(void) {
"EXTERNAL", HFILL }},
/*--- End of included file: packet-dsp-hfarr.c ---*/
-#line 269 "../../asn1/dsp/packet-dsp-template.c"
+#line 275 "../../asn1/dsp/packet-dsp-template.c"
};
/* List of subtrees */
@@ -2520,9 +2526,17 @@ void proto_register_dsp(void) {
&ett_dsp_T_basicLevels,
/*--- End of included file: packet-dsp-ettarr.c ---*/
-#line 275 "../../asn1/dsp/packet-dsp-template.c"
+#line 281 "../../asn1/dsp/packet-dsp-template.c"
};
+ static ei_register_info ei[] = {
+ { &ei_dsp_unsupported_opcode, { "dsp.unsupported_opcode", PI_UNDECODED, PI_WARN, "Unsupported DSP opcode", EXPFILL }},
+ { &ei_dsp_unsupported_errcode, { "dsp.unsupported_errcode", PI_UNDECODED, PI_WARN, "Unsupported DSP errcode", EXPFILL }},
+ { &ei_dsp_unsupported_pdu, { "dsp.unsupported_pdu", PI_UNDECODED, PI_WARN, "Unsupported DSP PDU", EXPFILL }},
+ { &ei_dsp_zero_pdu, { "dsp.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte DSP PDU", EXPFILL }},
+ };
+
module_t *dsp_module;
+ expert_module_t* expert_dsp;
/* Register protocol */
proto_dsp = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -2532,6 +2546,8 @@ void proto_register_dsp(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_dsp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_dsp = expert_register_protocol(proto_dsp);
+ expert_register_field_array(expert_dsp, ei, array_length(ei));
/* Register our configuration options for DSP, particularly our port */
@@ -2561,7 +2577,7 @@ void proto_reg_handoff_dsp(void) {
/*--- End of included file: packet-dsp-dis-tab.c ---*/
-#line 305 "../../asn1/dsp/packet-dsp-template.c"
+#line 321 "../../asn1/dsp/packet-dsp-template.c"
/* APPLICATION CONTEXT */
diff --git a/epan/dissectors/packet-ftam.c b/epan/dissectors/packet-ftam.c
index a84d0e1667..f0ebe155a4 100644
--- a/epan/dissectors/packet-ftam.c
+++ b/epan/dissectors/packet-ftam.c
@@ -38,6 +38,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/oids.h>
#include <epan/asn1.h>
@@ -481,7 +482,7 @@ static int hf_ftam_Attribute_Names_read_l8gal_qualifiCatiOnS = -1;
static int hf_ftam_Attribute_Names_read_private_use = -1;
/*--- End of included file: packet-ftam-hf.c ---*/
-#line 57 "../../asn1/ftam/packet-ftam-template.c"
+#line 58 "../../asn1/ftam/packet-ftam-template.c"
/* Initialize the subtree pointers */
static gint ett_ftam = -1;
@@ -652,7 +653,9 @@ static gint ett_ftam_Attribute_Names = -1;
static gint ett_ftam_AE_title = -1;
/*--- End of included file: packet-ftam-ett.c ---*/
-#line 61 "../../asn1/ftam/packet-ftam-template.c"
+#line 62 "../../asn1/ftam/packet-ftam-template.c"
+
+static expert_field ei_ftam_zero_pdu = EI_INIT;
/*--- Included file: packet-ftam-fn.c ---*/
@@ -4736,7 +4739,7 @@ dissect_ftam_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, a
/*--- End of included file: packet-ftam-fn.c ---*/
-#line 63 "../../asn1/ftam/packet-ftam-template.c"
+#line 66 "../../asn1/ftam/packet-ftam-template.c"
/*
* Dissect FTAM unstructured text
@@ -4781,7 +4784,7 @@ dissect_ftam(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
old_offset=offset;
offset=dissect_ftam_PDU(FALSE, tvb, offset, &asn1_ctx, tree, -1);
if(offset == old_offset){
- proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte FTAM PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_ftam_zero_pdu, tvb, offset, -1);
break;
}
}
@@ -6461,7 +6464,7 @@ void proto_register_ftam(void) {
NULL, HFILL }},
/*--- End of included file: packet-ftam-hfarr.c ---*/
-#line 127 "../../asn1/ftam/packet-ftam-template.c"
+#line 130 "../../asn1/ftam/packet-ftam-template.c"
};
/* List of subtrees */
@@ -6634,15 +6637,22 @@ void proto_register_ftam(void) {
&ett_ftam_AE_title,
/*--- End of included file: packet-ftam-ettarr.c ---*/
-#line 133 "../../asn1/ftam/packet-ftam-template.c"
+#line 136 "../../asn1/ftam/packet-ftam-template.c"
+ };
+ static ei_register_info ei[] = {
+ { &ei_ftam_zero_pdu, { "ftam.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte FTAM PDU", EXPFILL }},
};
+ expert_module_t* expert_ftam;
+
/* Register protocol */
proto_ftam = proto_register_protocol(PNAME, PSNAME, PFNAME);
register_dissector("ftam", dissect_ftam, proto_ftam);
/* Register fields and subtrees */
proto_register_field_array(proto_ftam, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_ftam = expert_register_protocol(proto_ftam);
+ expert_register_field_array(expert_ftam, ei, array_length(ei));
}
diff --git a/epan/dissectors/packet-goose.c b/epan/dissectors/packet-goose.c
index 8f922f8f79..08fac1f3b3 100644
--- a/epan/dissectors/packet-goose.c
+++ b/epan/dissectors/packet-goose.c
@@ -55,6 +55,7 @@ static int hf_goose_reserve1 = -1;
static int hf_goose_reserve2 = -1;
static expert_field ei_goose_mal_utctime = EI_INIT;
+static expert_field ei_goose_zero_pdu = EI_INIT;
/*--- Included file: packet-goose-hf.c ---*/
@@ -120,7 +121,7 @@ static int hf_goose_mMSString = -1; /* MMSString */
static int hf_goose_utc_time = -1; /* UtcTime */
/*--- End of included file: packet-goose-hf.c ---*/
-#line 52 "../../asn1/goose/packet-goose-template.c"
+#line 53 "../../asn1/goose/packet-goose-template.c"
/* Initialize the subtree pointers */
static int ett_goose = -1;
@@ -147,7 +148,7 @@ static gint ett_goose_SEQUENCE_OF_Data = -1;
static gint ett_goose_Data = -1;
/*--- End of included file: packet-goose-ett.c ---*/
-#line 57 "../../asn1/goose/packet-goose-template.c"
+#line 58 "../../asn1/goose/packet-goose-template.c"
/*--- Included file: packet-goose-fn.c ---*/
@@ -704,7 +705,7 @@ dissect_goose_GOOSEpdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
/*--- End of included file: packet-goose-fn.c ---*/
-#line 59 "../../asn1/goose/packet-goose-template.c"
+#line 60 "../../asn1/goose/packet-goose-template.c"
/*
* Dissect GOOSE PDUs inside a PPDU.
@@ -746,7 +747,7 @@ dissect_goose(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
old_offset = offset;
offset = dissect_goose_GOOSEpdu(FALSE, tvb, offset, &asn1_ctx , tree, -1);
if (offset == old_offset) {
- proto_tree_add_text(tree, tvb, offset, -1, "Internal error, zero-byte GOOSE PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_goose_zero_pdu, tvb, offset, -1);
return;
}
}
@@ -1013,7 +1014,7 @@ void proto_register_goose(void) {
"UtcTime", HFILL }},
/*--- End of included file: packet-goose-hfarr.c ---*/
-#line 127 "../../asn1/goose/packet-goose-template.c"
+#line 128 "../../asn1/goose/packet-goose-template.c"
};
/* List of subtrees */
@@ -1041,11 +1042,12 @@ void proto_register_goose(void) {
&ett_goose_Data,
/*--- End of included file: packet-goose-ettarr.c ---*/
-#line 133 "../../asn1/goose/packet-goose-template.c"
+#line 134 "../../asn1/goose/packet-goose-template.c"
};
static ei_register_info ei[] = {
{ &ei_goose_mal_utctime, { "goose.malformed.utctime", PI_MALFORMED, PI_WARN, "BER Error: malformed UTCTime encoding", EXPFILL }},
+ { &ei_goose_zero_pdu, { "goose.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte GOOSE PDU", EXPFILL }},
};
expert_module_t* expert_goose;
diff --git a/epan/dissectors/packet-gprscdr.c b/epan/dissectors/packet-gprscdr.c
index dfdbd36c3c..f384d95ed5 100644
--- a/epan/dissectors/packet-gprscdr.c
+++ b/epan/dissectors/packet-gprscdr.c
@@ -33,6 +33,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/asn1.h>
#include "packet-ber.h"
@@ -335,7 +336,7 @@ static int hf_gprscdr_ServiceConditionChange_tAIChange = -1;
static int hf_gprscdr_ServiceConditionChange_userLocationChange = -1;
/*--- End of included file: packet-gprscdr-hf.c ---*/
-#line 45 "../../asn1/gprscdr/packet-gprscdr-template.c"
+#line 46 "../../asn1/gprscdr/packet-gprscdr-template.c"
static int ett_gprscdr = -1;
static int ett_gprscdr_timestamp = -1;
@@ -400,7 +401,9 @@ static gint ett_gprscdr_TWANUserLocationInfo = -1;
static gint ett_gprscdr_UserCSGInformation = -1;
/*--- End of included file: packet-gprscdr-ett.c ---*/
-#line 50 "../../asn1/gprscdr/packet-gprscdr-template.c"
+#line 51 "../../asn1/gprscdr/packet-gprscdr-template.c"
+
+static expert_field ei_gprscdr_not_dissected = EI_INIT;
static const value_string gprscdr_daylight_saving_time_vals[] = {
{0, "No adjustment"},
@@ -597,7 +600,7 @@ static int
dissect_gprscdr_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 53 "../../asn1/gprscdr/gprscdr.cnf"
- proto_tree_add_text(tree, tvb, offset, -1, "Not dissected");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_gprscdr_not_dissected, tvb, offset, -1);
@@ -2936,7 +2939,7 @@ int dissect_gprscdr_GPRSRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr
/*--- End of included file: packet-gprscdr-fn.c ---*/
-#line 60 "../../asn1/gprscdr/packet-gprscdr-template.c"
+#line 63 "../../asn1/gprscdr/packet-gprscdr-template.c"
@@ -4071,7 +4074,7 @@ proto_register_gprscdr(void)
NULL, HFILL }},
/*--- End of included file: packet-gprscdr-hfarr.c ---*/
-#line 70 "../../asn1/gprscdr/packet-gprscdr-template.c"
+#line 73 "../../asn1/gprscdr/packet-gprscdr-template.c"
};
/* List of subtrees */
@@ -4139,13 +4142,21 @@ proto_register_gprscdr(void)
&ett_gprscdr_UserCSGInformation,
/*--- End of included file: packet-gprscdr-ettarr.c ---*/
-#line 78 "../../asn1/gprscdr/packet-gprscdr-template.c"
+#line 81 "../../asn1/gprscdr/packet-gprscdr-template.c"
};
+ static ei_register_info ei[] = {
+ { &ei_gprscdr_not_dissected, { "gprscdr.not_dissected", PI_UNDECODED, PI_WARN, "Not dissected", EXPFILL }},
+ };
+
+ expert_module_t* expert_gprscdr;
+
proto_gprscdr = proto_register_protocol(PNAME, PSNAME, PFNAME);
proto_register_field_array(proto_gprscdr, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_gprscdr = expert_register_protocol(proto_gprscdr);
+ expert_register_field_array(expert_gprscdr, ei, array_length(ei));
}
/* The registration hand-off routine */
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index 8ad7158e7a..c088555138 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -158,6 +158,7 @@ static int hf_gsm_map_ericsson_locationInformation_rat = -1;
static int hf_gsm_map_ericsson_locationInformation_lac = -1;
static int hf_gsm_map_ericsson_locationInformation_ci = -1;
static int hf_gsm_map_ericsson_locationInformation_sac = -1;
+static int hf_gsm_map_ussd_string = -1;
/*--- Included file: packet-gsm_map-hf.c ---*/
@@ -1896,7 +1897,7 @@ static int hf_NokiaMAP_Extensions_AccessSubscriptionListExt_item = -1; /* Acces
static int hf_NokiaMAP_Extensions_AllowedServiceData_amr_wb_allowed = -1;
/*--- End of included file: packet-gsm_map-hf.c ---*/
-#line 155 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 156 "../../asn1/gsm_map/packet-gsm_map-template.c"
/* Initialize the subtree pointers */
static gint ett_gsm_map = -1;
@@ -1924,6 +1925,7 @@ static gint ett_gsm_map_GeographicalInformation = -1;
static gint ett_gsm_map_apn_str = -1;
static gint ett_gsm_map_LocationNumber = -1;
static gint ett_gsm_map_ericsson_locationInformation = -1;
+static gint ett_gsm_map_extention_data = -1;
/*--- Included file: packet-gsm_map-ett.c ---*/
@@ -2602,12 +2604,13 @@ static gint ett_NokiaMAP_Extensions_AccessSubscriptionListExt = -1;
static gint ett_NokiaMAP_Extensions_AllowedServiceData = -1;
/*--- End of included file: packet-gsm_map-ett.c ---*/
-#line 184 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 186 "../../asn1/gsm_map/packet-gsm_map-template.c"
static expert_field ei_gsm_map_unknown_sequence3 = EI_INIT;
static expert_field ei_gsm_map_unknown_sequence = EI_INIT;
static expert_field ei_gsm_map_unknown_parameter = EI_INIT;
static expert_field ei_gsm_map_unknown_invokeData = EI_INIT;
+static expert_field ei_gsm_map_undecoded = EI_INIT;
static dissector_handle_t gsm_sms_handle; /* SMS TPDU */
static dissector_handle_t data_handle;
@@ -2833,7 +2836,7 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
octet = tvb_get_guint8(tvb,offset);
switch (octet){
case 0:
- proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Maximum SDU size/Reserved");
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, octet, "Reserved");
break;
case 0x93:
value = 1502;
@@ -2852,7 +2855,7 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
value = octet * 10;
proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value);
}else{
- proto_tree_add_text(subtree, tvb, offset, 1, "Maximum SDU size value 0x%x not defined in TS 24.008",octet);
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, octet, "0x%x not defined in TS 24.008", octet);
}
}
offset++;
@@ -2860,7 +2863,7 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
/* Maximum bit rate for uplink, octet 8 */
octet = tvb_get_guint8(tvb,offset);
if (octet == 0 ){
- proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Maximum bit rate for uplink/Reserved" );
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, octet, "Reserved" );
}else{
proto_tree_add_uint(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
}
@@ -2868,7 +2871,7 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
/* Maximum bit rate for downlink, octet 9 (see 3GPP TS 23.107) */
octet = tvb_get_guint8(tvb,offset);
if (octet == 0 ){
- proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Maximum bit rate for downlink/Reserved" );
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, octet, "Reserved" );
}else{
proto_tree_add_uint(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
}
@@ -2890,7 +2893,7 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
*/
octet = tvb_get_guint8(tvb,offset);
if (octet == 0 ){
- proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Guaranteed bit rate for uplink/Reserved" );
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, octet, "Reserved" );
}else{
proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
}
@@ -2901,7 +2904,7 @@ dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
*/
octet = tvb_get_guint8(tvb,offset);
if (octet == 0 ){
- proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Guaranteed bit rate for downlink/Reserved" );
+ proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, octet, "Reserved" );
}else{
proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
}
@@ -3344,11 +3347,12 @@ dissect_gsm_map_T_extId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_gsm_map_T_extType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 231 "../../asn1/gsm_map/gsm_map.cnf"
- proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
+ proto_tree *ext_tree;
+ ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gsm_map_extention_data, NULL, "Extension Data");
if (obj_id){
- offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, tree, NULL);
+ offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, ext_tree, NULL);
}else{
- call_dissector(data_handle, tvb, actx->pinfo, tree);
+ call_dissector(data_handle, tvb, actx->pinfo, ext_tree);
offset = tvb_length_remaining(tvb,offset);
}
@@ -3458,7 +3462,7 @@ dissect_gsm_map_SLR_ArgExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *t
int
dissect_gsm_map_TBCD_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 257 "../../asn1/gsm_map/gsm_map.cnf"
+#line 258 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
const char *digit_str;
@@ -3493,7 +3497,7 @@ dissect_gsm_map_DiameterIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
int
dissect_gsm_map_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 244 "../../asn1/gsm_map/gsm_map.cnf"
+#line 245 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -3563,7 +3567,7 @@ dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 361 "../../asn1/gsm_map/gsm_map.cnf"
+#line 362 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -3587,7 +3591,7 @@ static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = {
int
dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 785 "../../asn1/gsm_map/gsm_map.cnf"
+#line 786 "../../asn1/gsm_map/gsm_map.cnf"
/*
-- Information about the internal structure is given in
-- clause 7.6.9.
@@ -3629,7 +3633,7 @@ if (!actx->value_ptr)
/* TODO: There may be more than one IE */
break;
default:
- proto_tree_add_text(subtree, (tvbuff_t*)actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
+ proto_tree_add_expert(subtree, actx->pinfo, &ei_gsm_map_undecoded, (tvbuff_t*)actx->value_ptr, 0, length);
break;
}/* switch(octet) */
break;
@@ -3725,7 +3729,7 @@ dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 278 "../../asn1/gsm_map/gsm_map.cnf"
+#line 279 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
guint8 octet;
@@ -3803,7 +3807,7 @@ dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
int
dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 610 "../../asn1/gsm_map/gsm_map.cnf"
+#line 611 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
guint8 octet;
@@ -3954,7 +3958,7 @@ dissect_gsm_map_HLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
int
dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 865 "../../asn1/gsm_map/gsm_map.cnf"
+#line 866 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -4231,7 +4235,7 @@ dissect_gsm_map_TA_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
int
dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 634 "../../asn1/gsm_map/gsm_map.cnf"
+#line 635 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -4279,7 +4283,7 @@ dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_
int
dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 646 "../../asn1/gsm_map/gsm_map.cnf"
+#line 647 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -4405,7 +4409,7 @@ dissect_gsm_map_EMLPP_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_gsm_map_Ext_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 488 "../../asn1/gsm_map/gsm_map.cnf"
+#line 489 "../../asn1/gsm_map/gsm_map.cnf"
/* Note Ext-SS-Status can have more than one byte */
tvbuff_t *parameter_tvb;
@@ -4538,7 +4542,7 @@ dissect_gsm_map_ss_RegisterSS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
int
dissect_gsm_map_ss_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 468 "../../asn1/gsm_map/gsm_map.cnf"
+#line 469 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
guint8 octet;
@@ -4572,7 +4576,7 @@ dissect_gsm_map_ss_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
-#line 553 "../../asn1/gsm_map/gsm_map.cnf"
+#line 554 "../../asn1/gsm_map/gsm_map.cnf"
proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN);
@@ -4891,7 +4895,7 @@ dissect_gsm_map_ss_InterrogateSS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U
int
dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 511 "../../asn1/gsm_map/gsm_map.cnf"
+#line 512 "../../asn1/gsm_map/gsm_map.cnf"
/*The structure of the USSD-DataCodingScheme is defined by
* the Cell Broadcast Data Coding Scheme as described in
* TS 3GPP TS 23.038
@@ -4917,7 +4921,7 @@ dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tv
int
dissect_gsm_map_ss_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 526 "../../asn1/gsm_map/gsm_map.cnf"
+#line 527 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
guint length;
@@ -4932,15 +4936,15 @@ dissect_gsm_map_ss_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
switch(sms_encoding){
case SMS_ENCODING_7BIT:
case SMS_ENCODING_7BIT_LANG:
- proto_tree_add_text(tree, parameter_tvb , 0, length, "USSD String: %s", tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_3GPP_TS_23_038_7BITS|ENC_NA));
+ proto_tree_add_string(tree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_3GPP_TS_23_038_7BITS|ENC_NA));
break;
case SMS_ENCODING_8BIT:
/* XXX - ASCII, or some extended ASCII? */
- proto_tree_add_text(tree, parameter_tvb , 0, length, "USSD String: %s", tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_ASCII|ENC_NA));
+ proto_tree_add_string(tree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_ASCII|ENC_NA));
break;
case SMS_ENCODING_UCS2:
case SMS_ENCODING_UCS2_LANG:
- proto_tree_add_text(tree, parameter_tvb , 0, length, "USSD String: %s", tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_UCS_2|ENC_BIG_ENDIAN));
+ proto_tree_add_string(tree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_UCS_2|ENC_BIG_ENDIAN));
break;
default:
break;
@@ -5366,7 +5370,7 @@ static const ber_sequence_t gsm_map_er_SM_DeliveryFailureCause_sequence[] = {
static int
dissect_gsm_map_er_SM_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 368 "../../asn1/gsm_map/gsm_map.cnf"
+#line 369 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
guint8 oct;
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6297,7 +6301,7 @@ dissect_gsm_map_sm_RoutingInfoForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_gsm_map_sm_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 337 "../../asn1/gsm_map/gsm_map.cnf"
+#line 338 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_SENT;
offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -6311,7 +6315,7 @@ dissect_gsm_map_sm_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_gsm_map_sm_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 341 "../../asn1/gsm_map/gsm_map.cnf"
+#line 342 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_SENT;
offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -6325,7 +6329,7 @@ dissect_gsm_map_sm_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_gsm_map_sm_T_serviceCentreAddressDA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 357 "../../asn1/gsm_map/gsm_map.cnf"
+#line 358 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -6365,7 +6369,7 @@ dissect_gsm_map_sm_SM_RP_DA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_gsm_map_sm_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 349 "../../asn1/gsm_map/gsm_map.cnf"
+#line 350 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -6379,7 +6383,7 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV;
static int
dissect_gsm_map_sm_T_serviceCentreAddressOA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 325 "../../asn1/gsm_map/gsm_map.cnf"
+#line 326 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_SENT;
offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -6444,7 +6448,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Arg_sequence[] = {
static int
dissect_gsm_map_sm_MO_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 396 "../../asn1/gsm_map/gsm_map.cnf"
+#line 397 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6472,7 +6476,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Res_sequence[] = {
static int
dissect_gsm_map_sm_MO_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 408 "../../asn1/gsm_map/gsm_map.cnf"
+#line 409 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6507,7 +6511,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Arg_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 420 "../../asn1/gsm_map/gsm_map.cnf"
+#line 421 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6535,7 +6539,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Res_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 432 "../../asn1/gsm_map/gsm_map.cnf"
+#line 433 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6709,7 +6713,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 444 "../../asn1/gsm_map/gsm_map.cnf"
+#line 445 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -6766,7 +6770,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence[] = {
static int
dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 456 "../../asn1/gsm_map/gsm_map.cnf"
+#line 457 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -8145,7 +8149,7 @@ dissect_gsm_map_ms_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *
static int
dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 926 "../../asn1/gsm_map/gsm_map.cnf"
+#line 927 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
const char *digit_str;
@@ -8829,7 +8833,7 @@ dissect_gsm_map_ms_SGSN_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_gsm_map_ms_APN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 899 "../../asn1/gsm_map/gsm_map.cnf"
+#line 900 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
int length, name_len, tmp;
@@ -9080,7 +9084,7 @@ dissect_gsm_map_ms_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 682 "../../asn1/gsm_map/gsm_map.cnf"
+#line 683 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -9103,7 +9107,7 @@ dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvb
static int
dissect_gsm_map_ms_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 694 "../../asn1/gsm_map/gsm_map.cnf"
+#line 695 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -9188,7 +9192,7 @@ dissect_gsm_map_ms_AllowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *t
static int
dissect_gsm_map_ms_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 658 "../../asn1/gsm_map/gsm_map.cnf"
+#line 659 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -9259,7 +9263,7 @@ dissect_gsm_map_ms_BSSMAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *t
static int
dissect_gsm_map_ms_RANAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 670 "../../asn1/gsm_map/gsm_map.cnf"
+#line 671 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
asn1_ctx_t asn1_ctx;
@@ -10194,7 +10198,7 @@ static int
dissect_gsm_map_ms_T_forwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_gsm_map_ms_Ext_ForwOptions(implicit_tag, tvb, offset, actx, tree, hf_index);
-#line 559 "../../asn1/gsm_map/gsm_map.cnf"
+#line 560 "../../asn1/gsm_map/gsm_map.cnf"
proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN);
@@ -11357,7 +11361,7 @@ dissect_gsm_map_ms_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t
static int
dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 567 "../../asn1/gsm_map/gsm_map.cnf"
+#line 568 "../../asn1/gsm_map/gsm_map.cnf"
guint8 pdp_type_org;
tvbuff_t *parameter_tvb;
@@ -11390,7 +11394,7 @@ dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
int
dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 589 "../../asn1/gsm_map/gsm_map.cnf"
+#line 590 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
@@ -11412,7 +11416,7 @@ dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
int
dissect_gsm_map_ms_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 600 "../../asn1/gsm_map/gsm_map.cnf"
+#line 601 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
@@ -15607,7 +15611,7 @@ dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(gboolean implicit_tag _U_, tvb
int
dissect_gsm_map_lcs_Ext_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 877 "../../asn1/gsm_map/gsm_map.cnf"
+#line 878 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
@@ -17036,7 +17040,7 @@ static const ber_sequence_t gsm_old_Bss_APDU_sequence[] = {
static int
dissect_gsm_old_Bss_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 707 "../../asn1/gsm_map/gsm_map.cnf"
+#line 708 "../../asn1/gsm_map/gsm_map.cnf"
guint8 octet;
guint8 length;
tvbuff_t *next_tvb;
@@ -17076,7 +17080,7 @@ if (!actx->value_ptr)
/* TODO: There may be more than one IE */
break;
default:
- proto_tree_add_text(subtree, (tvbuff_t*)actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
+ proto_tree_add_expert(subtree, actx->pinfo, &ei_gsm_map_undecoded, (tvbuff_t*)actx->value_ptr, 0, length);
break;
}/* switch(octet) */
break;
@@ -17619,7 +17623,7 @@ dissect_gsm_old_PlmnContainer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_gsm_old_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 329 "../../asn1/gsm_map/gsm_map.cnf"
+#line 330 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_SENT;
offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -17633,7 +17637,7 @@ dissect_gsm_old_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_gsm_old_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 333 "../../asn1/gsm_map/gsm_map.cnf"
+#line 334 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_SENT;
offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -17647,7 +17651,7 @@ dissect_gsm_old_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_gsm_old_T_serviceCentreAddressDA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 353 "../../asn1/gsm_map/gsm_map.cnf"
+#line 354 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -17687,7 +17691,7 @@ dissect_gsm_old_SM_RP_DAold(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_gsm_old_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 345 "../../asn1/gsm_map/gsm_map.cnf"
+#line 346 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -17701,7 +17705,7 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV;
static int
dissect_gsm_old_T_serviceCentreAddressOA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 321 "../../asn1/gsm_map/gsm_map.cnf"
+#line 322 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_SENT;
offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -17746,7 +17750,7 @@ static const ber_sequence_t gsm_old_ForwardSM_Arg_sequence[] = {
static int
dissect_gsm_old_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 380 "../../asn1/gsm_map/gsm_map.cnf"
+#line 381 "../../asn1/gsm_map/gsm_map.cnf"
/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@@ -18617,7 +18621,7 @@ dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(gboolean implicit_tag _U_, tv
static int
dissect_gsm_map_ericsson_T_locationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 955 "../../asn1/gsm_map/gsm_map.cnf"
+#line 956 "../../asn1/gsm_map/gsm_map.cnf"
tvbuff_t *parameter_tvb;
proto_tree *subtree;
guint8 rat;
@@ -20266,7 +20270,7 @@ dissect_NokiaMAP_Extensions_AllowedServiceData(gboolean implicit_tag _U_, tvbuff
/*--- End of included file: packet-gsm_map-fn.c ---*/
-#line 847 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 850 "../../asn1/gsm_map/packet-gsm_map-template.c"
/* Specific translation for MAP V3 */
const value_string gsm_map_V1V2_opr_code_strings[] = {
@@ -20488,7 +20492,7 @@ const value_string gsm_map_opr_code_strings[] = {
/* Unknown or empty loop list OPERATION */
/*--- End of included file: packet-gsm_map-table.c ---*/
-#line 858 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 861 "../../asn1/gsm_map/packet-gsm_map-template.c"
{ 0, NULL }
};
@@ -20705,7 +20709,7 @@ static const value_string gsm_map_err_code_string_vals[] = {
/* Unknown or empty loop list OPERATION */
/*--- End of included file: packet-gsm_map-table.c ---*/
-#line 864 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 867 "../../asn1/gsm_map/packet-gsm_map-template.c"
{ 0, NULL }
};
#endif
@@ -21395,7 +21399,7 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
break;
case 61: /*unstructuredSS-Notify*/
/* TRUE ? */
- proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, tvb, offset, -1, "Unknown returnResultData blob");
break;
case 62: /*AnyTimeSubscriptionInterrogation*/
offset=dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, actx, tree, -1);
@@ -22733,6 +22737,11 @@ void proto_register_gsm_map(void) {
{ "SAC", "gsm_map.ericsson.locationInformation.sac",
FT_UINT16, BASE_DEC_HEX, NULL, 0,
"Service Area Code", HFILL }},
+ { &hf_gsm_map_ussd_string,
+ { "USSD String", "gsm_map.ussd_string",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
/*--- Included file: packet-gsm_map-hfarr.c ---*/
@@ -29504,7 +29513,7 @@ void proto_register_gsm_map(void) {
NULL, HFILL }},
/*--- End of included file: packet-gsm_map-hfarr.c ---*/
-#line 2893 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 2901 "../../asn1/gsm_map/packet-gsm_map-template.c"
};
/* List of subtrees */
@@ -29534,6 +29543,7 @@ void proto_register_gsm_map(void) {
&ett_gsm_map_apn_str,
&ett_gsm_map_LocationNumber,
&ett_gsm_map_ericsson_locationInformation,
+ &ett_gsm_map_extention_data,
/*--- Included file: packet-gsm_map-ettarr.c ---*/
@@ -30212,7 +30222,7 @@ void proto_register_gsm_map(void) {
&ett_NokiaMAP_Extensions_AllowedServiceData,
/*--- End of included file: packet-gsm_map-ettarr.c ---*/
-#line 2924 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 2933 "../../asn1/gsm_map/packet-gsm_map-template.c"
};
static ei_register_info ei[] = {
@@ -30220,6 +30230,7 @@ void proto_register_gsm_map(void) {
{ &ei_gsm_map_unknown_sequence, { "gsm_map.unknown.sequence", PI_UNDECODED, PI_ERROR, "Unknown or not implemented sequence", EXPFILL }},
{ &ei_gsm_map_unknown_parameter, { "gsm_map.unknown.parameter", PI_UNDECODED, PI_ERROR, "Unknown or not implemented parameter", EXPFILL }},
{ &ei_gsm_map_unknown_invokeData, { "gsm_map.unknown.invokeData", PI_MALFORMED, PI_WARN, "Unknown invokeData", EXPFILL }},
+ { &ei_gsm_map_undecoded, { "gsm_map.undecoded", PI_UNDECODED, PI_WARN, "If you want this decoded send the packet to Wireshark-dev", EXPFILL }},
};
static const enum_val_t application_context_modes[] = {
@@ -30314,7 +30325,7 @@ void proto_register_gsm_map(void) {
/*--- End of included file: packet-gsm_map-dis-tab.c ---*/
-#line 2960 "../../asn1/gsm_map/packet-gsm_map-template.c"
+#line 2970 "../../asn1/gsm_map/packet-gsm_map-template.c"
oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" );
oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2");
/*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" );
diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c
index 12076b34e2..103dc9b340 100644
--- a/epan/dissectors/packet-h225.c
+++ b/epan/dissectors/packet-h225.c
@@ -109,6 +109,7 @@ static int hf_h225_ras_req_frame = -1;
static int hf_h225_ras_rsp_frame = -1;
static int hf_h225_ras_dup = -1;
static int hf_h225_ras_deltatime = -1;
+static int hf_h225_debug_dissector_try_string = -1;
/*--- Included file: packet-h225-hf.c ---*/
@@ -885,7 +886,7 @@ static int hf_h225_stopped = -1; /* NULL */
static int hf_h225_notAvailable = -1; /* NULL */
/*--- End of included file: packet-h225-hf.c ---*/
-#line 106 "../../asn1/h225/packet-h225-template.c"
+#line 107 "../../asn1/h225/packet-h225-template.c"
/* Initialize the subtree pointers */
static gint ett_h225 = -1;
@@ -1133,7 +1134,7 @@ static gint ett_h225_ServiceControlResponse = -1;
static gint ett_h225_T_result = -1;
/*--- End of included file: packet-h225-ett.c ---*/
-#line 110 "../../asn1/h225/packet-h225-template.c"
+#line 111 "../../asn1/h225/packet-h225-template.c"
/* Preferences */
static guint h225_tls_port = TLS_PORT_CS;
@@ -1891,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 717 "../../asn1/h225/h225.cnf"
+#line 720 "../../asn1/h225/h225.cnf"
int min_len, max_len;
gboolean has_extension;
@@ -3677,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 681 "../../asn1/h225/h225.cnf"
+#line 682 "../../asn1/h225/h225.cnf"
guint32 value_int = (guint32)-1;
gef_ctx_t *gefx;
@@ -3695,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 690 "../../asn1/h225/h225.cnf"
+#line 691 "../../asn1/h225/h225.cnf"
const gchar *oid_str = NULL;
gef_ctx_t *gefx;
@@ -3727,17 +3728,18 @@ 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 668 "../../asn1/h225/h225.cnf"
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_h225_GenericIdentifier, GenericIdentifier_choice,
NULL);
-#line 670 "../../asn1/h225/h225.cnf"
+#line 671 "../../asn1/h225/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);*/
+ ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
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 */
@@ -3749,16 +3751,18 @@ 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 700 "../../asn1/h225/h225.cnf"
+#line 701 "../../asn1/h225/h225.cnf"
tvbuff_t *value_tvb;
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &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);*/
+ ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
@@ -7510,7 +7514,7 @@ static int dissect_RasMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro
/*--- End of included file: packet-h225-fn.c ---*/
-#line 134 "../../asn1/h225/packet-h225-template.c"
+#line 135 "../../asn1/h225/packet-h225-template.c"
/* Forward declaration we need below */
@@ -7606,6 +7610,9 @@ void proto_register_h225(void) {
{ &hf_h225_ras_deltatime,
{ "RAS Service Response Time", "h225.ras.timedelta", FT_RELATIVE_TIME, BASE_NONE,
NULL, 0, "Timedelta between RAS-Request and RAS-Response", HFILL }},
+ { &hf_h225_debug_dissector_try_string,
+ { "*** DEBUG dissector_try_string", "h225.debug.dissector_try_string", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
/*--- Included file: packet-h225-hfarr.c ---*/
@@ -10692,7 +10699,7 @@ void proto_register_h225(void) {
NULL, HFILL }},
/*--- End of included file: packet-h225-hfarr.c ---*/
-#line 231 "../../asn1/h225/packet-h225-template.c"
+#line 235 "../../asn1/h225/packet-h225-template.c"
};
/* List of subtrees */
@@ -10942,7 +10949,7 @@ void proto_register_h225(void) {
&ett_h225_T_result,
/*--- End of included file: packet-h225-ettarr.c ---*/
-#line 237 "../../asn1/h225/packet-h225-template.c"
+#line 241 "../../asn1/h225/packet-h225-template.c"
};
module_t *h225_module;
diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c
index b8c0bc9bcd..0ad29819f9 100644
--- a/epan/dissectors/packet-h245.c
+++ b/epan/dissectors/packet-h245.c
@@ -87,6 +87,8 @@ static int hf_h245Manufacturer = -1;
static int hf_h245_subMessageIdentifier_standard = -1;
static int h245_tap = -1;
static int h245dg_tap = -1;
+static int hf_h245_debug_dissector_try_string = -1;
+
h245_packet_info *h245_pi=NULL;
static gboolean h245_reassembly = TRUE;
@@ -215,7 +217,7 @@ typedef enum _IndicationMessage_enum {
} IndicationMessage_enum;
/*--- End of included file: packet-h245-val.h ---*/
-#line 88 "../../asn1/h245/packet-h245-template.c"
+#line 90 "../../asn1/h245/packet-h245-template.c"
static const value_string h245_RequestMessage_short_vals[] = {
{ RequestMessage_nonStandard , "NSM" },
@@ -1920,7 +1922,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 386 "../../asn1/h245/packet-h245-template.c"
+#line 388 "../../asn1/h245/packet-h245-template.c"
/* Initialize the subtree pointers */
static int ett_h245 = -1;
@@ -2421,7 +2423,7 @@ static gint ett_h245_FlowControlIndication = -1;
static gint ett_h245_MobileMultilinkReconfigurationIndication = -1;
/*--- End of included file: packet-h245-ett.c ---*/
-#line 391 "../../asn1/h245/packet-h245-template.c"
+#line 393 "../../asn1/h245/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_);
@@ -2509,7 +2511,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 966 "../../asn1/h245/h245.cnf"
+#line 982 "../../asn1/h245/h245.cnf"
t35CountryCode = 0;
t35Extension = 0;
manufacturerCode = 0;
@@ -2517,7 +2519,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 970 "../../asn1/h245/h245.cnf"
+#line 986 "../../asn1/h245/h245.cnf"
h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
proto_tree_add_uint(tree, hf_h245Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard);
@@ -2539,7 +2541,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 947 "../../asn1/h245/h245.cnf"
+#line 963 "../../asn1/h245/h245.cnf"
gint32 value;
nsiOID = "";
@@ -2568,7 +2570,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 981 "../../asn1/h245/h245.cnf"
+#line 997 "../../asn1/h245/h245.cnf"
tvbuff_t *next_tvb = NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -2591,7 +2593,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 979 "../../asn1/h245/h245.cnf"
+#line 995 "../../asn1/h245/h245.cnf"
nsp_handle = NULL;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -3544,7 +3546,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 727 "../../asn1/h245/h245.cnf"
+#line 730 "../../asn1/h245/h245.cnf"
const gchar *standard_oid_str = NULL;
gef_ctx_t *gefx;
@@ -3604,19 +3606,21 @@ static const per_choice_t CapabilityIdentifier_choice[] = {
static int
dissect_h245_CapabilityIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 714 "../../asn1/h245/h245.cnf"
+#line 715 "../../asn1/h245/h245.cnf"
gef_ctx_t *gefx;
+ proto_item* ti;
+
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_h245_CapabilityIdentifier, CapabilityIdentifier_choice,
NULL);
-#line 716 "../../asn1/h245/h245.cnf"
+#line 719 "../../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 CapabilityIdentifier: %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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
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 */
@@ -3638,7 +3642,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 757 "../../asn1/h245/h245.cnf"
+#line 761 "../../asn1/h245/h245.cnf"
guint32 value_int = (guint32)-1;
gef_ctx_t *gefx;
@@ -3671,19 +3675,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 744 "../../asn1/h245/h245.cnf"
+#line 747 "../../asn1/h245/h245.cnf"
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_h245_ParameterIdentifier, ParameterIdentifier_choice,
NULL);
-#line 746 "../../asn1/h245/h245.cnf"
+#line 750 "../../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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
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 */
@@ -3695,11 +3700,12 @@ 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 766 "../../asn1/h245/h245.cnf"
+#line 770 "../../asn1/h245/h245.cnf"
guint32 value;
guint8 *buf;
tvbuff_t *value_tvb;
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 255U, &value, FALSE);
@@ -3709,7 +3715,8 @@ dissect_h245_T_booleanArray(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
buf = wmem_new(actx->pinfo->pool, guint8);
buf[0] = value;
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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
add_new_data_source(actx->pinfo, value_tvb, "booleanArray");
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
@@ -3722,11 +3729,12 @@ 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 783 "../../asn1/h245/h245.cnf"
+#line 789 "../../asn1/h245/h245.cnf"
guint32 value;
guint8 *buf;
tvbuff_t *value_tvb;
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 65535U, &value, FALSE);
@@ -3736,7 +3744,8 @@ dissect_h245_T_unsignedMin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
buf = (guint8 *)wmem_new(actx->pinfo->pool, guint16);
phton16(buf, value);
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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
add_new_data_source(actx->pinfo, value_tvb, "unsignedMin");
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
@@ -3749,11 +3758,12 @@ 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 800 "../../asn1/h245/h245.cnf"
+#line 808 "../../asn1/h245/h245.cnf"
guint32 value;
guint8 *buf;
tvbuff_t *value_tvb;
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 65535U, &value, FALSE);
@@ -3763,7 +3773,8 @@ dissect_h245_T_unsignedMax(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
buf = (guint8 *)wmem_new(actx->pinfo->pool, guint16);
phton16(buf, value);
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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
add_new_data_source(actx->pinfo, value_tvb, "unsignedMax");
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
@@ -3776,11 +3787,12 @@ 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 817 "../../asn1/h245/h245.cnf"
+#line 827 "../../asn1/h245/h245.cnf"
guint32 value;
guint8 *buf;
tvbuff_t *value_tvb;
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 4294967295U, &value, FALSE);
@@ -3790,7 +3802,8 @@ dissect_h245_T_unsigned32Min(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
buf = (guint8 *)wmem_new(actx->pinfo->pool, guint32);
phton32(buf, value);
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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
add_new_data_source(actx->pinfo, value_tvb, "unsigned32Min");
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
@@ -3803,11 +3816,12 @@ 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 834 "../../asn1/h245/h245.cnf"
+#line 846 "../../asn1/h245/h245.cnf"
guint32 value;
guint8 *buf;
tvbuff_t *value_tvb;
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 4294967295U, &value, FALSE);
@@ -3817,7 +3831,8 @@ dissect_h245_T_unsigned32Max(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
buf = (guint8 *)wmem_new(actx->pinfo->pool, guint32);
phton32(buf, value);
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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
add_new_data_source(actx->pinfo, value_tvb, "unsigned32Max");
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
@@ -3830,16 +3845,18 @@ 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 851 "../../asn1/h245/h245.cnf"
+#line 865 "../../asn1/h245/h245.cnf"
tvbuff_t *value_tvb;
gef_ctx_t *gefx;
+ proto_item* ti;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
@@ -3927,7 +3944,7 @@ 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 671 "../../asn1/h245/h245.cnf"
+#line 670 "../../asn1/h245/h245.cnf"
gef_ctx_t *parent_gefx;
parent_gefx = gef_ctx_get(actx->private_data);
@@ -3935,7 +3952,7 @@ dissect_h245_T_collapsing_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
offset = dissect_h245_GenericParameter(tvb, offset, actx, tree, hf_index);
-#line 676 "../../asn1/h245/h245.cnf"
+#line 675 "../../asn1/h245/h245.cnf"
actx->private_data = parent_gefx;
return offset;
@@ -3958,7 +3975,7 @@ dissect_h245_T_collapsing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
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 680 "../../asn1/h245/h245.cnf"
+#line 679 "../../asn1/h245/h245.cnf"
gef_ctx_t *parent_gefx;
parent_gefx = gef_ctx_get(actx->private_data);
@@ -3966,7 +3983,7 @@ dissect_h245_T_nonCollapsing_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
offset = dissect_h245_GenericParameter(tvb, offset, actx, tree, hf_index);
-#line 685 "../../asn1/h245/h245.cnf"
+#line 684 "../../asn1/h245/h245.cnf"
actx->private_data = parent_gefx;
return offset;
@@ -3989,10 +4006,11 @@ dissect_h245_T_nonCollapsing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
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 689 "../../asn1/h245/h245.cnf"
+#line 688 "../../asn1/h245/h245.cnf"
tvbuff_t *value_tvb;
gef_ctx_t *parent_gefx;
gef_ctx_t *gefx;
+ proto_item* ti;
parent_gefx = gef_ctx_get(actx->private_data);
actx->private_data = gef_ctx_alloc(parent_gefx, "nonCollapsingRaw");
@@ -4001,7 +4019,8 @@ dissect_h245_T_nonCollapsingRaw(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a
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);*/
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
}
actx->private_data = parent_gefx;
@@ -4023,14 +4042,14 @@ static const per_sequence_t GenericCapability_sequence[] = {
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 664 "../../asn1/h245/h245.cnf"
+#line 663 "../../asn1/h245/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 667 "../../asn1/h245/h245.cnf"
+#line 666 "../../asn1/h245/h245.cnf"
actx->private_data = priv_data;
return offset;
@@ -4219,7 +4238,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 932 "../../asn1/h245/h245.cnf"
+#line 948 "../../asn1/h245/h245.cnf"
unsigned int pt;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@@ -4243,7 +4262,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 924 "../../asn1/h245/h245.cnf"
+#line 940 "../../asn1/h245/h245.cnf"
rfc_number = 0;
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
@@ -6649,7 +6668,6 @@ dissect_h245_T_subMessageIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
if (gefx) {
gefx->subid = wmem_strdup_printf(wmem_packet_scope(), "%u", subMessageIdentifer);
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);*/
}
if (hf_index == hf_h245_subMessageIdentifier_standard)
{
@@ -6665,7 +6683,7 @@ dissect_h245_T_subMessageIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_
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 646 "../../asn1/h245/h245.cnf"
+#line 645 "../../asn1/h245/h245.cnf"
gef_ctx_t *parent_gefx;
parent_gefx = gef_ctx_get(actx->private_data);
@@ -6673,7 +6691,7 @@ dissect_h245_T_messageContent_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
offset = dissect_h245_GenericParameter(tvb, offset, actx, tree, hf_index);
-#line 651 "../../asn1/h245/h245.cnf"
+#line 650 "../../asn1/h245/h245.cnf"
actx->private_data = parent_gefx;
return offset;
@@ -6726,13 +6744,13 @@ 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 656 "../../asn1/h245/h245.cnf"
+#line 655 "../../asn1/h245/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 659 "../../asn1/h245/h245.cnf"
+#line 658 "../../asn1/h245/h245.cnf"
actx->private_data = priv_data;
return offset;
@@ -7231,7 +7249,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 1007 "../../asn1/h245/h245.cnf"
+#line 1023 "../../asn1/h245/h245.cnf"
gint choice_index;
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
@@ -7969,7 +7987,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 866 "../../asn1/h245/h245.cnf"
+#line 882 "../../asn1/h245/h245.cnf"
tvbuff_t *value_tvb;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -7989,7 +8007,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 877 "../../asn1/h245/h245.cnf"
+#line 893 "../../asn1/h245/h245.cnf"
guint32 tsapIdentifier;
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
@@ -8246,13 +8264,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 896 "../../asn1/h245/h245.cnf"
+#line 912 "../../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 900 "../../asn1/h245/h245.cnf"
+#line 916 "../../asn1/h245/h245.cnf"
if (upcoming_channel)
upcoming_channel->upcoming_addr = NULL;
@@ -8263,13 +8281,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 914 "../../asn1/h245/h245.cnf"
+#line 930 "../../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 918 "../../asn1/h245/h245.cnf"
+#line 934 "../../asn1/h245/h245.cnf"
if (upcoming_channel)
upcoming_channel->upcoming_addr = NULL;
@@ -8661,14 +8679,14 @@ 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 706 "../../asn1/h245/h245.cnf"
+#line 707 "../../asn1/h245/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 709 "../../asn1/h245/h245.cnf"
+#line 710 "../../asn1/h245/h245.cnf"
actx->private_data = priv_data;
return offset;
@@ -10948,13 +10966,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 887 "../../asn1/h245/h245.cnf"
+#line 903 "../../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 891 "../../asn1/h245/h245.cnf"
+#line 907 "../../asn1/h245/h245.cnf"
if (upcoming_channel)
upcoming_channel->upcoming_addr = NULL;
@@ -10965,13 +10983,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 905 "../../asn1/h245/h245.cnf"
+#line 921 "../../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 909 "../../asn1/h245/h245.cnf"
+#line 925 "../../asn1/h245/h245.cnf"
if (upcoming_channel)
upcoming_channel->upcoming_addr = NULL;
@@ -14226,7 +14244,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 990 "../../asn1/h245/h245.cnf"
+#line 1006 "../../asn1/h245/h245.cnf"
tvbuff_t *next_tvb = NULL;
proto_item *item;
proto_tree *subtree;
@@ -14487,7 +14505,7 @@ static void dissect_OpenLogicalChannel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo
/*--- End of included file: packet-h245-fn.c ---*/
-#line 400 "../../asn1/h245/packet-h245-template.c"
+#line 402 "../../asn1/h245/packet-h245-template.c"
static void
dissect_h245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
@@ -14567,6 +14585,9 @@ void proto_register_h245(void) {
{ "subMessageIdentifier", "h245.subMessageIdentifier.standard",
FT_UINT32, BASE_DEC, VALS(h245_h239subMessageIdentifier_vals), 0,
NULL, HFILL }},
+ { &hf_h245_debug_dissector_try_string,
+ { "*** DEBUG dissector_try_string", "h245.debug.dissector_try_string", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
/*--- Included file: packet-h245-hfarr.c ---*/
@@ -20181,7 +20202,7 @@ void proto_register_h245(void) {
NULL, HFILL }},
/*--- End of included file: packet-h245-hfarr.c ---*/
-#line 481 "../../asn1/h245/packet-h245-template.c"
+#line 486 "../../asn1/h245/packet-h245-template.c"
};
/* List of subtrees */
@@ -20684,7 +20705,7 @@ void proto_register_h245(void) {
&ett_h245_MobileMultilinkReconfigurationIndication,
/*--- End of included file: packet-h245-ettarr.c ---*/
-#line 488 "../../asn1/h245/packet-h245-template.c"
+#line 493 "../../asn1/h245/packet-h245-template.c"
};
module_t *h245_module;
diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c
index df1cf437d3..8e7e7f0cc3 100644
--- a/epan/dissectors/packet-h248.c
+++ b/epan/dissectors/packet-h248.c
@@ -568,6 +568,7 @@ static gint ett_h248_SigParameterV1 = -1;
static expert_field ei_h248_errored_command = EI_INIT;
static expert_field ei_h248_transactionId64 = EI_INIT;
static expert_field ei_h248_context_id64 = EI_INIT;
+static expert_field ei_h248_octet_string_expected = EI_INIT;
static dissector_table_t subdissector_table;
@@ -1674,7 +1675,8 @@ static int dissect_h248_PropertyID(gboolean implicit_tag _U_, tvbuff_t *tvb, int
if( (ber_class!=BER_CLASS_UNI)
||(tag!=BER_UNI_TAG_OCTETSTRING) ){
- proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_h248_octet_string_expected, tvb, offset-2, 2,
+ "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
return end_offset;
}
@@ -1756,7 +1758,8 @@ static int dissect_h248_SigParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb,
if( (ber_class!=BER_CLASS_UNI)
||(tag!=BER_UNI_TAG_OCTETSTRING) ){
- proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_h248_octet_string_expected, tvb, offset-2, 2,
+ "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
return end_offset;
}
@@ -1834,7 +1837,8 @@ static int dissect_h248_EventParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb
if( (ber_class!=BER_CLASS_UNI)
||(tag!=BER_UNI_TAG_OCTETSTRING) ){
- proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_h248_octet_string_expected, tvb, offset-2, 2,
+ "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", ber_class, pc, tag);
return end_offset;
}
@@ -5381,7 +5385,7 @@ dissect_h248_ValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
/*--- End of included file: packet-h248-fn.c ---*/
-#line 1412 "../../asn1/h248/packet-h248-template.c"
+#line 1416 "../../asn1/h248/packet-h248-template.c"
static void dissect_h248_tpkt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_tpkt_encap(tvb, pinfo, tree, h248_desegment, h248_handle);
@@ -6803,7 +6807,7 @@ void proto_register_h248(void) {
NULL, HFILL }},
/*--- End of included file: packet-h248-hfarr.c ---*/
-#line 1577 "../../asn1/h248/packet-h248-template.c"
+#line 1581 "../../asn1/h248/packet-h248-template.c"
GCP_HF_ARR_ELEMS("h248",h248_arrel)
@@ -6969,13 +6973,14 @@ void proto_register_h248(void) {
&ett_h248_SigParameterV1,
/*--- End of included file: packet-h248-ettarr.c ---*/
-#line 1595 "../../asn1/h248/packet-h248-template.c"
+#line 1599 "../../asn1/h248/packet-h248-template.c"
};
static ei_register_info ei[] = {
{ &ei_h248_errored_command, { "h248.errored_command", PI_RESPONSE_CODE, PI_WARN, "Errored Command", EXPFILL }},
{ &ei_h248_transactionId64, { "h248.transactionId.error", PI_MALFORMED, PI_WARN, "Transaction ID invalid", EXPFILL }},
{ &ei_h248_context_id64, { "h248.contextId.error", PI_MALFORMED, PI_WARN, "Context ID invalid", EXPFILL }},
+ { &ei_h248_octet_string_expected, { "h248.octet_string_expected", PI_PROTOCOL, PI_WARN, "H.248 BER Error: OctetString expected", EXPFILL }},
};
expert_module_t* expert_h248;
diff --git a/epan/dissectors/packet-h450.c b/epan/dissectors/packet-h450.c
index 1c1920b9d8..66df7f3e69 100644
--- a/epan/dissectors/packet-h450.c
+++ b/epan/dissectors/packet-h450.c
@@ -38,6 +38,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/asn1.h>
@@ -447,7 +448,7 @@ static int hf_h450_12_ssMWICallbackCall = -1; /* NULL */
static int hf_h450_12_ssCISilentMonitorPermitted = -1; /* NULL */
/*--- End of included file: packet-h450-hf.c ---*/
-#line 54 "../../asn1/h450/packet-h450-template.c"
+#line 55 "../../asn1/h450/packet-h450-template.c"
/* Initialize the subtree pointers */
@@ -625,7 +626,11 @@ static gint ett_h450_12_FeatureValues = -1;
static gint ett_h450_12_FeatureControl = -1;
/*--- End of included file: packet-h450-ett.c ---*/
-#line 57 "../../asn1/h450/packet-h450-template.c"
+#line 58 "../../asn1/h450/packet-h450-template.c"
+
+static expert_field ei_h450_unsupported_arg_type = EI_INIT;
+static expert_field ei_h450_unsupported_result_type = EI_INIT;
+static expert_field ei_h450_unsupported_error_type = EI_INIT;
static const value_string h450_str_operation[] = {
@@ -728,7 +733,7 @@ static const value_string h450_str_operation[] = {
{ 85, "cmnInform" },
/*--- End of included file: packet-h450-table10.c ---*/
-#line 60 "../../asn1/h450/packet-h450-template.c"
+#line 65 "../../asn1/h450/packet-h450-template.c"
{ 0, NULL}
};
@@ -816,7 +821,7 @@ static const value_string h450_str_error[] = {
/* Unknown or empty loop list ERROR */
/*--- End of included file: packet-h450-table20.c ---*/
-#line 65 "../../asn1/h450/packet-h450-template.c"
+#line 70 "../../asn1/h450/packet-h450-template.c"
{ 0, NULL}
};
@@ -4481,7 +4486,7 @@ static int dissect_h450_12_CmnArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
/*--- End of included file: packet-h450-fn.c ---*/
-#line 74 "../../asn1/h450/packet-h450-template.c"
+#line 79 "../../asn1/h450/packet-h450-template.c"
typedef struct _h450_op_t {
gint32 opcode;
@@ -4590,7 +4595,7 @@ static const h450_op_t h450_op_tab[] = {
/* cmnInform */ { 85, dissect_h450_12_CmnArg_PDU, NULL },
/*--- End of included file: packet-h450-table11.c ---*/
-#line 83 "../../asn1/h450/packet-h450-template.c"
+#line 88 "../../asn1/h450/packet-h450-template.c"
};
typedef struct _h450_err_t {
@@ -4682,7 +4687,7 @@ static const h450_err_t h450_err_tab[] = {
/* Unknown or empty loop list ERROR */
/*--- End of included file: packet-h450-table21.c ---*/
-#line 92 "../../asn1/h450/packet-h450-template.c"
+#line 97 "../../asn1/h450/packet-h450-template.c"
};
static const h450_op_t *get_op(gint32 opcode) {
@@ -4743,7 +4748,7 @@ dissect_h450_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset = op_ptr->arg_pdu(tvb, pinfo, tree, NULL);
else
if (tvb_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(tree, tvb, offset, -1, "UNSUPPORTED ARGUMENT TYPE (H.450)");
+ proto_tree_add_expert(tree, pinfo, &ei_h450_unsupported_arg_type, tvb, offset, -1);
offset += tvb_length_remaining(tvb, offset);
}
@@ -4788,7 +4793,7 @@ dissect_h450_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset = op_ptr->res_pdu(tvb, pinfo, tree, NULL);
else
if (tvb_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(tree, tvb, offset, -1, "UNSUPPORTED RESULT TYPE (H.450)");
+ proto_tree_add_expert(tree, pinfo, &ei_h450_unsupported_result_type, tvb, offset, -1);
offset += tvb_length_remaining(tvb, offset);
}
@@ -4833,7 +4838,7 @@ dissect_h450_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset = err_ptr->err_pdu(tvb, pinfo, tree, NULL);
else
if (tvb_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(tree, tvb, offset, -1, "UNSUPPORTED ERROR TYPE (H.450)");
+ proto_tree_add_expert(tree, pinfo, &ei_h450_unsupported_error_type, tvb, offset, -1);
offset += tvb_length_remaining(tvb, offset);
}
@@ -6284,7 +6289,7 @@ void proto_register_h450(void) {
NULL, HFILL }},
/*--- End of included file: packet-h450-hfarr.c ---*/
-#line 261 "../../asn1/h450/packet-h450-template.c"
+#line 266 "../../asn1/h450/packet-h450-template.c"
};
/* List of subtrees */
@@ -6464,9 +6469,16 @@ void proto_register_h450(void) {
&ett_h450_12_FeatureControl,
/*--- End of included file: packet-h450-ettarr.c ---*/
-#line 266 "../../asn1/h450/packet-h450-template.c"
+#line 271 "../../asn1/h450/packet-h450-template.c"
+ };
+
+ static ei_register_info ei[] = {
+ { &ei_h450_unsupported_arg_type, { "h450.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (H.450)", EXPFILL }},
+ { &ei_h450_unsupported_result_type, { "h450.unsupported.result_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED RESULT TYPE (H.450)", EXPFILL }},
+ { &ei_h450_unsupported_error_type, { "h450.unsupported.error_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ERROR TYPE (H.450)", EXPFILL }},
};
+ expert_module_t* expert_h450;
/* Register protocol */
proto_h450 = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -6474,6 +6486,8 @@ void proto_register_h450(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_h450, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_h450 = expert_register_protocol(proto_h450);
+ expert_register_field_array(expert_h450, ei, array_length(ei));
rose_ctx_init(&h450_rose_ctx);
diff --git a/epan/dissectors/packet-h460.c b/epan/dissectors/packet-h460.c
index d4a63e0794..0e15a8043d 100644
--- a/epan/dissectors/packet-h460.c
+++ b/epan/dissectors/packet-h460.c
@@ -2141,9 +2141,7 @@ dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void
DISSECTOR_ASSERT(actx);
if (tree) {
- /* DEBUG */ /*proto_tree_add_text(tree, tvb, 0, 0, "*** DEBUG dissect_h460_name: %s", pinfo->match_string);*/
ftr = find_ftr(pinfo->match_string);
- /* DEBUG */ /*proto_tree_add_text(tree, tvb, 0, 0, "*** DEBUG dissect_h460_name: ftr %s", (ftr)?ftr->name:"-none-");*/
if (ftr) {
proto_item_append_text(actx->created_item, " - %s", ftr->name);
proto_item_append_text(proto_item_get_parent(proto_tree_get_parent(tree)), ": %s", ftr->name);
@@ -2876,7 +2874,7 @@ void proto_register_h460(void) {
"UnicastAddress", HFILL }},
/*--- End of included file: packet-h460-hfarr.c ---*/
-#line 253 "../../asn1/h460/packet-h460-template.c"
+#line 251 "../../asn1/h460/packet-h460-template.c"
};
/* List of subtrees */
@@ -2975,7 +2973,7 @@ void proto_register_h460(void) {
&ett_h460_21_TransmitCapabilities,
/*--- End of included file: packet-h460-ettarr.c ---*/
-#line 258 "../../asn1/h460/packet-h460-template.c"
+#line 256 "../../asn1/h460/packet-h460-template.c"
};
/* Register protocol */
diff --git a/epan/dissectors/packet-idmp.c b/epan/dissectors/packet-idmp.c
index f27c393b55..5a16b18e84 100644
--- a/epan/dissectors/packet-idmp.c
+++ b/epan/dissectors/packet-idmp.c
@@ -89,6 +89,7 @@ static int hf_idmp_fragment_error = -1;
static int hf_idmp_fragment_count = -1;
static int hf_idmp_reassembled_in = -1;
static int hf_idmp_reassembled_length = -1;
+static int hf_idmp_segment_data = -1;
static gint ett_idmp_fragment = -1;
static gint ett_idmp_fragments = -1;
@@ -172,7 +173,7 @@ static int hf_idmp_present = -1; /* INTEGER */
static int hf_idmp_absent = -1; /* NULL */
/*--- End of included file: packet-idmp-hf.c ---*/
-#line 131 "../../asn1/idmp/packet-idmp-template.c"
+#line 132 "../../asn1/idmp/packet-idmp-template.c"
/* Initialize the subtree pointers */
static gint ett_idmp = -1;
@@ -191,7 +192,7 @@ static gint ett_idmp_Code = -1;
static gint ett_idmp_InvokeId = -1;
/*--- End of included file: packet-idmp-ett.c ---*/
-#line 135 "../../asn1/idmp/packet-idmp-template.c"
+#line 136 "../../asn1/idmp/packet-idmp-template.c"
/*--- Included file: packet-idmp-fn.c ---*/
@@ -619,7 +620,7 @@ dissect_idmp_IDM_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
/*--- End of included file: packet-idmp-fn.c ---*/
-#line 137 "../../asn1/idmp/packet-idmp-template.c"
+#line 138 "../../asn1/idmp/packet-idmp-template.c"
void
register_idmp_protocol_info(const char *oid, const ros_info_t *rinfo, int proto _U_, const char *name)
@@ -683,9 +684,7 @@ static int dissect_idmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr
idmp_length, !idmp_final);
if(fd_head && fd_head->next) {
- proto_tree_add_text(tree, tvb, offset, (idmp_length) ? -1 : 0,
- "IDMP segment data (%u byte%s)", idmp_length,
- plurality(idmp_length, "", "s"));
+ proto_tree_add_item(tree, hf_idmp_segment_data, tvb, offset, (idmp_length) ? -1 : 0, ENC_NA);
if (idmp_final) {
/* This is the last segment */
@@ -705,9 +704,8 @@ static int dissect_idmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tr
col_append_fstr(pinfo->cinfo, COL_INFO, " [IDMP fragment, %u byte%s, IDMP reassembly not enabled]",
idmp_length, plurality(idmp_length, "", "s"));
- proto_tree_add_text(tree, tvb, offset, (idmp_length) ? -1 : 0,
- "IDMP segment data (%u byte%s) (IDMP reassembly not enabled)", idmp_length,
- plurality(idmp_length, "", "s"));
+ proto_tree_add_bytes_format_value(tree, hf_idmp_segment_data, tvb, offset, (idmp_length) ? -1 : 0,
+ NULL, "(IDMP reassembly not enabled)");
}
}
/* not reassembling - just dissect */
@@ -796,6 +794,9 @@ void proto_register_idmp(void)
{ &hf_idmp_reassembled_length,
{ "Reassembled IDMP length", "idmp.reassembled.length", FT_UINT32, BASE_DEC,
NULL, 0x00, "The total length of the reassembled payload", HFILL } },
+ { &hf_idmp_segment_data,
+ { "IDMP segment data", "idmp.segment_data", FT_BYTES, BASE_NONE,
+ NULL, 0x00, NULL, HFILL } },
/*--- Included file: packet-idmp-hfarr.c ---*/
@@ -930,7 +931,7 @@ void proto_register_idmp(void)
NULL, HFILL }},
/*--- End of included file: packet-idmp-hfarr.c ---*/
-#line 315 "../../asn1/idmp/packet-idmp-template.c"
+#line 316 "../../asn1/idmp/packet-idmp-template.c"
};
/* List of subtrees */
@@ -953,7 +954,7 @@ void proto_register_idmp(void)
&ett_idmp_InvokeId,
/*--- End of included file: packet-idmp-ettarr.c ---*/
-#line 323 "../../asn1/idmp/packet-idmp-template.c"
+#line 324 "../../asn1/idmp/packet-idmp-template.c"
};
module_t *idmp_module;
diff --git a/epan/dissectors/packet-inap.c b/epan/dissectors/packet-inap.c
index f51d72d441..bae5513738 100644
--- a/epan/dissectors/packet-inap.c
+++ b/epan/dissectors/packet-inap.c
@@ -1050,6 +1050,7 @@ static int inap_opcode_type;
static gint ett_inap = -1;
static gint ett_inapisup_parameter = -1;
static gint ett_inap_HighLayerCompatibility = -1;
+static gint ett_inap_extention_data = -1;
/*--- Included file: packet-inap-ett.c ---*/
#line 1 "../../asn1/inap/packet-inap-ett.c"
@@ -1291,7 +1292,7 @@ static gint ett_inap_T_problem_01 = -1;
static gint ett_inap_InvokeId = -1;
/*--- End of included file: packet-inap-ett.c ---*/
-#line 83 "../../asn1/inap/packet-inap-template.c"
+#line 84 "../../asn1/inap/packet-inap-template.c"
static expert_field ei_inap_unknown_invokeData = EI_INIT;
static expert_field ei_inap_unknown_returnResultData = EI_INIT;
@@ -1421,7 +1422,7 @@ static const value_string inap_err_code_string_vals[] = {
/*--- End of included file: packet-inap-table.c ---*/
-#line 89 "../../asn1/inap/packet-inap-template.c"
+#line 90 "../../asn1/inap/packet-inap-template.c"
const value_string inap_general_problem_strings[] = {
{0,"General Problem Unrecognized Component"},
@@ -1516,11 +1517,12 @@ dissect_inap_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_inap_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 215 "../../asn1/inap/inap.cnf"
- proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
+ proto_tree *ext_tree;
+ ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_inap_extention_data, NULL, "Extension Data");
if (obj_id){
- offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, tree, NULL);
+ offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, ext_tree, NULL);
}else{
- call_dissector(data_handle, tvb, actx->pinfo, tree);
+ call_dissector(data_handle, tvb, actx->pinfo, ext_tree);
offset = tvb_length_remaining(tvb,offset);
}
@@ -2195,7 +2197,7 @@ dissect_inap_BCSMEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_inap_T_bearerCap(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 247 "../../asn1/inap/inap.cnf"
+#line 248 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -2350,7 +2352,7 @@ dissect_inap_CalledPartyBusinessGroupID(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_inap_CalledPartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 226 "../../asn1/inap/inap.cnf"
+#line 227 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -2401,7 +2403,7 @@ dissect_inap_CallingPartyBusinessGroupID(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_inap_CallingPartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 236 "../../asn1/inap/inap.cnf"
+#line 237 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -4539,7 +4541,7 @@ dissect_inap_GlobalCallReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
int
dissect_inap_HighLayerCompatibility(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 289 "../../asn1/inap/inap.cnf"
+#line 290 "../../asn1/inap/inap.cnf"
/*
* -- Indicates the teleservice. For encoding, DSS1 (Q.931) is used.
*/
@@ -4713,7 +4715,7 @@ dissect_inap_NumberingPlan(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_inap_OriginalCalledPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 269 "../../asn1/inap/inap.cnf"
+#line 270 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -4776,7 +4778,7 @@ dissect_inap_Reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
static int
dissect_inap_RedirectingPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 279 "../../asn1/inap/inap.cnf"
+#line 280 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -4797,7 +4799,7 @@ dissect_inap_RedirectingPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
int
dissect_inap_RedirectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 258 "../../asn1/inap/inap.cnf"
+#line 259 "../../asn1/inap/inap.cnf"
tvbuff_t *parameter_tvb;
@@ -8981,7 +8983,7 @@ static int dissect_PAR_taskRefused_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_
/*--- End of included file: packet-inap-fn.c ---*/
-#line 103 "../../asn1/inap/packet-inap-template.c"
+#line 104 "../../asn1/inap/packet-inap-template.c"
/*
TC-Invokable OPERATION ::=
{activateServiceFiltering | activityTest | analysedInformation |
@@ -9331,7 +9333,7 @@ static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset,a
/*--- End of included file: packet-inap-table2.c ---*/
-#line 124 "../../asn1/inap/packet-inap-template.c"
+#line 125 "../../asn1/inap/packet-inap-template.c"
static guint8 inap_pdu_type = 0;
@@ -11657,7 +11659,7 @@ void proto_register_inap(void) {
"InvokeId_present", HFILL }},
/*--- End of included file: packet-inap-hfarr.c ---*/
-#line 205 "../../asn1/inap/packet-inap-template.c"
+#line 206 "../../asn1/inap/packet-inap-template.c"
};
@@ -11670,6 +11672,7 @@ void proto_register_inap(void) {
&ett_inap,
&ett_inapisup_parameter,
&ett_inap_HighLayerCompatibility,
+ &ett_inap_extention_data,
/*--- Included file: packet-inap-ettarr.c ---*/
#line 1 "../../asn1/inap/packet-inap-ettarr.c"
@@ -11911,7 +11914,7 @@ void proto_register_inap(void) {
&ett_inap_InvokeId,
/*--- End of included file: packet-inap-ettarr.c ---*/
-#line 218 "../../asn1/inap/packet-inap-template.c"
+#line 220 "../../asn1/inap/packet-inap-template.c"
};
static ei_register_info ei[] = {
diff --git a/epan/dissectors/packet-isdn-sup.c b/epan/dissectors/packet-isdn-sup.c
index e4ebb171bc..1fc58092ef 100644
--- a/epan/dissectors/packet-isdn-sup.c
+++ b/epan/dissectors/packet-isdn-sup.c
@@ -35,7 +35,7 @@
#include <glib.h>
#include <epan/packet.h>
-
+#include <epan/expert.h>
#include "packet-ber.h"
@@ -404,6 +404,9 @@ static gint ett_isdn_sup_Call_T_FPHArg = -1;
/*--- End of included file: packet-isdn-sup-ett.c ---*/
#line 93 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
+static expert_field ei_isdn_sup_unsupported_arg_type = EI_INIT;
+static expert_field ei_isdn_sup_unsupported_result_type = EI_INIT;
+static expert_field ei_isdn_sup_unsupported_error_type = EI_INIT;
/* Preference settings default */
@@ -2498,7 +2501,7 @@ static int dissect_Call_T_FPHArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
/*--- End of included file: packet-isdn-sup-fn.c ---*/
-#line 100 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
+#line 103 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
static const isdn_sup_op_t isdn_sup_op_tab[] = {
@@ -2535,7 +2538,7 @@ static const isdn_sup_op_t isdn_sup_op_tab[] = {
/* userUserService */ { 1, dissect_UserUserServiceArg_PDU, NULL },
/*--- End of included file: packet-isdn-sup-table11.c ---*/
-#line 103 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
+#line 106 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
};
@@ -2550,7 +2553,7 @@ static const isdn_sup_global_op_t isdn_sup_global_op_tab[] = {
/* call-T-FPH */ { fPHOID".4", dissect_Call_T_FPHArg_PDU, NULL },
/*--- End of included file: packet-isdn-sup-table31.c ---*/
-#line 109 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
+#line 112 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
};
static const isdn_sup_err_t isdn_sup_err_tab[] = {
@@ -2589,7 +2592,7 @@ static const isdn_sup_err_t isdn_sup_err_tab[] = {
/* rejectedByTheUser */ { 2, NULL },
/*--- End of included file: packet-isdn-sup-table21.c ---*/
-#line 113 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
+#line 116 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
};
@@ -2657,7 +2660,7 @@ dissect_isdn_sup_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
offset = op_ptr->arg_pdu(tvb, pinfo, isdn_sup_tree, NULL);
else
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(isdn_sup_tree, tvb, offset, -1, "UNSUPPORTED ARGUMENT TYPE (ETSI Sup)");
+ proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_error_type, tvb, offset, -1);
offset += tvb_reported_length_remaining(tvb, offset);
}
@@ -2706,7 +2709,7 @@ dissect_isdn_sup_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
offset = op_ptr->res_pdu(tvb, pinfo, isdn_sup_tree, NULL);
else
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(isdn_sup_tree, tvb, offset, -1, "UNSUPPORTED RESULT TYPE (ETSI sup)");
+ proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_result_type, tvb, offset, -1);
offset += tvb_reported_length_remaining(tvb, offset);
}
@@ -2756,7 +2759,7 @@ dissect_isdn_sup_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
offset = err_ptr->err_pdu(tvb, pinfo, isdn_sup_tree, NULL);
else
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(isdn_sup_tree, tvb, offset, -1, "UNSUPPORTED ERROR TYPE (ETSI sup)");
+ proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_error_type, tvb, offset, -1);
offset += tvb_reported_length_remaining(tvb, offset);
}
@@ -3451,7 +3454,7 @@ void proto_register_isdn_sup(void) {
NULL, HFILL }},
/*--- End of included file: packet-isdn-sup-hfarr.c ---*/
-#line 346 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
+#line 349 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
};
/* List of subtrees */
@@ -3527,14 +3530,23 @@ void proto_register_isdn_sup(void) {
&ett_isdn_sup_Call_T_FPHArg,
/*--- End of included file: packet-isdn-sup-ettarr.c ---*/
-#line 353 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
+#line 356 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
};
- /* Register fields and subtrees */
- proto_register_field_array(proto_isdn_sup, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ static ei_register_info ei[] = {
+ { &ei_isdn_sup_unsupported_arg_type, { "isdn_sup.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (ETSI sup)", EXPFILL }},
+ { &ei_isdn_sup_unsupported_result_type, { "isdn_sup.unsupported.result_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED RESULT TYPE (ETSI sup)", EXPFILL }},
+ { &ei_isdn_sup_unsupported_error_type, { "isdn_sup.unsupported.error_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ERROR TYPE (ETSI sup)", EXPFILL }},
+ };
+
+ expert_module_t* expert_isdn_sup;
/* Register protocol */
proto_isdn_sup = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_isdn_sup, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ expert_isdn_sup = expert_register_protocol(proto_isdn_sup);
+ expert_register_field_array(expert_isdn_sup, ei, array_length(ei));
}
diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c
index 2fe4602b7f..1550ecd5d6 100644
--- a/epan/dissectors/packet-kerberos.c
+++ b/epan/dissectors/packet-kerberos.c
@@ -382,6 +382,8 @@ static gint ett_kerberos_ChangePasswdData = -1;
#line 148 "../../asn1/kerberos/packet-kerberos-template.c"
static expert_field ei_kerberos_decrypted_keytype = EI_INIT;
+static expert_field ei_kerberos_address = EI_INIT;
+static expert_field ei_krb_gssapi_dlglen = EI_INIT;
static dissector_handle_t krb4_handle=NULL;
@@ -406,7 +408,7 @@ static gboolean gbl_do_col_info;
#define KERBEROS_ADDR_TYPE_IPV6 24
/*--- End of included file: packet-kerberos-val.h ---*/
-#line 159 "../../asn1/kerberos/packet-kerberos-template.c"
+#line 161 "../../asn1/kerberos/packet-kerberos-template.c"
static void
call_kerberos_callbacks(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int tag, kerberos_callbacks *cb)
@@ -599,7 +601,7 @@ read_keytab_file(const char *filename)
guint8 *
-decrypt_krb5_data(proto_tree *tree, packet_info *pinfo,
+decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
int usage,
tvbuff_t *cryptotvb,
int keytype,
@@ -649,7 +651,6 @@ decrypt_krb5_data(proto_tree *tree, packet_info *pinfo,
"Decrypted keytype %d in frame %u using %s",
ek->keytype, pinfo->fd->num, ek->key_origin);
- proto_tree_add_text(tree, NULL, 0, 0, "[Decrypted using: %s]", ek->key_origin);
/* return a private g_malloced blob to the caller */
user_data=data.data;
if (datalen) {
@@ -795,8 +796,10 @@ decrypt_krb5_data(proto_tree *tree, packet_info *pinfo,
if((ret == 0) && (length>0)){
char *user_data;
-printf("woohoo decrypted keytype:%d in frame:%u\n", ek->keytype, pinfo->fd->num);
- proto_tree_add_text(tree, NULL, 0, 0, "[Decrypted using: %s]", ek->key_origin);
+ expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype,
+ "Decrypted keytype %d in frame %u using %s",
+ ek->keytype, pinfo->fd->num, ek->key_origin);
+
krb5_crypto_destroy(krb5_ctx, crypto);
/* return a private g_malloced blob to the caller */
user_data=g_memdup(data.data, data.length);
@@ -1842,7 +1845,8 @@ dissect_krb5_rfc1964_checksum(asn1_ctx_t *actx _U_, proto_tree *tree, tvbuff_t *
offset += 2;
if(dlglen!=tvb_reported_length_remaining(tvb, offset)){
- proto_tree_add_text(tree, tvb, 0, 0, "Error: DlgLen:%d is not the same as number of bytes remaining:%d", dlglen, tvb_captured_length_remaining(tvb, offset));
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_krb_gssapi_dlglen, tvb, 0, 0,
+ "Error: DlgLen:%d is not the same as number of bytes remaining:%d", dlglen, tvb_captured_length_remaining(tvb, offset));
return offset;
}
@@ -2476,7 +2480,7 @@ dissect_kerberos_T_address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
address_str = tvb_ip6_to_str(tvb, offset);
break;
default:
- proto_tree_add_text(tree, tvb, offset, len, "KRB Address: I dont know how to parse this type of address yet");
+ proto_tree_add_expert(tree, actx->pinfo, &ei_kerberos_address, tvb, offset, len);
address_str = NULL;
}
@@ -3905,7 +3909,7 @@ dissect_kerberos_ChangePasswdData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
/*--- End of included file: packet-kerberos-fn.c ---*/
-#line 1648 "../../asn1/kerberos/packet-kerberos-template.c"
+#line 1652 "../../asn1/kerberos/packet-kerberos-template.c"
/* Make wrappers around exported functions for now */
int
@@ -4039,16 +4043,14 @@ void
show_krb_recordmark(proto_tree *tree, tvbuff_t *tvb, gint start, guint32 krb_rm)
{
gint rec_len;
- proto_item *rm_item;
proto_tree *rm_tree;
if (tree == NULL)
return;
rec_len = kerberos_rm_to_reclen(krb_rm);
- rm_item = proto_tree_add_text(tree, tvb, start, 4,
- "Record Mark: %u %s", rec_len, plurality(rec_len, "byte", "bytes"));
- rm_tree = proto_item_add_subtree(rm_item, ett_krb_recordmark);
+ rm_tree = proto_tree_add_subtree_format(tree, tvb, start, 4, ett_krb_recordmark, NULL,
+ "Record Mark: %u %s", rec_len, plurality(rec_len, "byte", "bytes"));
proto_tree_add_boolean(rm_tree, hf_krb_rm_reserved, tvb, start, 4, krb_rm);
proto_tree_add_uint(rm_tree, hf_krb_rm_reclen, tvb, start, 4, krb_rm);
}
@@ -4861,7 +4863,7 @@ void proto_register_kerberos(void) {
NULL, HFILL }},
/*--- End of included file: packet-kerberos-hfarr.c ---*/
-#line 1947 "../../asn1/kerberos/packet-kerberos-template.c"
+#line 1949 "../../asn1/kerberos/packet-kerberos-template.c"
};
/* List of subtrees */
@@ -4926,11 +4928,13 @@ void proto_register_kerberos(void) {
&ett_kerberos_ChangePasswdData,
/*--- End of included file: packet-kerberos-ettarr.c ---*/
-#line 1954 "../../asn1/kerberos/packet-kerberos-template.c"
+#line 1956 "../../asn1/kerberos/packet-kerberos-template.c"
};
static ei_register_info ei[] = {
{ &ei_kerberos_decrypted_keytype, { "kerberos.decrypted_keytype", PI_SECURITY, PI_CHAT, "Decryted keytype", EXPFILL }},
+ { &ei_kerberos_address, { "kerberos.address.unknown", PI_UNDECODED, PI_WARN, "KRB Address: I dont know how to parse this type of address yet", EXPFILL }},
+ { &ei_krb_gssapi_dlglen, { "kerberos.gssapi.dlglen.error", PI_MALFORMED, PI_ERROR, "DlgLen is not the same as number of bytes remaining", EXPFILL }},
};
expert_module_t* expert_krb;
diff --git a/epan/dissectors/packet-ldap.c b/epan/dissectors/packet-ldap.c
index 2bbd138f9a..ade52b0f73 100644
--- a/epan/dissectors/packet-ldap.c
+++ b/epan/dissectors/packet-ldap.c
@@ -194,6 +194,12 @@ static int hf_ldap_AccessMask_ADS_DELETE_TREE = -1;
static int hf_ldap_AccessMask_ADS_LIST_OBJECT = -1;
static int hf_ldap_AccessMask_ADS_CONTROL_ACCESS = -1;
static int hf_ldap_LDAPMessage_PDU = -1;
+static int hf_ldap_object_security_flag = -1;
+static int hf_ldap_ancestor_first_flag = -1;
+static int hf_ldap_public_data_only_flag = -1;
+static int hf_ldap_incremental_value_flag = -1;
+static int hf_ldap_oid = -1;
+static int hf_ldap_gssapi_encrypted_payload = -1;
/*--- Included file: packet-ldap-hf.c ---*/
@@ -341,7 +347,7 @@ static int hf_ldap_graceAuthNsRemaining = -1; /* INTEGER_0_maxInt */
static int hf_ldap_error = -1; /* T_error */
/*--- End of included file: packet-ldap-hf.c ---*/
-#line 191 "../../asn1/ldap/packet-ldap-template.c"
+#line 197 "../../asn1/ldap/packet-ldap-template.c"
/* Initialize the subtree pointers */
static gint ett_ldap = -1;
@@ -413,7 +419,7 @@ static gint ett_ldap_PasswordPolicyResponseValue = -1;
static gint ett_ldap_T_warning = -1;
/*--- End of included file: packet-ldap-ett.c ---*/
-#line 203 "../../asn1/ldap/packet-ldap-template.c"
+#line 209 "../../asn1/ldap/packet-ldap-template.c"
static expert_field ei_ldap_exceeded_filter_length = EI_INIT;
static expert_field ei_ldap_too_many_filter_elements = EI_INIT;
@@ -3435,19 +3441,19 @@ dissect_ldap_DirSyncFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
ett_ldap_DirSyncFlagsSubEntry, NULL, "%s: 0x%08x", hfinfo->name, val);
if (val & 0x1) {
- proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Object_Security");
+ proto_tree_add_boolean(subtree, hf_ldap_object_security_flag, tvb, otheroffset+1, len, TRUE);
}
if (val & 0x800) {
- proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Ancestor_First");
+ proto_tree_add_boolean(subtree, hf_ldap_ancestor_first_flag, tvb, otheroffset+1, len, TRUE);
}
if (val & 0x2000) {
- proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Public_Data_Only");
+ proto_tree_add_boolean(subtree, hf_ldap_public_data_only_flag, tvb, otheroffset+1, len, TRUE);
}
if (val & 0x80000000) {
- proto_tree_add_text(subtree, tvb, otheroffset+1, len, "Flag Incremental_Value");
+ proto_tree_add_boolean(subtree, hf_ldap_incremental_value_flag, tvb, otheroffset+1, len, TRUE);
}
} else {
- proto_tree_add_text(tree, tvb, otheroffset+len, len, "%s: 0", hfinfo->name);
+ proto_tree_add_uint(tree, hf_index, tvb, otheroffset+len, len, 0);
}
@@ -3797,7 +3803,7 @@ static void dissect_PasswordPolicyResponseValue_PDU(tvbuff_t *tvb _U_, packet_in
/*--- End of included file: packet-ldap-fn.c ---*/
-#line 885 "../../asn1/ldap/packet-ldap-template.c"
+#line 891 "../../asn1/ldap/packet-ldap-template.c"
static int dissect_LDAPMessage_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ldap_conv_info_t *ldap_info) {
int offset = 0;
@@ -4185,12 +4191,7 @@ static void
sasl_len - ver_len,
plurality(sasl_len - ver_len, "", "s"));
- if (sasl_tree) {
- proto_tree_add_text(sasl_tree, gssapi_tvb, ver_len, -1,
- "GSS-API Encrypted payload (%d byte%s)",
- sasl_len - ver_len,
- plurality(sasl_len - ver_len, "", "s"));
- }
+ proto_tree_add_item(sasl_tree, hf_ldap_gssapi_encrypted_payload, gssapi_tvb, ver_len, -1, ENC_NA);
}
}
} else {
@@ -4592,58 +4593,21 @@ dissect_ldap_oid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
oidname=oid_resolved_from_string(oid);
if(oidname){
- proto_tree_add_text(tree, tvb, 0, tvb_captured_length(tvb), "OID: %s (%s)",oid,oidname);
+ proto_tree_add_string_format_value(tree, hf_ldap_oid, tvb, 0, tvb_captured_length(tvb), oid, "%s (%s)",oid,oidname);
} else {
- proto_tree_add_text(tree, tvb, 0, tvb_captured_length(tvb), "OID: %s",oid);
+ proto_tree_add_string(tree, hf_ldap_oid, tvb, 0, tvb_captured_length(tvb), oid);
}
}
#define LDAP_ACCESSMASK_ADS_CREATE_CHILD 0x00000001
-static const true_false_string ldap_AccessMask_ADS_CREATE_CHILD_tfs = {
- "ADS CREATE CHILD is SET",
- "Ads create child is NOT set",
-};
-
#define LDAP_ACCESSMASK_ADS_DELETE_CHILD 0x00000002
-static const true_false_string ldap_AccessMask_ADS_DELETE_CHILD_tfs = {
- "ADS DELETE CHILD is SET",
- "Ads delete child is NOT set",
-};
#define LDAP_ACCESSMASK_ADS_LIST 0x00000004
-static const true_false_string ldap_AccessMask_ADS_LIST_tfs = {
- "ADS LIST is SET",
- "Ads list is NOT set",
-};
#define LDAP_ACCESSMASK_ADS_SELF_WRITE 0x00000008
-static const true_false_string ldap_AccessMask_ADS_SELF_WRITE_tfs = {
- "ADS SELF WRITE is SET",
- "Ads self write is NOT set",
-};
#define LDAP_ACCESSMASK_ADS_READ_PROP 0x00000010
-static const true_false_string ldap_AccessMask_ADS_READ_PROP_tfs = {
- "ADS READ PROP is SET",
- "Ads read prop is NOT set",
-};
#define LDAP_ACCESSMASK_ADS_WRITE_PROP 0x00000020
-static const true_false_string ldap_AccessMask_ADS_WRITE_PROP_tfs = {
- "ADS WRITE PROP is SET",
- "Ads write prop is NOT set",
-};
#define LDAP_ACCESSMASK_ADS_DELETE_TREE 0x00000040
-static const true_false_string ldap_AccessMask_ADS_DELETE_TREE_tfs = {
- "ADS DELETE TREE is SET",
- "Ads delete tree is NOT set",
-};
#define LDAP_ACCESSMASK_ADS_LIST_OBJECT 0x00000080
-static const true_false_string ldap_AccessMask_ADS_LIST_OBJECT_tfs = {
- "ADS LIST OBJECT is SET",
- "Ads list object is NOT set",
-};
#define LDAP_ACCESSMASK_ADS_CONTROL_ACCESS 0x00000100
-static const true_false_string ldap_AccessMask_ADS_CONTROL_ACCESS_tfs = {
- "ADS CONTROL ACCESS is SET",
- "Ads control access is NOT set",
-};
static void
ldap_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
@@ -5124,35 +5088,55 @@ void proto_register_ldap(void) {
NULL, 0, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_CREATE_CHILD,
- { "Create Child", "ldap.AccessMask.ADS_CREATE_CHILD", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_CREATE_CHILD_tfs), LDAP_ACCESSMASK_ADS_CREATE_CHILD, NULL, HFILL }},
+ { "Ads Create Child", "ldap.AccessMask.ADS_CREATE_CHILD", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_CREATE_CHILD, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_DELETE_CHILD,
- { "Delete Child", "ldap.AccessMask.ADS_DELETE_CHILD", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_DELETE_CHILD_tfs), LDAP_ACCESSMASK_ADS_DELETE_CHILD, NULL, HFILL }},
+ { "Ads Delete Child", "ldap.AccessMask.ADS_DELETE_CHILD", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_DELETE_CHILD, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_LIST,
- { "List", "ldap.AccessMask.ADS_LIST", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_LIST_tfs), LDAP_ACCESSMASK_ADS_LIST, NULL, HFILL }},
+ { "Ads List", "ldap.AccessMask.ADS_LIST", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_LIST, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_SELF_WRITE,
- { "Self Write", "ldap.AccessMask.ADS_SELF_WRITE", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_SELF_WRITE_tfs), LDAP_ACCESSMASK_ADS_SELF_WRITE, NULL, HFILL }},
+ { "Ads Self Write", "ldap.AccessMask.ADS_SELF_WRITE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_SELF_WRITE, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_READ_PROP,
- { "Read Prop", "ldap.AccessMask.ADS_READ_PROP", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_READ_PROP_tfs), LDAP_ACCESSMASK_ADS_READ_PROP, NULL, HFILL }},
+ { "Ads Read Prop", "ldap.AccessMask.ADS_READ_PROP", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_READ_PROP, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_WRITE_PROP,
- { "Write Prop", "ldap.AccessMask.ADS_WRITE_PROP", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_WRITE_PROP_tfs), LDAP_ACCESSMASK_ADS_WRITE_PROP, NULL, HFILL }},
+ { "Ads Write Prop", "ldap.AccessMask.ADS_WRITE_PROP", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_WRITE_PROP, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_DELETE_TREE,
- { "Delete Tree", "ldap.AccessMask.ADS_DELETE_TREE", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_DELETE_TREE_tfs), LDAP_ACCESSMASK_ADS_DELETE_TREE, NULL, HFILL }},
+ { "Ads Delete Tree", "ldap.AccessMask.ADS_DELETE_TREE", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_DELETE_TREE, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_LIST_OBJECT,
- { "List Object", "ldap.AccessMask.ADS_LIST_OBJECT", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_LIST_OBJECT_tfs), LDAP_ACCESSMASK_ADS_LIST_OBJECT, NULL, HFILL }},
+ { "Ads List Object", "ldap.AccessMask.ADS_LIST_OBJECT", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_LIST_OBJECT, NULL, HFILL }},
{ &hf_ldap_AccessMask_ADS_CONTROL_ACCESS,
- { "Control Access", "ldap.AccessMask.ADS_CONTROL_ACCESS", FT_BOOLEAN, 32, TFS(&ldap_AccessMask_ADS_CONTROL_ACCESS_tfs), LDAP_ACCESSMASK_ADS_CONTROL_ACCESS, NULL, HFILL }},
+ { "Ads Control Access", "ldap.AccessMask.ADS_CONTROL_ACCESS", FT_BOOLEAN, 32, TFS(&tfs_set_notset), LDAP_ACCESSMASK_ADS_CONTROL_ACCESS, NULL, HFILL }},
{ &hf_ldap_LDAPMessage_PDU,
{ "LDAPMessage", "ldap.LDAPMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+ { &hf_ldap_object_security_flag,
+ { "Flag Object_Security", "ldap.object_security_flag", FT_BOOLEAN, 32, NULL, 0x00000001, NULL, HFILL }},
+
+ { &hf_ldap_ancestor_first_flag,
+ { "Flag Ancestor_First", "ldap.ancestor_first_flag", FT_BOOLEAN, 32, NULL, 0x00000800, NULL, HFILL }},
+
+ { &hf_ldap_public_data_only_flag,
+ { "Flag Public_Data_Only", "ldap.public_data_only_flag", FT_BOOLEAN, 32, NULL, 0x00002000, NULL, HFILL }},
+
+ { &hf_ldap_incremental_value_flag,
+ { "Flag Incremental_Value", "ldap.incremental_value_flag", FT_BOOLEAN, 32, NULL, 0x80000000, NULL, HFILL }},
+
+ { &hf_ldap_oid,
+ { "OID", "ldap.oid", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_ldap_gssapi_encrypted_payload,
+ { "GSS-API Encrypted payload", "ldap.gssapi_encrypted_payload", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
/*--- Included file: packet-ldap-hfarr.c ---*/
#line 1 "../../asn1/ldap/packet-ldap-hfarr.c"
@@ -5722,7 +5706,7 @@ void proto_register_ldap(void) {
NULL, HFILL }},
/*--- End of included file: packet-ldap-hfarr.c ---*/
-#line 2241 "../../asn1/ldap/packet-ldap-template.c"
+#line 2225 "../../asn1/ldap/packet-ldap-template.c"
};
/* List of subtrees */
@@ -5796,7 +5780,7 @@ void proto_register_ldap(void) {
&ett_ldap_T_warning,
/*--- End of included file: packet-ldap-ettarr.c ---*/
-#line 2255 "../../asn1/ldap/packet-ldap-template.c"
+#line 2239 "../../asn1/ldap/packet-ldap-template.c"
};
/* UAT for header fields */
static uat_field_t custom_attribute_types_uat_fields[] = {
@@ -5962,7 +5946,7 @@ proto_reg_handoff_ldap(void)
/*--- End of included file: packet-ldap-dis-tab.c ---*/
-#line 2404 "../../asn1/ldap/packet-ldap-template.c"
+#line 2388 "../../asn1/ldap/packet-ldap-template.c"
}
diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c
index 5c91cb51c1..059bd85a6b 100644
--- a/epan/dissectors/packet-lte-rrc.c
+++ b/epan/dissectors/packet-lte-rrc.c
@@ -2465,6 +2465,10 @@ static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1 = -1;
static int hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2 = -1;
static int hf_lte_rrc_sr_config_periodicity = -1;
static int hf_lte_rrc_sr_config_subframe_offset = -1;
+static int hf_lte_rrc_cdma_time = -1;
+static int hf_lte_rrc_utc_time = -1;
+static int hf_lte_rrc_local_time = -1;
+static int hf_lte_rrc_absolute_time = -1;
/* Initialize the subtree pointers */
static int ett_lte_rrc = -1;
@@ -3574,7 +3578,7 @@ static gint ett_lte_rrc_CandidateCellInfoList_r10 = -1;
static gint ett_lte_rrc_CandidateCellInfo_r10 = -1;
/*--- End of included file: packet-lte-rrc-ett.c ---*/
-#line 197 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 201 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
static gint ett_lte_rrc_featureGroupIndicators = -1;
static gint ett_lte_rrc_featureGroupIndRel9Add = -1;
@@ -8583,8 +8587,8 @@ dissect_lte_rrc_T_synchronousSystemTime(tvbuff_t *tvb _U_, int offset _U_, asn1_
bits = tvb_get_bits64(sync_system_time_tvb, 0, 39, ENC_BIG_ENDIAN);
ts.secs = (time_t)(bits/100) + 315964800; /* CDMA2000 epoch is 00:00:00 (midnight) UTC on 1980-01-06 */
ts.nsecs = (int)(bits%100)*10000000;
- proto_tree_add_text(subtree, sync_system_time_tvb, 0, -1, "CDMA time: %s", abs_time_to_str(wmem_packet_scope(), &ts, ABSOLUTE_TIME_UTC, FALSE));
- proto_tree_add_text(subtree, sync_system_time_tvb, 0, -1, "Local time: %s", abs_time_to_str(wmem_packet_scope(), &ts, ABSOLUTE_TIME_LOCAL, TRUE));
+ proto_tree_add_time(subtree, hf_lte_rrc_cdma_time, sync_system_time_tvb, 0, -1, &ts);
+ proto_tree_add_time(subtree, hf_lte_rrc_local_time, sync_system_time_tvb, 0, -1, &ts);
}
return offset;
@@ -8608,8 +8612,8 @@ dissect_lte_rrc_T_asynchronousSystemTime(tvbuff_t *tvb _U_, int offset _U_, asn1
bits = tvb_get_bits64(async_system_time_tvb, 0, 49, ENC_BIG_ENDIAN);
ts.secs = (time_t)((bits*8)/1228800) + 315964800; /* CDMA2000 epoch is 00:00:00 (midnight) UTC on 1980-01-06 */
ts.nsecs = (int)(((bits%153600)*8*1000000000)/1228800);
- proto_tree_add_text(subtree, async_system_time_tvb, 0, -1, "CDMA time: %s", abs_time_to_str(wmem_packet_scope(), &ts, ABSOLUTE_TIME_UTC, FALSE));
- proto_tree_add_text(subtree, async_system_time_tvb, 0, -1, "Local time: %s", abs_time_to_str(wmem_packet_scope(), &ts, ABSOLUTE_TIME_LOCAL, TRUE));
+ proto_tree_add_time(subtree, hf_lte_rrc_cdma_time, async_system_time_tvb, 0, -1, &ts);
+ proto_tree_add_time(subtree, hf_lte_rrc_local_time, async_system_time_tvb, 0, -1,&ts);
}
return offset;
@@ -10285,10 +10289,8 @@ dissect_lte_rrc_T_timeInfoUTC_r11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_timeInfo);
ts.secs = (time_t)(timeInfo/100)-2208988800U; /* epoch is 00:00:00 (midnight) UTC on 1900-01-01 */
ts.nsecs = (int)(timeInfo%100)*10000000;
- proto_tree_add_text(subtree, tvb, old_offset>>3, (old_offset&0x07) ? 6 : 5,
- "UTC time: %s", abs_time_to_str(wmem_packet_scope(), &ts, ABSOLUTE_TIME_UTC, FALSE));
- proto_tree_add_text(subtree, tvb, old_offset>>3, (old_offset&0x07) ? 6 : 5,
- "Local time: %s", abs_time_to_str(wmem_packet_scope(), &ts, ABSOLUTE_TIME_LOCAL, TRUE));
+ proto_tree_add_time(subtree, hf_lte_rrc_utc_time, tvb, old_offset>>3, (old_offset&0x07) ? 6 : 5, &ts);
+ proto_tree_add_time(subtree, hf_lte_rrc_local_time, tvb, old_offset>>3, (old_offset&0x07) ? 6 : 5, &ts);
return offset;
}
@@ -25031,12 +25033,13 @@ dissect_lte_rrc_AbsoluteTimeInfo_r10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
if (abs_time_info_tvb) {
- const gchar *str;
+ const gchar *str, *hf_str;
proto_tree *subtree;
subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_absTimeInfo);
str = tvb_bcd_dig_to_wmem_packet_str(abs_time_info_tvb, 0, 6, NULL, FALSE);
- proto_tree_add_text(subtree, abs_time_info_tvb, 0, 6, "%c%c-%c%c-%c%c %c%c:%c%c:%c%c", str[0], str[1],
+ hf_str = wmem_strdup_printf(wmem_packet_scope(), "%c%c-%c%c-%c%c %c%c:%c%c:%c%c", str[0], str[1],
str[2], str[3], str[4], str[5], str[6], str[7], str[8], str[9], str[10], str[11]);
+ proto_tree_add_string(subtree, hf_lte_rrc_absolute_time, abs_time_info_tvb, 0, 6, hf_str);
}
return offset;
@@ -35344,7 +35347,7 @@ static int dissect_UEAssistanceInformation_r11_PDU(tvbuff_t *tvb _U_, packet_inf
/*--- End of included file: packet-lte-rrc-fn.c ---*/
-#line 2255 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 2259 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
static void
dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -44152,7 +44155,7 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
/*--- End of included file: packet-lte-rrc-hfarr.c ---*/
-#line 2402 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 2406 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
{ &hf_lte_rrc_eutra_cap_feat_group_ind_1,
{ "Indicator 1", "lte-rrc.eutra_cap_feat_group_ind_1",
@@ -44586,6 +44589,22 @@ void proto_register_lte_rrc(void) {
{ "Subframe Offset", "lte-rrc.sr_SubframeOffset",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_lte_rrc_cdma_time,
+ { "CDMA time", "lte-rrc.cdma_time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_utc_time,
+ { "UTC time", "lte-rrc.utc_time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_local_time,
+ { "Local time", "lte-rrc.local_time",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
+ NULL, HFILL }},
+ { &hf_lte_rrc_absolute_time,
+ { "Absolute time", "lte-rrc.absolute_time",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
};
/* List of subtrees */
@@ -45696,7 +45715,7 @@ void proto_register_lte_rrc(void) {
&ett_lte_rrc_CandidateCellInfo_r10,
/*--- End of included file: packet-lte-rrc-ettarr.c ---*/
-#line 2841 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 2861 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
&ett_lte_rrc_featureGroupIndicators,
&ett_lte_rrc_featureGroupIndRel9Add,
@@ -45765,7 +45784,7 @@ void proto_register_lte_rrc(void) {
/*--- End of included file: packet-lte-rrc-dis-reg.c ---*/
-#line 2894 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 2914 "../../asn1/lte-rrc/packet-lte-rrc-template.c"
register_init_routine(&lte_rrc_init_protocol);
}
diff --git a/epan/dissectors/packet-mms.c b/epan/dissectors/packet-mms.c
index 22070c6211..509423577c 100644
--- a/epan/dissectors/packet-mms.c
+++ b/epan/dissectors/packet-mms.c
@@ -944,6 +944,7 @@ static gint ett_mms_FileAttributes = -1;
static expert_field ei_mms_mal_timeofday_encoding = EI_INIT;
static expert_field ei_mms_mal_utctime_encoding = EI_INIT;
+static expert_field ei_mms_zero_pdu = EI_INIT;
/*--- Included file: packet-mms-fn.c ---*/
@@ -7047,7 +7048,7 @@ dissect_mms_MMSpdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
/*--- End of included file: packet-mms-fn.c ---*/
-#line 56 "../../asn1/mms/packet-mms-template.c"
+#line 57 "../../asn1/mms/packet-mms-template.c"
/*
* Dissect MMS PDUs inside a PPDU.
@@ -7073,7 +7074,7 @@ dissect_mms(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
old_offset=offset;
offset=dissect_mms_MMSpdu(FALSE, tvb, offset, &asn1_ctx , tree, -1);
if(offset == old_offset){
- proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte MMS PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_mms_zero_pdu, tvb, offset, -1);
break;
}
}
@@ -9755,7 +9756,7 @@ void proto_register_mms(void) {
NULL, HFILL }},
/*--- End of included file: packet-mms-hfarr.c ---*/
-#line 95 "../../asn1/mms/packet-mms-template.c"
+#line 96 "../../asn1/mms/packet-mms-template.c"
};
/* List of subtrees */
@@ -9974,12 +9975,13 @@ void proto_register_mms(void) {
&ett_mms_FileAttributes,
/*--- End of included file: packet-mms-ettarr.c ---*/
-#line 101 "../../asn1/mms/packet-mms-template.c"
+#line 102 "../../asn1/mms/packet-mms-template.c"
};
static ei_register_info ei[] = {
{ &ei_mms_mal_timeofday_encoding, { "mms.malformed.timeofday_encoding", PI_MALFORMED, PI_WARN, "BER Error: malformed TimeOfDay encoding", EXPFILL }},
{ &ei_mms_mal_utctime_encoding, { "mms.malformed.utctime", PI_MALFORMED, PI_WARN, "BER Error: malformed IEC61850 UTCTime encoding", EXPFILL }},
+ { &ei_mms_zero_pdu, { "mms.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte MMS PDU", EXPFILL }},
};
expert_module_t* expert_mms;
diff --git a/epan/dissectors/packet-p1.c b/epan/dissectors/packet-p1.c
index f7fe6d70b7..ad4d907b16 100644
--- a/epan/dissectors/packet-p1.c
+++ b/epan/dissectors/packet-p1.c
@@ -842,6 +842,8 @@ static expert_field ei_p1_unknown_extension_attribute_type = EI_INIT;
static expert_field ei_p1_unknown_standard_extension = EI_INIT;
static expert_field ei_p1_unknown_built_in_content_type = EI_INIT;
static expert_field ei_p1_unknown_tokendata_type = EI_INIT;
+static expert_field ei_p1_unsupported_pdu = EI_INIT;
+static expert_field ei_p1_zero_pdu = EI_INIT;
/* Dissector tables */
static dissector_table_t p1_extension_dissector_table;
@@ -892,7 +894,7 @@ static const value_string p3_err_code_string_vals[] = {
/*--- End of included file: packet-p1-table.c ---*/
-#line 88 "../../asn1/p1/packet-p1-template.c"
+#line 90 "../../asn1/p1/packet-p1-template.c"
typedef struct p1_address_ctx {
gboolean do_address;
@@ -8188,7 +8190,7 @@ static void dissect_SecurityClassification_PDU(tvbuff_t *tvb _U_, packet_info *p
/*--- End of included file: packet-p1-fn.c ---*/
-#line 149 "../../asn1/p1/packet-p1-template.c"
+#line 151 "../../asn1/p1/packet-p1-template.c"
/*--- Included file: packet-p1-table11.c ---*/
@@ -8220,7 +8222,7 @@ static const ros_opr_t p3_opr_tab[] = {
/*--- End of included file: packet-p1-table11.c ---*/
-#line 151 "../../asn1/p1/packet-p1-template.c"
+#line 153 "../../asn1/p1/packet-p1-template.c"
/*--- Included file: packet-p1-table21.c ---*/
#line 1 "../../asn1/p1/packet-p1-table21.c"
@@ -8265,7 +8267,7 @@ static const ros_err_t p3_err_tab[] = {
/*--- End of included file: packet-p1-table21.c ---*/
-#line 152 "../../asn1/p1/packet-p1-template.c"
+#line 154 "../../asn1/p1/packet-p1-template.c"
static const ros_info_t p3_ros_info = {
"P3",
@@ -8388,7 +8390,7 @@ dissect_p1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* dat
hf_p1_index = hf_p1_MTS_APDU_PDU;
break;
default:
- proto_tree_add_text(tree, tvb, offset, -1,"Unsupported P1 PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_p1_unsupported_pdu, tvb, offset, -1);
return tvb_captured_length(tvb);
}
@@ -8398,7 +8400,7 @@ dissect_p1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* dat
old_offset=offset;
offset=(*p1_dissector)(FALSE, tvb, offset, &asn1_ctx , tree, hf_p1_index);
if(offset == old_offset){
- proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte P1 PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_p1_zero_pdu, tvb, offset, -1);
break;
}
}
@@ -10692,7 +10694,7 @@ void proto_register_p1(void) {
NULL, HFILL }},
/*--- End of included file: packet-p1-hfarr.c ---*/
-#line 318 "../../asn1/p1/packet-p1-template.c"
+#line 320 "../../asn1/p1/packet-p1-template.c"
};
/* List of subtrees */
@@ -10891,7 +10893,7 @@ void proto_register_p1(void) {
&ett_p1_SEQUENCE_SIZE_1_ub_recipients_OF_PerRecipientProbeSubmissionFields,
/*--- End of included file: packet-p1-ettarr.c ---*/
-#line 331 "../../asn1/p1/packet-p1-template.c"
+#line 333 "../../asn1/p1/packet-p1-template.c"
};
static ei_register_info ei[] = {
@@ -10899,6 +10901,8 @@ void proto_register_p1(void) {
{ &ei_p1_unknown_standard_extension, { "p1.unknown.standard_extension", PI_UNDECODED, PI_WARN, "Unknown standard-extension", EXPFILL }},
{ &ei_p1_unknown_built_in_content_type, { "p1.unknown.built_in_content_type", PI_UNDECODED, PI_WARN, "P1 Unknown Content (unknown built-in content-type)", EXPFILL }},
{ &ei_p1_unknown_tokendata_type, { "p1.unknown.tokendata_type", PI_UNDECODED, PI_WARN, "Unknown tokendata-type", EXPFILL }},
+ { &ei_p1_unsupported_pdu, { "p1.unsupported_pdu", PI_UNDECODED, PI_WARN, "Unsupported P1 PDU", EXPFILL }},
+ { &ei_p1_zero_pdu, { "p1.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte P1 PDU", EXPFILL }},
};
expert_module_t* expert_p1;
@@ -11095,7 +11099,7 @@ void proto_reg_handoff_p1(void) {
/*--- End of included file: packet-p1-dis-tab.c ---*/
-#line 377 "../../asn1/p1/packet-p1-template.c"
+#line 381 "../../asn1/p1/packet-p1-template.c"
/* APPLICATION CONTEXT */
diff --git a/epan/dissectors/packet-pkcs12.c b/epan/dissectors/packet-pkcs12.c
index 97e72680f6..11d70e31a7 100644
--- a/epan/dissectors/packet-pkcs12.c
+++ b/epan/dissectors/packet-pkcs12.c
@@ -37,6 +37,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/oids.h>
#include <epan/asn1.h>
#include <epan/prefs.h>
@@ -73,6 +74,9 @@ static int proto_pkcs12 = -1;
static int hf_pkcs12_X509Certificate_PDU = -1;
static gint ett_decrypted_pbe = -1;
+static expert_field ei_pkcs12_octet_string_expected = EI_INIT;
+
+
static const char *object_identifier_id = NULL;
static int iteration_count = 0;
static tvbuff_t *salt = NULL;
@@ -142,7 +146,7 @@ static int hf_pkcs12_encryptionScheme = -1; /* AlgorithmIdentifier */
static int hf_pkcs12_messageAuthScheme = -1; /* AlgorithmIdentifier */
/*--- End of included file: packet-pkcs12-hf.c ---*/
-#line 79 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 83 "../../asn1/pkcs12/packet-pkcs12-template.c"
/* Initialize the subtree pointers */
@@ -170,7 +174,7 @@ static gint ett_pkcs12_PBES2Params = -1;
static gint ett_pkcs12_PBMAC1Params = -1;
/*--- End of included file: packet-pkcs12-ett.c ---*/
-#line 82 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 86 "../../asn1/pkcs12/packet-pkcs12-template.c"
static void append_oid(proto_tree *tree, const char *oid)
{
@@ -1133,7 +1137,7 @@ static void dissect_PBMAC1Params_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
/*--- End of included file: packet-pkcs12-fn.c ---*/
-#line 390 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 394 "../../asn1/pkcs12/packet-pkcs12-template.c"
static int strip_octet_string(tvbuff_t *tvb)
{
@@ -1165,7 +1169,7 @@ static void dissect_AuthenticatedSafe_OCTETSTRING_PDU(tvbuff_t *tvb, packet_info
if((offset = strip_octet_string(tvb)) > 0)
dissect_pkcs12_AuthenticatedSafe(FALSE, tvb, offset, &asn1_ctx, tree, hf_pkcs12_AuthenticatedSafe_PDU);
else
- proto_tree_add_text(tree, tvb, 0, 1, "BER Error: OCTET STRING expected");
+ proto_tree_add_expert(tree, pinfo, &ei_pkcs12_octet_string_expected, tvb, 0, 1);
}
static void dissect_SafeContents_OCTETSTRING_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -1188,7 +1192,7 @@ static void dissect_X509Certificate_OCTETSTRING_PDU(tvbuff_t *tvb, packet_info *
if((offset = strip_octet_string(tvb)) > 0)
dissect_x509af_Certificate(FALSE, tvb, offset, &asn1_ctx, tree, hf_pkcs12_X509Certificate_PDU);
else
- proto_tree_add_text(tree, tvb, 0, 1, "BER Error: OCTET STRING expected");
+ proto_tree_add_expert(tree, pinfo, &ei_pkcs12_octet_string_expected, tvb, 0, 1);
}
/*--- proto_register_pkcs12 ----------------------------------------------*/
@@ -1421,7 +1425,7 @@ void proto_register_pkcs12(void) {
"AlgorithmIdentifier", HFILL }},
/*--- End of included file: packet-pkcs12-hfarr.c ---*/
-#line 457 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 461 "../../asn1/pkcs12/packet-pkcs12-template.c"
};
/* List of subtrees */
@@ -1452,9 +1456,14 @@ void proto_register_pkcs12(void) {
&ett_pkcs12_PBMAC1Params,
/*--- End of included file: packet-pkcs12-ettarr.c ---*/
-#line 463 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 467 "../../asn1/pkcs12/packet-pkcs12-template.c"
};
+ static ei_register_info ei[] = {
+ { &ei_pkcs12_octet_string_expected, { "pkcs12.octet_string_expected", PI_PROTOCOL, PI_WARN, "BER Error: OCTET STRING expected", EXPFILL }},
+ };
+
module_t *pkcs12_module;
+ expert_module_t* expert_pkcs12;
/* Register protocol */
proto_pkcs12 = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -1462,6 +1471,8 @@ void proto_register_pkcs12(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_pkcs12, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_pkcs12 = expert_register_protocol(proto_pkcs12);
+ expert_register_field_array(expert_pkcs12, ei, array_length(ei));
/* Register preferences */
pkcs12_module = prefs_register_protocol(proto_pkcs12, NULL);
@@ -1513,7 +1524,7 @@ void proto_reg_handoff_pkcs12(void) {
/*--- End of included file: packet-pkcs12-dis-tab.c ---*/
-#line 495 "../../asn1/pkcs12/packet-pkcs12-template.c"
+#line 506 "../../asn1/pkcs12/packet-pkcs12-template.c"
register_ber_oid_dissector("1.2.840.113549.1.9.22.1", dissect_X509Certificate_OCTETSTRING_PDU, proto_pkcs12, "x509Certificate");
diff --git a/epan/dissectors/packet-pktc.c b/epan/dissectors/packet-pktc.c
index a4ec15e102..74de47fb98 100644
--- a/epan/dissectors/packet-pktc.c
+++ b/epan/dissectors/packet-pktc.c
@@ -172,7 +172,7 @@ static const value_string pktc_mtafqdn_msgtype_vals[] = {
};
static int
-dissect_pktc_app_specific_data(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 doi, guint8 kmmid)
+dissect_pktc_app_specific_data(packet_info *pinfo, proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 doi, guint8 kmmid)
{
int old_offset=offset;
proto_tree *tree;
@@ -200,7 +200,7 @@ dissect_pktc_app_specific_data(packet_info *pinfo _U_, proto_tree *parent_tree,
/* snmpEngineID */
engineid_item = proto_tree_add_item(tree, hf_pktc_snmpEngineID, tvb, offset, len, ENC_NA);
engineid_tree = proto_item_add_subtree(engineid_item, ett_pktc_engineid);
- dissect_snmp_engineid(engineid_tree, tvb, offset, len);
+ dissect_snmp_engineid(engineid_tree, pinfo, tvb, offset, len);
offset+=len;
/* boots */
diff --git a/epan/dissectors/packet-pres.c b/epan/dissectors/packet-pres.c
index 4ba5f560e9..b86c6cbf5c 100644
--- a/epan/dissectors/packet-pres.c
+++ b/epan/dissectors/packet-pres.c
@@ -229,6 +229,8 @@ static gint ett_pres_UD_type = -1;
#line 98 "../../asn1/pres/packet-pres-template.c"
static expert_field ei_pres_dissector_not_available = EI_INIT;
+static expert_field ei_pres_wrong_spdu_type = EI_INIT;
+static expert_field ei_pres_invalid_offset = EI_INIT;
UAT_DEC_CB_DEF(pres_users, ctx_id, pres_user_t)
UAT_CSTRING_CB_DEF(pres_users, oid, pres_user_t)
@@ -1358,7 +1360,7 @@ static void dissect_UD_type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto
/*--- End of included file: packet-pres-fn.c ---*/
-#line 225 "../../asn1/pres/packet-pres-template.c"
+#line 227 "../../asn1/pres/packet-pres-template.c"
/*
@@ -1375,14 +1377,13 @@ dissect_ppdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, st
/* do we have spdu type from the session dissector? */
if( local_session == NULL ){
- proto_tree_add_text(tree, tvb, offset, -1,
- "Internal error:can't get spdu type from session dissector.");
+ proto_tree_add_expert(tree, pinfo, &ei_pres_wrong_spdu_type, tvb, offset, -1);
return 0;
}
session = local_session;
if(session->spdu_type == 0 ){
- proto_tree_add_text(tree, tvb, offset, -1,
+ proto_tree_add_expert_format(tree, pinfo, &ei_pres_wrong_spdu_type, tvb, offset, -1,
"Internal error:wrong spdu type %x from session dissector.",session->spdu_type);
return 0;
}
@@ -1442,8 +1443,8 @@ dissect_pres(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
/* do we have at least 4 bytes */
if (!tvb_bytes_exist(tvb, 0, 4)){
if (session && session->spdu_type != SES_MAJOR_SYNC_POINT) {
- proto_tree_add_text(parent_tree, tvb, offset,
- tvb_reported_length_remaining(tvb,offset),"User data");
+ proto_tree_add_item(parent_tree, hf_pres_user_data, tvb, offset,
+ tvb_reported_length_remaining(tvb,offset), ENC_NA);
return 0; /* no, it isn't a presentation PDU */
}
}
@@ -1485,8 +1486,8 @@ dissect_pres(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
if (oid) {
call_ber_oid_callback (oid, tvb, offset, pinfo, parent_tree, session);
} else {
- proto_tree_add_text(parent_tree, tvb, offset,
- tvb_reported_length_remaining(tvb,offset),"User data");
+ proto_tree_add_item(parent_tree, hf_pres_user_data, tvb, offset,
+ tvb_reported_length_remaining(tvb,offset), ENC_NA);
}
return tvb_captured_length(tvb);
}
@@ -1495,8 +1496,8 @@ dissect_pres(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
old_offset = offset;
offset = dissect_ppdu(tvb, offset, pinfo, parent_tree, session);
if(offset <= old_offset){
- proto_tree_add_text(parent_tree, tvb, offset, -1,"Invalid offset");
- THROW(ReportedBoundsError);
+ proto_tree_add_expert(parent_tree, pinfo, &ei_pres_invalid_offset, tvb, offset, -1);
+ break;
}
}
@@ -1531,7 +1532,6 @@ void proto_register_pres(void) {
NULL, HFILL }},
-
/*--- Included file: packet-pres-hfarr.c ---*/
#line 1 "../../asn1/pres/packet-pres-hfarr.c"
{ &hf_pres_UD_type_PDU,
@@ -1896,6 +1896,8 @@ void proto_register_pres(void) {
static ei_register_info ei[] = {
{ &ei_pres_dissector_not_available, { "pres.dissector_not_available", PI_UNDECODED, PI_WARN, "Dissector is not available", EXPFILL }},
+ { &ei_pres_wrong_spdu_type, { "pres.wrong_spdu_type", PI_PROTOCOL, PI_WARN, "Internal error:can't get spdu type from session dissector", EXPFILL }},
+ { &ei_pres_invalid_offset, { "pres.invalid_offset", PI_MALFORMED, PI_ERROR, "Internal error:can't get spdu type from session dissector", EXPFILL }},
};
static uat_field_t users_flds[] = {
diff --git a/epan/dissectors/packet-q932.c b/epan/dissectors/packet-q932.c
index 72a8a40fde..202e429ffd 100644
--- a/epan/dissectors/packet-q932.c
+++ b/epan/dissectors/packet-q932.c
@@ -32,6 +32,7 @@
#include "config.h"
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/strutil.h>
#include <epan/asn1.h>
#include <epan/prefs.h>
@@ -94,7 +95,7 @@ static int hf_q932_destinationEntity = -1; /* EntityType */
static int hf_q932_destinationEntityAddress = -1; /* AddressInformation */
/*--- End of included file: packet-q932-hf.c ---*/
-#line 48 "../../asn1/q932/packet-q932-template.c"
+#line 49 "../../asn1/q932/packet-q932-template.c"
/* Initialize the subtree pointers */
static gint ett_q932 = -1;
@@ -117,7 +118,13 @@ static gint ett_q932_UserSpecifiedSubaddress = -1;
static gint ett_q932_NetworkFacilityExtension_U = -1;
/*--- End of included file: packet-q932-ett.c ---*/
-#line 53 "../../asn1/q932/packet-q932-template.c"
+#line 54 "../../asn1/q932/packet-q932-template.c"
+
+static expert_field ei_q932_dse_not_supported = EI_INIT;
+static expert_field ei_q932_acse_not_supported = EI_INIT;
+static expert_field ei_q932_unknown_component = EI_INIT;
+static expert_field ei_q932_asn1_encoded = EI_INIT;
+
/* Preferences */
@@ -644,7 +651,7 @@ static void dissect_InterpretationComponent_PDU(tvbuff_t *tvb _U_, packet_info *
/*--- End of included file: packet-q932-fn.c ---*/
-#line 134 "../../asn1/q932/packet-q932-template.c"
+#line 141 "../../asn1/q932/packet-q932-template.c"
/*--- dissect_q932_facility_ie -------------------------------------------------------*/
static void
@@ -693,12 +700,12 @@ dissect_q932_facility_ie(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
case 17 : /* abort */
offset = dissect_ber_identifier(pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
offset = dissect_ber_length(pinfo, tree, tvb, offset, NULL, NULL);
- proto_tree_add_text(tree, tvb, offset, len, "DSE APDU (not supported)");
+ proto_tree_add_expert(tree, pinfo, &ei_q932_dse_not_supported, tvb, offset, len);
break;
default:
offset = dissect_ber_identifier(pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
offset = dissect_ber_length(pinfo, tree, tvb, offset, NULL, NULL);
- proto_tree_add_text(tree, tvb, offset, len, "Unknown Component");
+ proto_tree_add_expert(tree, pinfo, &ei_q932_unknown_component, tvb, offset, len);
}
break;
case BER_CLASS_APP:
@@ -711,18 +718,18 @@ dissect_q932_facility_ie(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
case 4 : /* abrt */
offset = dissect_ber_identifier(pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
offset = dissect_ber_length(pinfo, tree, tvb, offset, NULL, NULL);
- proto_tree_add_text(tree, tvb, offset, len, "ACSE APDU (not supported)");
+ proto_tree_add_expert(tree, pinfo, &ei_q932_acse_not_supported, tvb, offset, len);
break;
default:
offset = dissect_ber_identifier(pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
offset = dissect_ber_length(pinfo, tree, tvb, offset, NULL, NULL);
- proto_tree_add_text(tree, tvb, offset, len, "Unknown Component");
+ proto_tree_add_expert(tree, pinfo, &ei_q932_unknown_component, tvb, offset, len);
}
break;
default:
offset = dissect_ber_identifier(pinfo, tree, tvb, hoffset, NULL, NULL, NULL);
offset = dissect_ber_length(pinfo, tree, tvb, offset, NULL, NULL);
- proto_tree_add_text(tree, tvb, offset, len, "Unknown Component");
+ proto_tree_add_expert(tree, pinfo, &ei_q932_unknown_component, tvb, offset, len);
}
offset = eoffset;
}
@@ -730,10 +737,11 @@ dissect_q932_facility_ie(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
/*--- dissect_q932_ni_ie -------------------------------------------------------*/
static void
-dissect_q932_ni_ie(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length) {
+dissect_q932_ni_ie(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int length) {
int remain = length;
guint8 octet = 0;
guint32 value = 0;
+ proto_item* ti;
while ((remain > 0) && !(octet & 0x80)) {
octet = tvb_get_guint8(tvb, offset++);
@@ -741,10 +749,10 @@ dissect_q932_ni_ie(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree
value <<= 7;
value |= octet & 0x7F;
}
- proto_tree_add_uint(tree, hf_q932_nd, tvb, offset - (length - remain), length - remain, value);
+ ti = proto_tree_add_uint(tree, hf_q932_nd, tvb, offset - (length - remain), length - remain, value);
if (remain > 0) {
- proto_tree_add_text(tree, tvb, offset - remain, remain, "ASN.1 Encoded Data Structure(NOT IMPLEMENTED): %s", tvb_bytes_to_ep_str(tvb, offset - remain, remain));
+ expert_add_info(pinfo, ti, &ei_q932_asn1_encoded);
}
}
@@ -965,7 +973,7 @@ void proto_register_q932(void) {
"AddressInformation", HFILL }},
/*--- End of included file: packet-q932-hfarr.c ---*/
-#line 302 "../../asn1/q932/packet-q932-template.c"
+#line 310 "../../asn1/q932/packet-q932-template.c"
};
/* List of subtrees */
@@ -990,10 +998,18 @@ void proto_register_q932(void) {
&ett_q932_NetworkFacilityExtension_U,
/*--- End of included file: packet-q932-ettarr.c ---*/
-#line 309 "../../asn1/q932/packet-q932-template.c"
+#line 317 "../../asn1/q932/packet-q932-template.c"
+ };
+
+ static ei_register_info ei[] = {
+ { &ei_q932_dse_not_supported, { "q932.dse_not_supported", PI_UNDECODED, PI_WARN, "DSE APDU (not supported)", EXPFILL }},
+ { &ei_q932_acse_not_supported, { "q932.acse_not_supported", PI_UNDECODED, PI_WARN, "ACSE APDU (not supported)", EXPFILL }},
+ { &ei_q932_unknown_component, { "q932.unknown_component", PI_UNDECODED, PI_WARN, "Unknown Component", EXPFILL }},
+ { &ei_q932_asn1_encoded, { "q932.asn1_encoded", PI_UNDECODED, PI_WARN, "ASN.1 Encoded Data Structure(NOT IMPLEMENTED)", EXPFILL }},
};
- module_t *q932_module;
+ module_t *q932_module;
+ expert_module_t* expert_q932;
static const enum_val_t facility_encoding[] = {
{"Facility as QSIG", "Dissect facility as QSIG", 0},
@@ -1008,6 +1024,8 @@ void proto_register_q932(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_q932, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_q932 = expert_register_protocol(proto_q932);
+ expert_register_field_array(expert_q932, ei, array_length(ei));
rose_ctx_init(&q932_rose_ctx);
diff --git a/epan/dissectors/packet-qsig.c b/epan/dissectors/packet-qsig.c
index 80b66f805c..080c50a474 100644
--- a/epan/dissectors/packet-qsig.c
+++ b/epan/dissectors/packet-qsig.c
@@ -32,6 +32,7 @@
#include "config.h"
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/strutil.h>
#include <epan/asn1.h>
@@ -488,7 +489,7 @@ static const value_string qsig_str_operation[] = {
{ 120, "mIDMailboxID" },
/*--- End of included file: packet-qsig-table10.c ---*/
-#line 271 "../../asn1/qsig/packet-qsig-template.c"
+#line 272 "../../asn1/qsig/packet-qsig-template.c"
{ 0, NULL}
};
@@ -681,7 +682,7 @@ static const value_string qsig_str_error[] = {
{ 1008, "unspecified" },
/*--- End of included file: packet-qsig-table20.c ---*/
-#line 276 "../../asn1/qsig/packet-qsig-template.c"
+#line 277 "../../asn1/qsig/packet-qsig-template.c"
{ 0, NULL}
};
@@ -1576,7 +1577,7 @@ static int hf_qsig_mid_multipleExtension = -1; /* SEQUENCE_OF_Extension */
static int hf_qsig_mid_multipleExtension_item = -1; /* Extension */
/*--- End of included file: packet-qsig-hf.c ---*/
-#line 292 "../../asn1/qsig/packet-qsig-template.c"
+#line 293 "../../asn1/qsig/packet-qsig-template.c"
static int *hf_qsig_ie_type_arr[] = {
NULL,
@@ -2036,9 +2037,13 @@ static gint ett_qsig_mid_MIDExtensions = -1;
static gint ett_qsig_mid_SEQUENCE_OF_Extension = -1;
/*--- End of included file: packet-qsig-ett.c ---*/
-#line 309 "../../asn1/qsig/packet-qsig-template.c"
+#line 310 "../../asn1/qsig/packet-qsig-template.c"
static gint ett_cnq_PSS1InformationElement = -1;
+static expert_field ei_qsig_unsupported_arg_type = EI_INIT;
+static expert_field ei_qsig_unsupported_result_type = EI_INIT;
+static expert_field ei_qsig_unsupported_error_type = EI_INIT;
+
/* Preferences */
/* Subdissectors */
@@ -11926,7 +11931,7 @@ static int dissect_qsig_mid_Extension_PDU(tvbuff_t *tvb _U_, packet_info *pinfo
/*--- End of included file: packet-qsig-fn.c ---*/
-#line 325 "../../asn1/qsig/packet-qsig-template.c"
+#line 330 "../../asn1/qsig/packet-qsig-template.c"
typedef struct _qsig_op_t {
gint32 opcode;
@@ -12148,7 +12153,7 @@ static const qsig_op_t qsig_op_tab[] = {
/* mIDMailboxID */ { 120, dissect_qsig_mid_MIDMailboxIDArg_PDU, dissect_qsig_mid_MIDDummyRes_PDU },
/*--- End of included file: packet-qsig-table11.c ---*/
-#line 334 "../../asn1/qsig/packet-qsig-template.c"
+#line 339 "../../asn1/qsig/packet-qsig-template.c"
};
typedef struct _qsig_err_t {
@@ -12345,7 +12350,7 @@ static const qsig_err_t qsig_err_tab[] = {
/* unspecified */ { 1008, dissect_qsig_mid_Extension_PDU },
/*--- End of included file: packet-qsig-table21.c ---*/
-#line 343 "../../asn1/qsig/packet-qsig-template.c"
+#line 348 "../../asn1/qsig/packet-qsig-template.c"
};
static const qsig_op_t *get_op(gint32 opcode) {
@@ -12426,7 +12431,7 @@ dissect_qsig_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset = op_ptr->arg_pdu(tvb, pinfo, qsig_tree, NULL);
else
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(qsig_tree, tvb, offset, -1, "UNSUPPORTED ARGUMENT TYPE (QSIG)");
+ proto_tree_add_expert(tree, pinfo, &ei_qsig_unsupported_error_type, tvb, offset, -1);
offset += tvb_captured_length_remaining(tvb, offset);
}
@@ -12480,7 +12485,7 @@ dissect_qsig_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset = op_ptr->res_pdu(tvb, pinfo, qsig_tree, NULL);
else
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(qsig_tree, tvb, offset, -1, "UNSUPPORTED RESULT TYPE (QSIG)");
+ proto_tree_add_expert(tree, pinfo, &ei_qsig_unsupported_result_type, tvb, offset, -1);
offset += tvb_captured_length_remaining(tvb, offset);
}
@@ -12529,7 +12534,7 @@ dissect_qsig_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
offset = err_ptr->err_pdu(tvb, pinfo, qsig_tree, NULL);
else
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- proto_tree_add_text(qsig_tree, tvb, offset, -1, "UNSUPPORTED ERROR TYPE (QSIG)");
+ proto_tree_add_expert(tree, pinfo, &ei_qsig_unsupported_error_type, tvb, offset, -1);
offset += tvb_captured_length_remaining(tvb, offset);
}
@@ -15900,7 +15905,7 @@ void proto_register_qsig(void) {
NULL, HFILL }},
/*--- End of included file: packet-qsig-hfarr.c ---*/
-#line 660 "../../asn1/qsig/packet-qsig-template.c"
+#line 665 "../../asn1/qsig/packet-qsig-template.c"
};
/* List of subtrees */
@@ -16351,16 +16356,26 @@ void proto_register_qsig(void) {
&ett_qsig_mid_SEQUENCE_OF_Extension,
/*--- End of included file: packet-qsig-ettarr.c ---*/
-#line 668 "../../asn1/qsig/packet-qsig-template.c"
+#line 673 "../../asn1/qsig/packet-qsig-template.c"
&ett_cnq_PSS1InformationElement,
};
+ static ei_register_info ei[] = {
+ { &ei_qsig_unsupported_arg_type, { "qsig.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (QSIG)", EXPFILL }},
+ { &ei_qsig_unsupported_result_type, { "qsig.unsupported.result_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED RESULT TYPE (QSIG)", EXPFILL }},
+ { &ei_qsig_unsupported_error_type, { "qsig.unsupported.error_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ERROR TYPE (QSIG)", EXPFILL }},
+ };
+
+ expert_module_t* expert_qsig;
+
/* Register protocol and dissector */
proto_qsig = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
proto_register_field_array(proto_qsig, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_qsig = expert_register_protocol(proto_qsig);
+ expert_register_field_array(expert_qsig, ei, array_length(ei));
/* Register dissector tables */
extension_dissector_table = register_dissector_table("qsig.ext", "QSIG Extension", FT_STRING, BASE_NONE);
diff --git a/epan/dissectors/packet-ros.c b/epan/dissectors/packet-ros.c
index 7788d17e91..60a4b504ff 100644
--- a/epan/dissectors/packet-ros.c
+++ b/epan/dissectors/packet-ros.c
@@ -115,6 +115,15 @@ static int hf_ros_global = -1; /* OBJECT_IDENTIFIER */
/* Initialize the subtree pointers */
static gint ett_ros = -1;
+static gint ett_ros_unknown = -1;
+static gint ett_ros_invoke_argument = -1;
+static gint ett_ros_return_result = -1;
+static gint ett_ros_bind_invoke = -1;
+static gint ett_ros_bind_result = -1;
+static gint ett_ros_bind_error = -1;
+static gint ett_ros_unbind_invoke = -1;
+static gint ett_ros_unbind_result = -1;
+static gint ett_ros_unbind_error = -1;
/*--- Included file: packet-ros-ett.c ---*/
#line 1 "../../asn1/ros/packet-ros-ett.c"
@@ -129,7 +138,7 @@ static gint ett_ros_InvokeId = -1;
static gint ett_ros_Code = -1;
/*--- End of included file: packet-ros-ett.c ---*/
-#line 79 "../../asn1/ros/packet-ros-template.c"
+#line 88 "../../asn1/ros/packet-ros-template.c"
static expert_field ei_ros_dissector_oid_not_implemented = EI_INIT;
static expert_field ei_ros_unknown_ros_pdu = EI_INIT;
@@ -138,7 +147,6 @@ static dissector_table_t ros_oid_dissector_table=NULL;
static GHashTable *oid_table=NULL;
static GHashTable *protocol_table=NULL;
-static gint ett_ros_unknown = -1;
void
register_ros_oid_dissector_handle(const char *oid, dissector_handle_t dissector, int proto _U_, const char *name, gboolean uses_rtse)
@@ -491,12 +499,13 @@ static int
dissect_ros_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 30 "../../asn1/ros/ros.cnf"
char *oid;
+ proto_tree* subtree;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "invoke argument");
+ subtree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_ros_invoke_argument, NULL, "invoke argument");
- ros_match_call_response(tvb, actx->pinfo, tree, invokeid, TRUE);
+ ros_match_call_response(tvb, actx->pinfo, subtree, invokeid, TRUE);
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -532,14 +541,15 @@ dissect_ros_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_ros_OperationResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 47 "../../asn1/ros/ros.cnf"
+#line 48 "../../asn1/ros/ros.cnf"
char *oid;
+ proto_tree* subtree;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "return result");
+ subtree = proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_return_result, NULL, "return result");
- ros_match_call_response(tvb, actx->pinfo, tree, invokeid, FALSE);
+ ros_match_call_response(tvb, actx->pinfo, subtree, invokeid, FALSE);
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -598,14 +608,15 @@ dissect_ros_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
static int
dissect_ros_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 64 "../../asn1/ros/ros.cnf"
+#line 66 "../../asn1/ros/ros.cnf"
char *oid;
+ proto_tree* subtree;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "return result");
+ subtree = proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_return_result, NULL, "return result");
- ros_match_call_response(tvb, actx->pinfo, tree, invokeid, FALSE);
+ ros_match_call_response(tvb, actx->pinfo, subtree, invokeid, FALSE);
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -647,7 +658,7 @@ static const value_string ros_GeneralProblem_vals[] = {
static int
dissect_ros_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 168 "../../asn1/ros/ros.cnf"
+#line 171 "../../asn1/ros/ros.cnf"
guint32 problem;
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -677,7 +688,7 @@ static const value_string ros_InvokeProblem_vals[] = {
static int
dissect_ros_InvokeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 178 "../../asn1/ros/ros.cnf"
+#line 181 "../../asn1/ros/ros.cnf"
guint32 problem;
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -702,7 +713,7 @@ static const value_string ros_ReturnResultProblem_vals[] = {
static int
dissect_ros_ReturnResultProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 188 "../../asn1/ros/ros.cnf"
+#line 191 "../../asn1/ros/ros.cnf"
guint32 problem;
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -729,7 +740,7 @@ static const value_string ros_ReturnErrorProblem_vals[] = {
static int
dissect_ros_ReturnErrorProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 198 "../../asn1/ros/ros.cnf"
+#line 201 "../../asn1/ros/ros.cnf"
guint32 problem;
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -788,7 +799,7 @@ dissect_ros_Reject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_ros_T_reject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 161 "../../asn1/ros/ros.cnf"
+#line 164 "../../asn1/ros/ros.cnf"
col_set_str(actx->pinfo->cinfo, COL_INFO, "Reject");
offset = dissect_ros_Reject(implicit_tag, tvb, offset, actx, tree, hf_index);
@@ -802,12 +813,12 @@ dissect_ros_T_reject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
static int
dissect_ros_T_bind_invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 81 "../../asn1/ros/ros.cnf"
+#line 84 "../../asn1/ros/ros.cnf"
char *oid;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "bind-invoke");
+ proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_bind_result, NULL, "bind-invoke");
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -824,12 +835,12 @@ dissect_ros_T_bind_invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_ros_T_bind_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 94 "../../asn1/ros/ros.cnf"
+#line 97 "../../asn1/ros/ros.cnf"
char *oid;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "bind-result");
+ proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_bind_result, NULL, "bind-result");
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -846,12 +857,12 @@ dissect_ros_T_bind_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_ros_T_bind_error(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 107 "../../asn1/ros/ros.cnf"
+#line 110 "../../asn1/ros/ros.cnf"
char *oid;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "bind-error");
+ proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_bind_error, NULL, "bind-error");
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -869,12 +880,12 @@ dissect_ros_T_bind_error(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_ros_T_unbind_invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 121 "../../asn1/ros/ros.cnf"
+#line 124 "../../asn1/ros/ros.cnf"
char *oid;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "unbind-invoke");
+ proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_unbind_invoke, NULL, "unbind-invoke");
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -892,12 +903,12 @@ dissect_ros_T_unbind_invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_ros_T_unbind_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 135 "../../asn1/ros/ros.cnf"
+#line 138 "../../asn1/ros/ros.cnf"
char *oid;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "unbind-result");
+ proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_unbind_result, NULL, "unbind-result");
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -914,12 +925,12 @@ dissect_ros_T_unbind_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_ros_T_unbind_error(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 148 "../../asn1/ros/ros.cnf"
+#line 151 "../../asn1/ros/ros.cnf"
char *oid;
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
/* not sure what the length should be - -1 for now */
- proto_tree_add_text(tree, tvb, offset,-1, "unbind-error");
+ proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_unbind_error, NULL, "unbind-error");
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
/* this should be ROS! */
@@ -1003,7 +1014,7 @@ dissect_ros_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, a
/*--- End of included file: packet-ros-fn.c ---*/
-#line 371 "../../asn1/ros/packet-ros-template.c"
+#line 379 "../../asn1/ros/packet-ros-template.c"
/*
* Dissect ROS PDUs inside a PPDU.
@@ -1225,13 +1236,22 @@ void proto_register_ros(void) {
"OBJECT_IDENTIFIER", HFILL }},
/*--- End of included file: packet-ros-hfarr.c ---*/
-#line 480 "../../asn1/ros/packet-ros-template.c"
+#line 488 "../../asn1/ros/packet-ros-template.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_ros,
&ett_ros_unknown,
+ &ett_ros_invoke_argument,
+ &ett_ros_return_result,
+ &ett_ros_bind_invoke,
+ &ett_ros_bind_result,
+ &ett_ros_bind_error,
+ &ett_ros_unbind_invoke,
+ &ett_ros_unbind_result,
+ &ett_ros_unbind_error,
+
/*--- Included file: packet-ros-ettarr.c ---*/
#line 1 "../../asn1/ros/packet-ros-ettarr.c"
@@ -1246,7 +1266,7 @@ void proto_register_ros(void) {
&ett_ros_Code,
/*--- End of included file: packet-ros-ettarr.c ---*/
-#line 487 "../../asn1/ros/packet-ros-template.c"
+#line 504 "../../asn1/ros/packet-ros-template.c"
};
static ei_register_info ei[] = {
diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c
index 1052a83f56..a92c44f4e3 100644
--- a/epan/dissectors/packet-snmp.c
+++ b/epan/dissectors/packet-snmp.c
@@ -237,6 +237,7 @@ static int hf_snmp_objectname = -1;
static int hf_snmp_scalar_instance_index = -1;
static int hf_snmp_var_bind_str = -1;
+static int hf_snmp_agentid_trailer = -1;
/*--- Included file: packet-snmp-hf.c ---*/
@@ -308,7 +309,7 @@ static int hf_snmp_priority = -1; /* INTEGER_M1_2147483647 */
static int hf_snmp_operation = -1; /* T_operation */
/*--- End of included file: packet-snmp-hf.c ---*/
-#line 234 "../../asn1/snmp/packet-snmp-template.c"
+#line 235 "../../asn1/snmp/packet-snmp-template.c"
static int hf_smux_version = -1;
static int hf_smux_pdutype = -1;
@@ -351,7 +352,7 @@ static gint ett_snmp_SimpleOpen_U = -1;
static gint ett_snmp_RReqPDU_U = -1;
/*--- End of included file: packet-snmp-ett.c ---*/
-#line 253 "../../asn1/snmp/packet-snmp-template.c"
+#line 254 "../../asn1/snmp/packet-snmp-template.c"
static expert_field ei_snmp_failed_decrypted_data_pdu = EI_INIT;
static expert_field ei_snmp_decrypted_data_bad_formatted = EI_INIT;
@@ -380,6 +381,9 @@ static expert_field ei_snmp_integral_value0 = EI_INIT;
static expert_field ei_snmp_missing_mib = EI_INIT;
static expert_field ei_snmp_varbind_wrong_length_value = EI_INIT;
static expert_field ei_snmp_varbind_wrong_class_tag = EI_INIT;
+static expert_field ei_snmp_rfc1910_non_conformant = EI_INIT;
+static expert_field ei_snmp_rfc3411_non_conformant = EI_INIT;
+static expert_field ei_snmp_version_unknown = EI_INIT;
static const true_false_string auth_flags = {
"OK",
@@ -783,14 +787,12 @@ dissect_snmp_VarBind(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
pi_value = proto_tree_add_item(pt_varbind,hf_snmp_unSpecified,tvb,value_offset,value_len,ENC_NA);
goto set_label;
} else {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"A scalar should have one instance sub-id this one has none");
- expert_add_info(actx->pinfo, pi, &ei_snmp_no_instance_subid);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_no_instance_subid,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
} else {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"A scalar should have only one instance sub-id this has: %d",oid_left);
- expert_add_info(actx->pinfo, pi, &ei_snmp_wrong_num_of_subids);
+ proto_tree_add_expert_format(pt_name,actx->pinfo,&ei_snmp_wrong_num_of_subids,tvb,0,0,"A scalar should have only one instance sub-id this has: %d",oid_left);
oid_info_is_ok = FALSE;
goto indexing_done;
}
@@ -813,16 +815,14 @@ dissect_snmp_VarBind(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
guint suboid_len;
if (key_start >= oid_matched+oid_left) {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"index sub-oid shorter than expected");
- expert_add_info(actx->pinfo, pi, &ei_snmp_index_suboid_too_short);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_index_suboid_too_short,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
switch(k->key_type) {
case OID_KEY_TYPE_WRONG: {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"OID instaces not handled, if you want this implemented please contact the wireshark developers");
- expert_add_info(actx->pinfo, pi, &ei_snmp_unimplemented_instance_index);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_unimplemented_instance_index,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
@@ -853,15 +853,13 @@ show_oid_index:
suboid = &(subids[key_start]);
if( suboid_len == 0 ) {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"an index sub-oid OID cannot be 0 bytes long!");
- expert_add_info(actx->pinfo, pi, &ei_snmp_index_suboid_len0);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_index_suboid_len0,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
if( key_len < suboid_len ) {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"index sub-oid should not be longer than remaining oid size");
- expert_add_info(actx->pinfo, pi, &ei_snmp_index_suboid_too_long);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_index_suboid_too_long,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
@@ -907,8 +905,7 @@ show_oid_index:
}
if( key_len < buf_len ) {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"index string should not be longer than remaining oid size");
- expert_add_info(actx->pinfo, pi, &ei_snmp_index_string_too_long);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_index_string_too_long,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
@@ -949,20 +946,17 @@ show_oid_index:
}
goto indexing_done;
} else {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"We do not know how to handle this OID, if you want this implemented please contact the wireshark developers");
- expert_add_info(actx->pinfo, pi, &ei_snmp_unimplemented_instance_index);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_unimplemented_instance_index,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
} else {
- proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"The COLUMS's parent is not a ROW. This is a BUG! please contact the wireshark developers.");
- expert_add_info(actx->pinfo, pi, &ei_snmp_column_parent_not_row);
+ proto_tree_add_expert(pt_name,actx->pinfo,&ei_snmp_column_parent_not_row,tvb,0,0);
oid_info_is_ok = FALSE;
goto indexing_done;
}
default: {
-/* proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"This kind OID should have no value");
- expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "This kind OID should have no value"); */
+/* proto_tree_add_expert (pt_name,actx->pinfo,PI_MALFORMED, PI_WARN,tvb,0,0,"This kind OID should have no value"); */
oid_info_is_ok = FALSE;
goto indexing_done;
}
@@ -1083,8 +1077,7 @@ indexing_done:
*/
if (value_len > 9 || tvb_get_guint8(tvb, value_offset) != 0) {
/* It is. Fail. */
- pi_value = proto_tree_add_text(pt_varbind,tvb,value_offset,value_len,"Integral value too large");
- expert_add_info(actx->pinfo, pi_value, &ei_snmp_uint_too_large);
+ proto_tree_add_expert_format(pt_varbind,actx->pinfo,&ei_snmp_uint_too_large,tvb,value_offset,value_len,"Integral value too large");
goto already_added;
}
/* Cheat and skip the leading 0 byte */
@@ -1094,8 +1087,7 @@ indexing_done:
/*
* For now, just reject these.
*/
- pi_value = proto_tree_add_text(pt_varbind,tvb,value_offset,value_len,"Integral value too large or too small");
- expert_add_info(actx->pinfo, pi_value, &ei_snmp_int_too_large);
+ proto_tree_add_expert_format(pt_varbind,actx->pinfo,&ei_snmp_int_too_large,tvb,value_offset,value_len,"Integral value too large or too small");
goto already_added;
}
} else if (value_len == 0) {
@@ -1109,8 +1101,7 @@ indexing_done:
*/
header_field_info *hfinfo = proto_registrar_get_nth(hfid);
if (hfinfo->type == FT_UINT64 || hfinfo->type == FT_INT64) {
- pi_value = proto_tree_add_text(pt_varbind,tvb,value_offset,value_len,"Integral value is zero-length");
- expert_add_info(actx->pinfo, pi_value, &ei_snmp_integral_value0);
+ proto_tree_add_expert_format(pt_varbind,actx->pinfo,&ei_snmp_integral_value0,tvb,value_offset,value_len,"Integral value is zero-length");
goto already_added;
}
}
@@ -1234,7 +1225,7 @@ static const value_string snmp_engineid_cisco_type_vals[] = {
* or historic RFC 1910 (AgentID)
*/
int
-dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
+dissect_snmp_engineid(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int offset, int len)
{
proto_item *item = NULL;
guint8 conformance, format;
@@ -1261,13 +1252,12 @@ dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
case SNMP_ENGINEID_RFC1910:
/* 12-byte AgentID w/ 8-byte trailer */
if (len_remain==8) {
- proto_tree_add_text(tree, tvb, offset, 8, "AgentID Trailer: 0x%s",
- tvb_bytes_to_ep_str(tvb, offset, 8));
- offset+=8;
- len_remain-=8;
+ proto_tree_add_item(tree, hf_snmp_agentid_trailer, tvb, offset, 8, ENC_NA);
+ offset+=8;
+ len_remain-=8;
} else {
- proto_tree_add_text(tree, tvb, offset, len_remain, "<Data not conforming to RFC1910>");
- return offset;
+ proto_tree_add_expert(tree, pinfo, &ei_snmp_rfc1910_non_conformant, tvb, offset, len_remain);
+ return offset;
}
break;
@@ -1352,7 +1342,7 @@ dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len)
}
if (len_remain>0) {
- proto_tree_add_text(tree, tvb, offset, len_remain, "<Data not conforming to RFC3411>");
+ proto_tree_add_expert(tree, pinfo, &ei_snmp_rfc3411_non_conformant, tvb, offset, len_remain);
offset+=len_remain;
}
return offset;
@@ -2488,7 +2478,7 @@ dissect_snmp_SnmpEngineID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
&param_tvb);
if (param_tvb) {
proto_tree* engine_tree = proto_item_add_subtree(actx->created_item,ett_engineid);
- dissect_snmp_engineid(engine_tree, param_tvb, 0, tvb_length_remaining(param_tvb,0));
+ dissect_snmp_engineid(engine_tree, actx->pinfo, param_tvb, 0, tvb_length_remaining(param_tvb,0));
}
@@ -2506,7 +2496,7 @@ dissect_snmp_T_msgAuthoritativeEngineID(gboolean implicit_tag _U_, tvbuff_t *tvb
&usm_p.engine_tvb);
if (usm_p.engine_tvb) {
proto_tree* engine_tree = proto_item_add_subtree(actx->created_item,ett_engineid);
- dissect_snmp_engineid(engine_tree, usm_p.engine_tvb, 0, tvb_length_remaining(usm_p.engine_tvb,0));
+ dissect_snmp_engineid(engine_tree, actx->pinfo, usm_p.engine_tvb, 0, tvb_length_remaining(usm_p.engine_tvb,0));
}
@@ -2602,7 +2592,7 @@ dissect_snmp_INTEGER_484_2147483647(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_snmp_T_msgFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 216 "../../asn1/snmp/snmp.cnf"
+#line 213 "../../asn1/snmp/snmp.cnf"
tvbuff_t *parameter_tvb = NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@@ -2657,7 +2647,7 @@ dissect_snmp_HeaderData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_snmp_T_msgSecurityParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 164 "../../asn1/snmp/snmp.cnf"
+#line 161 "../../asn1/snmp/snmp.cnf"
switch(MsgSecurityModel){
case SNMP_SEC_USM: /* 3 */
@@ -2723,10 +2713,7 @@ dissect_snmp_T_encryptedPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
proto_tree* decrypted_tree;
if (! check_ScopedPdu(cleartext_tvb)) {
- proto_item* cause = proto_tree_add_text(encryptedpdu_tree, cleartext_tvb, 0, -1,
- "Decrypted data not formatted as expected, wrong key?");
-
- expert_add_info(actx->pinfo, cause, &ei_snmp_decrypted_data_bad_formatted);
+ proto_tree_add_expert(encryptedpdu_tree, actx->pinfo, &ei_snmp_decrypted_data_bad_formatted, cleartext_tvb, 0, -1);
col_set_str(actx->pinfo->cinfo, COL_INFO, "encryptedPDU: Decrypted data not formatted as expected");
@@ -2785,7 +2772,7 @@ dissect_snmp_SNMPv3Message(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
SNMPv3Message_sequence, hf_index, ett_snmp_SNMPv3Message);
-#line 179 "../../asn1/snmp/snmp.cnf"
+#line 176 "../../asn1/snmp/snmp.cnf"
if( usm_p.authenticated
&& usm_p.user_assoc
@@ -3097,7 +3084,7 @@ static void dissect_SMUX_PDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro
/*--- End of included file: packet-snmp-fn.c ---*/
-#line 1886 "../../asn1/snmp/packet-snmp-template.c"
+#line 1876 "../../asn1/snmp/packet-snmp-template.c"
guint
@@ -3233,11 +3220,9 @@ dissect_snmp_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo,
col_set_str(pinfo->cinfo, COL_PROTOCOL,
proto_get_protocol_short_name(find_protocol_by_id(proto)));
- if (tree) {
- item = proto_tree_add_item(tree, proto, tvb, start_offset,
+ item = proto_tree_add_item(tree, proto, tvb, start_offset,
message_length, ENC_BIG_ENDIAN);
- snmp_tree = proto_item_add_subtree(item, ett);
- }
+ snmp_tree = proto_item_add_subtree(item, ett);
switch (version) {
case 0: /* v1 */
@@ -3257,7 +3242,7 @@ dissect_snmp_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo,
* if this is SNMP-over-TCP, our caller thinks there's
* nothing left to dissect.
*/
- proto_tree_add_text(snmp_tree, tvb, offset, -1,"Unknown version");
+ expert_add_info(pinfo, item, &ei_snmp_version_unknown);
return length_remaining;
break;
}
@@ -3657,6 +3642,9 @@ void proto_register_snmp(void) {
{ &hf_snmp_var_bind_str, {
"Variable-binding-string", "snmp.var-bind_str", FT_STRING, BASE_NONE,
NULL, 0, NULL, HFILL }},
+ { &hf_snmp_agentid_trailer, {
+ "AgentID Trailer", "snmp.agentid_trailer", FT_BYTES, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
@@ -3924,7 +3912,7 @@ void proto_register_snmp(void) {
NULL, HFILL }},
/*--- End of included file: packet-snmp-hfarr.c ---*/
-#line 2448 "../../asn1/snmp/packet-snmp-template.c"
+#line 2439 "../../asn1/snmp/packet-snmp-template.c"
};
/* List of subtrees */
@@ -3964,11 +3952,11 @@ void proto_register_snmp(void) {
&ett_snmp_RReqPDU_U,
/*--- End of included file: packet-snmp-ettarr.c ---*/
-#line 2464 "../../asn1/snmp/packet-snmp-template.c"
+#line 2455 "../../asn1/snmp/packet-snmp-template.c"
};
static ei_register_info ei[] = {
{ &ei_snmp_failed_decrypted_data_pdu, { "snmp.failed_decrypted_data_pdu", PI_MALFORMED, PI_WARN, "Failed to decrypt encryptedPDU", EXPFILL }},
- { &ei_snmp_decrypted_data_bad_formatted, { "snmp.decrypted_data_bad_formatted", PI_MALFORMED, PI_WARN, "Decrypted data not formatted as expected", EXPFILL }},
+ { &ei_snmp_decrypted_data_bad_formatted, { "snmp.decrypted_data_bad_formatted", PI_MALFORMED, PI_WARN, "Decrypted data not formatted as expected, wrong key?", EXPFILL }},
{ &ei_snmp_verify_authentication_error, { "snmp.verify_authentication_error", PI_MALFORMED, PI_ERROR, "Error while verifying Message authenticity", EXPFILL }},
{ &ei_snmp_authentication_ok, { "snmp.authentication_ok", PI_CHECKSUM, PI_CHAT, "SNMP Authentication OK", EXPFILL }},
{ &ei_snmp_authentication_error, { "snmp.authentication_error", PI_CHECKSUM, PI_WARN, "SNMP Authentication Error", EXPFILL }},
@@ -3983,10 +3971,10 @@ void proto_register_snmp(void) {
{ &ei_snmp_no_instance_subid, { "snmp.no_instance_subid", PI_MALFORMED, PI_WARN, "No instance sub-id in scalar value", EXPFILL }},
{ &ei_snmp_wrong_num_of_subids, { "snmp.wrong_num_of_subids", PI_MALFORMED, PI_WARN, "Wrong number of instance sub-ids in scalar value", EXPFILL }},
{ &ei_snmp_index_suboid_too_short, { "snmp.index_suboid_too_short", PI_MALFORMED, PI_WARN, "index sub-oid shorter than expected", EXPFILL }},
- { &ei_snmp_unimplemented_instance_index, { "snmp.unimplemented_instance_index", PI_UNDECODED, PI_WARN, "Unimplemented instance index", EXPFILL }},
- { &ei_snmp_index_suboid_len0, { "snmp.ndex_suboid_len0", PI_MALFORMED, PI_WARN, "index sub-oid OID with len=0", EXPFILL }},
- { &ei_snmp_index_suboid_too_long, { "snmp.index_suboid_too_long", PI_MALFORMED, PI_WARN, "index sub-oid longer than remaining oid size", EXPFILL }},
- { &ei_snmp_index_string_too_long, { "snmp.index_string_too_long", PI_MALFORMED, PI_WARN, "index string longer than remaining oid size", EXPFILL }},
+ { &ei_snmp_unimplemented_instance_index, { "snmp.unimplemented_instance_index", PI_UNDECODED, PI_WARN, "OID instaces not handled, if you want this implemented please contact the wireshark developers", EXPFILL }},
+ { &ei_snmp_index_suboid_len0, { "snmp.ndex_suboid_len0", PI_MALFORMED, PI_WARN, "an index sub-oid OID cannot be 0 bytes long!", EXPFILL }},
+ { &ei_snmp_index_suboid_too_long, { "snmp.index_suboid_too_long", PI_MALFORMED, PI_WARN, "index sub-oid should not be longer than remaining oid size", EXPFILL }},
+ { &ei_snmp_index_string_too_long, { "snmp.index_string_too_long", PI_MALFORMED, PI_WARN, "index string should not be longer than remaining oid size", EXPFILL }},
{ &ei_snmp_column_parent_not_row, { "snmp.column_parent_not_row", PI_MALFORMED, PI_ERROR, "COLUMS's parent is not a ROW", EXPFILL }},
{ &ei_snmp_uint_too_large, { "snmp.uint_too_large", PI_UNDECODED, PI_NOTE, "Unsigned integer value > 2^64 - 1", EXPFILL }},
{ &ei_snmp_int_too_large, { "snmp.int_too_large", PI_UNDECODED, PI_NOTE, "Signed integer value > 2^63 - 1 or <= -2^63", EXPFILL }},
@@ -3994,6 +3982,9 @@ void proto_register_snmp(void) {
{ &ei_snmp_missing_mib, { "snmp.missing_mib", PI_UNDECODED, PI_NOTE, "Unresolved value, Missing MIB", EXPFILL }},
{ &ei_snmp_varbind_wrong_length_value, { "snmp.varbind.wrong_length_value", PI_MALFORMED, PI_WARN, "Wrong length for SNMP VarBind/value", EXPFILL }},
{ &ei_snmp_varbind_wrong_class_tag, { "snmp.varbind.wrong_class_tag", PI_MALFORMED, PI_WARN, "Wrong class/tag for SNMP VarBind/value", EXPFILL }},
+ { &ei_snmp_rfc1910_non_conformant, { "snmp.rfc1910_non_conformant", PI_PROTOCOL, PI_WARN, "Data not conforming to RFC1910", EXPFILL }},
+ { &ei_snmp_rfc3411_non_conformant, { "snmp.rfc3411_non_conformant", PI_PROTOCOL, PI_WARN, "Data not conforming to RFC3411", EXPFILL }},
+ { &ei_snmp_version_unknown, { "snmp.version.unknown", PI_PROTOCOL, PI_WARN, "Unknown version", EXPFILL }},
};
diff --git a/epan/dissectors/packet-snmp.h b/epan/dissectors/packet-snmp.h
index de7e313306..d2497873cb 100644
--- a/epan/dissectors/packet-snmp.h
+++ b/epan/dissectors/packet-snmp.h
@@ -99,7 +99,7 @@ struct _snmp_usm_params_t {
*/
extern guint dissect_snmp_pdu(tvbuff_t *, int, packet_info *, proto_tree *tree,
int, gint, gboolean);
-extern int dissect_snmp_engineid(proto_tree *, tvbuff_t *, int, int);
+extern int dissect_snmp_engineid(proto_tree *, packet_info *, tvbuff_t *, int, int);
/*#include "packet-snmp-exp.h"*/
diff --git a/epan/dissectors/packet-spnego.c b/epan/dissectors/packet-spnego.c
index 97a5b1f7d1..fb34849e20 100644
--- a/epan/dissectors/packet-spnego.c
+++ b/epan/dissectors/packet-spnego.c
@@ -44,6 +44,7 @@
#include <wsutil/rc4.h>
#include <epan/packet.h>
+#include <epan/expert.h>
#include <epan/asn1.h>
#include "packet-dcerpc.h"
#include "packet-gssapi.h"
@@ -116,7 +117,7 @@ static int hf_spnego_ContextFlags_confFlag = -1;
static int hf_spnego_ContextFlags_integFlag = -1;
/*--- End of included file: packet-spnego-hf.c ---*/
-#line 83 "../../asn1/spnego/packet-spnego-template.c"
+#line 84 "../../asn1/spnego/packet-spnego-template.c"
/* Global variables */
static const char *MechType_oid;
@@ -143,7 +144,10 @@ static gint ett_spnego_NegTokenTarg = -1;
static gint ett_spnego_InitialContextToken_U = -1;
/*--- End of included file: packet-spnego-ett.c ---*/
-#line 97 "../../asn1/spnego/packet-spnego-template.c"
+#line 98 "../../asn1/spnego/packet-spnego-template.c"
+
+static expert_field ei_spnego_decrypted_keytype = EI_INIT;
+static expert_field ei_spnego_unknown_header = EI_INIT;
/*
* Unfortunately, we have to have forward declarations of thess,
@@ -559,7 +563,7 @@ dissect_spnego_InitialContextToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
/*--- End of included file: packet-spnego-fn.c ---*/
-#line 111 "../../asn1/spnego/packet-spnego-template.c"
+#line 115 "../../asn1/spnego/packet-spnego-template.c"
/*
* This is the SPNEGO KRB5 dissector. It is not true KRB5, but some ASN.1
* wrapped blob with an OID, USHORT token ID, and a Ticket, that is also
@@ -714,7 +718,7 @@ dissect_spnego_krb5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return;
default:
- proto_tree_add_text(subtree, tvb, offset, 0,
+ proto_tree_add_expert_format(subtree, pinfo, &ei_spnego_unknown_header, tvb, offset, 0,
"Unknown header (class=%d, pc=%d, tag=%d)",
ber_class, pc, tag);
goto done;
@@ -1019,7 +1023,7 @@ decrypt_arcfour(packet_info *pinfo,
#if defined(HAVE_HEIMDAL_KERBEROS) || defined(HAVE_MIT_KERBEROS)
static void
-decrypt_gssapi_krb_arcfour_wrap(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, int keytype)
+decrypt_gssapi_krb_arcfour_wrap(proto_tree *tree _U_, packet_info *pinfo, tvbuff_t *tvb, int keytype)
{
int ret;
enc_key_t *ek;
@@ -1065,7 +1069,10 @@ decrypt_gssapi_krb_arcfour_wrap(proto_tree *tree, packet_info *pinfo, tvbuff_t *
ek->keytype
);
if (ret >= 0) {
- proto_tree_add_text(tree, NULL, 0, 0, "[Decrypted using: %s]", ek->key_origin);
+ expert_add_info_format(pinfo, NULL, &ei_spnego_decrypted_keytype,
+ "Decrypted keytype %d in frame %u using %s",
+ ek->keytype, pinfo->fd->num, ek->key_origin);
+
pinfo->gssapi_decrypted_tvb=tvb_new_child_real_data(tvb,
output_message_buffer,
ret, ret);
@@ -1950,7 +1957,7 @@ void proto_register_spnego(void) {
NULL, HFILL }},
/*--- End of included file: packet-spnego-hfarr.c ---*/
-#line 1405 "../../asn1/spnego/packet-spnego-template.c"
+#line 1412 "../../asn1/spnego/packet-spnego-template.c"
};
/* List of subtrees */
@@ -1973,9 +1980,16 @@ void proto_register_spnego(void) {
&ett_spnego_InitialContextToken_U,
/*--- End of included file: packet-spnego-ettarr.c ---*/
-#line 1415 "../../asn1/spnego/packet-spnego-template.c"
+#line 1422 "../../asn1/spnego/packet-spnego-template.c"
};
+ static ei_register_info ei[] = {
+ { &ei_spnego_decrypted_keytype, { "spnego.decrypted_keytype", PI_SECURITY, PI_CHAT, "Decryted keytype", EXPFILL }},
+ { &ei_spnego_unknown_header, { "spnego.unknown_header", PI_PROTOCOL, PI_WARN, "Unknown header", EXPFILL }},
+ };
+
+ expert_module_t* expert_spnego;
+
/* Register protocol */
proto_spnego = proto_register_protocol(PNAME, PSNAME, PFNAME);
@@ -1991,6 +2005,8 @@ void proto_register_spnego(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_spnego, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_spnego = expert_register_protocol(proto_spnego);
+ expert_register_field_array(expert_spnego, ei, array_length(ei));
}
diff --git a/epan/dissectors/packet-sv.c b/epan/dissectors/packet-sv.c
index ab0ee9e81d..b906d9990e 100644
--- a/epan/dissectors/packet-sv.c
+++ b/epan/dissectors/packet-sv.c
@@ -143,6 +143,7 @@ static gint ett_sv_ASDU = -1;
#line 109 "../../asn1/sv/packet-sv-template.c"
static expert_field ei_sv_mal_utctime = EI_INIT;
+static expert_field ei_sv_zero_pdu = EI_INIT;
#if 0
static const value_string sv_q_validity_vals[] = {
@@ -435,7 +436,7 @@ dissect_sv_SampledValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
/*--- End of included file: packet-sv-fn.c ---*/
-#line 189 "../../asn1/sv/packet-sv-template.c"
+#line 190 "../../asn1/sv/packet-sv-template.c"
/*
* Dissect SV PDUs inside a PPDU.
@@ -478,7 +479,7 @@ dissect_sv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
old_offset = offset;
offset = dissect_sv_SampledValues(FALSE, tvb, offset, &asn1_ctx , tree, -1);
if (offset == old_offset) {
- proto_tree_add_text(tree, tvb, offset, -1, "Internal error, zero-byte SV PDU");
+ proto_tree_add_expert(tree, pinfo, &ei_sv_zero_pdu, tvb, offset, -1);
break;
}
}
@@ -608,7 +609,7 @@ void proto_register_sv(void) {
NULL, HFILL }},
/*--- End of included file: packet-sv-hfarr.c ---*/
-#line 305 "../../asn1/sv/packet-sv-template.c"
+#line 306 "../../asn1/sv/packet-sv-template.c"
};
/* List of subtrees */
@@ -625,11 +626,12 @@ void proto_register_sv(void) {
&ett_sv_ASDU,
/*--- End of included file: packet-sv-ettarr.c ---*/
-#line 313 "../../asn1/sv/packet-sv-template.c"
+#line 314 "../../asn1/sv/packet-sv-template.c"
};
static ei_register_info ei[] = {
{ &ei_sv_mal_utctime, { "sv.malformed.utctime", PI_MALFORMED, PI_WARN, "BER Error: malformed UTCTime encoding", EXPFILL }},
+ { &ei_sv_zero_pdu, { "sv.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte SV PDU", EXPFILL }},
};
expert_module_t* expert_sv;
diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c
index 07e81d9fcc..baf2a6163b 100644
--- a/epan/dissectors/packet-t38.c
+++ b/epan/dissectors/packet-t38.c
@@ -189,6 +189,8 @@ static gint ett_t38_setup = -1;
static gint ett_data_fragment = -1;
static gint ett_data_fragments = -1;
+static expert_field ei_t38_malformed = EI_INIT;
+
static gboolean primary_part = TRUE;
static guint32 seq_number = 0;
@@ -647,10 +649,8 @@ dissect_t38_T_field_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
if (new_tvb) call_dissector_with_data((t30_hdlc_handle) ? t30_hdlc_handle : data_handle, new_tvb, actx->pinfo, tree, t38_info);
}
} else {
- if(tree){
- proto_tree_add_text(tree, tvb, offset, tvb_reported_length_remaining(tvb, offset),
+ proto_tree_add_expert_format(tree, actx->pinfo, &ei_t38_malformed, tvb, offset, tvb_reported_length_remaining(tvb, offset),
"[RECEIVED END OF FRAGMENT W/OUT ANY FRAGMENT DATA]");
- }
col_append_str(actx->pinfo->cinfo, COL_INFO, " [Malformed?]");
actx->pinfo->fragmented = save_fragmented;
}
@@ -673,7 +673,7 @@ dissect_t38_T_field_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
static int
dissect_t38_T_field_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 153 "../../asn1/t38/t38.cnf"
+#line 151 "../../asn1/t38/t38.cnf"
tvbuff_t *value_tvb = NULL;
guint32 value_len;
@@ -684,7 +684,7 @@ dissect_t38_T_field_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
-#line 160 "../../asn1/t38/t38.cnf"
+#line 158 "../../asn1/t38/t38.cnf"
if (primary_part){
if(value_len < 8){
col_append_fstr(actx->pinfo->cinfo, COL_INFO, "[%s]",
@@ -812,7 +812,7 @@ dissect_t38_T_seq_number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 65535U, &seq_number, FALSE);
-#line 240 "../../asn1/t38/t38.cnf"
+#line 238 "../../asn1/t38/t38.cnf"
/* info for tap */
if (primary_part)
t38_info->seq_num = seq_number;
@@ -826,12 +826,12 @@ dissect_t38_T_seq_number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
static int
dissect_t38_T_primary_ifp_packet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 248 "../../asn1/t38/t38.cnf"
+#line 246 "../../asn1/t38/t38.cnf"
primary_part = TRUE;
offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, dissect_t38_IFPPacket);
-#line 250 "../../asn1/t38/t38.cnf"
+#line 248 "../../asn1/t38/t38.cnf"
/* if is a valid t38 packet, add to tap */
if (p_t38_packet_conv && (!actx->pinfo->flags.in_error_pkt) && ((gint32) seq_number != p_t38_packet_conv_info->last_seqnum))
tap_queue_packet(t38_tap, actx->pinfo, t38_info);
@@ -925,14 +925,14 @@ static const per_choice_t T_error_recovery_choice[] = {
static int
dissect_t38_T_error_recovery(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 258 "../../asn1/t38/t38.cnf"
+#line 256 "../../asn1/t38/t38.cnf"
primary_part = FALSE;
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
ett_t38_T_error_recovery, T_error_recovery_choice,
NULL);
-#line 260 "../../asn1/t38/t38.cnf"
+#line 258 "../../asn1/t38/t38.cnf"
primary_part = TRUE;
return offset;
@@ -948,7 +948,7 @@ static const per_sequence_t UDPTLPacket_sequence[] = {
static int
dissect_t38_UDPTLPacket(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 234 "../../asn1/t38/t38.cnf"
+#line 232 "../../asn1/t38/t38.cnf"
/* Initialize to something else than data type */
Data_Field_field_type_value = 1;
@@ -979,7 +979,7 @@ static int dissect_UDPTLPacket_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr
/*--- End of included file: packet-t38-fn.c ---*/
-#line 394 "../../asn1/t38/packet-t38-template.c"
+#line 396 "../../asn1/t38/packet-t38-template.c"
/* initialize the tap t38_info and the conversation */
static void
@@ -1130,10 +1130,8 @@ dissect_t38_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset = dissect_UDPTLPacket_PDU(tvb, pinfo, tr, NULL);
if (tvb_length_remaining(tvb,offset)>0){
- if (tr){
- proto_tree_add_text(tr, tvb, offset, tvb_reported_length_remaining(tvb, offset),
+ proto_tree_add_expert_format(tr, pinfo, &ei_t38_malformed, tvb, offset, tvb_reported_length_remaining(tvb, offset),
"[MALFORMED PACKET or wrong preference settings]");
- }
col_append_str(pinfo->cinfo, COL_INFO, " [Malformed?]");
}
}
@@ -1176,10 +1174,8 @@ dissect_t38_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(tvb_length_remaining(tvb,offset)>0){
if(t38_tpkt_usage == T38_TPKT_ALWAYS){
- if(tr){
- proto_tree_add_text(tr, tvb, offset, tvb_reported_length_remaining(tvb, offset),
+ proto_tree_add_expert_format(tr, pinfo, &ei_t38_malformed, tvb, offset, tvb_reported_length_remaining(tvb, offset),
"[MALFORMED PACKET or wrong preference settings]");
- }
col_append_str(pinfo->cinfo, COL_INFO, " [Malformed?]");
break;
}else {
@@ -1335,7 +1331,7 @@ proto_register_t38(void)
"OCTET_STRING", HFILL }},
/*--- End of included file: packet-t38-hfarr.c ---*/
-#line 673 "../../asn1/t38/packet-t38-template.c"
+#line 671 "../../asn1/t38/packet-t38-template.c"
{ &hf_t38_setup,
{ "Stream setup", "t38.setup", FT_STRING, BASE_NONE,
NULL, 0x0, "Stream setup, method and frame number", HFILL }},
@@ -1396,17 +1392,24 @@ proto_register_t38(void)
&ett_t38_T_fec_data,
/*--- End of included file: packet-t38-ettarr.c ---*/
-#line 720 "../../asn1/t38/packet-t38-template.c"
+#line 718 "../../asn1/t38/packet-t38-template.c"
&ett_t38_setup,
&ett_data_fragment,
&ett_data_fragments
};
+ static ei_register_info ei[] = {
+ { &ei_t38_malformed, { "t38.malformed", PI_MALFORMED, PI_ERROR, "Malformed packet", EXPFILL }},
+ };
+
module_t *t38_module;
+ expert_module_t* expert_t38;
proto_t38 = proto_register_protocol("T.38", "T.38", "t38");
proto_register_field_array(proto_t38, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_t38 = expert_register_protocol(proto_t38);
+ expert_register_field_array(expert_t38, ei, array_length(ei));
register_dissector("t38", dissect_t38, proto_t38);
/* Init reassemble tables for HDLC */
diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c
index 60a8068cdc..d1578b240d 100644
--- a/epan/dissectors/packet-tcap.c
+++ b/epan/dissectors/packet-tcap.c
@@ -58,6 +58,7 @@ static int hf_tcap_tag = -1;
static int hf_tcap_length = -1;
static int hf_tcap_data = -1;
static int hf_tcap_tid = -1;
+static int hf_tcap_constructor_eoc=-1;
int hf_tcapsrt_SessionId=-1;
int hf_tcapsrt_Duplicate=-1;
@@ -137,7 +138,7 @@ static int hf_tcap_AARQ_protocol_version_version1 = -1;
static int hf_tcap_AARE_protocol_version_version1 = -1;
/*--- End of included file: packet-tcap-hf.c ---*/
-#line 61 "../../asn1/tcap/packet-tcap-template.c"
+#line 62 "../../asn1/tcap/packet-tcap-template.c"
/* Initialize the subtree pointers */
static gint ett_tcap = -1;
@@ -192,7 +193,7 @@ static gint ett_tcap_ABRT_user_information = -1;
static gint ett_tcap_Associate_source_diagnostic = -1;
/*--- End of included file: packet-tcap-ett.c ---*/
-#line 77 "../../asn1/tcap/packet-tcap-template.c"
+#line 78 "../../asn1/tcap/packet-tcap-template.c"
/* When several Tcap components are received in a single TCAP message,
we have to use several buffers for the stored parameters
@@ -1420,7 +1421,7 @@ static void dissect_DialoguePDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, p
/*--- End of included file: packet-tcap-fn.c ---*/
-#line 157 "../../asn1/tcap/packet-tcap-template.c"
+#line 158 "../../asn1/tcap/packet-tcap-template.c"
/*
* DEBUG functions
@@ -3341,7 +3342,7 @@ proto_reg_handoff_tcap(void)
/*--- End of included file: packet-tcap-dis-tab.c ---*/
-#line 2070 "../../asn1/tcap/packet-tcap-template.c"
+#line 2071 "../../asn1/tcap/packet-tcap-template.c"
}
static void init_tcap(void);
@@ -3366,12 +3367,18 @@ proto_register_tcap(void)
{ "Data", "tcap.data",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }
+
},
{ &hf_tcap_tid,
{ "Transaction Id", "tcap.tid",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }
},
+ { &hf_tcap_constructor_eoc,
+ { "CONSTRUCTOR EOC", "tcap.constructor_eoc",
+ FT_UINT16, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
/* Tcap Service Response Time */
{ &hf_tcapsrt_SessionId,
{ "Session Id",
@@ -3672,7 +3679,7 @@ proto_register_tcap(void)
NULL, HFILL }},
/*--- End of included file: packet-tcap-hfarr.c ---*/
-#line 2132 "../../asn1/tcap/packet-tcap-template.c"
+#line 2139 "../../asn1/tcap/packet-tcap-template.c"
};
/* Setup protocol subtree array */
@@ -3721,7 +3728,7 @@ proto_register_tcap(void)
&ett_tcap_Associate_source_diagnostic,
/*--- End of included file: packet-tcap-ettarr.c ---*/
-#line 2142 "../../asn1/tcap/packet-tcap-template.c"
+#line 2149 "../../asn1/tcap/packet-tcap-template.c"
};
/*static enum_val_t tcap_options[] = {
@@ -3870,7 +3877,7 @@ dissect_tcap_param(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset
}
if (ind_field)
- proto_tree_add_text(subtree, tvb, offset+len-2, 2, "CONSTRUCTOR EOC");
+ proto_tree_add_item(subtree, hf_tcap_constructor_eoc, tvb, offset+len-2, 2, ENC_BIG_ENDIAN);
offset += len;
}