Rename "register_ethereal_tap()" to "register_tap_listener_cmd_arg()" as
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 1 Apr 2005 09:08:27 +0000 (09:08 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 1 Apr 2005 09:08:27 +0000 (09:08 +0000)
it's used to register a callback for a tap listener invoked if the
specified command line argument is specified to the "-z" flag.

Move it, along with routines to:

look up a "-z" argument in the table constructed by
"register_tap_listener_cmd_arg()" and either save the full
argument to "-z" and the corresponding listener if it's found or
return a failure indication if it isn't;

list the available tap listeners;

call the "init" routines for the tap listeners saved in the
table above;

and have Ethereal and Tethereal use those routines.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@13993 f5534014-38df-0310-8fa8-9805f1628bb7

71 files changed:
epan/libethereal.def
epan/tap.c
epan/tap.h
gtk/ansi_a_stat.c
gtk/ansi_map_stat.c
gtk/bootp_stat.c
gtk/conversations_eth.c
gtk/conversations_fc.c
gtk/conversations_fddi.c
gtk/conversations_ip.c
gtk/conversations_ipx.c
gtk/conversations_sctp.c
gtk/conversations_tcpip.c
gtk/conversations_tr.c
gtk/conversations_udpip.c
gtk/conversations_wlan.c
gtk/dcerpc_stat.c
gtk/fc_stat.c
gtk/gsm_a_stat.c
gtk/gsm_map_stat.c
gtk/h225_counter.c
gtk/h225_ras_srt.c
gtk/hostlist_eth.c
gtk/hostlist_fc.c
gtk/hostlist_fddi.c
gtk/hostlist_ip.c
gtk/hostlist_ipx.c
gtk/hostlist_tcpip.c
gtk/hostlist_tr.c
gtk/hostlist_udpip.c
gtk/hostlist_wlan.c
gtk/http_stat.c
gtk/io_stat.c
gtk/isup_stat.c
gtk/ldap_stat.c
gtk/main.c
gtk/mgcp_stat.c
gtk/mtp3_stat.c
gtk/rpc_progs.c
gtk/rpc_stat.c
gtk/rtp_analysis.c
gtk/rtp_stream.c
gtk/sctp_chunk_stat.c
gtk/sctp_stat.c
gtk/sip_stat.c
gtk/smb_stat.c
gtk/stats_tree_stat.c
gtk/voip_calls_dlg.c
gtk/wsp_stat.c
register.h
tap-ansi_astat.c
tap-bootpstat.c
tap-dcerpcstat.c
tap-gsm_astat.c
tap-h225counter.c
tap-h225rassrt.c
tap-httpstat.c
tap-iostat.c
tap-iousers.c
tap-mgcpstat.c
tap-protocolinfo.c
tap-protohierstat.c
tap-rpcprogs.c
tap-rpcstat.c
tap-sctpchunkstat.c
tap-sipstat.c
tap-smbsids.c
tap-smbstat.c
tap-stats_tree.c
tap-wspstat.c
tethereal.c

index 0d2169e026dbffecd5a1060afd66869d6d468a40..23cb0f37d9e1ccbefec54862ce579fa58ad05083 100644 (file)
@@ -319,6 +319,7 @@ isup_message_type_value         DATA
 isup_message_type_value_acro    DATA
 is_big_endian
 is_tpkt
+list_tap_cmd_args
 LocationRejectReason_vals       DATA
 match_strval
 mkstemp
@@ -347,6 +348,7 @@ prefs_register_range_preference
 prefs_register_string_preference
 prefs_register_uint_preference
 prefs_set_pref
+process_tap_cmd_arg
 protocols_module                DATA
 proto_can_match_selected
 proto_can_toggle_protocol
@@ -464,6 +466,7 @@ register_init_routine
 register_postseq_cleanup_routine
 register_tap
 register_tap_listener
+register_tap_listener_cmd_arg
 RegistrationRejectReason_vals   DATA
 ReleaseCompleteReason_vals      DATA
 remove_tap_listener
@@ -493,6 +496,7 @@ sid_name_snooping               DATA
 sid_name_table                  DATA
 smb_cmd_vals                    DATA
 sminmpec_values                 DATA
+start_requested_taps
 stats_tree_branch_max_namelen
 stats_tree_branch_to_str
 stats_tree_create_node
index 4d89056b2bd247cfcda9ebc1a6548437357cb6d8..ad3cb4af686ce294a0f73fb84f998b0944f30e65 100644 (file)
@@ -80,6 +80,25 @@ typedef struct _tap_listener_t {
 } tap_listener_t;
 static volatile tap_listener_t *tap_listener_queue=NULL;
 
+/* structure to keep track of what tap listeners have registered
+   command-line arguments.
+ */
+typedef struct _tap_cmd_arg {
+       struct _tap_cmd_arg *next;
+       char *cmd;
+       void (*func)(char *arg);
+} tap_cmd_arg;
+static tap_cmd_arg *tap_cmd_arg_list=NULL;
+
+/* structure to keep track of what taps have been specified on the
+   command line.
+ */
+typedef struct {
+       tap_cmd_arg *tca;
+       char *arg;
+} tap_requested;
+static GSList *taps_requested = NULL;
+
 /* **********************************************************************
  * Init routine only called from epan at application startup
  * ********************************************************************** */
@@ -102,7 +121,72 @@ tap_init(void)
        return;
 }
 
+/* **********************************************************************
+ * Function called from tap to register the tap's command-line argument
+ * and initialization routine
+ * ********************************************************************** */
+void
+register_tap_listener_cmd_arg(char *cmd, void (*func)(char *arg))
+{
+       tap_cmd_arg *newtca;
+
+       newtca=malloc(sizeof(tap_cmd_arg));
+       newtca->next=tap_cmd_arg_list;
+       tap_cmd_arg_list=newtca;
+       newtca->cmd=cmd;
+       newtca->func=func;
+}
 
+/* **********************************************************************
+ * Function called for a tap command-line argument
+ * ********************************************************************** */
+gboolean
+process_tap_cmd_arg(char *optarg)
+{
+       tap_cmd_arg *tca;
+       tap_requested *tr;
+
+       for(tca=tap_cmd_arg_list;tca;tca=tca->next){
+               if(!strncmp(tca->cmd,optarg,strlen(tca->cmd))){
+                       tr=g_malloc(sizeof (tap_requested));
+                       tr->tca = tca;
+                       tr->arg=g_strdup(optarg);
+                       taps_requested=g_slist_append(taps_requested, tr);
+                       return TRUE;
+               }
+       }
+       return FALSE;
+}
+
+/* **********************************************************************
+ * Function to list all possible tap command-line arguments
+ * ********************************************************************** */
+void
+list_tap_cmd_args(void)
+{
+       tap_cmd_arg *tca;
+
+       for(tca=tap_cmd_arg_list;tca;tca=tca->next){
+               fprintf(stderr,"     %s\n",tca->cmd);
+       }
+}
+
+/* **********************************************************************
+ * Function to process taps requested with command-line arguments
+ * ********************************************************************** */
+void
+start_requested_taps(void)
+{
+       tap_requested *tr;
+
+       while(taps_requested){
+               tr=taps_requested->data;
+               (*tr->tca->func)(tr->arg);
+               g_free(tr->arg);
+               g_free(tr);
+               taps_requested=g_slist_remove(taps_requested, tr);
+       }
+}
 
 /* **********************************************************************
  * Functions called from dissector when made tappable
index e8b27f2e9d83a2b54b9ae5701eb03fa0f1364840..53774bf74599457fd906bc14c954d02af64bf9b3 100644 (file)
@@ -38,6 +38,10 @@ typedef void (*tap_draw_cb)(void *tapdata);
 
 
 extern void tap_init(void);
+extern void register_tap_listener_cmd_arg(char *cmd, void (*func)(char *arg));
+extern gboolean process_tap_cmd_arg(char *optarg);
+extern void list_tap_cmd_args(void);
+extern void start_requested_taps(void);
 extern int register_tap(char *name);
 extern int find_tap_id(char *name);
 extern void tap_queue_packet(int tap_id, packet_info *pinfo, const void *tap_specific_data);
index f34754ada91b019c73c4ada116643a83aa625986..7c2337e52430f34dd76fcb7162a31203b67e2966 100644 (file)
@@ -460,7 +460,7 @@ register_tap_listener_gtkansi_a_stat(void)
     GString            *err_p;
 
 
-    register_ethereal_tap("ansi_a,", ansi_a_stat_gtk_init);
+    register_tap_listener_cmd_arg("ansi_a,", ansi_a_stat_gtk_init);
 
     memset((void *) &stat, 0, sizeof(ansi_a_stat_t));
 
index 16bc2b76a68f5a3955bd5b2a783527d466349eae..9260822724d73d17ab025b357d7ef9d63128a92e 100644 (file)
@@ -424,7 +424,7 @@ register_tap_listener_gtkansi_map_stat(void)
     GString            *err_p;
 
 
-    register_ethereal_tap("ansi_map,", ansi_map_stat_gtk_init);
+    register_tap_listener_cmd_arg("ansi_map,", ansi_map_stat_gtk_init);
 
     memset((void *) &stat, 0, sizeof(ansi_map_stat_t));
 
index cf8e910ca91617fd89af6e9d8257bcc1139975da..261cd851ccbeb9f83f4c330f96bb8fae65bd462a 100644 (file)
@@ -281,7 +281,7 @@ static tap_dfilter_dlg dhcp_stat_dlg = {
 void
 register_tap_listener_gtkdhcpstat(void)
 {
-       register_ethereal_tap("bootp,stat", dhcpstat_init);
+       register_tap_listener_cmd_arg("bootp,stat", dhcpstat_init);
 
        register_tap_menu_item("BOOTP-DHCP", REGISTER_TAP_GROUP_NONE,
            gtk_tap_dfilter_dlg_cb, NULL, NULL, &(dhcp_stat_dlg));
index 4196f251248ae00c5365d07f27171e7ec9c6787f..4ed203c48395426b8e6326462d2e634615dcea5f 100644 (file)
@@ -78,7 +78,7 @@ eth_endpoints_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_eth_conversation(void)
 {
-       register_ethereal_tap("conv,eth", eth_conversation_init);
+       register_tap_listener_cmd_arg("conv,eth", eth_conversation_init);
 
        register_tap_menu_item("Ethernet", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            eth_endpoints_cb, NULL, NULL, NULL);
index 01b96625603559c4f9dd5651466b8a90c388dcf9..8cbd055a4682bafdb2248329a7a1e3d0bb3b005e 100644 (file)
@@ -78,7 +78,7 @@ fc_endpoints_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_fc_conversation(void)
 {
-       register_ethereal_tap("conv,fc", fc_conversation_init);
+       register_tap_listener_cmd_arg("conv,fc", fc_conversation_init);
 
        register_tap_menu_item("Fibre Channel", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            fc_endpoints_cb, NULL, NULL, NULL);
index 317423305b01d16900586c87779f2c8e4f6839b2..c9db23f57a3a55ef02f6de6499828c65d2371161 100644 (file)
@@ -78,7 +78,7 @@ fddi_endpoints_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_fddi_conversation(void)
 {
-       register_ethereal_tap("conv,fddi", fddi_conversation_init);
+       register_tap_listener_cmd_arg("conv,fddi", fddi_conversation_init);
 
        register_tap_menu_item("FDDI", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            fddi_endpoints_cb, NULL, NULL, NULL);
index d2811801e4d5dd1354bd6baa497ca4bc126844af..e5b29dbdaed398b6270f9d998568af0a97108fa4 100644 (file)
@@ -76,7 +76,7 @@ ip_endpoints_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_ip_conversation(void)
 {
-       register_ethereal_tap("conv,ip", ip_conversation_init);
+       register_tap_listener_cmd_arg("conv,ip", ip_conversation_init);
 
        register_tap_menu_item("IPv4", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            ip_endpoints_cb, NULL, NULL, NULL);
index 634d7d56e7e0dbcbbc169ea47b83eb3caa339970..ad564bf0433d4feda7250baa9dfd5ebf7418b5a1 100644 (file)
@@ -78,7 +78,7 @@ ipx_endpoints_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_ipx_conversation(void)
 {
-       register_ethereal_tap("conv,ipx", ipx_conversation_init);
+       register_tap_listener_cmd_arg("conv,ipx", ipx_conversation_init);
 
        register_tap_menu_item("IPX", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            ipx_endpoints_cb, NULL, NULL, NULL);
index 1b9a94bbe02e4a7daebd66f7ba15ce25418ac119..cfe36031dc152c6195ae74ddeb452f930350e91f 100644 (file)
@@ -87,7 +87,7 @@ sctp_conversation_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_sctp_conversation(void)
 {
-       register_ethereal_tap("conv,sctp", sctp_conversation_init);
+       register_tap_listener_cmd_arg("conv,sctp", sctp_conversation_init);
 
        register_tap_menu_item("SCTP", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            sctp_conversation_cb, NULL, NULL, NULL);
index 4e85e08964c771d8dd21aef58e96afced517fde5..7500e65fb1e60d6df35cad3608d12aa604d1b8a7 100644 (file)
@@ -78,7 +78,7 @@ tcpip_conversation_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_tcpip_conversation(void)
 {
-       register_ethereal_tap("conv,tcp", tcpip_conversation_init);
+       register_tap_listener_cmd_arg("conv,tcp", tcpip_conversation_init);
 
        register_tap_menu_item("TCP (IPv4 & IPv6)", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            tcpip_conversation_cb, NULL, NULL, NULL);
index 93d5a65a92c8ed07f8e64b3ad868b6c1479899a4..8884e662494d53a58b174dff3aa10f7b444cc083 100644 (file)
@@ -78,7 +78,7 @@ tr_conversation_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_tr_conversation(void)
 {
-       register_ethereal_tap("conv,tr", tr_conversation_init);
+       register_tap_listener_cmd_arg("conv,tr", tr_conversation_init);
 
        register_tap_menu_item("Token Ring", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            tr_conversation_cb, NULL, NULL, NULL);
index a78b42550c4e2c6b6b04d1549c1f6b2371f4556d..f24dae9b265c4a113da460e92a3893e806e5a2c5 100644 (file)
@@ -78,7 +78,7 @@ udpip_conversation_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_udpip_conversation(void)
 {
-       register_ethereal_tap("conv,udp", udpip_conversation_init);
+       register_tap_listener_cmd_arg("conv,udp", udpip_conversation_init);
 
        register_tap_menu_item("UDP (IPv4 & IPv6)", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            udpip_conversation_cb, NULL, NULL, NULL);
index 0faf6132a9a11f91be19d3aa55bd149c49292747..a2312a04c434fcde76f578ea5ce87dfc1b46bc74 100644 (file)
@@ -78,7 +78,7 @@ wlan_endpoints_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_wlan_conversation(void)
 {
-       register_ethereal_tap("conv,wlan", wlan_conversation_init);
+       register_tap_listener_cmd_arg("conv,wlan", wlan_conversation_init);
 
        register_tap_menu_item("WLAN", REGISTER_TAP_GROUP_CONVERSATION_LIST,
            wlan_endpoints_cb, NULL, NULL, NULL);
index 3ef040435d27a351d9128391c96432160035f2c8..2947fa1b3dd197778fc79adce92d25dd9500f293 100644 (file)
@@ -675,7 +675,7 @@ gtk_dcerpcstat_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_gtkdcerpcstat(void)
 {
-       register_ethereal_tap("dcerpc,srt,", gtk_dcerpcstat_init);
+       register_tap_listener_cmd_arg("dcerpc,srt,", gtk_dcerpcstat_init);
 
        register_tap_menu_item("DCE-RPC...", REGISTER_TAP_GROUP_RESPONSE_TIME,
            gtk_dcerpcstat_cb, NULL, NULL, NULL);
index 376b8abf56057013ce7d1d78f8f66d16d3bcf92b..99378e72bdc4901afa41b5a9dd6575528bee8f0f 100644 (file)
@@ -312,7 +312,7 @@ gtk_fcstat_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_gtkfcstat(void)
 {
-       register_ethereal_tap("fc,srt", gtk_fcstat_init);
+       register_tap_listener_cmd_arg("fc,srt", gtk_fcstat_init);
 
        register_tap_menu_item("Fibre Channel...", REGISTER_TAP_GROUP_RESPONSE_TIME,
            gtk_fcstat_cb, NULL, NULL, NULL);
index b45d2a93d555946d65dcc93faf43f1fd523f031b..a6c0e6fc6c0e8a0c8ac65d8abec723939fe38043 100644 (file)
@@ -620,7 +620,7 @@ register_tap_listener_gtkgsm_a_stat(void)
     GString            *err_p;
 
 
-    register_ethereal_tap("gsm_a,", gsm_a_stat_gtk_init);
+    register_tap_listener_cmd_arg("gsm_a,", gsm_a_stat_gtk_init);
 
     memset((void *) &stat, 0, sizeof(gsm_a_stat_t));
 
index 883fe71305c2aec9a3851f12f52afa260922334f..c4f7d03f2b0a11fa397144dfb21e3df3c5880356 100644 (file)
@@ -458,7 +458,7 @@ register_tap_listener_gtkgsm_map_stat(void)
     GString            *err_p;
 
 
-    register_ethereal_tap("gsm_map,", gsm_map_stat_gtk_init);
+    register_tap_listener_cmd_arg("gsm_map,", gsm_map_stat_gtk_init);
 
     memset((void *) &gsm_map_stat, 0, sizeof(gsm_map_stat_t));
 
index df45102b1fdd49c57a2c75e078e898c277fad1e0..2b4bf3df24676603f03f11615d697f38c92181eb 100644 (file)
@@ -562,7 +562,7 @@ gtk_h225counter_init(char *optarg)
 void
 register_tap_listener_gtk_h225counter(void)
 {
-       register_ethereal_tap("h225,counter", gtk_h225counter_init);
+       register_tap_listener_cmd_arg("h225,counter", gtk_h225counter_init);
 
        register_tap_menu_item("H.225...", REGISTER_TAP_GROUP_NONE,
            gtk_tap_dfilter_dlg_cb, NULL, NULL, &(h225_counter_dlg));
index daedacccaeb71b065398049f688fb11064a246a8..add30db5cfd1d3f4bdf1c0868cee80619e757f61 100644 (file)
@@ -342,7 +342,7 @@ gtk_h225rassrt_init(char *optarg)
 void
 register_tap_listener_gtk_h225rassrt(void)
 {
-       register_ethereal_tap("h225,srt", gtk_h225rassrt_init);
+       register_tap_listener_cmd_arg("h225,srt", gtk_h225rassrt_init);
 
        register_tap_menu_item("H.225 RAS...", REGISTER_TAP_GROUP_RESPONSE_TIME,
            gtk_tap_dfilter_dlg_cb, NULL, NULL, &(h225_rassrt_dlg));
index 2a7ebfc502a292b024e05f1bf7a9e08bd7833770..b7a93c3cd5fe3196b21f81487e82f2c694a88ffe 100644 (file)
@@ -83,7 +83,7 @@ gtk_eth_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_eth_hostlist(void)
 {
-       register_ethereal_tap("hosts,eth", gtk_eth_hostlist_init);
+       register_tap_listener_cmd_arg("hosts,eth", gtk_eth_hostlist_init);
 
        register_tap_menu_item("Ethernet", REGISTER_TAP_GROUP_ENDPOINT_LIST,
            gtk_eth_hostlist_cb, NULL, NULL, NULL);
index 22b18e956e8dd6d09372780131532e95c2f7360e..886e58a7b3dddf8b728b60579af6da7f3328fa08 100644 (file)
@@ -83,7 +83,7 @@ gtk_fc_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_fc_hostlist(void)
 {
-       register_ethereal_tap("hosts,fc", gtk_fc_hostlist_init);
+       register_tap_listener_cmd_arg("hosts,fc", gtk_fc_hostlist_init);
 
        register_tap_menu_item("Fibre Channel", REGISTER_TAP_GROUP_ENDPOINT_LIST,
            gtk_fc_hostlist_cb, NULL, NULL, NULL);
index 5f2083005d4095b04a0a1ea97fa808955a408ae5..81198fde018c6fdfc75846b8cd3a4f49b7996586 100644 (file)
@@ -83,7 +83,7 @@ gtk_fddi_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_fddi_hostlist(void)
 {
-       register_ethereal_tap("hosts,fddi", gtk_fddi_hostlist_init);
+       register_tap_listener_cmd_arg("hosts,fddi", gtk_fddi_hostlist_init);
 
        register_tap_menu_item("FDDI", REGISTER_TAP_GROUP_ENDPOINT_LIST,
            gtk_fddi_hostlist_cb, NULL, NULL, NULL);
index cc6294e4bab32b3b46395a313e65ff104b21cc11..57f456cd6ca1cc97c6d4ac814a28c84b55a64da4 100644 (file)
@@ -82,7 +82,7 @@ gtk_ip_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_ip_hostlist(void)
 {
-       register_ethereal_tap("hosts,ip", gtk_ip_hostlist_init);
+       register_tap_listener_cmd_arg("hosts,ip", gtk_ip_hostlist_init);
 
        register_tap_menu_item("IPv4", REGISTER_TAP_GROUP_ENDPOINT_LIST,
                gtk_ip_hostlist_cb, NULL, NULL, NULL);
index a266796fcdbeb62c85d1d7180d60b86283837605..b48930af21546ff27aa690408acdb9df08163a18 100644 (file)
@@ -83,7 +83,7 @@ gtk_ipx_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_ipx_hostlist(void)
 {
-       register_ethereal_tap("hosts,ipx", gtk_ipx_hostlist_init);
+       register_tap_listener_cmd_arg("hosts,ipx", gtk_ipx_hostlist_init);
 
        register_tap_menu_item("IPX", REGISTER_TAP_GROUP_ENDPOINT_LIST,
            gtk_ipx_hostlist_cb, NULL, NULL, NULL);
index 13a4ae0e215accaed37fbf8fb8c3ecef7ed02586..72f28fc9ca265ecfc0a63d3b557253c90b97b70c 100644 (file)
@@ -83,7 +83,7 @@ gtk_tcpip_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_tcpip_hostlist(void)
 {
-       register_ethereal_tap("endpoints,tcp", gtk_tcpip_hostlist_init);
+       register_tap_listener_cmd_arg("endpoints,tcp", gtk_tcpip_hostlist_init);
 
        register_tap_menu_item("TCP (IPv4 & IPv6)", REGISTER_TAP_GROUP_ENDPOINT_LIST,
            gtk_tcpip_hostlist_cb, NULL, NULL, NULL);
index 1cac21c34f8d3b26ffcd70df5fbf29649645c5a0..af21ca6ca34af05b0215be62049f0043374936cb 100644 (file)
@@ -83,7 +83,7 @@ gtk_tr_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_tr_hostlist(void)
 {
-       register_ethereal_tap("hosts,tr", gtk_tr_hostlist_init);
+       register_tap_listener_cmd_arg("hosts,tr", gtk_tr_hostlist_init);
 
        register_tap_menu_item("Token Ring", REGISTER_TAP_GROUP_ENDPOINT_LIST,
            gtk_tr_hostlist_cb, NULL, NULL, NULL);
index 1e4ecebc04596defc5f6f3fbd51420b71bfc4fba..6d86a16ba77f4bcd57247d347fcbe54ebc6d10d2 100644 (file)
@@ -83,7 +83,7 @@ gtk_udpip_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_udpip_hostlist(void)
 {
-       register_ethereal_tap("endpoints,udp", gtk_udpip_hostlist_init);
+       register_tap_listener_cmd_arg("endpoints,udp", gtk_udpip_hostlist_init);
 
        register_tap_menu_item("UDP (IPv4 & IPv6)", REGISTER_TAP_GROUP_ENDPOINT_LIST,
            gtk_udpip_hostlist_cb, NULL, NULL, NULL);
index 00034c5863be184a23fbfa0fdba372a9aeac1c55..07de604544c9f458eb2d1628517d9d98717548b5 100644 (file)
@@ -81,7 +81,7 @@ gtk_wlan_hostlist_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_wlan_hostlist(void)
 {
-        register_ethereal_tap("hosts,wlan", gtk_wlan_hostlist_init);
+        register_tap_listener_cmd_arg("hosts,wlan", gtk_wlan_hostlist_init);
 
         register_tap_menu_item("WLAN", REGISTER_TAP_GROUP_ENDPOINT_LIST,
             gtk_wlan_hostlist_cb, NULL, NULL, NULL);
index 195e12898c3dd7645565d374ecdfe437916ba992..0defcfebe6b05fb0d585fe456409dbbcd84a2f83 100644 (file)
@@ -515,7 +515,7 @@ static tap_dfilter_dlg http_stat_dlg = {
 void
 register_tap_listener_gtkhttpstat(void)
 {
-       register_ethereal_tap("http,stat", gtk_httpstat_init);
+       register_tap_listener_cmd_arg("http,stat", gtk_httpstat_init);
 
        register_tap_menu_item("HTTP/Packet Counter", REGISTER_TAP_GROUP_NONE,
            gtk_tap_dfilter_dlg_cb, NULL, NULL, &(http_stat_dlg));
index 8bb636789a6a4d21e631d5902337faae2ddfa633..1bef7e107c8ba4783e3a647857556ccf1173d863 100644 (file)
@@ -1930,7 +1930,7 @@ gtk_iostat_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_gtk_iostat(void)
 {
-       register_ethereal_tap("io,stat", gtk_iostat_init);
+       register_tap_listener_cmd_arg("io,stat", gtk_iostat_init);
 
        register_tap_menu_item("_IO Graphs", REGISTER_TAP_GROUP_GENERIC,
         gtk_iostat_cb, NULL, NULL, NULL);
index befac9102a7687443145e332295e9c4a3c4d0681..795f4a64c08ed9df7fc0183726a61f7b8babc4da 100644 (file)
@@ -398,7 +398,7 @@ register_tap_listener_gtkisup_stat(void)
     GString            *err_p;
 
 
-    register_ethereal_tap("isup,", isup_stat_gtk_init);
+    register_tap_listener_cmd_arg("isup,", isup_stat_gtk_init);
 
     memset((void *) &stat, 0, sizeof(isup_stat_t));
 
index 2b6e638a4382b5752f0fb9f2ec667b82975ef12b..da6149ef4bf82007049186336d888e8048c13b56 100644 (file)
@@ -347,7 +347,7 @@ gtk_ldapstat_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_gtkldapstat(void)
 {
-       register_ethereal_tap("ldap,srt", gtk_ldapstat_init);
+       register_tap_listener_cmd_arg("ldap,srt", gtk_ldapstat_init);
 
        register_tap_menu_item("LDAP...", REGISTER_TAP_GROUP_RESPONSE_TIME,
            gtk_ldapstat_cb, NULL, NULL, NULL);
index 0a2544e450e7c64cd432857971bb1eeabd9fd32e..9b2666b1ca5cf38e6d8de1e95a7f68f63ab224de 100644 (file)
@@ -1172,28 +1172,6 @@ unprotect_thread_critical_region(void)
 #endif
 }
 
-/* structure to keep track of what tap listeners have been registered.
- */
-typedef struct _ethereal_tap_list {
-       struct _ethereal_tap_list *next;
-       char *cmd;
-       void (*func)(char *arg);
-} ethereal_tap_list;
-static ethereal_tap_list *tap_list=NULL;
-
-void
-register_ethereal_tap(char *cmd, void (*func)(char *arg))
-{
-       ethereal_tap_list *newtl;
-
-       newtl=malloc(sizeof(ethereal_tap_list));
-       newtl->next=tap_list;
-       tap_list=newtl;
-       newtl->cmd=cmd;
-       newtl->func=func;
-
-}
-
 /* Set the file name in the status line, in the name for the main window,
    and in the name for the main window's icon. */
 static void
@@ -1478,11 +1456,6 @@ void main_cf_callback(gint event, gpointer data, gpointer user_data _U_)
     }
 }
 
-typedef struct {
-  ethereal_tap_list *tli;
-  char              *arg;
-} tap_to_run_t;
-
 /* And now our feature presentation... [ fade to music ] */
 int
 main(int argc, char *argv[])
@@ -1530,9 +1503,6 @@ main(int argc, char *argv[])
   gboolean             rfilter_parse_failed = FALSE;
   e_prefs             *prefs;
   char                 badopt;
-  ethereal_tap_list   *tli;
-  tap_to_run_t        *tap_to_run;
-  GSList              *taps_to_run = NULL;
   GtkWidget           *splash_win = NULL;
   gboolean             capture_child; /* True if this is the child for "-S" */
 
@@ -1972,28 +1942,17 @@ main(int argc, char *argv[])
         exit(0);
         break;
       case 'z':
-        for(tli=tap_list;tli;tli=tli->next){
-          if(!strncmp(tli->cmd,optarg,strlen(tli->cmd))){
-            /* We won't call the init function for the tap this soon
-               as it would disallow MATE's fields (which are registered
-               by the preferences set callback) from being used as
-               part of a tap filter.  Instead, we just add the argument
-               to a list of tap arguments. */
-            tap_to_run = g_malloc(sizeof (tap_to_run_t));
-            tap_to_run->tli = tli;
-            tap_to_run->arg = g_strdup(optarg);
-            taps_to_run = g_slist_append(taps_to_run, tap_to_run);
-            break;
-          }
-        }
-        if(!tli){
-          fprintf(stderr,"ethereal: invalid -z argument.\n");
-          fprintf(stderr,"  -z argument must be one of :\n");
-          for(tli=tap_list;tli;tli=tli->next){
-            fprintf(stderr,"     %s\n",tli->cmd);
-          }
-          exit(1);
-        }
+        /* We won't call the init function for the tap this soon
+           as it would disallow MATE's fields (which are registered
+           by the preferences set callback) from being used as
+           part of a tap filter.  Instead, we just add the argument
+           to a list of tap arguments. */
+        if (!process_tap_cmd_arg(optarg)) {
+         fprintf(stderr,"ethereal: invalid -z argument.\n");
+         fprintf(stderr,"  -z argument must be one of :\n");
+         list_tap_cmd_args();
+         exit(1);
+       }
         break;
       default:
       case '?':        /* Bad flag - print usage message */
@@ -2338,13 +2297,7 @@ main(int argc, char *argv[])
            registered its field array and we can have a filter with
            one of MATE's late-registered fields as part of the tap's
            filter. */
-        while (taps_to_run != NULL) {
-          tap_to_run = taps_to_run->data;
-          (*tap_to_run->tli->func)(tap_to_run->arg);
-          g_free(tap_to_run->arg);
-          g_free(tap_to_run);
-          taps_to_run = g_slist_remove(taps_to_run, tap_to_run);
-        }
+        start_requested_taps();
 
         /* Read the capture file. */
         switch (cf_read(&cfile)) {
@@ -2398,13 +2351,7 @@ main(int argc, char *argv[])
            registered its field array and we can have a filter with
            one of MATE's late-registered fields as part of the tap's
            filter. */
-        while (taps_to_run != NULL) {
-          tap_to_run = taps_to_run->data;
-          (*tap_to_run->tli->func)(tap_to_run->arg);
-          g_free(tap_to_run->arg);
-          g_free(tap_to_run);
-          taps_to_run = g_slist_remove(taps_to_run, tap_to_run);
-        }
+        start_requested_taps();
       }
     }
     else {
index 1f4d8b67a420054d83eaa69656c963d5431b8403..9775071601a28c165c2b987cdbe2615221c0c2ad 100644 (file)
@@ -326,7 +326,7 @@ register_tap_listener_gtkmgcpstat(void)
 {
        /* We don't register this tap, if we don't have the mgcp plugin loaded.*/
        if (find_tap_id("mgcp")) {
-               register_ethereal_tap("mgcp,srt", gtk_mgcpstat_init);
+               register_tap_listener_cmd_arg("mgcp,srt", gtk_mgcpstat_init);
 
                register_tap_menu_item("MGCP...", REGISTER_TAP_GROUP_RESPONSE_TIME,
                    gtk_tap_dfilter_dlg_cb, NULL, NULL, &(mgcp_srt_dlg));
index 76b920670430251271309bf22b6a8051aaf4f2a8..70dc5ee5667184cb16d2d02dad1ce3f36a0ba6b8 100644 (file)
@@ -447,7 +447,7 @@ register_tap_listener_gtkmtp3_stat(void)
     GString            *err_p;
 
 
-    register_ethereal_tap("mtp3,", mtp3_stat_gtk_init);
+    register_tap_listener_cmd_arg("mtp3,", mtp3_stat_gtk_init);
 
     memset((void *) &mtp3_stat, 0, sizeof(mtp3_stat_t));
 
index f585c4907025784803f4f50e71fad079bfcf877c..9d674deb18bba48f71cdfeb838931cc784d453e5 100644 (file)
@@ -418,7 +418,7 @@ gtk_rpcprogs_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_gtkrpcprogs(void)
 {
-       register_ethereal_tap("rpc,programs", gtk_rpcprogs_init);
+       register_tap_listener_cmd_arg("rpc,programs", gtk_rpcprogs_init);
 
        register_tap_menu_item("ONC-RPC Programs", REGISTER_TAP_GROUP_NONE,
        gtk_rpcprogs_cb, NULL, NULL, NULL);
index 5da4615889c8159be0aad23deebbc7d58ee96131..cffc0db23a1b35b381da3bf86cbde8e498714ee3 100644 (file)
@@ -536,7 +536,7 @@ gtk_rpcstat_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_gtkrpcstat(void)
 {
-       register_ethereal_tap("rpc,srt,", gtk_rpcstat_init);
+       register_tap_listener_cmd_arg("rpc,srt,", gtk_rpcstat_init);
 
        register_tap_menu_item("ONC-RPC...", REGISTER_TAP_GROUP_RESPONSE_TIME,
            gtk_rpcstat_cb, NULL, NULL, NULL);
index 066b84a32d08ddc3fa0ea8e2be77af7226c62864..b1f4ab43ae0550407aca785e45f08c1fc4360190 100644 (file)
@@ -3649,7 +3649,7 @@ rtp_analysis_init(char *dummy _U_)
 void
 register_tap_listener_rtp_analysis(void)
 {
-       register_ethereal_tap("rtp", rtp_analysis_init);
+       register_tap_listener_cmd_arg("rtp", rtp_analysis_init);
 
        register_tap_menu_item("RTP/Stream Analysis...", REGISTER_TAP_GROUP_NONE,
            rtp_analysis_cb, NULL, NULL, NULL);
index feb1f1bbf2ebfdf683e5da502d3f83a4fdb5eb1c..4ddb0b9c7034b1fc250ceb7c16b88d9eb553cdaf 100644 (file)
@@ -438,7 +438,7 @@ register_tap_listener_rtp_stream(void)
        GString *error_string;
 
        if (!the_tapinfo_struct.is_registered) {
-               register_ethereal_tap("rtp", rtpstream_init_tap);
+               register_tap_listener_cmd_arg("rtp", rtpstream_init_tap);
 
                error_string = register_tap_listener("rtp", &the_tapinfo_struct,
                        NULL, rtpstream_reset_cb, rtpstream_packet,
index 9ae5141f7ccdfe0bdd05189d6db748da3275c8e5..94e051d5833e306b2ae37c4a4cb81ffa4b8615f2 100644 (file)
@@ -344,7 +344,7 @@ sctpstat_init(char *optarg)
 void
 register_tap_listener_sctpstat(void)
 {
-       register_ethereal_tap("sctp,stat", sctpstat_init);
+       register_tap_listener_cmd_arg("sctp,stat", sctpstat_init);
 
        register_tap_menu_item("SCTP/Chunk Counter", REGISTER_TAP_GROUP_NONE,
                               gtk_tap_dfilter_dlg_cb, NULL, NULL, &(sctp_stat_dlg));
index 9ffc6ac2dd28166cbf51dea0da34836a034f76d2..68dbe8515e25fb775b3e69ea31e6c2ef976011d4 100644 (file)
@@ -1448,7 +1448,7 @@ register_tap_listener_sctp_stat(void)
 
        if (!sctp_tapinfo_struct.is_registered)
        {
-               register_ethereal_tap("sctp",gtk_sctpstat_init);
+               register_tap_listener_cmd_arg("sctp",gtk_sctpstat_init);
                if ((error_string = register_tap_listener("sctp", &sctp_tapinfo_struct, NULL, reset, packet, sctp_update))) {
                        simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, error_string->str);
                        g_string_free(error_string, TRUE);
index 9560bf321b197c875d11a33b310da00f7d071ea8..c0de0c4379fd19f0a0af8567bbb535070e8c2657 100644 (file)
@@ -662,7 +662,7 @@ static tap_dfilter_dlg sip_stat_dlg = {
 void
 register_tap_listener_gtksipstat(void)
 {
-    register_ethereal_tap("sip,stat", gtk_sipstat_init);
+    register_tap_listener_cmd_arg("sip,stat", gtk_sipstat_init);
 
     register_tap_menu_item("SIP", REGISTER_TAP_GROUP_NONE,
                            gtk_tap_dfilter_dlg_cb, NULL, NULL, &(sip_stat_dlg));
index 240cbfb0d724584da31b6d96eb7c8b7b2a3f78f6..4b87d871d74b5a71068d263c555d2d6a3a24be24 100644 (file)
@@ -351,7 +351,7 @@ gtk_smbstat_cb(GtkWidget *w _U_, gpointer d _U_)
 void
 register_tap_listener_gtksmbstat(void)
 {
-       register_ethereal_tap("smb,srt", gtk_smbstat_init);
+       register_tap_listener_cmd_arg("smb,srt", gtk_smbstat_init);
 
        register_tap_menu_item("SMB...", REGISTER_TAP_GROUP_RESPONSE_TIME,
            gtk_smbstat_cb, NULL, NULL, NULL);
index 2573b229e3e794fbf945bdec127958b35dc48b2b..07394ebe54ffc669390a5a28e170c29a966f9c55 100644 (file)
@@ -370,7 +370,7 @@ static void register_gtk_stats_tree_tap (gpointer k _U_, gpointer v, gpointer p
 
        s = g_strdup_printf("%s,tree",cfg->abbr);
        
-       register_ethereal_tap(s, init_gtk_tree);
+       register_tap_listener_cmd_arg(s, init_gtk_tree);
        
        cfg->pr = g_malloc(sizeof(tree_pres));
        
index 00e8319b39e4c0cb3bc8a80b4bd5deca34a45473..2e718d2dc3e4215e0259cd3848d9cd9b5b20e20e 100644 (file)
@@ -766,7 +766,7 @@ void voip_calls_launch(GtkWidget *w _U_, gpointer data _U_)
 void
 register_tap_listener_voip_calls_dlg(void)
 {
-       register_ethereal_tap("voip,calls",voip_calls_init_tap);
+       register_tap_listener_cmd_arg("voip,calls",voip_calls_init_tap);
        register_tap_menu_item("VoIP Calls...", REGISTER_TAP_GROUP_NONE,
            voip_calls_launch, NULL, NULL, NULL);
            
index 6a9e143f1951aed11abf9648bf12cfbb8af8172d..903987bbb7ee91cf06cfc253955fbd27689f1261 100644 (file)
@@ -425,7 +425,7 @@ static tap_dfilter_dlg wsp_stat_dlg = {
 void
 register_tap_listener_gtkwspstat(void)
 {
-       register_ethereal_tap("wsp,stat", gtk_wspstat_init);
+       register_tap_listener_cmd_arg("wsp,stat", gtk_wspstat_init);
 
        register_tap_menu_item("WAP-WSP...", REGISTER_TAP_GROUP_NONE,
            gtk_tap_dfilter_dlg_cb, NULL, NULL, &(wsp_stat_dlg));
index 3888df360841a05158e93c0e987246e529b47f0b..683c5fd27a06ff0d064aa29c0708b97a085135c5 100644 (file)
@@ -28,5 +28,4 @@
 extern void register_all_protocols(void);
 extern void register_all_protocol_handoffs(void);
 extern void register_all_tap_listeners(void);
-extern void register_ethereal_tap(char *str, void (*init)(char *));
 #endif /* __REGISTER_H__ */
index b2fc6e0bac95914b6f9e80743ea454609a9eebee..376345ce93023204a9508245d9e2ed0c9cc62c8f 100644 (file)
@@ -165,5 +165,5 @@ ansi_a_stat_init(char *optarg)
 void
 register_tap_listener_ansi_astat(void)
 {
-    register_ethereal_tap("ansi_a,", ansi_a_stat_init);
+    register_tap_listener_cmd_arg("ansi_a,", ansi_a_stat_init);
 }
index 7f75d8502483b664483155a404be34a9429a0473..8063aa39f1d316ffa1d9c3f3ba908ea3efa32e07 100644 (file)
@@ -181,6 +181,6 @@ dhcpstat_init(char *optarg)
 void
 register_tap_listener_gtkdhcpstat(void)
 {
-       register_ethereal_tap("bootp,stat,", dhcpstat_init);
+       register_tap_listener_cmd_arg("bootp,stat,", dhcpstat_init);
 }
 
index 70ebf8923a415f3b8b3c68dd469d94099620ee88..1a03dddbcc9e97474f2bdf13637f7002e159f4ae 100644 (file)
@@ -305,5 +305,5 @@ dcerpcstat_init(char *optarg)
 void
 register_tap_listener_dcerpcstat(void)
 {
-       register_ethereal_tap("dcerpc,rtt,", dcerpcstat_init);
+       register_tap_listener_cmd_arg("dcerpc,rtt,", dcerpcstat_init);
 }
index 91895d9f3a48ec745550f1ba56804f6ad7387e09..dd940f7d6e71653050b0f2f92402057594fbe51e 100644 (file)
@@ -300,5 +300,5 @@ gsm_a_stat_init(char *optarg)
 void
 register_tap_listener_gsm_astat(void)
 {
-    register_ethereal_tap("gsm_a,", gsm_a_stat_init);
+    register_tap_listener_cmd_arg("gsm_a,", gsm_a_stat_init);
 }
index d487aea0a15e0b221b690e25be984294882159e1..b48dee6c354af0f8f0b3975f874b52bca1384db1 100644 (file)
@@ -423,5 +423,5 @@ h225counter_init(char *optarg)
 void
 register_tap_listener_h225counter(void)
 {
-       register_ethereal_tap("h225,counter", h225counter_init);
+       register_tap_listener_cmd_arg("h225,counter", h225counter_init);
 }
index 2782dcb955532c68267e2f8d74947f0a1f7e23d9..55abf24b8002929480945e42d90d5ae7ceac04c8 100644 (file)
@@ -247,5 +247,5 @@ h225rassrt_init(char *optarg)
 void
 register_tap_listener_h225rassrt(void)
 {
-       register_ethereal_tap("h225,srt", h225rassrt_init);
+       register_tap_listener_cmd_arg("h225,srt", h225rassrt_init);
 }
index 2e5e3454ad9fc2712c96269d4d5e1025e6967949..f3201d2fc46bb47f2a598896ff76bcff604fb636 100644 (file)
@@ -325,5 +325,5 @@ gtk_httpstat_init(char *optarg)
 void
 register_tap_listener_gtkhttpstat(void)
 {
-       register_ethereal_tap("http,stat,", gtk_httpstat_init);
+       register_tap_listener_cmd_arg("http,stat,", gtk_httpstat_init);
 }
index 2821ffdade6765dd50bf96605976ca1abaa9ed84..b0c0659bd2c9f3020bdeee04a69c3fa07315a7c1 100644 (file)
@@ -650,5 +650,5 @@ iostat_init(char *optarg)
 void
 register_tap_listener_iostat(void)
 {
-       register_ethereal_tap("io,stat,", iostat_init);
+       register_tap_listener_cmd_arg("io,stat,", iostat_init);
 }
index 4d0ed164fccdfe9b5bf2a250543fd95fb5612c48..f20137e816b80f83703139ac3255250b8b9f899f 100644 (file)
@@ -710,5 +710,5 @@ iousers_init(char *optarg)
 void
 register_tap_listener_iousers(void)
 {
-       register_ethereal_tap("conv,", iousers_init);
+       register_tap_listener_cmd_arg("conv,", iousers_init);
 }
index f8b92b6192da64cb14258e4c10831573ccb93ce4..bd96b07468b11041764d341fe247edaf854d66f3 100644 (file)
@@ -235,7 +235,7 @@ register_tap_listener_mgcpstat(void)
 {
        /* We don't register this tap, if we don't have the mgcp plugin loaded.*/
        if (find_tap_id("mgcp")) {
-               register_ethereal_tap("mgcp,rtd", mgcpstat_init);
+               register_tap_listener_cmd_arg("mgcp,rtd", mgcpstat_init);
        }
 }
 
index 3e07d6839ea0443492f1f35f223a44f3b22d7b65..562bfc23f276f5beedf328e16afa86830a1d5b63 100644 (file)
@@ -142,6 +142,6 @@ protocolinfo_init(char *optarg)
 void
 register_tap_listener_protocolinfo(void)
 {
-       register_ethereal_tap("proto,colinfo,", protocolinfo_init);
+       register_tap_listener_cmd_arg("proto,colinfo,", protocolinfo_init);
 }
 
index 039f532896dcc49ce6f9fd43fbc1d63a1b7b1386..8a26136d1c67077547cd20e2511e457c8f5b8554 100644 (file)
@@ -216,6 +216,6 @@ protohierstat_init(char *optarg)
 void
 register_tap_listener_protohierstat(void)
 {
-       register_ethereal_tap("io,phs", protohierstat_init);
+       register_tap_listener_cmd_arg("io,phs", protohierstat_init);
 }
 
index 28e3c86e4d46d14ce23b8a6728a761c0fc4b35cb..be08010ca3426313a45a568fcef18ab114491ee4 100644 (file)
@@ -242,7 +242,7 @@ rpcprogs_init(char *optarg _U_)
 void
 register_tap_listener_rpcprogs(void)
 {
-       register_ethereal_tap("rpc,programs", rpcprogs_init);
+       register_tap_listener_cmd_arg("rpc,programs", rpcprogs_init);
 }
 
 
index ec188af03f6c8f55e4cff4a6566bae9aace7e74e..8c53e0ab23c84ca477f636a4cbf148374f01e2f2 100644 (file)
@@ -360,6 +360,6 @@ rpcstat_init(char *optarg)
 void
 register_tap_listener_rpcstat(void)
 {
-       register_ethereal_tap("rpc,rtt,", rpcstat_init);
+       register_tap_listener_cmd_arg("rpc,rtt,", rpcstat_init);
 }
 
index 8cdf8e5bdc90f999a72197119f7590b2aea5fb64..d928912c9d839cda719067d6172b1e7a739a4f23 100644 (file)
@@ -261,5 +261,5 @@ sctpstat_init(char *optarg)
 void
 register_tap_listener_sctpstat(void)
 {
-       register_ethereal_tap("sctp,stat", sctpstat_init);
+       register_tap_listener_cmd_arg("sctp,stat", sctpstat_init);
 }
index 3bacac0911b8787fb8cd9e00b60c06601e5b5f72..345c73f7a961cf81316dfa18a4737469bc924309 100644 (file)
@@ -390,5 +390,5 @@ sipstat_init(char *optarg)
 void
 register_tap_listener_sipstat(void)
 {
-       register_ethereal_tap("sip,stat", sipstat_init);
+       register_tap_listener_cmd_arg("sip,stat", sipstat_init);
 }
index 867f668c04b89faab4d615d893ac878b771d48f2..7aa7aec36433cdcf7ea2f2833186f2c6578fcd31 100644 (file)
@@ -95,6 +95,6 @@ smbsids_init(char *optarg _U_)
 void
 register_tap_listener_smbsids(void)
 {
-       register_ethereal_tap("smb,sids", smbsids_init);
+       register_tap_listener_cmd_arg("smb,sids", smbsids_init);
 }
 
index 8e9b74f1b4980126f41ccfbc946eb7c57647db40..1b0b487c7d7981ea5762a23e81acbe6a5e24ec2f 100644 (file)
@@ -279,6 +279,6 @@ smbstat_init(char *optarg)
 void
 register_tap_listener_smbstat(void)
 {
-       register_ethereal_tap("smb,rtt", smbstat_init);
+       register_tap_listener_cmd_arg("smb,rtt", smbstat_init);
 }
 
index 1cf1a4fe42e76f27a1958ba3153d59779b8841e2..3e400edd2ca71a0063659e529f211dab048e955d 100644 (file)
@@ -113,7 +113,7 @@ void register_stats_tree_tap (gpointer k _U_, gpointer v, gpointer p _U_) {
        cfg->pr = g_malloc(sizeof(tree_cfg_pres));
        cfg->pr->init_string = g_strdup_printf("%s,tree",cfg->abbr);
 
-       register_ethereal_tap(cfg->pr->init_string, init_stats_tree);
+       register_tap_listener_cmd_arg(cfg->pr->init_string, init_stats_tree);
        
 }
 
index 64c5125527f42c9c0b6da3e023ed0345dff95eee..3582179f890c8e262de5fc5e68fa6ded138bd76a 100644 (file)
@@ -280,5 +280,5 @@ wspstat_init(char *optarg)
 void 
 register_tap_listener_wspstat(void)
 {
-       register_ethereal_tap("wsp,stat,", wspstat_init);
+       register_tap_listener_cmd_arg("wsp,stat,", wspstat_init);
 }
index 5027bb59ca466c55aeac6acb58d2cc94bb863c78..22495ff100d00a399bc3dc3d36dcde99f9b3f32a 100644 (file)
@@ -266,28 +266,6 @@ print_usage(gboolean print_ver)
   fprintf(output, "\tdefault is libpcap\n");
 }
 
-/* structure to keep track of what tap listeners have been registered.
- */
-typedef struct _ethereal_tap_list {
-       struct _ethereal_tap_list *next;
-       char *cmd;
-       void (*func)(char *arg);
-} ethereal_tap_list;
-static ethereal_tap_list *tap_list=NULL;
-
-void
-register_ethereal_tap(char *cmd, void (*func)(char *arg))
-{
-       ethereal_tap_list *newtl;
-
-       newtl=malloc(sizeof(ethereal_tap_list));
-       newtl->next=tap_list;
-       tap_list=newtl;
-       newtl->cmd=cmd;
-       newtl->func=func;
-
-}
-
 /*
  * For a dissector table, print on the stream described by output,
  * its short name (which is what's used in the "-d" option) and its
@@ -634,11 +612,6 @@ add_decode_as(const gchar *cl_param)
   return TRUE;
 }
 
-typedef struct {
-  ethereal_tap_list *tli;
-  char              *arg;
-} tap_to_run_t;
-
 int
 main(int argc, char *argv[])
 {
@@ -685,9 +658,6 @@ main(int argc, char *argv[])
   dfilter_t           *rfcode = NULL;
   e_prefs             *prefs;
   char                 badopt;
-  ethereal_tap_list   *tli;
-  tap_to_run_t        *tap_to_run;
-  GSList              *taps_to_run = NULL;
   
 #ifdef HAVE_LIBPCAP
   capture_opts_init(&capture_opts, NULL /* cfile */);
@@ -1049,28 +1019,17 @@ main(int argc, char *argv[])
         print_hex = TRUE;
         break;
       case 'z':
-        for(tli=tap_list;tli;tli=tli->next){
-          if(!strncmp(tli->cmd,optarg,strlen(tli->cmd))){
-            /* We won't call the init function for the tap this soon
-               as it would disallow MATE's fields (which are registered
-               by the preferences set callback) from being used as
-               part of a tap filter.  Instead, we just add the argument
-               to a list of tap arguments. */
-            tap_to_run = g_malloc(sizeof (tap_to_run_t));
-            tap_to_run->tli = tli;
-            tap_to_run->arg = g_strdup(optarg);
-            taps_to_run = g_slist_append(taps_to_run, tap_to_run);
-            break;
-          }
-        }
-        if(!tli){
-          fprintf(stderr,"tethereal: invalid -z argument.\n");
-          fprintf(stderr,"  -z argument must be one of :\n");
-          for(tli=tap_list;tli;tli=tli->next){
-            fprintf(stderr,"     %s\n",tli->cmd);
-          }
-          exit(1);
-        }
+        /* We won't call the init function for the tap this soon
+           as it would disallow MATE's fields (which are registered
+           by the preferences set callback) from being used as
+           part of a tap filter.  Instead, we just add the argument
+           to a list of tap arguments. */
+        if (!process_tap_cmd_arg(optarg)) {
+         fprintf(stderr,"tethereal: invalid -z argument.\n");
+         fprintf(stderr,"  -z argument must be one of :\n");
+         list_tap_cmd_args();
+         exit(1);
+       }
         break;
       default:
       case '?':        /* Bad flag - print usage message */
@@ -1249,13 +1208,7 @@ main(int argc, char *argv[])
   /* At this point MATE will have registered its field array so we can
      have a filter with one of MATE's late-registered fields as part
      of the tap's filter.  We can now process all the "-z" arguments. */
-  while (taps_to_run != NULL) {
-    tap_to_run = taps_to_run->data;
-    (*tap_to_run->tli->func)(tap_to_run->arg);
-    g_free(tap_to_run->arg);
-    g_free(tap_to_run);
-    taps_to_run = g_slist_remove(taps_to_run, tap_to_run);
-  }
+  start_requested_taps();
   
   /* disabled protocols as per configuration file */
   if (gdp_path == NULL && dp_path == NULL) {