From : Didier Gautheron
gtktreeview patch for stat(not well tested, no traces). svn path=/trunk/; revision=30389
This commit is contained in:
parent
6de05a0476
commit
079ff0ba27
|
@ -72,7 +72,7 @@ struct camelcounter_t {
|
|||
GtkWidget *vbox;
|
||||
char *filter;
|
||||
GtkWidget *scrolled_window;
|
||||
GtkCList *table;
|
||||
GtkTreeView *table;
|
||||
guint32 camel_msg[camel_MAX_NUM_OPR_CODES];
|
||||
};
|
||||
|
||||
|
@ -108,26 +108,27 @@ static void gtk_camelcounter_draw(void *phs)
|
|||
{
|
||||
struct camelcounter_t *p_counter=(struct camelcounter_t *)phs;
|
||||
int i;
|
||||
char *str[2];
|
||||
|
||||
for(i=0;i<2;i++) {
|
||||
str[i]=g_malloc(sizeof(char[256]));
|
||||
}
|
||||
char str[256];
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
/* Now print Message and Reason Counter Table */
|
||||
/* clear list before printing */
|
||||
gtk_clist_clear(p_counter->table);
|
||||
store = GTK_LIST_STORE(gtk_tree_view_get_model(p_counter->table));
|
||||
gtk_list_store_clear(store);
|
||||
|
||||
for(i=0;i<camel_MAX_NUM_OPR_CODES;i++) {
|
||||
/* Message counter */
|
||||
if(p_counter->camel_msg[i]!=0) {
|
||||
g_snprintf(str[0], sizeof(char[256]),
|
||||
"Request %s", val_to_str(i,camel_opr_code_strings,"Unknown message "));
|
||||
g_snprintf(str[1], sizeof(char[256]),
|
||||
"%d", p_counter->camel_msg[i]);
|
||||
gtk_clist_append(p_counter->table, str);
|
||||
g_snprintf(str, 256, "Request %s", val_to_str(i,camel_opr_code_strings,"Unknown message "));
|
||||
|
||||
gtk_list_store_append(store, &iter);
|
||||
gtk_list_store_set(store, &iter,
|
||||
0, str,
|
||||
1, p_counter->camel_msg[i],
|
||||
-1);
|
||||
}
|
||||
} /* Message Type */
|
||||
gtk_widget_show(GTK_WIDGET(p_counter->table));
|
||||
}
|
||||
|
||||
static void win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
||||
|
@ -145,9 +146,10 @@ 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_camelcounter_init(const char *optarg, void *userdata _U_)
|
||||
{
|
||||
|
|
|
@ -104,28 +104,55 @@ init_main_stat_window(GtkWidget *window, GtkWidget *mainbox, const char *title,
|
|||
|
||||
/* create a table, using a scrollable gtkclist */
|
||||
|
||||
GtkCList *
|
||||
create_stat_table(GtkWidget *scrolled_window, GtkWidget *vbox, int columns, const char *titles[])
|
||||
GtkTreeView *
|
||||
create_stat_table(GtkWidget *scrolled_window, GtkWidget *vbox, int columns, const stat_column *headers)
|
||||
{
|
||||
GtkCList *table;
|
||||
GtkTreeView *table;
|
||||
GtkListStore *store;
|
||||
GtkWidget *tree;
|
||||
GtkTreeViewColumn *column;
|
||||
GtkTreeSelection *sel;
|
||||
GtkCellRenderer *renderer;
|
||||
GType *types;
|
||||
int i;
|
||||
|
||||
/* create table */
|
||||
table = GTK_CLIST(gtk_clist_new_with_titles(columns, (gchar **) titles));
|
||||
if (columns <= 0)
|
||||
return NULL;
|
||||
|
||||
types = g_malloc(columns *sizeof(GType));
|
||||
for (i = 0; i < columns; i++)
|
||||
types[i] = headers[i].type;
|
||||
|
||||
store = gtk_list_store_newv (columns, types);
|
||||
g_free(types);
|
||||
|
||||
/* create table */
|
||||
tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
|
||||
table = GTK_TREE_VIEW(tree);
|
||||
g_object_unref (G_OBJECT (store));
|
||||
|
||||
for (i = 0; i < columns; i++) {
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
if (headers[i].align == RIGHT) {
|
||||
/* right align */
|
||||
g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL);
|
||||
}
|
||||
g_object_set(renderer, "ypad", 0, NULL);
|
||||
column = gtk_tree_view_column_new_with_attributes (headers[i].title, renderer, "text",
|
||||
i, NULL);
|
||||
gtk_tree_view_column_set_resizable(column, TRUE);
|
||||
gtk_tree_view_append_column (table, column);
|
||||
}
|
||||
gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET (table));
|
||||
gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
|
||||
|
||||
/* configure clist */
|
||||
gtk_clist_column_titles_passive(table);
|
||||
gtk_clist_column_titles_show(table);
|
||||
for (i = 0; i < columns; i++)
|
||||
gtk_clist_set_column_auto_resize(table, i, TRUE);
|
||||
gtk_clist_set_selection_mode(table, GTK_SELECTION_SINGLE);
|
||||
gtk_tree_view_set_rules_hint(table, FALSE);
|
||||
gtk_tree_view_set_headers_clickable(table, FALSE);
|
||||
|
||||
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(table));
|
||||
gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
|
||||
|
||||
/* Put clist into a scrolled window */
|
||||
gtk_container_add(GTK_CONTAINER(scrolled_window),
|
||||
GTK_WIDGET(table));
|
||||
gtk_widget_show(GTK_WIDGET(table));
|
||||
gtk_widget_show(scrolled_window);
|
||||
|
||||
return table;
|
||||
|
|
|
@ -29,10 +29,21 @@
|
|||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
|
||||
/** @file
|
||||
* Utilities for statistics.
|
||||
*/
|
||||
|
||||
#define LEFT 0
|
||||
#define RIGHT 1
|
||||
|
||||
/** Columns definition
|
||||
*/
|
||||
typedef struct {
|
||||
GType type; /* column type */
|
||||
gint align; /* alignement */
|
||||
const char *title; /* column title */
|
||||
} stat_column;
|
||||
|
||||
/** Init a window for stats, set title and display used filter in window.
|
||||
*
|
||||
|
@ -48,8 +59,8 @@ extern void init_main_stat_window(GtkWidget *window, GtkWidget *mainbox, const c
|
|||
* @param scrolled_window the scrolled window
|
||||
* @param vbox the vbox for the window
|
||||
* @param columns number of columns
|
||||
* @param titles
|
||||
* @param headers columns title and type, G_TYPE_POINTER is illegal, there's no default cell renderer for it
|
||||
*/
|
||||
extern GtkCList *create_stat_table(GtkWidget *scrolled_window, GtkWidget *vbox, int columns, const char *titles[]);
|
||||
extern GtkTreeView *create_stat_table(GtkWidget *scrolled_window, GtkWidget *vbox, int columns, const stat_column *headers);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -89,7 +89,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];
|
||||
|
@ -300,132 +300,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,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;
|
||||
|
@ -438,33 +447,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,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;
|
||||
|
@ -473,9 +483,6 @@ h225counter_draw(void *phs)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
gtk_widget_show(GTK_WIDGET(hs->table));
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -494,10 +501,10 @@ 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_)
|
||||
|
|
|
@ -112,7 +112,7 @@ typedef struct _h225rassrt_t {
|
|||
GtkWidget *vbox;
|
||||
char *filter;
|
||||
GtkWidget *scrolled_window;
|
||||
GtkCList *table;
|
||||
GtkTreeView *table;
|
||||
h225_rtd_t ras_rtd[NUM_RAS_STATS];
|
||||
} h225rassrt_t;
|
||||
|
||||
|
@ -205,48 +205,42 @@ h225rassrt_draw(void *phs)
|
|||
{
|
||||
h225rassrt_t *hs=(h225rassrt_t *)phs;
|
||||
int i;
|
||||
char *str[11];
|
||||
char str[3][256];
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
for(i=0;i<11;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<NUM_RAS_STATS;i++) {
|
||||
/* nothing seen, nothing to do */
|
||||
if(hs->ras_rtd[i].stats.num==0){
|
||||
continue;
|
||||
}
|
||||
|
||||
g_snprintf(str[0], sizeof(char[256]),
|
||||
"%s", val_to_str(i,ras_message_category,"Other"));
|
||||
"%8.2f msec", nstime_to_msec(&(hs->ras_rtd[i].stats.min)));
|
||||
g_snprintf(str[1], sizeof(char[256]),
|
||||
"%7d", hs->ras_rtd[i].stats.num);
|
||||
"%8.2f msec", nstime_to_msec(&(hs->ras_rtd[i].stats.max)));
|
||||
g_snprintf(str[2], sizeof(char[256]),
|
||||
"%8.2f msec", nstime_to_msec(&(hs->ras_rtd[i].stats.min)));
|
||||
g_snprintf(str[3], sizeof(char[256]),
|
||||
"%8.2f msec", nstime_to_msec(&(hs->ras_rtd[i].stats.max)));;
|
||||
g_snprintf(str[4], sizeof(char[256]),
|
||||
"%8.2f msec", get_average(&(hs->ras_rtd[i].stats.tot), hs->ras_rtd[i].stats.num));
|
||||
g_snprintf(str[5], sizeof(char[256]),
|
||||
"%6u", hs->ras_rtd[i].stats.min_num);
|
||||
g_snprintf(str[6], sizeof(char[256]),
|
||||
"%6u", hs->ras_rtd[i].stats.max_num);
|
||||
g_snprintf(str[7], sizeof(char[256]),
|
||||
"%4u", hs->ras_rtd[i].open_req_num);
|
||||
g_snprintf(str[8], sizeof(char[256]),
|
||||
"%4u", hs->ras_rtd[i].disc_rsp_num);
|
||||
g_snprintf(str[9], sizeof(char[256]),
|
||||
"%4u", hs->ras_rtd[i].req_dup_num);
|
||||
g_snprintf(str[10], sizeof(char[256]),
|
||||
"%4u", hs->ras_rtd[i].rsp_dup_num);
|
||||
gtk_clist_append(GTK_CLIST(hs->table), str);
|
||||
"%8.2f msec", get_average(&(hs->ras_rtd[i].stats.tot), hs->ras_rtd[i].stats.num));
|
||||
|
||||
gtk_list_store_append(store, &iter);
|
||||
gtk_list_store_set(store, &iter,
|
||||
0, val_to_str(i,ras_message_category,"Other"),
|
||||
1, hs->ras_rtd[i].stats.num,
|
||||
2, str[0],
|
||||
3, str[1],
|
||||
4, str[2],
|
||||
5, hs->ras_rtd[i].stats.min_num,
|
||||
6, hs->ras_rtd[i].stats.max_num,
|
||||
7, hs->ras_rtd[i].open_req_num,
|
||||
8, hs->ras_rtd[i].disc_rsp_num,
|
||||
9, hs->ras_rtd[i].req_dup_num,
|
||||
10, hs->ras_rtd[i].rsp_dup_num,
|
||||
-1);
|
||||
}
|
||||
|
||||
gtk_widget_show(GTK_WIDGET(hs->table));
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -266,18 +260,19 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
|||
}
|
||||
|
||||
|
||||
static const gchar *titles[]={
|
||||
"RAS-Type",
|
||||
"Measurements",
|
||||
"Min RTT",
|
||||
"Max RTT",
|
||||
"Avg RTT",
|
||||
"Min in Frame",
|
||||
"Max in Frame",
|
||||
"Open Requests",
|
||||
"Discarded Responses",
|
||||
"Repeated Requests",
|
||||
"Repeated Responses" };
|
||||
static const stat_column titles[]={
|
||||
{G_TYPE_STRING, LEFT, "RAS-Type" },
|
||||
{G_TYPE_UINT, RIGHT, "Measurements" },
|
||||
{G_TYPE_STRING, RIGHT, "Min RTT" },
|
||||
{G_TYPE_STRING, RIGHT, "Max RTT" },
|
||||
{G_TYPE_STRING, RIGHT, "Avg RTT" },
|
||||
{G_TYPE_UINT, RIGHT, "Min in Frame" },
|
||||
{G_TYPE_UINT, RIGHT, "Max in Frame" },
|
||||
{G_TYPE_UINT, RIGHT, "Open Requests" },
|
||||
{G_TYPE_UINT, RIGHT, "Discarded Responses" },
|
||||
{G_TYPE_UINT, RIGHT, "Repeated Requests" },
|
||||
{G_TYPE_UINT, RIGHT, "Repeated Responses"}
|
||||
};
|
||||
|
||||
static void
|
||||
gtk_h225rassrt_init(const char *optarg, void *userdata _U_)
|
||||
|
|
|
@ -90,14 +90,13 @@ megacostat_draw(void *pms)
|
|||
{
|
||||
megacostat_t *ms=(megacostat_t *)pms;
|
||||
int i;
|
||||
char *str[7];
|
||||
|
||||
for(i=0;i<7;i++) {
|
||||
str[i]=g_malloc(sizeof(char[256]));
|
||||
}
|
||||
char str[3][256];
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
/* clear list before printing */
|
||||
gtk_clist_clear(ms->table);
|
||||
store = GTK_LIST_STORE(gtk_tree_view_get_model(ms->table));
|
||||
gtk_list_store_clear(store);
|
||||
|
||||
for(i=0;i<NUM_TIMESTATS;i++) {
|
||||
/* nothing seen, nothing to do */
|
||||
|
@ -105,19 +104,19 @@ megacostat_draw(void *pms)
|
|||
continue;
|
||||
}
|
||||
|
||||
g_snprintf(str[0], sizeof(char[256]), "%s", val_to_str(i,megaco_message_type,"Other"));
|
||||
g_snprintf(str[1], sizeof(char[256]), "%d", ms->rtd[i].num);
|
||||
g_snprintf(str[2], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].min)));
|
||||
g_snprintf(str[3], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].max)));
|
||||
g_snprintf(str[4], sizeof(char[256]), "%8.2f msec", get_average(&(ms->rtd[i].tot), ms->rtd[i].num));
|
||||
g_snprintf(str[5], sizeof(char[256]), "%6u", ms->rtd[i].min_num);
|
||||
g_snprintf(str[6], sizeof(char[256]), "%6u", ms->rtd[i].max_num);
|
||||
gtk_clist_append(ms->table, str);
|
||||
}
|
||||
|
||||
gtk_widget_show(GTK_WIDGET(ms->table));
|
||||
for(i=0;i<7;i++) {
|
||||
g_free(str[i]);
|
||||
g_snprintf(str[0], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].min)));
|
||||
g_snprintf(str[1], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].max)));
|
||||
g_snprintf(str[2], sizeof(char[256]), "%8.2f msec", get_average(&(ms->rtd[i].tot), ms->rtd[i].num));
|
||||
gtk_list_store_append(store, &iter);
|
||||
gtk_list_store_set(store, &iter,
|
||||
0, val_to_str(i,megaco_message_type,"Other"),
|
||||
1, ms->rtd[i].num,
|
||||
2, str[0],
|
||||
3, str[1],
|
||||
4, str[2],
|
||||
5, ms->rtd[i].min_num,
|
||||
6, ms->rtd[i].max_num,
|
||||
-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,14 +136,15 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
|||
g_free(ms);
|
||||
}
|
||||
|
||||
static const gchar *titles[]={
|
||||
"Type",
|
||||
"Messages",
|
||||
"Min SRT",
|
||||
"Max SRT",
|
||||
"Avg SRT",
|
||||
"Min in Frame",
|
||||
"Max in Frame" };
|
||||
static const stat_column titles[]={
|
||||
{G_TYPE_STRING, LEFT, "Type" },
|
||||
{G_TYPE_UINT, RIGHT, "Messages" },
|
||||
{G_TYPE_STRING, RIGHT, "Min SRT" },
|
||||
{G_TYPE_STRING, RIGHT, "Max SRT" },
|
||||
{G_TYPE_STRING, RIGHT, "Avg SRT" },
|
||||
{G_TYPE_UINT, RIGHT, "Min in Frame" },
|
||||
{G_TYPE_UINT, RIGHT, "Max in Frame" }
|
||||
};
|
||||
|
||||
static void
|
||||
gtk_megacostat_init(const char *optarg, void *userdata _U_)
|
||||
|
|
|
@ -63,7 +63,7 @@ typedef struct _mgcpstat_t {
|
|||
GtkWidget *vbox;
|
||||
char *filter;
|
||||
GtkWidget *scrolled_window;
|
||||
GtkCList *table;
|
||||
GtkTreeView *table;
|
||||
timestat_t rtd[NUM_TIMESTATS];
|
||||
guint32 open_req_num;
|
||||
guint32 disc_rsp_num;
|
||||
|
@ -190,14 +190,13 @@ mgcpstat_draw(void *pms)
|
|||
{
|
||||
mgcpstat_t *ms=(mgcpstat_t *)pms;
|
||||
int i;
|
||||
char *str[7];
|
||||
|
||||
for(i=0;i<7;i++) {
|
||||
str[i]=g_malloc(sizeof(char[256]));
|
||||
}
|
||||
char str[3][256];
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
/* clear list before printing */
|
||||
gtk_clist_clear(ms->table);
|
||||
store = GTK_LIST_STORE(gtk_tree_view_get_model(ms->table));
|
||||
gtk_list_store_clear(store);
|
||||
|
||||
for(i=0;i<NUM_TIMESTATS;i++) {
|
||||
/* nothing seen, nothing to do */
|
||||
|
@ -205,19 +204,19 @@ mgcpstat_draw(void *pms)
|
|||
continue;
|
||||
}
|
||||
|
||||
g_snprintf(str[0], sizeof(char[256]), "%s", val_to_str(i,mgcp_mesage_type,"Other"));
|
||||
g_snprintf(str[1], sizeof(char[256]), "%d", ms->rtd[i].num);
|
||||
g_snprintf(str[2], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].min)));
|
||||
g_snprintf(str[3], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].max)));
|
||||
g_snprintf(str[4], sizeof(char[256]), "%8.2f msec", get_average(&(ms->rtd[i].tot), ms->rtd[i].num));
|
||||
g_snprintf(str[5], sizeof(char[256]), "%6u", ms->rtd[i].min_num);
|
||||
g_snprintf(str[6], sizeof(char[256]), "%6u", ms->rtd[i].max_num);
|
||||
gtk_clist_append(ms->table, str);
|
||||
}
|
||||
|
||||
gtk_widget_show(GTK_WIDGET(ms->table));
|
||||
for(i=0;i<7;i++) {
|
||||
g_free(str[i]);
|
||||
g_snprintf(str[0], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].min)));
|
||||
g_snprintf(str[1], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(ms->rtd[i].max)));
|
||||
g_snprintf(str[2], sizeof(char[256]), "%8.2f msec", get_average(&(ms->rtd[i].tot), ms->rtd[i].num));
|
||||
gtk_list_store_append(store, &iter);
|
||||
gtk_list_store_set(store, &iter,
|
||||
0, val_to_str(i, mgcp_mesage_type,"Other"),
|
||||
1, ms->rtd[i].num,
|
||||
2, str[0],
|
||||
3, str[1],
|
||||
4, str[2],
|
||||
5, ms->rtd[i].min_num,
|
||||
6, ms->rtd[i].max_num,
|
||||
-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -237,14 +236,15 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
|||
g_free(ms);
|
||||
}
|
||||
|
||||
static const gchar *titles[]={
|
||||
"Type",
|
||||
"Messages",
|
||||
"Min SRT",
|
||||
"Max SRT",
|
||||
"Avg SRT",
|
||||
"Min in Frame",
|
||||
"Max in Frame" };
|
||||
static const stat_column titles[]={
|
||||
{G_TYPE_STRING, LEFT, "Type" },
|
||||
{G_TYPE_UINT, RIGHT, "Messages" },
|
||||
{G_TYPE_STRING, RIGHT, "Min SRT" },
|
||||
{G_TYPE_STRING, RIGHT, "Max SRT" },
|
||||
{G_TYPE_STRING, RIGHT, "Avg SRT" },
|
||||
{G_TYPE_UINT, RIGHT, "Min in Frame" },
|
||||
{G_TYPE_UINT, RIGHT, "Max in Frame" }
|
||||
};
|
||||
|
||||
static void
|
||||
gtk_mgcpstat_init(const char *optarg, void *userdata _U_)
|
||||
|
|
|
@ -73,7 +73,7 @@ typedef struct _radiusstat_t {
|
|||
GtkWidget *vbox;
|
||||
char *filter;
|
||||
GtkWidget *scrolled_window;
|
||||
GtkCList *table;
|
||||
GtkTreeView *table;
|
||||
radius_rtd_t radius_rtd[NUM_TIMESTATS];
|
||||
} radiusstat_t;
|
||||
|
||||
|
@ -230,41 +230,41 @@ radiusstat_draw(void *prs)
|
|||
{
|
||||
radiusstat_t *rs=(radiusstat_t *)prs;
|
||||
int i;
|
||||
char *str[NUM_COLUMNS];
|
||||
|
||||
for(i=0;i<NUM_COLUMNS;i++) {
|
||||
str[i]=g_malloc(sizeof(char[256]));
|
||||
}
|
||||
char str[5][256];
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
/* clear list before printing */
|
||||
gtk_clist_clear(rs->table);
|
||||
store = GTK_LIST_STORE(gtk_tree_view_get_model(rs->table));
|
||||
gtk_list_store_clear(store);
|
||||
|
||||
for(i=0;i<NUM_TIMESTATS;i++) {
|
||||
/* nothing seen, nothing to do */
|
||||
if(rs->radius_rtd[i].stats.num==0){
|
||||
continue;
|
||||
}
|
||||
|
||||
g_snprintf(str[0], sizeof(char[256]), "%s", val_to_str(i,radius_message_code,"Other"));
|
||||
g_snprintf(str[1], sizeof(char[256]), "%d", rs->radius_rtd[i].stats.num);
|
||||
g_snprintf(str[2], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(rs->radius_rtd[i].stats.min)));
|
||||
g_snprintf(str[3], sizeof(char[256]), "%8.2f msec", nstime_to_msec(&(rs->radius_rtd[i].stats.max)));
|
||||
g_snprintf(str[4], sizeof(char[256]), "%8.2f msec", get_average(&(rs->radius_rtd[i].stats.tot), rs->radius_rtd[i].stats.num));
|
||||
g_snprintf(str[5], sizeof(char[256]), "%6u", rs->radius_rtd[i].stats.min_num);
|
||||
g_snprintf(str[6], sizeof(char[256]), "%6u", rs->radius_rtd[i].stats.max_num);
|
||||
g_snprintf(str[7], sizeof(char[256]), "%4u", rs->radius_rtd[i].open_req_num);
|
||||
g_snprintf(str[8], sizeof(char[256]), "%4u", rs->radius_rtd[i].disc_rsp_num);
|
||||
g_snprintf(str[9], sizeof(char[256]), "%4u (%4.2f%%)", rs->radius_rtd[i].req_dup_num,
|
||||
g_snprintf(str[0], 256, "%8.2f msec", nstime_to_msec(&(rs->radius_rtd[i].stats.min)));
|
||||
g_snprintf(str[1], 256, "%8.2f msec", nstime_to_msec(&(rs->radius_rtd[i].stats.max)));
|
||||
g_snprintf(str[2], 256, "%8.2f msec", get_average(&(rs->radius_rtd[i].stats.tot), rs->radius_rtd[i].stats.num));
|
||||
g_snprintf(str[3], 256, "%4u (%4.2f%%)", rs->radius_rtd[i].req_dup_num,
|
||||
rs->radius_rtd[i].stats.num?((double)rs->radius_rtd[i].req_dup_num*100)/(double)rs->radius_rtd[i].stats.num:0);
|
||||
g_snprintf(str[10], sizeof(char[256]), "%4u (%4.2f%%)", rs->radius_rtd[i].rsp_dup_num,
|
||||
g_snprintf(str[4], 256, "%4u (%4.2f%%)", rs->radius_rtd[i].rsp_dup_num,
|
||||
rs->radius_rtd[i].stats.num?((double)rs->radius_rtd[i].rsp_dup_num*100)/(double)rs->radius_rtd[i].stats.num:0);
|
||||
|
||||
gtk_clist_append(rs->table, str);
|
||||
}
|
||||
|
||||
gtk_widget_show(GTK_WIDGET(rs->table));
|
||||
for(i=0;i<NUM_COLUMNS;i++) {
|
||||
g_free(str[i]);
|
||||
gtk_list_store_append(store, &iter);
|
||||
gtk_list_store_set(store, &iter,
|
||||
0, val_to_str(i, radius_message_code,"Other"),
|
||||
1, rs->radius_rtd[i].stats.num,
|
||||
2, str[0],
|
||||
3, str[1],
|
||||
4, str[2],
|
||||
5, rs->radius_rtd[i].stats.min_num,
|
||||
6, rs->radius_rtd[i].stats.max_num,
|
||||
7, rs->radius_rtd[i].open_req_num,
|
||||
8, rs->radius_rtd[i].disc_rsp_num,
|
||||
9, str[3],
|
||||
10, str[4],
|
||||
-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -284,18 +284,19 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
|||
g_free(rs);
|
||||
}
|
||||
|
||||
static const gchar *titles[]={
|
||||
"Type",
|
||||
"Messages",
|
||||
"Min SRT",
|
||||
"Max SRT",
|
||||
"Avg SRT",
|
||||
"Min in Frame",
|
||||
"Max in Frame",
|
||||
"Open Requests",
|
||||
"Discarded Responses",
|
||||
"Repeated Requests",
|
||||
"Repeated Responses" };
|
||||
static const stat_column titles[]={
|
||||
{G_TYPE_STRING, LEFT, "Type" },
|
||||
{G_TYPE_UINT, RIGHT, "Messages" },
|
||||
{G_TYPE_STRING, RIGHT, "Min SRT" },
|
||||
{G_TYPE_STRING, RIGHT, "Max SRT" },
|
||||
{G_TYPE_STRING, RIGHT, "Avg SRT" },
|
||||
{G_TYPE_UINT, RIGHT, "Min in Frame" },
|
||||
{G_TYPE_UINT, RIGHT, "Max in Frame" },
|
||||
{G_TYPE_UINT, RIGHT, "Open Requests" },
|
||||
{G_TYPE_UINT, RIGHT, "Discarded Responses" },
|
||||
{G_TYPE_STRING, RIGHT, "Repeated Requests" },
|
||||
{G_TYPE_STRING, RIGHT, "Repeated Responses"}
|
||||
};
|
||||
|
||||
static void
|
||||
gtk_radiusstat_init(const char *optarg, void *userdata _U_)
|
||||
|
|
|
@ -79,7 +79,7 @@ typedef struct _sctp_stat_t {
|
|||
GtkWidget *vbox;
|
||||
char *filter;
|
||||
GtkWidget *scrolled_window;
|
||||
GtkCList *table;
|
||||
GtkTreeView *table;
|
||||
guint32 number_of_packets;
|
||||
sctp_ep_t* ep_list;
|
||||
} sctpstat_t;
|
||||
|
@ -209,41 +209,37 @@ static void
|
|||
sctpstat_draw(void *phs)
|
||||
{
|
||||
sctpstat_t *hs=(sctpstat_t *)phs;
|
||||
sctp_ep_t* list = hs->ep_list, *tmp=0;
|
||||
char *str[15];
|
||||
int i=0;
|
||||
sctp_ep_t* list = hs->ep_list, *tmp;
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
for(i=0;i<15;i++) {
|
||||
str[i]=g_malloc(sizeof(char[256]));
|
||||
}
|
||||
/* Now print Message and Reason Counter Table */
|
||||
/* clear list before printing */
|
||||
gtk_clist_clear(hs->table);
|
||||
|
||||
/* XXX use an iter for new/modified ? */
|
||||
store = GTK_LIST_STORE(gtk_tree_view_get_model(hs->table));
|
||||
gtk_list_store_clear(store);
|
||||
|
||||
for(tmp = list ; tmp ; tmp=tmp->next) {
|
||||
|
||||
g_snprintf(str[0], sizeof(char[256]),"%s", ep_address_to_str(&tmp->src));
|
||||
g_snprintf(str[1], sizeof(char[256]),"%u", tmp->sport);
|
||||
g_snprintf(str[2], sizeof(char[256]),"%s", ep_address_to_str(&tmp->dst));
|
||||
g_snprintf(str[3], sizeof(char[256]),"%u", tmp->dport);
|
||||
g_snprintf(str[4], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_DATA_CHUNK_ID]);
|
||||
g_snprintf(str[5], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_SACK_CHUNK_ID]);
|
||||
g_snprintf(str[6], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_HEARTBEAT_CHUNK_ID]);
|
||||
g_snprintf(str[7], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_HEARTBEAT_ACK_CHUNK_ID]);
|
||||
g_snprintf(str[8], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_INIT_CHUNK_ID]);
|
||||
g_snprintf(str[9], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_INIT_ACK_CHUNK_ID]);
|
||||
g_snprintf(str[10], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_COOKIE_ECHO_CHUNK_ID]);
|
||||
g_snprintf(str[11], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_COOKIE_ACK_CHUNK_ID]);
|
||||
g_snprintf(str[12], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_ABORT_CHUNK_ID]);
|
||||
g_snprintf(str[13], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_ERROR_CHUNK_ID]);
|
||||
g_snprintf(str[14], sizeof(char[256]),"%u", tmp->chunk_count[SCTP_NR_SACK_CHUNK_ID]);
|
||||
|
||||
gtk_clist_append(hs->table, str);
|
||||
gtk_list_store_append(store, &iter);
|
||||
gtk_list_store_set(store, &iter,
|
||||
0, ep_address_to_str(&tmp->src),
|
||||
1, tmp->sport,
|
||||
2, ep_address_to_str(&tmp->dst),
|
||||
3, tmp->dport,
|
||||
4, tmp->chunk_count[SCTP_DATA_CHUNK_ID],
|
||||
5, tmp->chunk_count[SCTP_SACK_CHUNK_ID],
|
||||
6, tmp->chunk_count[SCTP_HEARTBEAT_CHUNK_ID],
|
||||
7, tmp->chunk_count[SCTP_HEARTBEAT_ACK_CHUNK_ID],
|
||||
8, tmp->chunk_count[SCTP_INIT_CHUNK_ID],
|
||||
9, tmp->chunk_count[SCTP_INIT_ACK_CHUNK_ID],
|
||||
10, tmp->chunk_count[SCTP_COOKIE_ECHO_CHUNK_ID],
|
||||
11, tmp->chunk_count[SCTP_COOKIE_ACK_CHUNK_ID],
|
||||
12, tmp->chunk_count[SCTP_ABORT_CHUNK_ID],
|
||||
13, tmp->chunk_count[SCTP_ERROR_CHUNK_ID],
|
||||
14, tmp->chunk_count[SCTP_NR_SACK_CHUNK_ID],
|
||||
-1
|
||||
);
|
||||
}
|
||||
|
||||
gtk_widget_show(GTK_WIDGET(hs->table));
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -263,22 +259,23 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data)
|
|||
}
|
||||
|
||||
|
||||
static const gchar *titles[]={
|
||||
"Source IP",
|
||||
"Source Port",
|
||||
"Dest IP",
|
||||
"Dest Port",
|
||||
"DATA",
|
||||
"SACK",
|
||||
"HBEAT",
|
||||
"HBEAT_ACK",
|
||||
"INIT",
|
||||
"INIT_ACK",
|
||||
"COOKIE",
|
||||
"COOKIE_ACK",
|
||||
"ABORT",
|
||||
"ERROR",
|
||||
"NR_SACK" };
|
||||
static const stat_column titles[]={
|
||||
{G_TYPE_STRING, LEFT, "Source IP" },
|
||||
{G_TYPE_UINT, RIGHT, "Source Port" },
|
||||
{G_TYPE_STRING, LEFT, "Dest IP" },
|
||||
{G_TYPE_UINT, RIGHT, "Dest Port" },
|
||||
{G_TYPE_UINT, RIGHT, "DATA" },
|
||||
{G_TYPE_UINT, RIGHT, "SACK" },
|
||||
{G_TYPE_UINT, RIGHT, "HBEAT" },
|
||||
{G_TYPE_UINT, RIGHT, "HBEAT_ACK" },
|
||||
{G_TYPE_UINT, RIGHT, "INIT" },
|
||||
{G_TYPE_UINT, RIGHT, "INIT_ACK" },
|
||||
{G_TYPE_UINT, RIGHT, "COOKIE" },
|
||||
{G_TYPE_UINT, RIGHT, "COOKIE_ACK" },
|
||||
{G_TYPE_UINT, RIGHT, "ABORT" },
|
||||
{G_TYPE_UINT, RIGHT, "ERROR" },
|
||||
{G_TYPE_UINT, RIGHT, "NR_SACK" }
|
||||
};
|
||||
|
||||
static void
|
||||
sctpstat_init(const char *optarg, void *userdata _U_)
|
||||
|
|
|
@ -71,7 +71,7 @@ typedef struct _megacostat_t {
|
|||
GtkWidget *win;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *scrolled_window;
|
||||
GtkCList *table;
|
||||
GtkTreeView *table;
|
||||
#endif /*__GHTK_H__*/
|
||||
} megacostat_t;
|
||||
|
||||
|
|
Loading…
Reference in New Issue