|
Wireshark
2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
|
#include "ws_symbol_export.h"#include "packet.h"Go to the source code of this file.
Classes | |
| struct | conversation |
Typedefs | |
| typedef struct conversation_key * | conversation_key_t |
| typedef struct conversation | conversation_t |
| typedef struct endpoint * | endpoint_t |
Functions | |
| WS_DLL_PUBLIC address * | conversation_key_addr1 (const conversation_key_t key) |
| WS_DLL_PUBLIC address * | conversation_key_addr2 (const conversation_key_t key) |
| WS_DLL_PUBLIC guint32 | conversation_key_port1 (const conversation_key_t key) |
| WS_DLL_PUBLIC guint32 | conversation_key_port2 (const conversation_key_t key) |
| void | conversation_init (void) |
| void | conversation_epan_reset (void) |
| WS_DLL_PUBLIC conversation_t * | conversation_new (const guint32 setup_frame, const address *addr1, const address *addr2, const endpoint_type etype, const guint32 port1, const guint32 port2, const guint options) |
| WS_DLL_PUBLIC conversation_t * | conversation_new_by_id (const guint32 setup_frame, const endpoint_type etype, const guint32 id, const guint options) |
| WS_DLL_PUBLIC conversation_t * | find_conversation (const guint32 frame_num, const address *addr_a, const address *addr_b, const endpoint_type etype, const guint32 port_a, const guint32 port_b, const guint options) |
| WS_DLL_PUBLIC conversation_t * | find_conversation_by_id (const guint32 frame, const endpoint_type etype, const guint32 id, const guint options) |
| WS_DLL_PUBLIC conversation_t * | find_conversation_pinfo (packet_info *pinfo, const guint options) |
| WS_DLL_PUBLIC conversation_t * | find_or_create_conversation (packet_info *pinfo) |
| WS_DLL_PUBLIC void | conversation_add_proto_data (conversation_t *conv, const int proto, void *proto_data) |
| WS_DLL_PUBLIC void * | conversation_get_proto_data (const conversation_t *conv, const int proto) |
| WS_DLL_PUBLIC void | conversation_delete_proto_data (conversation_t *conv, const int proto) |
| WS_DLL_PUBLIC void | conversation_set_dissector (conversation_t *conversation, const dissector_handle_t handle) |
| WS_DLL_PUBLIC void | conversation_set_dissector_from_frame_number (conversation_t *conversation, const guint32 starting_frame_num, const dissector_handle_t handle) |
| WS_DLL_PUBLIC dissector_handle_t | conversation_get_dissector (conversation_t *conversation, const guint32 frame_num) |
| WS_DLL_PUBLIC void | conversation_create_endpoint (struct _packet_info *pinfo, address *addr1, address *addr2, endpoint_type etype, guint32 port1, guint32 port2, const guint options) |
| WS_DLL_PUBLIC void | conversation_create_endpoint_by_id (struct _packet_info *pinfo, endpoint_type etype, guint32 id, const guint options) |
| WS_DLL_PUBLIC guint32 | conversation_get_endpoint_by_id (struct _packet_info *pinfo, endpoint_type etype, const guint options) |
| gboolean | try_conversation_dissector (const address *addr_a, const address *addr_b, const endpoint_type etype, const guint32 port_a, const guint32 port_b, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data, const guint options) |
| gboolean | try_conversation_dissector_by_id (const endpoint_type etype, const guint32 id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) |
| void | conversation_set_port2 (conversation_t *conv, const guint32 port) |
| void | conversation_set_addr2 (conversation_t *conv, const address *addr) |
| WS_DLL_PUBLIC wmem_map_t * | get_conversation_hashtable_exact (void) |
| WS_DLL_PUBLIC wmem_map_t * | get_conversation_hashtable_no_addr2 (void) |
| WS_DLL_PUBLIC wmem_map_t * | get_conversation_hashtable_no_port2 (void) |
| WS_DLL_PUBLIC wmem_map_t * | get_conversation_hashtable_no_addr2_or_port2 (void) |
| WS_DLL_PUBLIC endpoint_type | conversation_pt_to_endpoint_type (port_type pt) |
| WS_DLL_PUBLIC guint | conversation_hash_exact (gconstpointer v) |
| WS_DLL_PUBLIC gchar * | conversation_get_html_hash (const conversation_key_t key) |
| void conversation_epan_reset | ( | void | ) |
Initialize some variables every time a file is loaded or re-loaded.
| void conversation_init | ( | void | ) |
Create a new hash tables for conversations.
| WS_DLL_PUBLIC conversation_t* find_conversation | ( | const guint32 | frame_num, |
| const address * | addr_a, | ||
| const address * | addr_b, | ||
| const endpoint_type | etype, | ||
| const guint32 | port_a, | ||
| const guint32 | port_b, | ||
| const guint | options | ||
| ) |
Given two address/port pairs for a packet, search for a conversation containing packets between those address/port pairs. Returns NULL if not found.
We try to find the most exact match that we can, and then proceed to try wildcard matches on the "addr_b" and/or "port_b" argument if a more exact match failed.
Either or both of the "addr_b" and "port_b" arguments may be specified as a wildcard by setting the NO_ADDR_B or NO_PORT_B flags in the "options" argument. We do only wildcard matches on addresses and ports specified as wildcards.
I.e.:
if neither "addr_b" nor "port_b" were specified as wildcards, we do an exact match (addr_a/port_a and addr_b/port_b) and, if that succeeds, we return a pointer to the matched conversation;
otherwise, if "port_b" wasn't specified as a wildcard, we try to match any address 2 with the specified port 2 (addr_a/port_a and {any}/addr_b) and, if that succeeds, we return a pointer to the matched conversation;
otherwise, if "addr_b" wasn't specified as a wildcard, we try to match any port 2 with the specified address 2 (addr_a/port_a and addr_b/{any}) and, if that succeeds, we return a pointer to the matched conversation;
otherwise, we try to match any address 2 and any port 2 (addr_a/port_a and {any}/{any}) and, if that succeeds, we return a pointer to the matched conversation;
otherwise, we found no matching conversation, and return NULL.
| WS_DLL_PUBLIC conversation_t* find_conversation_pinfo | ( | packet_info * | pinfo, |
| const guint | options | ||
| ) |
A helper function that calls find_conversation() using data from pinfo The frame number and addresses are taken from pinfo.
| WS_DLL_PUBLIC conversation_t* find_or_create_conversation | ( | packet_info * | pinfo | ) |
A helper function that calls find_conversation() and, if a conversation is not found, calls conversation_new(). The frame number and addresses are taken from pinfo. No options are used, though we could extend this API to include an options parameter.
| gboolean try_conversation_dissector | ( | const address * | addr_a, |
| const address * | addr_b, | ||
| const endpoint_type | etype, | ||
| const guint32 | port_a, | ||
| const guint32 | port_b, | ||
| tvbuff_t * | tvb, | ||
| packet_info * | pinfo, | ||
| proto_tree * | tree, | ||
| void * | data, | ||
| const guint | options | ||
| ) |
Given two address/port pairs for a packet, search for a matching conversation and, if found and it has a conversation dissector, call that dissector and return TRUE, otherwise return FALSE.
This helper uses call_dissector_only which will NOT call the default "data" dissector if the packet was rejected. Our caller is responsible to call the data dissector explicitly in case this function returns FALSE.
1.8.11