diff options
author | Guy Harris <guy@alum.mit.edu> | 2005-08-19 10:00:14 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2005-08-19 10:00:14 +0000 |
commit | 4ddd504bb4bdcdf0b3d7e9a462046adfa9c6bab3 (patch) | |
tree | 53684689f35f4425842dc7e9424ed865176114a7 /epan | |
parent | 0a1de06a249a376ecad78bb54bf200554ec427b0 (diff) |
Move the stats.[ch] stuff into epan, so plugins can use it.
svn path=/trunk/; revision=15429
Diffstat (limited to 'epan')
-rw-r--r-- | epan/Makefile.common | 2 | ||||
-rw-r--r-- | epan/libethereal.def | 4 | ||||
-rw-r--r-- | epan/stat.c | 122 | ||||
-rw-r--r-- | epan/stat.h | 35 |
4 files changed, 163 insertions, 0 deletions
diff --git a/epan/Makefile.common b/epan/Makefile.common index d76615b66d..99578cb212 100644 --- a/epan/Makefile.common +++ b/epan/Makefile.common @@ -69,6 +69,7 @@ LIBETHEREAL_SRC = \ sigcomp-udvm.c \ sminmpec.c \ sna-utils.c \ + stat.c \ stats_tree.c \ strutil.c \ t35.c \ @@ -136,6 +137,7 @@ LIBETHEREAL_INCLUDES = \ slab.h \ sminmpec.h \ sna-utils.h \ + stat.h \ stats_tree.h \ stats_tree_priv.h \ strutil.h \ diff --git a/epan/libethereal.def b/epan/libethereal.def index 1ab118cec6..19439840cf 100644 --- a/epan/libethereal.def +++ b/epan/libethereal.def @@ -339,6 +339,7 @@ isup_message_type_value DATA isup_message_type_value_acro DATA is_big_endian is_tpkt +list_stat_cmd_args LocationRejectReason_vals DATA match_strval match_strval_idx @@ -369,6 +370,7 @@ prefs_register_string_preference prefs_register_uint_preference prefs_set_pref process_reassembled_data +process_stat_cmd_arg protocols_module DATA proto_can_match_selected proto_can_toggle_protocol @@ -488,6 +490,7 @@ register_giop_user_module register_heur_dissector_list register_init_routine register_postseq_cleanup_routine +register_stat_cmd_arg register_tap register_tap_listener RegistrationRejectReason_vals DATA @@ -519,6 +522,7 @@ sid_name_snooping DATA sid_name_table DATA smb_cmd_vals DATA sminmpec_values DATA +start_requested_stats stats_tree_branch_max_namelen stats_tree_branch_to_str stats_tree_create_node diff --git a/epan/stat.c b/epan/stat.c new file mode 100644 index 0000000000..06d5585e65 --- /dev/null +++ b/epan/stat.c @@ -0,0 +1,122 @@ +/* stat.c + * Routines to register "-z" command-line argument or Statistics menu item + * handlers + * + * $Id$ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@ethereal.com> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> + +#include <string.h> + +#include <glib.h> + +#include <epan/stat.h> + +/* structure to keep track of what stats have registered command-line + arguments. + */ +typedef struct _stat_cmd_arg { + struct _stat_cmd_arg *next; + const char *cmd; + void (*func)(const char *arg); +} stat_cmd_arg; +static stat_cmd_arg *stat_cmd_arg_list=NULL; + +/* structure to keep track of what stats have been specified on the + command line. + */ +typedef struct { + stat_cmd_arg *sca; + char *arg; +} stat_requested; +static GSList *stats_requested = NULL; + +/* ********************************************************************** + * Function called from stat to register the stat's command-line argument + * and initialization routine + * ********************************************************************** */ +void +register_stat_cmd_arg(const char *cmd, void (*func)(const char *arg)) +{ + stat_cmd_arg *newsca; + + newsca=g_malloc(sizeof(stat_cmd_arg)); + newsca->next=stat_cmd_arg_list; + stat_cmd_arg_list=newsca; + newsca->cmd=cmd; + newsca->func=func; +} + +/* ********************************************************************** + * Function called for a stat command-line argument + * ********************************************************************** */ +gboolean +process_stat_cmd_arg(char *optarg) +{ + stat_cmd_arg *sca; + stat_requested *tr; + + for(sca=stat_cmd_arg_list;sca;sca=sca->next){ + if(!strncmp(sca->cmd,optarg,strlen(sca->cmd))){ + tr=g_malloc(sizeof (stat_requested)); + tr->sca = sca; + tr->arg=g_strdup(optarg); + stats_requested=g_slist_append(stats_requested, tr); + return TRUE; + } + } + return FALSE; +} + +/* ********************************************************************** + * Function to list all possible tap command-line arguments + * ********************************************************************** */ +void +list_stat_cmd_args(void) +{ + stat_cmd_arg *sca; + + for(sca=stat_cmd_arg_list;sca;sca=sca->next){ + fprintf(stderr," %s\n",sca->cmd); + } +} + +/* ********************************************************************** + * Function to process stats requested with command-line arguments + * ********************************************************************** */ +void +start_requested_stats(void) +{ + stat_requested *sr; + + while(stats_requested){ + sr=stats_requested->data; + (*sr->sca->func)(sr->arg); + g_free(sr->arg); + g_free(sr); + stats_requested=g_slist_remove(stats_requested, sr); + } +} diff --git a/epan/stat.h b/epan/stat.h new file mode 100644 index 0000000000..31f81b4611 --- /dev/null +++ b/epan/stat.h @@ -0,0 +1,35 @@ +/* stat.h + * Declarations of routines to register "-z" command-line argument or + * Statistics menu item handlers + * + * $Id$ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@ethereal.com> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _STAT_H_ +#define _STAT_H_ + +extern void register_stat_cmd_arg(const char *cmd, + void (*func)(const char *arg)); +extern gboolean process_stat_cmd_arg(char *optarg); +extern void list_stat_cmd_args(void); +extern void start_requested_stats(void); + +#endif |