aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-ax25-kiss.c5
-rw-r--r--epan/dissectors/packet-ax25-nol3.c4
-rw-r--r--epan/dissectors/packet-ax25.c5
-rw-r--r--epan/dissectors/packet-bpq.c3
-rw-r--r--epan/dissectors/packet-flexnet.c5
-rw-r--r--epan/dissectors/packet-netrom.c9
-rw-r--r--epan/dissectors/packet-qllc.c33
-rw-r--r--epan/dissectors/packet-x25.c21
-rw-r--r--epan/dissectors/packet-x29.c19
9 files changed, 30 insertions, 74 deletions
diff --git a/epan/dissectors/packet-ax25-kiss.c b/epan/dissectors/packet-ax25-kiss.c
index 98d95f19f5..c545627d86 100644
--- a/epan/dissectors/packet-ax25-kiss.c
+++ b/epan/dissectors/packet-ax25-kiss.c
@@ -206,7 +206,6 @@ dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
int kiss_param_len;
const char *frame_type_text;
char *info_buffer;
- void *saved_private_data;
tvbuff_t *next_tvb = NULL;
info_buffer = (char *)wmem_alloc( wmem_packet_scope(), STRLEN );
@@ -261,7 +260,7 @@ dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
proto_tree_add_uint( kiss_tree, hf_ax25_kiss_cmd, tvb, offset, KISS_HEADER_SIZE,
kiss_cmd );
proto_tree_add_uint( kiss_tree, hf_ax25_kiss_port, tvb, offset, KISS_HEADER_SIZE,
- kiss_cmd );
+ kiss_port );
offset += KISS_HEADER_SIZE;
switch ( kiss_type )
@@ -306,10 +305,8 @@ dissect_ax25_kiss( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
if ( kiss_type == KISS_DATA_FRAME )
{
- saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset_remaining( tvb, offset );
call_dissector( ax25_handle, next_tvb, pinfo, parent_tree );
- pinfo->private_data = saved_private_data;
}
}
diff --git a/epan/dissectors/packet-ax25-nol3.c b/epan/dissectors/packet-ax25-nol3.c
index 68f277d1dc..0eeb3703b7 100644
--- a/epan/dissectors/packet-ax25-nol3.c
+++ b/epan/dissectors/packet-ax25-nol3.c
@@ -158,7 +158,6 @@ dissect_ax25_nol3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
proto_tree *ax25_nol3_tree;
char *info_buffer;
int offset;
- void *saved_private_data;
tvbuff_t *next_tvb = NULL;
guint8 dti = 0;
gboolean dissected;
@@ -200,9 +199,7 @@ dissect_ax25_nol3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
"AX.25 No Layer 3 - (%s)", info_buffer );
ax25_nol3_tree = proto_item_add_subtree( ti, ett_ax25_nol3 );
- saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset_remaining(tvb, offset);
-
dissected = FALSE;
if ( gPREF_APRS )
{
@@ -223,7 +220,6 @@ dissect_ax25_nol3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
if ( ! dissected )
call_dissector( default_handle , next_tvb, pinfo, ax25_nol3_tree );
- pinfo->private_data = saved_private_data;
}
}
diff --git a/epan/dissectors/packet-ax25.c b/epan/dissectors/packet-ax25.c
index b1e41ee302..fade71bc97 100644
--- a/epan/dissectors/packet-ax25.c
+++ b/epan/dissectors/packet-ax25.c
@@ -148,7 +148,6 @@ dissect_ax25( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
guint8 pid = AX25_P_NO_L3;
guint8 src_ssid;
guint8 dst_ssid;
- void *saved_private_data;
tvbuff_t *next_tvb = NULL;
@@ -254,16 +253,12 @@ dissect_ax25( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
proto_item_set_end(ti, tvb, offset);
- saved_private_data = pinfo->private_data;
-
next_tvb = tvb_new_subset_remaining(tvb, offset);
if (!dissector_try_uint(ax25_dissector_table, pid, next_tvb, pinfo, parent_tree))
{
call_dissector(data_handle, next_tvb, pinfo, parent_tree);
}
-
- pinfo->private_data = saved_private_data;
}
else
proto_item_set_end(ti, tvb, offset);
diff --git a/epan/dissectors/packet-bpq.c b/epan/dissectors/packet-bpq.c
index 2e90539df0..d6c08cbcc4 100644
--- a/epan/dissectors/packet-bpq.c
+++ b/epan/dissectors/packet-bpq.c
@@ -66,7 +66,6 @@ dissect_bpq( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
proto_tree *bpq_tree;
int offset;
guint16 bpq_len;
- void *saved_private_data;
tvbuff_t *next_tvb;
@@ -100,11 +99,9 @@ dissect_bpq( tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree )
offset += BPQ_HEADER_SIZE;
- saved_private_data = pinfo->private_data;
/* XXX - use the length */
next_tvb = tvb_new_subset_remaining( tvb, offset );
call_dissector( ax25_handle, next_tvb, pinfo, parent_tree );
- pinfo->private_data = saved_private_data;
}
void
diff --git a/epan/dissectors/packet-flexnet.c b/epan/dissectors/packet-flexnet.c
index e104a9d1a8..7406609891 100644
--- a/epan/dissectors/packet-flexnet.c
+++ b/epan/dissectors/packet-flexnet.c
@@ -60,7 +60,6 @@ static gint ett_flexnet_ctl = -1;
static void
dissect_flexnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
- void *saved_private_data;
tvbuff_t *next_tvb;
col_set_str( pinfo->cinfo, COL_PROTOCOL, "Flexnet");
@@ -92,12 +91,8 @@ dissect_flexnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
/* Call sub-dissectors here */
- saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset_remaining(tvb, FLEXNET_HDRLEN);
-
call_dissector( default_handle , next_tvb, pinfo, parent_tree );
-
- pinfo->private_data = saved_private_data;
}
void
diff --git a/epan/dissectors/packet-netrom.c b/epan/dissectors/packet-netrom.c
index 80167f297e..ce0a22ebec 100644
--- a/epan/dissectors/packet-netrom.c
+++ b/epan/dissectors/packet-netrom.c
@@ -208,7 +208,6 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint8 op_code;
guint8 cct_index;
guint8 cct_id;
- void *saved_private_data;
tvbuff_t *next_tvb = NULL;
col_set_str( pinfo->cinfo, COL_PROTOCOL, "NET/ROM" );
@@ -448,7 +447,6 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Call sub-dissectors here */
- saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset_remaining(tvb, offset);
switch ( op_code )
@@ -465,14 +463,11 @@ dissect_netrom_proto(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
call_dissector( default_handle , next_tvb, pinfo, tree );
break;
}
-
- pinfo->private_data = saved_private_data;
}
static void
dissect_netrom_routing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- void *saved_private_data;
tvbuff_t *next_tvb;
col_set_str( pinfo->cinfo, COL_PROTOCOL, "NET/ROM");
@@ -492,13 +487,9 @@ dissect_netrom_routing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item( netrom_tree, hf_netrom_mnemonic, tvb, 1, 6, ENC_ASCII|ENC_NA );
}
- saved_private_data = pinfo->private_data;
next_tvb = tvb_new_subset_remaining(tvb, 7);
call_dissector( default_handle , next_tvb, pinfo, tree );
-
- pinfo->private_data = saved_private_data;
-
}
/* Code to actually dissect the packets */
diff --git a/epan/dissectors/packet-qllc.c b/epan/dissectors/packet-qllc.c
index 1c2c32794b..1834516447 100644
--- a/epan/dissectors/packet-qllc.c
+++ b/epan/dissectors/packet-qllc.c
@@ -71,12 +71,12 @@ static const value_string qllc_control_vals[] = {
};
-static void
-dissect_qllc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_qllc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
- proto_tree *qllc_tree = NULL;
- proto_item *qllc_ti = NULL;
- gboolean *q_bit_set = (gboolean *)pinfo->private_data;
+ proto_tree *qllc_tree;
+ proto_item *qllc_ti;
+ gboolean *q_bit_set = (gboolean *)data;
guint8 addr, ctrl;
gboolean command = FALSE;
@@ -84,25 +84,21 @@ dissect_qllc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* If the Q bit isn't set, this is just SNA data.
*/
if (!(*q_bit_set)) {
- call_dissector(sna_handle, tvb, pinfo, tree);
- return;
+ call_dissector(sna_handle, tvb, pinfo, tree);
+ return tvb_length(tvb);
}
/* Summary information */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "QLLC");
col_clear(pinfo->cinfo, COL_INFO);
- if (tree) {
- qllc_ti = proto_tree_add_item(tree, proto_qllc, tvb, 0, -1, ENC_NA);
- qllc_tree = proto_item_add_subtree(qllc_ti, ett_qllc);
- }
+ qllc_ti = proto_tree_add_item(tree, proto_qllc, tvb, 0, -1, ENC_NA);
+ qllc_tree = proto_item_add_subtree(qllc_ti, ett_qllc);
/* Get the address; we need it to determine if this is a
* COMMAND or a RESPONSE */
addr = tvb_get_guint8(tvb, 0);
- if (tree) {
proto_tree_add_item(qllc_tree, hf_qllc_address, tvb, 0, 1, ENC_BIG_ENDIAN);
- }
/* The address field equals X'FF' in commands (except QRR)
* and anything in responses. */
@@ -116,14 +112,14 @@ dissect_qllc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* a COMMAND or RESPONSE. */
if (ctrl == QRD_QDISC_VALUE) {
if (command) {
- col_set_str(pinfo->cinfo, COL_INFO, QDISC_TEXT);
+ col_set_str(pinfo->cinfo, COL_INFO, QDISC_TEXT);
if (tree) {
proto_tree_add_text(qllc_tree, tvb,
1, 1, "Control Field: %s (0x%02x)", QDISC_TEXT, ctrl);
}
}
else {
- col_set_str(pinfo->cinfo, COL_INFO, QRD_TEXT);
+ col_set_str(pinfo->cinfo, COL_INFO, QRD_TEXT);
if (tree) {
proto_tree_add_text(qllc_tree, tvb,
1, 1, "Control Field: %s (0x%02x)", QRD_TEXT, ctrl);
@@ -154,6 +150,8 @@ dissect_qllc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (ctrl == QXID || ctrl == QTEST || ctrl == QFRMR) {
/* yes */
}
+
+ return tvb_length(tvb);
}
void
@@ -173,11 +171,10 @@ proto_register_qllc(void)
&ett_qllc,
};
- proto_qllc = proto_register_protocol("Qualified Logical Link Control",
- "QLLC", "qllc");
+ proto_qllc = proto_register_protocol("Qualified Logical Link Control", "QLLC", "qllc");
proto_register_field_array(proto_qllc, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- register_dissector("qllc", dissect_qllc, proto_qllc);
+ new_register_dissector("qllc", dissect_qllc, proto_qllc);
}
void
diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c
index 662ea531ba..3ce0232856 100644
--- a/epan/dissectors/packet-x25.c
+++ b/epan/dissectors/packet-x25.c
@@ -1284,7 +1284,7 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint x25_pkt_len;
int modulo;
guint16 vc;
- dissector_handle_t dissect = NULL;
+ dissector_handle_t dissect;
gboolean toa; /* TOA/NPI address format */
guint16 bytes0_1;
guint8 pkt_type;
@@ -1294,7 +1294,6 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
gboolean m_bit_set;
gint payload_len;
guint32 frag_key;
- void *saved_private_data;
fragment_head *fd_head;
@@ -1583,7 +1582,7 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
*/
dissect = dissector_get_uint_handle(x25_subdissector_table, spi);
if (dissect != NULL)
- x25_hash_add_proto_start(vc, pinfo->fd->num, dissect);
+ x25_hash_add_proto_start(vc, pinfo->fd->num, dissect);
}
/*
@@ -2020,14 +2019,10 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (!next_tvb)
next_tvb = tvb_new_subset_remaining(tvb, localoffset);
- saved_private_data = pinfo->private_data;
- pinfo->private_data = &q_bit_set;
-
/* See if there's already a dissector for this circuit. */
if (try_circuit_dissector(CT_X25, vc, pinfo->fd->num, next_tvb, pinfo,
- tree, NULL)) {
- pinfo->private_data = saved_private_data;
- return; /* found it and dissected it */
+ tree, &q_bit_set)) {
+ return; /* found it and dissected it */
}
/* Did the user suggest QLLC/SNA? */
@@ -2035,8 +2030,7 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Yes - dissect it as QLLC/SNA. */
if (!pinfo->fd->flags.visited)
x25_hash_add_proto_start(vc, pinfo->fd->num, qllc_handle);
- call_dissector(qllc_handle, next_tvb, pinfo, tree);
- pinfo->private_data = saved_private_data;
+ call_dissector_with_data(qllc_handle, next_tvb, pinfo, tree, &q_bit_set);
return;
}
@@ -2050,7 +2044,6 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (!pinfo->fd->flags.visited)
x25_hash_add_proto_start(vc, pinfo->fd->num, ositp_handle);
call_dissector(ositp_handle, next_tvb, pinfo, tree);
- pinfo->private_data = saved_private_data;
return;
}
}
@@ -2064,14 +2057,12 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
if (!pinfo->fd->flags.visited)
x25_hash_add_proto_start(vc, pinfo->fd->num, ip_handle);
call_dissector(ip_handle, next_tvb, pinfo, tree);
- pinfo->private_data = saved_private_data;
return;
case NLPID_ISO8473_CLNP:
if (!pinfo->fd->flags.visited)
x25_hash_add_proto_start(vc, pinfo->fd->num, clnp_handle);
call_dissector(clnp_handle, next_tvb, pinfo, tree);
- pinfo->private_data = saved_private_data;
return;
}
}
@@ -2079,13 +2070,11 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Try the heuristic dissectors. */
if (dissector_try_heuristic(x25_heur_subdissector_list, next_tvb, pinfo,
tree, NULL)) {
- pinfo->private_data = saved_private_data;
return;
}
/* All else failed; dissect it as raw data */
call_dissector(data_handle, next_tvb, pinfo, tree);
- pinfo->private_data = saved_private_data;
}
/*
diff --git a/epan/dissectors/packet-x29.c b/epan/dissectors/packet-x29.c
index 1c91d45cba..7e779a017f 100644
--- a/epan/dissectors/packet-x29.c
+++ b/epan/dissectors/packet-x29.c
@@ -73,13 +73,13 @@ static const value_string error_type_vals[] = {
{ 0, NULL },
};
-static void
-dissect_x29(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_x29(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
int offset = 0;
- proto_tree *x29_tree = NULL;
+ proto_tree *x29_tree;
proto_item *ti;
- gboolean *q_bit_set = (gboolean *)pinfo->private_data;
+ gboolean *q_bit_set = (gboolean *)data;
guint8 msg_code;
guint8 error_type;
guint8 type_ref;
@@ -89,11 +89,8 @@ dissect_x29(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "X.29");
col_clear(pinfo->cinfo, COL_INFO);
- if (tree) {
- ti = proto_tree_add_item(tree, proto_x29, tvb, offset, -1,
- ENC_NA);
- x29_tree = proto_item_add_subtree(ti, ett_x29);
- }
+ ti = proto_tree_add_item(tree, proto_x29, tvb, offset, -1, ENC_NA);
+ x29_tree = proto_item_add_subtree(ti, ett_x29);
if (*q_bit_set) {
/*
@@ -234,6 +231,8 @@ dissect_x29(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
}
+
+ return tvb_length(tvb);
}
void
@@ -267,6 +266,6 @@ proto_reg_handoff_x29(void)
{
dissector_handle_t x29_handle;
- x29_handle = create_dissector_handle(dissect_x29, proto_x29);
+ x29_handle = new_create_dissector_handle(dissect_x29, proto_x29);
dissector_add_uint("x.25.spi", NLPID_SPI_X_29, x29_handle);
}