#include <epan/packet_info.h>
#include <epan/epan.h>
#include <epan/value_string.h>
-
#include <epan/tap.h>
-#include "../register.h"
#include <epan/dissectors/packet-h225.h>
-#include "gui_stat_util.h"
-#include "compat_macros.h"
+
#include "../simple_dialog.h"
-#include "dlg_utils.h"
#include "../file.h"
-#include "../globals.h"
#include "../stat_menu.h"
-#include "../tap_dfilter_dlg.h"
-#include "gui_utils.h"
+#include "gtk/gui_stat_util.h"
+#include "gtk/dlg_utils.h"
+#include "gtk/tap_param_dlg.h"
+#include "gtk/gui_utils.h"
+#include "gtk/main.h"
+
+#include "gtk/old-gtk-compat.h"
static void gtk_h225counter_init(const char *optarg, void *userdata);
-static tap_dfilter_dlg h225_counter_dlg = {
+static tap_param h225_counter_params[] = {
+ { PARAM_FILTER, "Filter", NULL }
+};
+
+static tap_param_dlg h225_counter_dlg = {
"H.225 Messages and Message Reasons",
"h225,counter",
gtk_h225counter_init,
- -1
+ -1,
+ G_N_ELEMENTS(h225_counter_params),
+ h225_counter_params
};
/* following values represent the size of their valuestring arrays */
GtkWidget *vbox;
char *filter;
GtkWidget *scrolled_window;
- GtkCList *table;
+ GtkTreeView *table;
guint32 ras_msg[RAS_MSG_TYPES + 1];
guint32 cs_msg[CS_MSG_TYPES + 1];
guint32 grj_reason[GRJ_REASONS + 1];
default:
return 0;
- break;
}
return 1;
{
h225counter_t *hs=(h225counter_t *)phs;
int i,j;
- char *str[2];
+ char str[256];
+ GtkListStore *store;
+ GtkTreeIter iter;
- for(i=0;i<2;i++) {
- str[i]=g_malloc(sizeof(char[256]));
- }
/* Now print Message and Reason Counter Table */
/* clear list before printing */
- gtk_clist_clear(hs->table);
+ store = GTK_LIST_STORE(gtk_tree_view_get_model(hs->table));
+ gtk_list_store_clear(store);
for(i=0;i<=RAS_MSG_TYPES;i++) {
if(hs->ras_msg[i]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- "%s", val_to_str(i,h225_RasMessage_vals,"unknown ras-messages "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->ras_msg[i]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256, "%s", val_to_str(i,h225_RasMessage_vals,"unknown ras-messages"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, val_to_str(i,h225_RasMessage_vals,"unknown ras-messages"),
+ 1, hs->ras_msg[i], -1);
/* reason counter */
switch(i) {
case 2: /* GRJ */
for(j=0;j<=GRJ_REASONS;j++) {
if(hs->grj_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,GatekeeperRejectReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->grj_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,GatekeeperRejectReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->grj_reason[j], -1);
}
}
break;
case 5: /* RRJ */
for(j=0;j<=RRJ_REASONS;j++) {
if(hs->rrj_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,RegistrationRejectReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->rrj_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,RegistrationRejectReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->rrj_reason[j], -1);
}
}
break;
case 6: /* URQ */
for(j=0;j<=URQ_REASONS;j++) {
if(hs->urq_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,UnregRequestReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->urq_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,UnregRequestReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->urq_reason[j], -1);
}
}
break;
case 8: /* URJ */
for(j=0;j<=URJ_REASONS;j++) {
if(hs->urj_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,UnregRejectReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->urj_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,UnregRejectReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->urj_reason[j], -1);
}
}
break;
case 11: /* ARJ */
for(j=0;j<=ARJ_REASONS;j++) {
if(hs->arj_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,AdmissionRejectReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->arj_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,AdmissionRejectReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->arj_reason[j], -1);
}
}
break;
case 14: /* BRJ */
for(j=0;j<=BRJ_REASONS;j++) {
if(hs->brj_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,BandRejectReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->brj_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,BandRejectReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->brj_reason[j], -1);
}
}
break;
case 15: /* DRQ */
for(j=0;j<=DRQ_REASONS;j++) {
if(hs->drq_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,DisengageReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->drq_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,DisengageReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->drq_reason[j], -1);
}
}
break;
case 17: /* DRJ */
for(j=0;j<=DRJ_REASONS;j++) {
if(hs->drj_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,DisengageRejectReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->drj_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,DisengageRejectReason_vals,"unknown reason"));
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->drj_reason[j], -1);
}
}
break;
case 20: /* LRJ */
for(j=0;j<=LRJ_REASONS;j++) {
if(hs->lrj_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,LocationRejectReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->lrj_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,LocationRejectReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->lrj_reason[j], -1);
}
}
break;
case 29: /* IRQNak */
for(j=0;j<=IRQNAK_REASONS;j++) {
if(hs->irqnak_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,InfoRequestNakReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->irqnak_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,InfoRequestNakReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->irqnak_reason[j], -1);
}
}
break;
for(i=0;i<=CS_MSG_TYPES;i++) {
if(hs->cs_msg[i]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- "%s", val_to_str(i,T_h323_message_body_vals,"unknown cs-messages "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->cs_msg[i]);
- gtk_clist_append(hs->table, str);
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, val_to_str(i,T_h323_message_body_vals,"unknown cs-messages"),
+ 1, hs->cs_msg[i], -1);
/* reason counter */
switch(i) {
case 5: /* ReleaseComplete */
for(j=0;j<=REL_CMP_REASONS;j++) {
if(hs->rel_cmp_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,h225_ReleaseCompleteReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->rel_cmp_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,h225_ReleaseCompleteReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->rel_cmp_reason[j], -1);
}
}
break;
case 6: /* Facility */
for(j=0;j<=FACILITY_REASONS;j++) {
if(hs->facility_reason[j]!=0) {
- g_snprintf(str[0], sizeof(char[256]),
- " %s", val_to_str(j,FacilityReason_vals,"unknown reason "));
- g_snprintf(str[1], sizeof(char[256]),
- "%d", hs->facility_reason[j]);
- gtk_clist_append(hs->table, str);
+ g_snprintf(str, 256," %s",
+ val_to_str(j,FacilityReason_vals,"unknown reason"));
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, hs->facility_reason[j], -1);
}
}
break;
}
}
}
-
- gtk_widget_show(GTK_WIDGET(hs->table));
-
}
-void protect_thread_critical_region(void);
-void unprotect_thread_critical_region(void);
static void
win_destroy_cb(GtkWindow *win _U_, gpointer data)
{
g_free(hs);
}
-
-static const gchar *titles[]={
- "Message Type or Reason",
- "Count" };
+static const stat_column titles[]={
+ {G_TYPE_STRING, LEFT, "Message Type or Reason"},
+ {G_TYPE_UINT, RIGHT, "Count" }
+};
static void
gtk_h225counter_init(const char *optarg, void *userdata _U_)
{
h225counter_t *hs;
- const char *filter=NULL;
GString *error_string;
GtkWidget *bbox;
GtkWidget *close_bt;
+ hs=g_malloc(sizeof(h225counter_t));
+
if(strncmp(optarg,"h225,counter,",13) == 0){
- filter=optarg+13;
+ hs->filter=g_strdup(optarg+13);
} else {
- filter="";
+ hs->filter=NULL;
}
- hs=g_malloc(sizeof(h225counter_t));
- hs->filter=g_strdup(filter);
-
h225counter_reset(hs);
- hs->win=window_new(GTK_WINDOW_TOPLEVEL, "Wireshark: H.225 counters");
+ hs->win = dlg_window_new("Wireshark: H.225 counters"); /* transient_for top_level */
+ gtk_window_set_destroy_with_parent (GTK_WINDOW(hs->win), TRUE);
+
gtk_window_set_default_size(GTK_WINDOW(hs->win), 400, 200);
hs->vbox=gtk_vbox_new(FALSE, 3);
gtk_container_set_border_width(GTK_CONTAINER(hs->vbox), 12);
- init_main_stat_window(hs->win, hs->vbox, "H.225 Message and Message Reason Counter", filter);
+ init_main_stat_window(hs->win, hs->vbox, "H.225 Message and Message Reason Counter", hs->filter);
/* init a scrolled window*/
hs->scrolled_window = scrolled_window_new(NULL, NULL);
hs->table = create_stat_table(hs->scrolled_window, hs->vbox, 2, titles);
- error_string=register_tap_listener("h225", hs, filter, h225counter_reset, h225counter_packet, h225counter_draw);
+ error_string=register_tap_listener("h225", hs, hs->filter, 0, h225counter_reset, h225counter_packet, h225counter_draw);
if(error_string){
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, error_string->str);
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", error_string->str);
g_string_free(error_string, TRUE);
g_free(hs->filter);
g_free(hs);
gtk_widget_show_all(hs->win);
window_present(hs->win);
- cf_retap_packets(&cfile, FALSE);
+ cf_retap_packets(&cfile);
+ gdk_window_raise(gtk_widget_get_window(hs->win));
}
void
register_tap_listener_gtk_h225counter(void)
{
- register_dfilter_stat(&h225_counter_dlg, "H.225",
+ register_dfilter_stat(&h225_counter_dlg, "_H.225",
REGISTER_STAT_GROUP_TELEPHONY);
}
+
+#ifdef MAIN_MENU_USE_UIMANAGER
+void h225_counter_cb(GtkAction *action, gpointer user_data _U_)
+{
+ tap_param_dlg_cb(action, &h225_counter_dlg);
+}
+#endif