Make the signatures of functions passed to "register_tap_listener()"
[obnox/wireshark/wip.git] / gtk / conversations_table.h
1 /* conversations_table.h
2  * conversations_table   2003 Ronnie Sahlberg
3  * Helper routines common to all conversations taps.
4  *
5  * $Id$
6  *
7  * Ethereal - Network traffic analyzer
8  * By Gerald Combs <gerald@ethereal.com>
9  * Copyright 1998 Gerald Combs
10  * 
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  * 
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  * 
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  */
25
26 #include "sat.h"
27
28 /** @file
29  *  Conversation definitions.
30  */
31
32 /** Conversation information */
33 typedef struct _conversation_t {
34         address src_address;    /**< source address */
35         address dst_address;    /**< destination address */
36         SAT_E   sat;            /**< address type */
37         guint32 port_type;      /**< port_type (e.g. PT_TCP) */
38         guint32 src_port;       /**< source port */
39         guint32 dst_port;       /**< destination port */
40
41         guint32 rx_frames;      /**< number of received packets */
42         guint32 tx_frames;      /**< number of transmitted packets */
43         guint32 rx_bytes;       /**< number of received bytes */
44         guint32 tx_bytes;       /**< number of transmitted bytes */
45 } conversation_t;
46
47 /** Conversation widget */
48 typedef struct _conversations_table {
49         char                *name;              /**< the name of the table */
50         GtkWidget           *win;               /**< GTK window */
51         GtkWidget           *page_lb;           /**< label */
52         GtkWidget           *scrolled_window;   /**< the scrolled window */
53         GtkCList            *table;             /**< the GTK table */
54         guint32             num_columns;         /**< number of columns in the above table */
55         char                *default_titles[10]; /**< Column headers */
56         GtkWidget           *menu;              /**< context menu */
57         gboolean            has_ports;          /**< table has ports */
58         guint32             num_conversations;  /**< number of conversations */
59         conversation_t      *conversations;     /**< array of conversation values */
60         gboolean            resolve_names;      /**< resolve address names? */
61 } conversations_table;
62
63 /** Register the conversation table for the multiple conversation window.
64  *
65  * @param hide_ports hide the port columns
66  * @param table_name the table name to be displayed
67  * @param tap_name the registered tap name
68  * @param filter the optional filter name or NULL
69  * @param packet_func the function to be called for each incoming packet
70  */
71 extern void register_conversation_table(gboolean hide_ports, char *table_name, char *tap_name, char *filter, tap_packet_cb packet_func);
72
73 /** Init the conversation table for the single conversation window.
74  *
75  * @param hide_ports hide the port columns
76  * @param table_name the table name to be displayed
77  * @param tap_name the registered tap name
78  * @param filter the optional filter name or NULL
79  * @param packet_func the function to be called for each incoming packet
80  */
81 extern void init_conversation_table(gboolean hide_ports, char *table_name, char *tap_name, char *filter, tap_packet_cb packet_func);
82
83 /** Callback for "Conversations" statistics item.
84  *
85  * @param widget unused
86  * @param data unused
87  */
88 extern void init_conversation_notebook_cb(GtkWidget *widget, gpointer data);
89
90 /** Add some data to the conversation table.
91  *
92  * @param ct the table to add the data to
93  * @param src source address
94  * @param dst destination address
95  * @param src_port source port
96  * @param dst_port destination port
97  * @param num_frames number of packets
98  * @param num_bytes number of bytes
99  * @param sat address type
100  * @param port_type the port type (e.g. PT_TCP)
101  */
102 extern void add_conversation_table_data(conversations_table *ct, const address *src, const address *dst, 
103                         guint32 src_port, guint32 dst_port, int num_frames, int num_bytes, SAT_E sat, int port_type);