Treat expert info as a <field> instead of a <proto> when exporting to pdml.

svn path=/trunk/; revision=40204
This commit is contained in:
Chris Maynard 2011-12-14 21:13:06 +00:00
parent 586ea8d092
commit 0a1072b083
4 changed files with 14 additions and 3 deletions

View File

@ -34,9 +34,12 @@
#include "tap.h"
/* proto_expert cannot be static because it's referenced in the
* print routines
*/
int proto_expert = -1;
static int expert_tap = -1;
static int proto_expert = -1;
static int highest_severity = 0;
static int ett_expert = -1;

View File

@ -47,6 +47,11 @@ typedef struct expert_info_s {
WS_VAR_IMPORT const value_string expert_severity_vals[];
WS_VAR_IMPORT const value_string expert_group_vals[];
/* "proto_expert" is exported from libwireshark.dll.
* Thus we need a special declaration.
*/
WS_VAR_IMPORT int proto_expert;
extern void
expert_init(void);

View File

@ -744,6 +744,7 @@ proto_check_field_name
proto_construct_match_selected_string
proto_data DATA
proto_enable_all
proto_expert DATA
proto_field_is_referenced
proto_find_field_from_offset
proto_find_finfo

View File

@ -38,6 +38,7 @@
#include <epan/tvbuff.h>
#include <epan/packet.h>
#include <epan/emem.h>
#include <epan/expert.h>
#include "packet-range.h"
#include "print.h"
@ -364,7 +365,7 @@ proto_tree_write_node_pdml(proto_node *node, gpointer data)
}
/* Normal protocols and fields */
else {
if (fi->hfinfo->type == FT_PROTOCOL) {
if (fi->hfinfo->type == FT_PROTOCOL && fi->hfinfo->id != proto_expert) {
fputs("<proto name=\"", pdata->fh);
}
else {
@ -493,7 +494,8 @@ proto_tree_write_node_pdml(proto_node *node, gpointer data)
fputs(" ", pdata->fh);
}
/* Close off current element */
if (fi->hfinfo->id != proto_data) { /* Data protocol uses simple tags */
/* Data and expert "protocols" use simple tags */
if (fi->hfinfo->id != proto_data && fi->hfinfo->id != proto_expert) {
if (fi->hfinfo->type == FT_PROTOCOL) {
fputs("</proto>\n", pdata->fh);
}