X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=gtk%2Fh225_counter.c;h=4f50c24a334cafd16c85d2f8b148142a65ba9330;hb=6ad14bf25d4d43f950f2e9aaddf36db6b05711d7;hp=35990a0072d1f6a3616be467a109bdad3308ce03;hpb=1137053444eb834f94eb6eb3d69be5a0c5b211b5;p=obnox%2Fwireshark%2Fwip.git diff --git a/gtk/h225_counter.c b/gtk/h225_counter.c index 35990a0072..4f50c24a33 100644 --- a/gtk/h225_counter.c +++ b/gtk/h225_counter.c @@ -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 + * Wireshark - Network traffic analyzer + * By Gerald Combs * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or @@ -35,28 +35,25 @@ #include +#include #include #include #include +#include +#include -#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); }