"Color dissector filters" are just filters.

Rename the color_dissector_filters.[ch] files to just
dissector_filters.[ch], and rename the routines not to include the
string "color_", as those filters can be used as color filters *or*
display filters.

Remove "color_" from other places where we're not doing colorization.

In the GTK+ code, combine the two loops that add menu items for filters
in the dissector-provided filters list into one.

Change-Id: I08ecccc6b1b1be675e4129a0589f36c9f240407c
Reviewed-on: https://code.wireshark.org/review/11379
Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
Guy Harris 2015-10-28 20:30:55 -07:00
parent 0257a30de6
commit a8a4098e12
14 changed files with 137 additions and 151 deletions

View File

@ -1594,7 +1594,6 @@ set(LIBWIRESHARK_FILES
circuit.c
column.c
column-utils.c
color_dissector_filters.c
conversation.c
conversation_table.c
crc10-tvb.c
@ -1604,6 +1603,7 @@ set(LIBWIRESHARK_FILES
crc8-tvb.c
decode_as.c
disabled_protos.c
dissector_filters.c
dvb_chartbl.c
dwarf.c
epan.c

View File

@ -31,7 +31,6 @@ LIBWIRESHARK_SRC = \
asn1.c \
charsets.c \
circuit.c \
color_dissector_filters.c \
column.c \
column-utils.c \
conversation.c \
@ -43,6 +42,7 @@ LIBWIRESHARK_SRC = \
crc8-tvb.c \
decode_as.c \
disabled_protos.c \
dissector_filters.c \
dvb_chartbl.c \
dwarf.c \
epan.c \
@ -159,7 +159,6 @@ LIBWIRESHARK_INCLUDES = \
charsets.h \
chdlctypes.h \
circuit.h \
color_dissector_filters.h \
column.h \
column-info.h \
column-utils.h \
@ -175,6 +174,7 @@ LIBWIRESHARK_INCLUDES = \
decode_as.h \
diam_dict.h \
disabled_protos.h \
dissector_filters.h \
dtd.h \
dtd_parse.h \
dvb_chartbl.h \

View File

@ -1,5 +1,5 @@
/* color_dissector_filters.c
* Routines for dissector generated display filters
/* dissector_filters.c
* Routines for dissector-generated conversation display filters
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@ -25,35 +25,35 @@
#include <glib.h>
#include "packet.h"
#include "color_dissector_filters.h"
#include "dissector_filters.h"
GList *color_conv_filter_list = NULL;
GList *conv_filter_list = NULL;
void register_color_conversation_filter(const char *proto_name, const char *display_name,
is_color_conv_valid_func is_filter_valid, build_color_conv_string_func build_filter_string) {
color_conversation_filter_t *entry;
void register_conversation_filter(const char *proto_name, const char *display_name,
is_conv_valid_func is_filter_valid, build_conv_string_func build_filter_string) {
conversation_filter_t *entry;
entry = (color_conversation_filter_t *)g_malloc(sizeof(color_conversation_filter_t));
entry = (conversation_filter_t *)g_malloc(sizeof(conversation_filter_t));
entry->proto_name = proto_name;
entry->display_name = display_name;
entry->is_filter_valid = is_filter_valid;
entry->build_filter_string = build_filter_string;
color_conv_filter_list = g_list_append(color_conv_filter_list, entry);
conv_filter_list = g_list_append(conv_filter_list, entry);
}
struct color_conversation_filter_s* find_color_conversation_filter(const char *name)
struct conversation_filter_s* find_conversation_filter(const char *name)
{
GList *list_entry = color_conv_filter_list;
color_conversation_filter_t* color_filter;
GList *list_entry = conv_filter_list;
conversation_filter_t* filter;
while (list_entry != NULL) {
color_filter = (color_conversation_filter_t*)list_entry->data;
if (!strcmp(color_filter->proto_name, name))
return color_filter;
filter = (conversation_filter_t*)list_entry->data;
if (!strcmp(filter->proto_name, name))
return filter;
list_entry = g_list_next(list_entry);
}

View File

@ -1,5 +1,5 @@
/* color_dissector_filters.h
* Routines for dissector generated colorized conversation filters
/* dissector_filters.h
* Routines for dissector-generated conversation display filters
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
@ -20,8 +20,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __COLOR_DISSECTOR_FILTERS_H__
#define __COLOR_DISSECTOR_FILTERS_H__
#ifndef __DISSECTOR_FILTERS_H__
#define __DISSECTOR_FILTERS_H__
#include "ws_symbol_export.h"
@ -33,33 +33,33 @@ extern "C" {
*/
/** callback function definition: is a filter available for this packet? */
typedef gboolean (*is_color_conv_valid_func)(packet_info *pinfo);
typedef gboolean (*is_conv_valid_func)(packet_info *pinfo);
/** callback function definition: return the available filter for this packet or NULL if no filter is available,
Filter needs to be freed after use */
typedef gchar* (*build_color_conv_string_func)(packet_info *pinfo);
typedef gchar* (*build_conv_string_func)(packet_info *pinfo);
#define MAX_NUM_COLOR_CONVERSATION_COLORS 10
/** register a dissector filter */
WS_DLL_PUBLIC void register_color_conversation_filter(const char *proto_name, const char *display_name,
is_color_conv_valid_func is_filter_valid, build_color_conv_string_func build_filter_string);
WS_DLL_PUBLIC void register_conversation_filter(const char *proto_name, const char *display_name,
is_conv_valid_func is_filter_valid, build_conv_string_func build_filter_string);
WS_DLL_PUBLIC struct color_conversation_filter_s* find_color_conversation_filter(const char *proto_name);
WS_DLL_PUBLIC struct conversation_filter_s* find_conversation_filter(const char *proto_name);
/*** THE FOLLOWING SHOULD NOT BE USED BY ANY DISSECTORS!!! ***/
typedef struct color_conversation_filter_s {
const char * proto_name;
const char * display_name;
is_color_conv_valid_func is_filter_valid;
build_color_conv_string_func build_filter_string;
} color_conversation_filter_t;
typedef struct conversation_filter_s {
const char * proto_name;
const char * display_name;
is_conv_valid_func is_filter_valid;
build_conv_string_func build_filter_string;
} conversation_filter_t;
WS_DLL_PUBLIC GList *color_conv_filter_list;
WS_DLL_PUBLIC GList *conv_filter_list;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* color_dissector_filters.h */
#endif /* dissector_filters.h */

View File

@ -36,7 +36,7 @@
#include "config.h"
#include <epan/packet.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/prefs.h>
#include <epan/etypes.h>
#include <epan/expert.h>
@ -3736,8 +3736,8 @@ proto_register_enip(void)
proto_register_field_array(proto_dlr, hfdlr, array_length(hfdlr));
proto_register_subtree_array(ettdlr, array_length(ettdlr));
register_color_conversation_filter("enip", "ENIP IO", enip_io_conv_valid, enip_io_conv_filter);
register_color_conversation_filter("enip", "ENIP Explicit", enip_exp_conv_valid, enip_exp_conv_filter);
register_conversation_filter("enip", "ENIP IO", enip_io_conv_valid, enip_io_conv_filter);
register_conversation_filter("enip", "ENIP Explicit", enip_exp_conv_valid, enip_exp_conv_filter);
register_decode_as(&enip_da);

View File

@ -29,7 +29,7 @@
#include <epan/addr_resolv.h>
#include <epan/expert.h>
#include <epan/conversation_table.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <wsutil/pint.h>
#include "packet-eth.h"
#include "packet-ieee8023.h"
@ -162,13 +162,13 @@ eth_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, cons
}
static gboolean
eth_color_filter_valid(packet_info *pinfo)
eth_filter_valid(packet_info *pinfo)
{
return (pinfo->dl_src.type == AT_ETHER);
}
static gchar*
eth_build_color_filter(packet_info *pinfo)
eth_build_filter(packet_info *pinfo)
{
return g_strdup_printf("eth.addr eq %s and eth.addr eq %s",
address_to_str(pinfo->pool, &pinfo->dl_src),
@ -1013,7 +1013,7 @@ proto_register_eth(void)
eth_tap = register_tap("eth");
register_conversation_table(proto_eth, TRUE, eth_conversation_packet, eth_hostlist_packet);
register_color_conversation_filter("eth", "Ethernet", eth_color_filter_valid, eth_build_color_filter);
register_conversation_filter("eth", "Ethernet", eth_filter_valid, eth_build_filter);
}
void

View File

@ -34,7 +34,7 @@
#include <epan/ip_opts.h>
#include <epan/prefs.h>
#include <epan/conversation_table.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/reassemble.h>
#include <epan/etypes.h>
#include <epan/ppptypes.h>
@ -534,13 +534,13 @@ ip_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, const
}
static gboolean
ip_color_filter_valid(packet_info *pinfo)
ip_filter_valid(packet_info *pinfo)
{
return proto_is_frame_protocol(pinfo->layers, "ip");
}
static gchar*
ip_build_color_filter(packet_info *pinfo)
ip_build_filter(packet_info *pinfo)
{
return g_strdup_printf("ip.addr eq %s and ip.addr eq %s",
address_to_str(pinfo->pool, &pinfo->net_src),
@ -3173,7 +3173,7 @@ proto_register_ip(void)
register_decode_as(&ip_da);
register_conversation_table(proto_ip, TRUE, ip_conversation_packet, ip_hostlist_packet);
register_color_conversation_filter("ip", "IPv4", ip_color_filter_valid, ip_build_color_filter);
register_conversation_filter("ip", "IPv4", ip_filter_valid, ip_build_filter);
}
void

View File

@ -33,7 +33,7 @@
#include <epan/addr_resolv.h>
#include <epan/prefs.h>
#include <epan/conversation_table.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/reassemble.h>
#include <epan/ipproto.h>
#include <epan/etypes.h>
@ -434,13 +434,13 @@ ipv6_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, con
}
static gboolean
ipv6_color_filter_valid(packet_info *pinfo)
ipv6_filter_valid(packet_info *pinfo)
{
return proto_is_frame_protocol(pinfo->layers, "ipv6");
}
static gchar*
ipv6_build_color_filter(packet_info *pinfo)
ipv6_build_filter(packet_info *pinfo)
{
return g_strdup_printf("ipv6.addr eq %s and ipv6.addr eq %s",
address_to_str(pinfo->pool, &pinfo->net_src),
@ -3505,7 +3505,7 @@ proto_register_ipv6(void)
register_decode_as(&ipv6_next_header_da);
register_conversation_table(proto_ipv6, TRUE, ipv6_conversation_packet, ipv6_hostlist_packet);
register_color_conversation_filter("ipv6", "IPv6", ipv6_color_filter_valid, ipv6_build_color_filter);
register_conversation_filter("ipv6", "IPv6", ipv6_filter_valid, ipv6_build_filter);
}
void

View File

@ -33,7 +33,7 @@
#include <epan/prefs.h>
#include <epan/show_exception.h>
#include <epan/conversation_table.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/reassemble.h>
#include <epan/decode_as.h>
#include <epan/in_cksum.h>
@ -717,13 +717,13 @@ tcpip_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, co
}
static gboolean
tcp_color_filter_valid(packet_info *pinfo)
tcp_filter_valid(packet_info *pinfo)
{
return proto_is_frame_protocol(pinfo->layers, "tcp");
}
static gchar*
tcp_build_color_filter(packet_info *pinfo)
tcp_build_filter(packet_info *pinfo)
{
if( pinfo->net_src.type == AT_IPv4 && pinfo->net_dst.type == AT_IPv4 ) {
/* TCP over IPv4 */
@ -6604,7 +6604,7 @@ proto_register_tcp(void)
register_decode_as(&tcp_da);
register_conversation_table(proto_tcp, FALSE, tcpip_conversation_packet, tcpip_hostlist_packet);
register_color_conversation_filter("tcp", "TCP", tcp_color_filter_valid, tcp_build_color_filter);
register_conversation_filter("tcp", "TCP", tcp_filter_valid, tcp_build_filter);
/* considers MPTCP as a distinct protocol (even if it's a TCP option) */

View File

@ -42,7 +42,7 @@
#include <epan/conversation.h>
#include <epan/conversation_table.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/decode_as.h>
void proto_register_udp(void);
@ -371,13 +371,13 @@ udpip_hostlist_packet(void *pit, packet_info *pinfo, epan_dissect_t *edt _U_, co
}
static gboolean
udp_color_filter_valid(packet_info *pinfo)
udp_filter_valid(packet_info *pinfo)
{
return proto_is_frame_protocol(pinfo->layers, "udp");
}
static gchar*
udp_build_color_filter(packet_info *pinfo)
udp_build_filter(packet_info *pinfo)
{
if( pinfo->net_src.type == AT_IPv4 && pinfo->net_dst.type == AT_IPv4 ) {
/* UDP over IPv4 */
@ -1103,7 +1103,7 @@ proto_register_udp(void)
register_decode_as(&udp_da);
register_conversation_table(proto_udp, FALSE, udpip_conversation_packet, udpip_hostlist_packet);
register_color_conversation_filter("udp", "UDP", udp_color_filter_valid, udp_build_color_filter);
register_conversation_filter("udp", "UDP", udp_filter_valid, udp_build_filter);
register_init_routine(udp_init);

View File

@ -50,7 +50,7 @@
#include <epan/packet.h>
#include <epan/to_str.h>
#include <epan/expert.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/dissectors/packet-dcerpc.h>
#include "packet-pn.h"
@ -12260,8 +12260,8 @@ proto_register_pn_io (void)
register_cleanup_routine(pnio_cleanup);
register_color_conversation_filter("pn_io", "PN-IO AR", pn_io_ar_conv_valid, pn_io_ar_conv_filter);
register_color_conversation_filter("pn_io", "PN-IO AR (with data)", pn_io_ar_conv_valid, pn_io_ar_conv_data_filter);
register_conversation_filter("pn_io", "PN-IO AR", pn_io_ar_conv_valid, pn_io_ar_conv_filter);
register_conversation_filter("pn_io", "PN-IO AR (with data)", pn_io_ar_conv_valid, pn_io_ar_conv_data_filter);
}
void

View File

@ -27,7 +27,7 @@
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/addr_resolv.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/dissectors/packet-dcerpc.h>
#include <epan/dissectors/packet-dcom.h>
#include "packet-dcom-cba-acco.h"
@ -336,7 +336,7 @@ GList *cba_pdevs;
const true_false_string acco_flags_set_truth = { "Set", "Not set" };
static gboolean
cba_color_filter_valid(packet_info *pinfo)
cba_filter_valid(packet_info *pinfo)
{
void* profinet_type = p_get_proto_data(pinfo->pool, pinfo, proto_ICBAAccoMgt, 0);
@ -344,7 +344,7 @@ cba_color_filter_valid(packet_info *pinfo)
}
static gchar*
cba_build_color_filter(packet_info *pinfo)
cba_build_filter(packet_info *pinfo)
{
gboolean is_tcp = proto_is_frame_protocol(pinfo->layers, "tcp");
void* profinet_type = p_get_proto_data(pinfo->pool, pinfo, proto_ICBAAccoMgt, 0);
@ -5113,7 +5113,7 @@ proto_register_dcom_cba_acco (void)
proto_ICBAAccoSync = proto_register_protocol ("ICBAAccoSync", "ICBAAccoSync", "cba_acco_sync");
proto_register_subtree_array (ett5, array_length (ett5));
register_color_conversation_filter("cba", "PN-CBA", cba_color_filter_valid, cba_build_color_filter);
register_conversation_filter("cba", "PN-CBA", cba_filter_valid, cba_build_filter);
}

View File

@ -31,7 +31,7 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/color_dissector_filters.h>
#include <epan/dissector_filters.h>
#include <epan/epan_dissect.h>
#include <epan/column.h>
#include <epan/stats_tree_priv.h>
@ -189,7 +189,7 @@ edit_window_cb(GtkWidget *widget _U_)
#endif
static void
colorize_conversation_cb(color_conversation_filter_t* color_filter, int action_num)
colorize_conversation_cb(conversation_filter_t* color_filter, int action_num)
{
gchar *filter = NULL;
packet_info *pi = &cfile.edt->pi;
@ -203,26 +203,26 @@ colorize_conversation_cb(color_conversation_filter_t* color_filter, int action_n
* or through an accelerator key. Try to build a conversation
* filter in the order TCP, UDP, IP, Ethernet and apply the
* coloring */
color_filter = find_color_conversation_filter("tcp");
color_filter = find_conversation_filter("tcp");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
if (filter == NULL) {
color_filter = find_color_conversation_filter("udp");
color_filter = find_conversation_filter("udp");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}
if (filter == NULL) {
color_filter = find_color_conversation_filter("ip");
color_filter = find_conversation_filter("ip");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}
if (filter == NULL) {
color_filter = find_color_conversation_filter("ipv6");
color_filter = find_conversation_filter("ipv6");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}
if (filter == NULL) {
color_filter = find_color_conversation_filter("eth");
color_filter = find_conversation_filter("eth");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}
@ -254,23 +254,23 @@ goto_conversation_frame(gboolean dir)
dfilter_t *dfcode = NULL;
gboolean found_packet = FALSE;
packet_info *pi = &cfile.edt->pi;
color_conversation_filter_t* color_filter;
conversation_filter_t* conv_filter;
/* Try to build a conversation
* filter in the order TCP, UDP, IP, Ethernet and apply the
* coloring */
color_filter = find_color_conversation_filter("tcp");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
color_filter = find_color_conversation_filter("udp");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
color_filter = find_color_conversation_filter("ip");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
color_filter = find_color_conversation_filter("ipv6");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
conv_filter = find_conversation_filter("tcp");
if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi)))
filter = conv_filter->build_filter_string(pi);
conv_filter = find_conversation_filter("udp");
if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi)))
filter = conv_filter->build_filter_string(pi);
conv_filter = find_conversation_filter("ip");
if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi)))
filter = conv_filter->build_filter_string(pi);
conv_filter = find_conversation_filter("ipv6");
if ((conv_filter != NULL) && (conv_filter->is_filter_valid(pi)))
filter = conv_filter->build_filter_string(pi);
if( filter == NULL ) {
statusbar_push_temporary_msg("Unable to build conversation filter.");
@ -1886,77 +1886,77 @@ typedef void (*packet_list_menu_color_conv_color_cb_t)(GtkAction *action, gpoint
static void
packet_list_menu_color_conv_color1_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 1);
}
static void
packet_list_menu_color_conv_color2_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 2);
}
static void
packet_list_menu_color_conv_color3_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 3);
}
static void
packet_list_menu_color_conv_color4_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 4);
}
static void
packet_list_menu_color_conv_color5_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 5);
}
static void
packet_list_menu_color_conv_color6_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 6);
}
static void
packet_list_menu_color_conv_color7_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 7);
}
static void
packet_list_menu_color_conv_color8_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 8);
}
static void
packet_list_menu_color_conv_color9_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 9);
}
static void
packet_list_menu_color_conv_color10_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 10);
}
static void
packet_list_menu_color_conv_new_rule_cb(GtkAction *action _U_, gpointer user_data)
{
color_conversation_filter_t* color_filter = (color_conversation_filter_t*)user_data;
conversation_filter_t* color_filter = (conversation_filter_t*)user_data;
colorize_conversation_cb(color_filter, 0);
}
@ -2557,7 +2557,7 @@ main_menu_new(GtkAccelGroup ** table)
static void
menu_dissector_filter_cb(GtkAction *action _U_, gpointer callback_data)
{
color_conversation_filter_t *filter_entry = (color_conversation_filter_t *)callback_data;
conversation_filter_t *filter_entry = (conversation_filter_t *)callback_data;
GtkWidget *filter_te;
const char *buf;
@ -2580,7 +2580,7 @@ menu_dissector_filter_cb(GtkAction *action _U_, gpointer callback_data)
static gboolean
menu_dissector_filter_spe_cb(frame_data *fd _U_, epan_dissect_t *edt, gpointer callback_data)
{
color_conversation_filter_t *filter_entry = (color_conversation_filter_t*)callback_data;
conversation_filter_t *filter_entry = (conversation_filter_t*)callback_data;
/* XXX - this gets the packet_info of the last dissected packet, */
/* which is not necessarily the last selected packet */
@ -2591,8 +2591,8 @@ menu_dissector_filter_spe_cb(frame_data *fd _U_, epan_dissect_t *edt, gpointer c
static void
menu_dissector_filter(capture_file *cf)
{
GList *list_entry = color_conv_filter_list;
color_conversation_filter_t *filter_entry;
GList *list_entry = conv_filter_list;
conversation_filter_t *filter_entry;
guint merge_id;
GtkActionGroup *action_group;
@ -2638,7 +2638,7 @@ menu_dissector_filter(capture_file *cf)
}
while (list_entry != NULL) {
filter_entry = (color_conversation_filter_t *)list_entry->data;
filter_entry = (conversation_filter_t *)list_entry->data;
action_name = g_strdup_printf ("filter-%u", i);
/*g_warning("action_name %s, filter_entry->name %s",action_name,filter_entry->name);*/
action = (GtkAction *)g_object_new (GTK_TYPE_ACTION,
@ -2795,9 +2795,9 @@ menu_hostlist_list(capture_file *cf)
}
static void
menu_color_conversation_filter_cb(GtkAction *action _U_, gpointer data)
menu_conversation_display_filter_cb(GtkAction *action _U_, gpointer data)
{
color_conversation_filter_t *filter_entry = (color_conversation_filter_t *)data;
conversation_filter_t *filter_entry = (conversation_filter_t *)data;
gchar *filter;
GtkWidget *filter_te;
@ -2820,7 +2820,7 @@ menu_color_conversation_filter_cb(GtkAction *action _U_, gpointer data)
static gboolean
menu_color_dissector_filter_spe_cb(frame_data *fd _U_, epan_dissect_t *edt, gpointer callback_data)
{
color_conversation_filter_t *filter_entry = (color_conversation_filter_t *)callback_data;
conversation_filter_t *filter_entry = (conversation_filter_t *)callback_data;
/* XXX - this gets the packet_info of the last dissected packet, */
/* which is not necessarily the last selected packet */
@ -2834,8 +2834,8 @@ menu_color_conversation_filter(capture_file *cf)
GtkWidget *submenu_conv_filters, *submenu_color_conv_filters;
guint merge_id, color_merge_id;
GtkActionGroup *action_group, *color_action_group;
GList *list_entry = color_conv_filter_list;
color_conversation_filter_t* color_filter;
GList *list_entry = conv_filter_list;
conversation_filter_t* color_filter;
int conv_counter = 0;
static packet_list_menu_color_conv_color_cb_t callbacks[MAX_NUM_COLOR_CONVERSATION_COLORS] = {
@ -2891,7 +2891,7 @@ menu_color_conversation_filter(capture_file *cf)
GtkAction *action, *color_action;
GtkWidget *color_conv_filter_menuitem, *color_conv_filter_submenu, *color_conv_widget;
color_filter = (color_conversation_filter_t*)list_entry->data;
color_filter = (conversation_filter_t*)list_entry->data;
/* Create conversation filter menu item for each registered protocol */
action_name = g_strdup_printf ("color_conversation-%u", conv_counter);
@ -2901,7 +2901,7 @@ menu_color_conversation_filter(capture_file *cf)
"label", color_filter->display_name,
"sensitive", menu_color_dissector_filter_spe_cb(NULL, cf->edt, color_filter),
NULL);
g_signal_connect (action, "activate", G_CALLBACK (menu_color_conversation_filter_cb), color_filter);
g_signal_connect (action, "activate", G_CALLBACK (menu_conversation_display_filter_cb), color_filter);
gtk_action_group_add_action (action_group, action);
g_object_unref (action);
@ -4517,7 +4517,7 @@ set_menus_for_captured_packets(gboolean have_captured_packets)
void
set_menus_for_selected_packet(capture_file *cf)
{
GList *color_list_entry = color_conv_filter_list;
GList *conv_filter_list_entry;
guint i = 0;
gboolean properties = FALSE;
const char *abbrev = NULL;
@ -4703,41 +4703,27 @@ set_menus_for_selected_packet(capture_file *cf)
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/TelephonyMenu/LTEmenu/LTE_RLC_Graph",
is_lte_rlc);
i = 0;
color_list_entry = color_conv_filter_list;
while (color_list_entry != NULL) {
color_conversation_filter_t *filter_entry;
for (i = 0, conv_filter_list_entry = conv_filter_list;
conv_filter_list_entry != NULL;
conv_filter_list_entry = g_list_next(conv_filter_list_entry), i++) {
conversation_filter_t *filter_entry;
gchar *path;
filter_entry = (color_conversation_filter_t *)color_list_entry->data;
filter_entry = (conversation_filter_t *)conv_filter_list_entry->data;
path = g_strdup_printf("/Menubar/AnalyzeMenu/ConversationFilterMenu/Filters/filter-%u", i);
set_menu_sensitivity(ui_manager_main_menubar, path,
menu_dissector_filter_spe_cb(/* frame_data *fd _U_*/ NULL, cf->edt, filter_entry));
g_free(path);
i++;
color_list_entry = g_list_next(color_list_entry);
}
i = 0;
color_list_entry = color_conv_filter_list;
while (color_list_entry != NULL) {
color_conversation_filter_t* color_filter;
gchar *path;
color_filter = (color_conversation_filter_t *)color_list_entry->data;
path = g_strdup_printf("/PacketListMenuPopup/ConversationFilter/Conversations/color_conversation-%d", i);
i++;
set_menu_sensitivity(ui_manager_packet_list_menu, path,
menu_color_dissector_filter_spe_cb(NULL, cf->edt, color_filter));
menu_color_dissector_filter_spe_cb(NULL, cf->edt, filter_entry));
g_free(path);
path = g_strdup_printf("/PacketListMenuPopup/ColorizeConversation/Colorize/%s", color_filter->display_name);
path = g_strdup_printf("/PacketListMenuPopup/ColorizeConversation/Colorize/%s", filter_entry->display_name);
set_menu_sensitivity(ui_manager_packet_list_menu, path,
menu_color_dissector_filter_spe_cb(NULL, cf->edt, color_filter));
menu_color_dissector_filter_spe_cb(NULL, cf->edt, filter_entry));
g_free(path);
color_list_entry = g_list_next(color_list_entry);
}
}

View File

@ -54,7 +54,7 @@
#include <wsutil/str_util.h>
#include "epan/addr_resolv.h"
#include "epan/color_dissector_filters.h"
#include "epan/dissector_filters.h"
#include "epan/column.h"
#include "epan/dfilter/dfilter-macro.h"
#include "epan/epan_dissect.h"
@ -1144,16 +1144,16 @@ void MainWindow::setMenusForSelectedPacket()
packet_list_->conversationMenu()->clear();
packet_list_->colorizeMenu()->clear();
for (GList *color_list_entry = color_conv_filter_list; color_list_entry; color_list_entry = g_list_next(color_list_entry)) {
for (GList *conv_filter_list_entry = conv_filter_list; conv_filter_list_entry; conv_filter_list_entry = g_list_next(conv_filter_list_entry)) {
// Main menu items
color_conversation_filter_t* color_filter = (color_conversation_filter_t *)color_list_entry->data;
QAction *conv_action = main_ui_->menuConversationFilter->addAction(color_filter->display_name);
conversation_filter_t* conv_filter = (conversation_filter_t *)conv_filter_list_entry->data;
QAction *conv_action = main_ui_->menuConversationFilter->addAction(conv_filter->display_name);
bool enable = false;
QString filter;
if (capture_file_.capFile()->edt) {
enable = color_filter->is_filter_valid(&capture_file_.capFile()->edt->pi);
filter = gchar_free_to_qstring(color_filter->build_filter_string(&capture_file_.capFile()->edt->pi));
enable = conv_filter->is_filter_valid(&capture_file_.capFile()->edt->pi);
filter = gchar_free_to_qstring(conv_filter->build_filter_string(&capture_file_.capFile()->edt->pi));
}
conv_action->setEnabled(enable);
conv_action->setData(filter);
@ -1280,18 +1280,18 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) {
if (!proto_tree_ || !proto_tree_->hasFocus()) return;
main_ui_->menuConversationFilter->clear();
for (GList *color_list_entry = color_conv_filter_list; color_list_entry; color_list_entry = g_list_next(color_list_entry)) {
color_conversation_filter_t* color_filter = (color_conversation_filter_t *)color_list_entry->data;
QAction *conv_action = main_ui_->menuConversationFilter->addAction(color_filter->display_name);
for (GList *conv_filter_list_entry = conv_filter_list; conv_filter_list_entry; conv_filter_list_entry = g_list_next(conv_filter_list_entry)) {
conversation_filter_t* conv_filter = (conversation_filter_t *)conv_filter_list_entry->data;
QAction *conv_action = main_ui_->menuConversationFilter->addAction(conv_filter->display_name);
bool conv_enable = false;
QString conv_filter;
bool enable = false;
QString filter;
if (capture_file_.capFile() && capture_file_.capFile()->edt) {
conv_enable = color_filter->is_filter_valid(&capture_file_.capFile()->edt->pi);
conv_filter = color_filter->build_filter_string(&capture_file_.capFile()->edt->pi);
enable = conv_filter->is_filter_valid(&capture_file_.capFile()->edt->pi);
filter = conv_filter->build_filter_string(&capture_file_.capFile()->edt->pi);
}
conv_action->setEnabled(conv_enable);
conv_action->setData(conv_filter);
conv_action->setEnabled(enable);
conv_action->setData(filter);
connect(conv_action, SIGNAL(triggered()), this, SLOT(applyConversationFilter()));
}
@ -2219,26 +2219,26 @@ void MainWindow::colorizeConversation(bool create_rule)
guint8 cc_num = cc_action->data().toUInt();
gchar *filter = NULL;
const color_conversation_filter_t *color_filter = find_color_conversation_filter("tcp");
const conversation_filter_t *color_filter = find_conversation_filter("tcp");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
if (filter == NULL) {
color_filter = find_color_conversation_filter("udp");
color_filter = find_conversation_filter("udp");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}
if (filter == NULL) {
color_filter = find_color_conversation_filter("ip");
color_filter = find_conversation_filter("ip");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}
if (filter == NULL) {
color_filter = find_color_conversation_filter("ipv6");
color_filter = find_conversation_filter("ipv6");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}
if (filter == NULL) {
color_filter = find_color_conversation_filter("eth");
color_filter = find_conversation_filter("eth");
if ((color_filter != NULL) && (color_filter->is_filter_valid(pi)))
filter = color_filter->build_filter_string(pi);
}