diff options
author | Michael Mann <mmann78@netscape.net> | 2013-11-01 23:45:10 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-11-01 23:45:10 +0000 |
commit | b6484432aaa2eb6787cc54cc4a7b489ae70e57aa (patch) | |
tree | 312e92ce94021141628bbb320d67281fdec75651 /epan | |
parent | 7c20a9314ffd05eddeb7f0744ae4cf9151175f76 (diff) |
Allow try_conversation_dissector() to pass data to subdissectors.
svn path=/trunk/; revision=53035
Diffstat (limited to 'epan')
-rw-r--r-- | epan/conversation.c | 4 | ||||
-rw-r--r-- | epan/conversation.h | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-atalk.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-dccp.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-rlogin.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-soupbintcp.c | 11 | ||||
-rw-r--r-- | epan/dissectors/packet-tcp.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-udp.c | 2 |
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; } |