aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-11-01 23:45:10 +0000
committerMichael Mann <mmann78@netscape.net>2013-11-01 23:45:10 +0000
commitb6484432aaa2eb6787cc54cc4a7b489ae70e57aa (patch)
tree312e92ce94021141628bbb320d67281fdec75651 /epan
parent7c20a9314ffd05eddeb7f0744ae4cf9151175f76 (diff)
Allow try_conversation_dissector() to pass data to subdissectors.
svn path=/trunk/; revision=53035
Diffstat (limited to 'epan')
-rw-r--r--epan/conversation.c4
-rw-r--r--epan/conversation.h2
-rw-r--r--epan/dissectors/packet-atalk.c2
-rw-r--r--epan/dissectors/packet-dccp.c2
-rw-r--r--epan/dissectors/packet-rlogin.c8
-rw-r--r--epan/dissectors/packet-soupbintcp.c11
-rw-r--r--epan/dissectors/packet-tcp.c2
-rw-r--r--epan/dissectors/packet-udp.c2
8 files changed, 15 insertions, 18 deletions
diff --git a/epan/conversation.c b/epan/conversation.c
index 4a70470db2..848775b1a3 100644
--- a/epan/conversation.c
+++ b/epan/conversation.c
@@ -1254,7 +1254,7 @@ conversation_set_dissector(conversation_t *conversation, const dissector_handle_
gboolean
try_conversation_dissector(const address *addr_a, const address *addr_b, const port_type ptype,
const guint32 port_a, const guint32 port_b, tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree)
+ proto_tree *tree, void* data)
{
conversation_t *conversation;
@@ -1266,7 +1266,7 @@ try_conversation_dissector(const address *addr_a, const address *addr_b, const p
if (conversation->dissector_handle == NULL)
return FALSE;
ret=call_dissector_only(conversation->dissector_handle, tvb, pinfo,
- tree, NULL);
+ tree, data);
if(!ret) {
/* this packet was rejected by the dissector
* so return FALSE in case our caller wants
diff --git a/epan/conversation.h b/epan/conversation.h
index ac3518d866..5cb8bcd7f6 100644
--- a/epan/conversation.h
+++ b/epan/conversation.h
@@ -176,7 +176,7 @@ WS_DLL_PUBLIC void conversation_set_dissector(conversation_t *conversation,
extern gboolean
try_conversation_dissector(const address *addr_a, const address *addr_b, const port_type ptype,
const guint32 port_a, const guint32 port_b, tvbuff_t *tvb, packet_info *pinfo,
- proto_tree *tree);
+ proto_tree *tree, void* data);
/* These routines are used to set undefined values for a conversation */
diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c
index 9ac0e143d9..2575a6473a 100644
--- a/epan/dissectors/packet-atalk.c
+++ b/epan/dissectors/packet-atalk.c
@@ -936,7 +936,7 @@ dissect_atp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
conversation_set_dissector(conversation, sub);
}
else if (!try_conversation_dissector(&pinfo->src, &pinfo->dst, pinfo->ptype,
- pinfo->srcport, pinfo->destport, new_tvb,pinfo, tree)) {
+ pinfo->srcport, pinfo->destport, new_tvb,pinfo, tree, NULL)) {
call_dissector(data_handle, new_tvb, pinfo, tree);
}
diff --git a/epan/dissectors/packet-dccp.c b/epan/dissectors/packet-dccp.c
index 75460c333b..2f04031ce8 100644
--- a/epan/dissectors/packet-dccp.c
+++ b/epan/dissectors/packet-dccp.c
@@ -211,7 +211,7 @@ decode_dccp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
* for the conversation if available
*/
if (try_conversation_dissector(&pinfo->src, &pinfo->dst, PT_DCCP, sport,
- dport, next_tvb, pinfo, tree)) {
+ dport, next_tvb, pinfo, tree, NULL)) {
return;
}
diff --git a/epan/dissectors/packet-rlogin.c b/epan/dissectors/packet-rlogin.c
index c0fbd2c17f..be81991db6 100644
--- a/epan/dissectors/packet-rlogin.c
+++ b/epan/dissectors/packet-rlogin.c
@@ -378,8 +378,8 @@ static void rlogin_display(rlogin_hash_entry_t *hash_info,
/****************************************************************
* Main dissection function
****************************************************************/
-static void
-dissect_rlogin(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_rlogin(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
struct tcpinfo *tcpinfo = (struct tcpinfo *)pinfo->private_data;
conversation_t *conversation;
@@ -471,6 +471,8 @@ dissect_rlogin(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Dissect in detail */
rlogin_display(hash_info, tvb, pinfo, tree, tcpinfo);
+
+ return tvb_length(tvb);
}
@@ -574,6 +576,6 @@ void proto_register_rlogin(void)
void proto_reg_handoff_rlogin(void)
{
/* Dissector install routine */
- dissector_handle_t rlogin_handle = create_dissector_handle(dissect_rlogin,proto_rlogin);
+ dissector_handle_t rlogin_handle = new_create_dissector_handle(dissect_rlogin,proto_rlogin);
dissector_add_uint("tcp.port", RLOGIN_PORT, rlogin_handle);
}
diff --git a/epan/dissectors/packet-soupbintcp.c b/epan/dissectors/packet-soupbintcp.c
index 1e6bf7268c..fbfce61173 100644
--- a/epan/dissectors/packet-soupbintcp.c
+++ b/epan/dissectors/packet-soupbintcp.c
@@ -410,14 +410,9 @@ dissect_soupbintcp_common(
/* If this packet is part of a conversation, call dissector
* for the conversation if available */
- if (try_conversation_dissector(&pinfo->dst,
- &pinfo->src,
- pinfo->ptype,
- pinfo->srcport,
- pinfo->destport,
- sub_tvb,
- pinfo,
- tree)) {
+ if (try_conversation_dissector(&pinfo->dst, &pinfo->src, pinfo->ptype,
+ pinfo->srcport, pinfo->destport,
+ sub_tvb, pinfo, tree, NULL)) {
return;
}
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index 024dc5f890..f09a2af617 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -3808,7 +3808,7 @@ decode_tcp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* for the conversation if available */
if (try_conversation_dissector(&pinfo->src, &pinfo->dst, PT_TCP,
- src_port, dst_port, next_tvb, pinfo, tree)) {
+ src_port, dst_port, next_tvb, pinfo, tree, NULL)) {
pinfo->want_pdu_tracking -= !!(pinfo->want_pdu_tracking);
return TRUE;
}
diff --git a/epan/dissectors/packet-udp.c b/epan/dissectors/packet-udp.c
index 1ca8ddc9ba..38541d09de 100644
--- a/epan/dissectors/packet-udp.c
+++ b/epan/dissectors/packet-udp.c
@@ -321,7 +321,7 @@ decode_udp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* for the conversation if available */
if (try_conversation_dissector(&pinfo->dst, &pinfo->src, PT_UDP,
- uh_dport, uh_sport, next_tvb, pinfo, tree)) {
+ uh_dport, uh_sport, next_tvb, pinfo, tree, NULL)) {
return;
}