Fix compilation error:
[obnox/wireshark/wip.git] / gtk / h225_counter.c
index 35990a0072d1f6a3616be467a109bdad3308ce03..4f50c24a334cafd16c85d2f8b148142a65ba9330 100644 (file)
@@ -1,11 +1,11 @@
 /* h225_counter.c
- * h225 message counter for ethereal
+ * H.225 message counter for Wireshark
  * Copyright 2003 Lars Roland
  *
- * $Id: h225_counter.c,v 1.20 2004/05/23 23:24:05 ulfl Exp $
+ * $Id$
  *
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
  * Copyright 1998 Gerald Combs
  *
  * This program is free software; you can redistribute it and/or
 
 #include <gtk/gtk.h>
 
+#include <epan/packet.h>
 #include <epan/packet_info.h>
 #include <epan/epan.h>
 #include <epan/value_string.h>
+#include <epan/tap.h>
+#include <epan/dissectors/packet-h225.h>
 
-#include "tap_menu.h"
-#include "../tap.h"
-#include "../register.h"
-#include "../packet-h225.h"
-#include "gtk_stat_util.h"
-#include "compat_macros.h"
 #include "../simple_dialog.h"
-#include "dlg_utils.h"
 #include "../file.h"
-#include "../globals.h"
-#include "../tap_dfilter_dlg.h"
-#include "tap_dfilter_dlg.h"
-#include "ui_util.h"
+#include "../stat_menu.h"
 
+#include "gtk/gui_stat_util.h"
+#include "gtk/dlg_utils.h"
+#include "gtk/tap_dfilter_dlg.h"
+#include "gtk/gui_utils.h"
+#include "gtk/main.h"
 
-extern GtkWidget *main_display_filter_widget;
 
-static void gtk_h225counter_init(char *optarg);
+static void gtk_h225counter_init(const char *optarg, void *userdata);
 
 static tap_dfilter_dlg h225_counter_dlg = {
        "H.225 Messages and Message Reasons",
@@ -90,7 +87,7 @@ typedef struct _h225counter_t {
        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];
@@ -159,10 +156,10 @@ h225counter_reset(void *phs)
 }
 
 static int
-h225counter_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, void *phi)
+h225counter_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *phi)
 {
        h225counter_t *hs=(h225counter_t *)phs;
-       h225_packet_info *pi=phi;
+       const h225_packet_info *pi=phi;
 
        switch (pi->msg_type) {
 
@@ -291,7 +288,6 @@ h225counter_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, v
 
        default:
                return 0;
-               break;
        }
 
        return 1;
@@ -302,132 +298,141 @@ h225counter_draw(void *phs)
 {
        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,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;
@@ -440,33 +445,34 @@ h225counter_draw(void *phs)
 
        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,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,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;
@@ -475,13 +481,8 @@ h225counter_draw(void *phs)
                        }
                }
        }
-
-       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)
 {
@@ -498,47 +499,47 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
        g_free(hs);
 }
 
-
-static 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(char *optarg)
+gtk_h225counter_init(const char *optarg, void *userdata _U_)
 {
        h225counter_t *hs;
-       char *filter=NULL;
        GString *error_string;
-    GtkWidget *bbox;
-    GtkWidget *close_bt;
+       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=g_malloc(1);
-               *filter='\0';
+               hs->filter=NULL;
        }
 
-       hs=g_malloc(sizeof(h225counter_t));
-       hs->filter=g_strdup(filter);
-
        h225counter_reset(hs);
 
-       hs->win=window_new(GTK_WINDOW_TOPLEVEL, "Ethereal: H225 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, "ITU-T 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);
-       WIDGET_SET_SIZE(hs->scrolled_window, 400, 200);
 
        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);
@@ -549,24 +550,22 @@ gtk_h225counter_init(char *optarg)
        bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
        gtk_box_pack_end(GTK_BOX(hs->vbox), bbox, FALSE, FALSE, 0);
 
-       close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
-    window_set_cancel_button(hs->win, close_bt, window_cancel_button_cb);
+       close_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_CLOSE);
+       window_set_cancel_button(hs->win, close_bt, window_cancel_button_cb);
 
-    SIGNAL_CONNECT(hs->win, "delete_event", window_delete_event_cb, NULL);
-    SIGNAL_CONNECT(hs->win, "destroy", win_destroy_cb, hs);
+       g_signal_connect(hs->win, "delete_event", G_CALLBACK(window_delete_event_cb), NULL);
+       g_signal_connect(hs->win, "destroy", G_CALLBACK(win_destroy_cb), hs);
 
        gtk_widget_show_all(hs->win);
-    window_present(hs->win);
+       window_present(hs->win);
 
-    /* XXX - shouldn't this be retap_packets? */
-       redissect_packets(&cfile);
+       cf_retap_packets(&cfile);
+       gdk_window_raise(hs->win->window);
 }
 
 void
 register_tap_listener_gtk_h225counter(void)
 {
-       register_ethereal_tap("h225,counter", gtk_h225counter_init);
-
-       register_tap_menu_item("ITU-T H.225...", REGISTER_TAP_GROUP_NONE,
-           gtk_tap_dfilter_dlg_cb, NULL, NULL, &(h225_counter_dlg));
+       register_dfilter_stat(&h225_counter_dlg, "_H.225",
+           REGISTER_STAT_GROUP_TELEPHONY);
 }