2004-10-30 11:44:06 +00:00
|
|
|
/* capture_sync.h
|
|
|
|
* Synchronisation between Ethereal capture parent and child instances
|
|
|
|
*
|
|
|
|
* $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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/** @file
|
|
|
|
*
|
|
|
|
* Sync mode capture (internal interface).
|
|
|
|
*
|
2005-04-11 18:57:19 +00:00
|
|
|
* Will start a new Ethereal child instance which will do the actual capture
|
|
|
|
* work.
|
2004-10-30 11:44:06 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __CAPTURE_SYNC_H__
|
|
|
|
#define __CAPTURE_SYNC_H__
|
|
|
|
|
2005-12-03 19:32:54 +00:00
|
|
|
|
2006-03-24 02:23:48 +00:00
|
|
|
/*
|
|
|
|
* Maximum length of sync pipe message data. Must be < 2^24, as the
|
|
|
|
* message length is 3 bytes.
|
|
|
|
* XXX - this must be large enough to handle a Really Big Filter
|
|
|
|
* Expression, as the error message for an incorrect filter expression
|
|
|
|
* is a bit larger than the filter expression.
|
|
|
|
*/
|
|
|
|
#define SP_MAX_MSG_LEN 4096
|
|
|
|
|
|
|
|
|
2005-12-04 02:04:18 +00:00
|
|
|
/* Size of buffer to hold decimal representation of
|
|
|
|
signed/unsigned 64-bit int */
|
|
|
|
#define SP_DECISIZE 20
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Indications sent out on the sync pipe (from child to parent).
|
|
|
|
*/
|
|
|
|
#define SP_FILE 'F' /* the name of the recently opened file */
|
|
|
|
#define SP_ERROR_MSG 'E' /* error message */
|
2006-03-05 03:14:16 +00:00
|
|
|
#define SP_BAD_FILTER 'B' /* error message for bad capture filter */
|
2005-12-04 02:04:18 +00:00
|
|
|
#define SP_PACKET_COUNT 'P' /* count of packets captured since last message */
|
|
|
|
#define SP_DROPS 'D' /* count of packets dropped in capture */
|
|
|
|
/*
|
|
|
|
* Win32 only: Indications sent out on the signal pipe (from parent to child)
|
|
|
|
* (UNIX-like sends signals for this)
|
|
|
|
*/
|
|
|
|
#define SP_QUIT 'Q' /* "gracefully" capture quit message (SIGUSR1) */
|
|
|
|
|
|
|
|
|
|
|
|
|
2004-10-30 11:44:06 +00:00
|
|
|
/**
|
2005-03-28 18:04:09 +00:00
|
|
|
* Start a new capture session.
|
2004-10-30 11:44:06 +00:00
|
|
|
* Create a capture child which is doing the real capture work.
|
2005-04-11 18:57:19 +00:00
|
|
|
* The various capture_input_... functions will be called, if something had
|
|
|
|
* happened.
|
2004-10-30 11:44:06 +00:00
|
|
|
*
|
|
|
|
* Most of the parameters are passed through the global capture_opts.
|
|
|
|
*
|
2005-03-28 18:04:09 +00:00
|
|
|
* @param capture_opts the options
|
2004-10-30 11:44:06 +00:00
|
|
|
* @return TRUE if a capture could be started, FALSE if not
|
|
|
|
*/
|
|
|
|
extern gboolean
|
2005-04-30 15:39:40 +00:00
|
|
|
sync_pipe_start(capture_options *capture_opts);
|
2004-10-30 11:44:06 +00:00
|
|
|
|
|
|
|
/** User wants to stop capturing, gracefully close the capture child */
|
|
|
|
extern void
|
2005-02-04 01:29:29 +00:00
|
|
|
sync_pipe_stop(capture_options *capture_opts);
|
2004-10-30 11:44:06 +00:00
|
|
|
|
2005-03-28 18:04:09 +00:00
|
|
|
/** User wants to stop the program, just kill the child as soon as possible */
|
2004-10-30 11:44:06 +00:00
|
|
|
extern void
|
2005-02-04 01:29:29 +00:00
|
|
|
sync_pipe_kill(capture_options *capture_opts);
|
2004-10-30 11:44:06 +00:00
|
|
|
|
|
|
|
|
2005-03-28 18:04:09 +00:00
|
|
|
/** the child has opened a new capture file, notify the parent */
|
|
|
|
extern void
|
|
|
|
sync_pipe_filename_to_parent(const char *filename);
|
|
|
|
|
2004-10-30 11:44:06 +00:00
|
|
|
/** the child captured some new packets, notify the parent */
|
|
|
|
extern void
|
|
|
|
sync_pipe_packet_count_to_parent(int packet_count);
|
|
|
|
|
|
|
|
/** the child stopped capturing, notify the parent */
|
|
|
|
extern void
|
|
|
|
sync_pipe_drops_to_parent(int drops);
|
|
|
|
|
2006-03-05 03:14:16 +00:00
|
|
|
/** the child encountered an error with a capture filter, notify the parent */
|
|
|
|
extern void
|
|
|
|
sync_pipe_cfilter_error_to_parent(const char *cfilter, const char *errmsg);
|
|
|
|
|
2004-10-30 11:44:06 +00:00
|
|
|
/** the child encountered an error, notify the parent */
|
|
|
|
extern void
|
2006-03-05 03:14:16 +00:00
|
|
|
sync_pipe_errmsg_to_parent(const char *error_msg,
|
|
|
|
const char *secondary_error_msg);
|
2004-10-30 11:44:06 +00:00
|
|
|
|
|
|
|
|
2006-02-17 02:18:48 +00:00
|
|
|
/** does the parent signalled the child to stop */
|
|
|
|
#ifdef _WIN32
|
|
|
|
extern gboolean
|
|
|
|
signal_pipe_check_running(void);
|
|
|
|
#endif
|
|
|
|
|
2004-10-30 11:44:06 +00:00
|
|
|
#endif /* capture_sync.h */
|