forked from osmocom/wireshark
Add navigation to previous/next packets in the conversation. It will check TCP and UDP first and if this is not TCP or UDP, it will use IP.
Accelerator keys: <ctrl>+[ Goto Previous Packet In Conversation <ctrl>+] Goto Next Packet In Conversation svn path=/trunk/; revision=34319
This commit is contained in:
parent
316e50f8cd
commit
2bffa17891
|
@ -182,6 +182,20 @@
|
||||||
list isn't focused.
|
list isn't focused.
|
||||||
</para></entry>
|
</para></entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>Ctrl+]</entry>
|
||||||
|
<entry><para>
|
||||||
|
Move to the next packet of the conversation
|
||||||
|
(TCP, UDP or IP)
|
||||||
|
</para></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>Ctrl+[</entry>
|
||||||
|
<entry><para>
|
||||||
|
Move to the previous packet of the conversation
|
||||||
|
(TCP, UDP or IP)
|
||||||
|
</para></entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>Left</entry>
|
<entry>Left</entry>
|
||||||
<entry><para>
|
<entry><para>
|
||||||
|
|
65
gtk/menus.c
65
gtk/menus.c
|
@ -444,6 +444,55 @@ colorize_conversation_cb(GtkWidget * w _U_, gpointer data _U_, int action)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
goto_conversation_frame(gboolean dir)
|
||||||
|
{
|
||||||
|
gchar *filter;
|
||||||
|
dfilter_t *dfcode = NULL;
|
||||||
|
gboolean found_packet=FALSE;
|
||||||
|
|
||||||
|
filter = build_conversation_filter(CONV_TCP,FALSE);
|
||||||
|
if( filter == NULL )
|
||||||
|
filter = build_conversation_filter(CONV_UDP,FALSE);
|
||||||
|
if( filter == NULL )
|
||||||
|
filter = build_conversation_filter(CONV_IP,FALSE);
|
||||||
|
if( filter == NULL ) {
|
||||||
|
simple_status("Unable to build conversation filter.");
|
||||||
|
g_free(filter);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dfilter_compile(filter, &dfcode)) {
|
||||||
|
/* The attempt failed; report an error. */
|
||||||
|
simple_status("Error compiling filter for this conversation.");
|
||||||
|
g_free(filter);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
found_packet = cf_find_packet_dfilter(&cfile, dfcode, dir);
|
||||||
|
|
||||||
|
if (!found_packet) {
|
||||||
|
/* We didn't find a packet */
|
||||||
|
simple_status("No previous/next packet in conversation.");
|
||||||
|
}
|
||||||
|
|
||||||
|
dfilter_free(dfcode);
|
||||||
|
g_free(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
goto_next_frame_conversation_cb(GtkWidget *w _U_, gpointer d _U_)
|
||||||
|
{
|
||||||
|
goto_conversation_frame(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
goto_previous_frame_conversation_cb(GtkWidget *w _U_, gpointer d _U_)
|
||||||
|
{
|
||||||
|
goto_conversation_frame(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Main menu.
|
* Main menu.
|
||||||
*
|
*
|
||||||
|
@ -778,6 +827,10 @@ static GtkItemFactoryEntry menu_items[] =
|
||||||
GTK_MENU_FUNC(goto_top_frame_cb), 0, "<StockItem>", GTK_STOCK_GOTO_TOP,},
|
GTK_MENU_FUNC(goto_top_frame_cb), 0, "<StockItem>", GTK_STOCK_GOTO_TOP,},
|
||||||
{"/Go/_Last Packet", "<control>End",
|
{"/Go/_Last Packet", "<control>End",
|
||||||
GTK_MENU_FUNC(goto_bottom_frame_cb), 0, "<StockItem>", GTK_STOCK_GOTO_BOTTOM,},
|
GTK_MENU_FUNC(goto_bottom_frame_cb), 0, "<StockItem>", GTK_STOCK_GOTO_BOTTOM,},
|
||||||
|
{"/Go/Previous Packet In Conversation", "<control>bracketleft",
|
||||||
|
GTK_MENU_FUNC(goto_previous_frame_conversation_cb), 0, NULL, NULL,},
|
||||||
|
{"/Go/Next Packet In Conversation", "<control>bracketright",
|
||||||
|
GTK_MENU_FUNC(goto_next_frame_conversation_cb), 0, NULL, NULL,},
|
||||||
#ifdef HAVE_LIBPCAP
|
#ifdef HAVE_LIBPCAP
|
||||||
{"/_Capture", NULL, NULL, 0, "<Branch>", NULL,},
|
{"/_Capture", NULL, NULL, 0, "<Branch>", NULL,},
|
||||||
{"/Capture/_Interfaces...", "<control>I",
|
{"/Capture/_Interfaces...", "<control>I",
|
||||||
|
@ -1476,6 +1529,8 @@ Not implemented!
|
||||||
" <menuitem name='NextPacket' action='/Go/NextPacket'/>\n"
|
" <menuitem name='NextPacket' action='/Go/NextPacket'/>\n"
|
||||||
" <menuitem name='FirstPacket' action='/Go/FirstPacket'/>\n"
|
" <menuitem name='FirstPacket' action='/Go/FirstPacket'/>\n"
|
||||||
" <menuitem name='LastPacket' action='/Go/LastPacket'/>\n"
|
" <menuitem name='LastPacket' action='/Go/LastPacket'/>\n"
|
||||||
|
" <menuitem name='PreviousPacketInConversation' action='/Go/PreviousPacketInConversation'/>\n"
|
||||||
|
" <menuitem name='NextPacketInConversation' action='/Go/NextPacketInConversation'/>\n"
|
||||||
" </menu>\n"
|
" </menu>\n"
|
||||||
#ifdef HAVE_LIBPCAP
|
#ifdef HAVE_LIBPCAP
|
||||||
" <menu name= 'CaptureMenu' action='/Capture'>\n"
|
" <menu name= 'CaptureMenu' action='/Capture'>\n"
|
||||||
|
@ -1772,6 +1827,8 @@ Not implemeted.
|
||||||
{ "/Go/NextPacket", GTK_STOCK_GO_DOWN, "Next Packet", "<control>Down", NULL, G_CALLBACK(goto_next_frame_cb) },
|
{ "/Go/NextPacket", GTK_STOCK_GO_DOWN, "Next Packet", "<control>Down", NULL, G_CALLBACK(goto_next_frame_cb) },
|
||||||
{ "/Go/FirstPacket", GTK_STOCK_GOTO_TOP, "F_irst Packet", "<control>Home", NULL, G_CALLBACK(goto_top_frame_cb) },
|
{ "/Go/FirstPacket", GTK_STOCK_GOTO_TOP, "F_irst Packet", "<control>Home", NULL, G_CALLBACK(goto_top_frame_cb) },
|
||||||
{ "/Go/LastPacket", GTK_STOCK_GOTO_BOTTOM, "_Last Packet", "<control>End", NULL, G_CALLBACK(goto_bottom_frame_cb) },
|
{ "/Go/LastPacket", GTK_STOCK_GOTO_BOTTOM, "_Last Packet", "<control>End", NULL, G_CALLBACK(goto_bottom_frame_cb) },
|
||||||
|
{ "/Go/PreviousPacketInConversation", GTK_STOCK_GO_UP, "Previous Packet In Conversation", "<control>bracketleft", NULL, G_CALLBACK(goto_previous_frame_conversation_cb) },
|
||||||
|
{ "/Go/NextPacketInConversation", GTK_STOCK_GO_DOWN, "Next Packet In Conversation", "<control>bracketright", NULL, G_CALLBACK(goto_next_frame_conversation_cb) },
|
||||||
|
|
||||||
#ifdef HAVE_LIBPCAP
|
#ifdef HAVE_LIBPCAP
|
||||||
{ "/Capture/Interfaces", WIRESHARK_STOCK_CAPTURE_INTERFACES, "_Interfaces...", "<control>I", NULL, G_CALLBACK(capture_if_cb) },
|
{ "/Capture/Interfaces", WIRESHARK_STOCK_CAPTURE_INTERFACES, "_Interfaces...", "<control>I", NULL, G_CALLBACK(capture_if_cb) },
|
||||||
|
@ -5732,6 +5789,10 @@ set_menus_for_captured_packets(gboolean have_captured_packets)
|
||||||
have_captured_packets);
|
have_captured_packets);
|
||||||
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/GoMenu/LastPacket",
|
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/GoMenu/LastPacket",
|
||||||
have_captured_packets);
|
have_captured_packets);
|
||||||
|
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/GoMenu/PreviousPacketInConversation",
|
||||||
|
have_captured_packets);
|
||||||
|
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/GoMenu/NextPacketInConversation",
|
||||||
|
have_captured_packets);
|
||||||
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/StatisticsMenu/Summary",
|
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/StatisticsMenu/Summary",
|
||||||
have_captured_packets);
|
have_captured_packets);
|
||||||
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/StatisticsMenu/ProtocolHierarchy",
|
set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/StatisticsMenu/ProtocolHierarchy",
|
||||||
|
@ -5759,6 +5820,10 @@ set_menus_for_captured_packets(gboolean have_captured_packets)
|
||||||
have_captured_packets);
|
have_captured_packets);
|
||||||
set_menu_sensitivity_old(main_menu_factory, "/Go/Last Packet",
|
set_menu_sensitivity_old(main_menu_factory, "/Go/Last Packet",
|
||||||
have_captured_packets);
|
have_captured_packets);
|
||||||
|
set_menu_sensitivity_old(main_menu_factory, "/Go/Previous Packet In Conversation",
|
||||||
|
have_captured_packets);
|
||||||
|
set_menu_sensitivity_old(main_menu_factory, "/Go/Next Packet In Conversation",
|
||||||
|
have_captured_packets);
|
||||||
set_menu_sensitivity_old(main_menu_factory, "/Statistics/Summary",
|
set_menu_sensitivity_old(main_menu_factory, "/Statistics/Summary",
|
||||||
have_captured_packets);
|
have_captured_packets);
|
||||||
set_menu_sensitivity_old(main_menu_factory, "/Statistics/Protocol Hierarchy",
|
set_menu_sensitivity_old(main_menu_factory, "/Statistics/Protocol Hierarchy",
|
||||||
|
|
Loading…
Reference in New Issue