[Desktop Entry]
-# $Id: Ethereal.desktop,v 1.3 2004/02/20 13:50:06 jmayer Exp $
+# $Id$
Name=Ethereal
Type=Application
TryExec=ethereal
# Makefile.am
# Automake file for Ethereal
#
-# $Id: Makefile.am,v 1.738 2004/06/29 03:04:02 gerald Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
# a) common to both files and
# b) portable between both files
#
-# $Id: Makefile.common,v 1.53 2004/07/13 05:29:22 guy Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.426 2004/07/13 19:30:02 gerald Exp $
+# $Id$
include config.nmake
include <win32.mak>
-$Id: NEWS,v 1.156 2004/07/07 22:20:42 gerald Exp $
+$Id$
== July 7, 2004
-$Id: README,v 1.66 2004/02/11 20:30:27 guy Exp $
+$Id$
General Information
------- -----------
-$Id: README.aix,v 1.6 2002/10/08 07:30:08 guy Exp $
+$Id$
libpcap 0.7.1 and later appear to work on AIX when using AIX's native
BPF; that appears to work better than DLPI does. Note that you may have
-$Id: README.bsd,v 1.2 2002/04/24 23:19:38 guy Exp $
+$Id$
In order to capture packets (with Ethereal/Tethereal, tcpdump, or any
other packet capture program) on a BSD system, your kernel must have
-$Id: README.hpux,v 1.19 2002/06/29 04:38:31 guy Exp $
+$Id$
Contents:
-$Id: README.irix,v 1.4 2001/01/10 09:54:44 guy Exp $
+$Id$
1. Some problems seen by one person who tried to build Ethereal on IRIX;
your mileage may vary.
-$Id: README.linux,v 1.8 2003/12/03 07:46:34 guy Exp $
+$Id$
In order to capture packets (with Ethereal/Tethereal, tcpdump, or any
other libpcap-based packet capture program) on a Linux system, the
-$Id: README.macos,v 1.9 2004/07/03 21:46:59 tuexen Exp $
+$Id$
This file tries to help building Ethereal for Mac OS X (Ethereal does
not work on earlier versions of Mac OS).
-$Id: README.tru64,v 1.3 2001/01/24 06:50:16 guy Exp $
+$Id$
The following instructions are applicable to Tru64 UNIX
(formerly Digital UNIX (formerly DEC OSF/1)) version 4.0, and
-$Id: README.vmware,v 1.2 2000/01/21 19:19:23 gram Exp $
+$Id$
If you are a registered user of VMware on Linux, you can contact their
support staff via e-mail and ask for a libpcap patch which will allow
-$Id: README.win32,v 1.71 2004/06/14 22:38:57 ulfl Exp $
+$Id$
Installing Ethereal, Tethereal, and Editcap on Win32
====================================================
-$Id: TODO,v 1.17 2004/04/25 22:25:52 jmayer Exp $
+$Id$
Things to do:
=============
dnl This file is part of the Autoconf packaging for Ethereal.
dnl Copyright (C) 1998-2000 by Gerald Combs.
dnl
-dnl $Id: acinclude.m4,v 1.79 2004/06/29 07:59:12 guy Exp $
+dnl $Id$
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
# "aclocal" will look in that directory twice, and get well and truly
# confused, reporting a ton of duplicate macro definitions.)
#
-# $Id: aclocal-flags,v 1.9 2004/07/03 21:35:30 tuexen Exp $
+# $Id$
#
#
* 2003 Tomas Kukosa
* Based on code from RFC 1950 (Chapter 9. Appendix: Sample code)
*
- * $Id: adler32.c,v 1.2 2003/10/02 22:44:18 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Compute the Adler32 checksum (RFC 1950)
* 2003 Tomas Kukosa
*
- * $Id: adler32.h,v 1.2 2003/10/02 22:44:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* afn.c
* RFC 1700 address family numbers
*
- * $Id: afn.c,v 1.4 2002/08/28 21:00:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* afn.h
* RFC 1700 address family numbers
*
- * $Id: afn.h,v 1.3 2002/08/28 21:00:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* aftypes.h
* AF_ values on various flavors of BSD
*
- * $Id: aftypes.h,v 1.3 2002/08/28 21:00:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines to put up various "standard" alert boxes used in multiple
* places
*
- * $Id: alert_box.c,v 1.7 2004/05/09 10:03:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines to put up various "standard" alert boxes used in multiple
* places
*
- * $Id: alert_box.h,v 1.5 2004/04/16 23:16:28 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* ARCNET protocol ID values
* Copyright 2001-2002, Peter Fales <ethereal@fales-lorenz.net>
*
- * $Id: arcnet_pids.h,v 1.4 2003/01/23 09:54:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* asn1.c
* Routines for ASN.1 BER dissection
*
- * $Id: asn1.c,v 1.23 2003/11/09 22:57:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* asn1.h
* Definitions for ASN.1 BER dissection
*
- * $Id: asn1.h,v 1.15 2003/11/09 22:57:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# H235-SECURITY-MESSAGES conformation file
# 2004 Tomas Kukosa
-# $Id: h235.cnf,v 1.4 2004/06/24 21:50:04 sahlberg Exp $
+# $Id$
#.EXPORTS
* Routines for H.235 packet dissection
* 2004 Tomas Kukosa
*
- * $Id: packet-h235-template.c,v 1.3 2004/06/04 11:30:35 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for H.235 packet dissection
* 2004 Tomas Kukosa
*
- * $Id: packet-h235-template.h,v 1.1 2004/05/24 08:42:29 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
#
# Run this to generate all the initial makefiles.
#
-# $Id: autogen.sh,v 1.36 2004/05/26 10:41:14 jmayer Exp $
+# $Id$
DIE=true
PROJECT="Ethereal"
* Definitions of protocol IDs for the 00-80-C2 OUI, used for
* bridging various networks over ATM (RFC 2684) or Frame Relay (RFC 2427).
*
- * $Id: bridged_pids.h,v 1.2 2002/08/28 21:00:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* time, so that we only need one Ethereal binary and one Tethereal binary
* for Windows, regardless of whether WinPcap is installed or not.
*
- * $Id: capture-wpcap.c,v 1.10 2004/06/12 07:47:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture-wpcap.h
*
- * $Id: capture-wpcap.h,v 1.2 2002/08/28 21:00:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* capture.c
* Routines for packet capture windows
*
- * $Id: capture.c,v 1.254 2004/06/30 06:58:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture.h
* Definitions for packet capture windows
*
- * $Id: capture.h,v 1.48 2004/07/06 19:16:03 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture_stop_conditions.c
* Implementation for 'stop condition handler'.
*
- * $Id: capture_stop_conditions.c,v 1.4 2002/08/28 21:00:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture_stop_conditions.h
* Implementation for 'stop condition handler'.
*
- * $Id: capture_stop_conditions.h,v 1.2 2002/08/28 21:00:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* capture_file GUI-independent manipulation
* Vassilii Khachaturov <vassilii@tarunz.org>
*
- * $Id: cfile.c,v 1.1 2002/09/06 23:14:04 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* cfile.h
* capture_file definition & GUI-independent manipulation
*
- * $Id: cfile.h,v 1.10 2004/04/15 23:28:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* chdlctypes.h
* Defines Cisco HDLC packet types that aren't just Ethernet types
*
- * $Id: chdlctypes.h,v 1.1 2003/01/11 10:16:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
rem cleanbld.bat
rem Script to clean up from a build on another platform
rem
-rem $Id: cleanbld.bat,v 1.3 2003/04/07 18:43:03 guy Exp $
+rem $Id$
rem
rem Ethereal - Network traffic analyzer
rem By Gerald Combs <gerald@ethereal.com>
/* color.h
* Definitions for "toolkit-independent" colors
*
- * $Id: color.h,v 1.5 2004/01/09 20:19:34 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* column.c
* Routines for handling column preferences
*
- * $Id: column.c,v 1.48 2004/07/05 09:29:04 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* column.h
* Definitions for column handling routines
*
- * $Id: column.h,v 1.10 2003/12/09 06:48:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* conditions.c
* Implementation for condition handler.
*
- * $Id: conditions.c,v 1.6 2004/01/18 16:20:09 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* conditions.h
* Header for condition handler.
*
- * $Id: conditions.h,v 1.2 2002/08/28 21:00:06 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-/* $Id: config.h.win32,v 1.47 2004/06/20 09:31:48 ulfl Exp $ */
+/* $Id$ */
/* config.h.win32 Generated manually. :-) */
/* config.h. Generated automatically by configure. */
/* config.h.in. Generated automatically from configure.in by autoheader. */
-# $Id: config.nmake,v 1.96 2004/07/13 18:19:59 gerald Exp $
+# $Id$
VERSION=0.10.5
#
-# $Id: configure.in,v 1.274 2004/07/06 16:29:18 gerald Exp $
+# $Id$
#
AC_INIT(etypes.h)
*
* 2004 Richard van der Hoff <richardv@mxtelecom.com>
*
- * $Id: crc16.c,v 1.2 2004/06/26 09:45:27 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@xxxxxxxxxxxx>
*
* 2004 Richard van der Hoff <richardv@mxtelecom.com>
*
- * $Id: crc16.h,v 1.1 2004/06/25 06:31:46 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@xxxxxxxxxxxx>
/* crc32.c
* CRC-32 routine
*
- * $Id: crc32.c,v 1.4 2004/06/26 09:48:11 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* crc32.h
* Declaration of CRC-32 routine and table
*
- * $Id: crc32.h,v 1.4 2004/06/26 09:48:11 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
Copyright (C) Andrew Tridgell 1998
- $Id: crypt-des.c,v 1.1 2002/12/31 08:05:29 guy Exp $
+ $Id$
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
Copyright (C) Andrew Tridgell 1998
- $Id: crypt-des.h,v 1.1 2002/12/31 08:05:29 guy Exp $
+ $Id$
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
a implementation of MD4 designed for use in the SMB authentication protocol
Copyright (C) Andrew Tridgell 1997-1998.
- $Id: crypt-md4.c,v 1.2 2002/12/03 15:21:28 gerald Exp $
+ $Id$
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
a implementation of MD4 designed for use in the SMB authentication protocol
Copyright (C) Andrew Tridgell 1997-1998.
- $Id: crypt-md4.h,v 1.1 2002/12/03 00:37:27 guy Exp $
+ $Id$
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
ghost@aladdin.com
*/
-/* $Id: crypt-md5.c,v 1.2 2002/12/17 22:14:54 oabad Exp $ */
+/* $Id$ */
/*
Independent implementation of MD5 (RFC 1321).
ghost@aladdin.com
*/
-/* $Id: crypt-md5.h,v 1.1 2002/12/17 16:06:54 gerald Exp $ */
+/* $Id$ */
/*
Independent implementation of MD5 (RFC 1321).
Copyright (C) Andrew Tridgell 1998
- $Id: crypt-rc4.c,v 1.2 2002/12/11 19:31:02 guy Exp $
+ $Id$
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
Copyright (C) Andrew Tridgell 1998
- $Id: crypt-rc4.h,v 1.2 2002/12/11 19:31:02 guy Exp $
+ $Id$
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
/* dftest.c.c
*
- * $Id: dftest.c,v 1.11 2004/04/17 01:05:00 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* disabled_protos.c
* Code for reading and writing the disabled protocols file.
*
- * $Id: disabled_protos.c,v 1.4 2004/01/03 18:40:07 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* disabled_protos.h
* Declarations of routines for reading and writing the disabled protocols file.
*
- * $Id: disabled_protos.h,v 1.2 2004/01/03 18:40:07 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
# Makefile.am
# Automake file for Ethereal documentation
#
-# $Id: Makefile.am,v 1.26 2004/06/27 17:56:15 gerald Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
# Makefile.nmake
# Nmake file for Ethereal documentation
#
-# $Id: Makefile.nmake,v 1.16 2004/05/22 17:14:32 ulfl Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
-$Id: README.capture,v 1.3 2004/02/02 23:55:41 ulfl Exp $
+$Id$
This document is an attempt, to bring some light to the things done, when
packet capturing is performed. There might be things missing, and others
-$Id: README.design,v 1.1 2000/11/14 18:05:27 gram Exp $
+$Id$
Unfortunately, the closest thing to a design document is the
"README.developer" document in the "doc" directory of the Ethereal
-$Id: README.developer,v 1.98 2004/07/08 21:16:04 guy Exp $
+$Id$
This file is a HOWTO for Ethereal developers. It describes how to start coding
a Ethereal protocol dissector and the use some of the important functions and
is needed only if you are using the "snprintf()" function.
-The "$Id: README.developer,v 1.98 2004/07/08 21:16:04 guy Exp $"
+The "$Id$"
in the comment will be updated by CVS when the file is
checked in; it will allow the RCS "ident" command to report which
version of the file is currently checked out.
-When creating a new file, it is fine to just write "$Id: README.developer,v 1.98 2004/07/08 21:16:04 guy Exp $" as RCS will
+When creating a new file, it is fine to just write "$Id$" as RCS will
automatically fill in the identifier at the time the file will be added to the
CVS repository (checked in).
* Routines for PROTONAME dissection
* Copyright 2000, YOUR_NAME <YOUR_EMAIL_ADDRESS>
*
- * $Id: README.developer,v 1.98 2004/07/08 21:16:04 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-$Id: README.idl2eth,v 1.2 2001/06/19 20:10:51 guy Exp $
+$Id$
Copyright (C) 2001 Frank Singleton <frank.singleton@ericsson.com>
-$Id: README.plugins,v 1.13 2004/07/03 21:50:05 tuexen Exp $
+$Id$
Plugins
#
# Ethereal/Tethereal Regression Testing
#
-# $Id: README.regression,v 1.3 2000/05/16 06:23:05 gram Exp $
+# $Id$
#
# This is a sample Makefile for regression testing of the
# Ethereal engine. These tests use that uses 'tethereal -V' to analyze all
-$Id: README.tapping,v 1.6 2003/11/29 12:34:33 jmayer Exp $
+$Id$
The TAP system in ethereal is a powerful and flexible mechanism to get event
driven notification on packets matching certain protocols and/or filters.
-$Id: README.tvbuff,v 1.7 2004/06/23 15:15:28 gram Exp $
+$Id$
TVBUFFs and Exceptions
Protocol Dissection in XML Format
=================================
-$Id: README.xml-output,v 1.3 2004/04/30 07:56:33 ulfl Exp $
+$Id$
Copyright (c) 2003 by Gilbert Ramirez <gram@alumni.rice.edu>
# will be replaced by the pod-formatted glossary
# STDOUT is the output
#
-# $Id: dfilter2pod.pl,v 1.5 2004/04/28 17:50:02 obiot Exp $
+# $Id$
%ftenum_names = (
'FT_NONE', 'No value',
# will be replaced by the pod-formatted glossary
# STDOUT is the output
#
-# $Id: eproto2sgml,v 1.2 2001/04/19 23:17:30 guy Exp $
+# $Id$
# Read all the data into memory
while (<STDIN>) {
Random Packet Generator
-----------------------
-$Id: randpkt.txt,v 1.3 1999/09/17 04:38:23 gram Exp $
+$Id$
randpkt is a small utility creates a libpcap trace file full of random packets.
You can control the number of packets, the maximum size of each packet,
/* Edit capture files. We can delete records, adjust timestamps, or
* simply convert from one format to another format.
*
- * $Id: editcap.c,v 1.31 2004/02/23 05:44:34 sharpe Exp $
+ * $Id$
*
* Originally written by Richard Sharpe.
* Improved by Guy Harris.
# Automake file for the EPAN library
# (Ethereal Protocol ANalyzer Library)
#
-# $Id: Makefile.am,v 1.53 2004/06/25 07:10:53 jmayer Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
# a) common to both files and
# b) portable between both files
#
-# $Id: Makefile.common,v 1.34 2004/07/13 05:29:23 guy Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.46 2004/07/07 16:23:12 ulfl Exp $
+# $Id$
include ..\config.nmake
include <win32.mak>
-$Id: README,v 1.1 2000/10/16 23:17:39 guy Exp $
+$Id$
XXX - put something here
* Routines to fetch IPv4 and IPv6 addresses from a tvbuff and then mask
* out bits other than those covered by a prefix length
*
- * $Id: addr_and_mask.c,v 1.1 2004/03/06 03:25:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations of routines to fetch IPv4 and IPv6 addresses from a tvbuff
* and then mask out bits other than those covered by a prefix length
*
- * $Id: addr_and_mask.h,v 1.1 2004/03/06 03:25:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* atalk-utils.c
* Routines for Appletalk utilities (DDP, currently).
*
- * $Id: atalk-utils.c,v 1.4 2003/08/26 01:00:29 guy Exp $
+ * $Id$
*
* Simon Wilkinson <sxw@dcs.ed.ac.uk>
*
/* atalk-utils.h
* Definitions for Appletalk utilities (DDP, currently).
*
- * $Id: atalk-utils.h,v 1.4 2003/08/26 01:00:29 guy Exp $
+ * $Id$
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
/* bitswap.c
* Table of bit-swapped values of bytes
*
- * $Id: bitswap.c,v 1.2 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* bitswap.h
* Macro to bitswap a byte by looking it up in a table
*
- * $Id: bitswap.h,v 1.2 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* circuit.c
* Routines for building lists of packets that are part of a "circuit"
*
- * $Id: circuit.c,v 1.8 2004/01/09 01:02:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* circuit.h
* Routines for building lists of packets that are part of a "circuit"
*
- * $Id: circuit.h,v 1.5 2002/11/28 08:25:59 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* column-utils.c
* Routines for column utilities.
*
- * $Id: column-utils.c,v 1.48 2004/04/02 09:04:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* column-utils.h
* Definitions for column utility structures and routines
*
- * $Id: column-utils.h,v 1.12 2004/02/05 23:57:15 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* column.h
* Definitions for column structures and routines
*
- * $Id: column_info.h,v 1.13 2004/07/05 09:29:06 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* conversation.c
* Routines for building lists of packets that are part of a "conversation"
*
- * $Id: conversation.c,v 1.25 2004/07/06 19:01:31 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* conversation.h
* Routines for building lists of packets that are part of a "conversation"
*
- * $Id: conversation.h,v 1.11 2004/07/06 19:01:32 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
#
-# $Id: Makefile.am,v 1.11 2004/03/24 21:27:44 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@zing.org>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.14 2004/06/26 02:16:16 guy Exp $
+# $Id$
include ..\..\config.nmake
-$Id: README.dfilter,v 1.2 2004/05/08 11:40:29 obiot Exp $\r
-\r
-How does the display filter logic work?\r
-=======================================\r
-\r
-scanner.l looks at the display filter string and finds reserved words,\r
-punctuation, etc. This information gets passed to the parser produced by\r
-grammar.lemon. The grammar's job is to create a syntax-tree out of the\r
-information provided by the scanner. The syntax tree organizes the\r
-information from the scanner into something that is grammatical in the\r
-dfilter language.\r
-\r
-The routines in semcheck.c then check the semantics of the syntax tree, and do\r
-any modifications necessary to the syntax tree to make the dfilter work....\r
-things like converting val_strings to integers, etc.\r
-\r
-Then gencode.c converts the syntax tree into a list of "dfvm" (display filter\r
-virtual machine) instructions. These dfvm instructions are what runs the\r
-display filter engine.\r
-\r
-Example: add an 'in' display filter operation\r
-=============================================\r
-\r
-This example has been discussed on ethereal-dev in April 2004. It illustrates\r
-how a more complex operation can be added to the display filter language.\r
-\r
-Question:\r
-\r
- If I want to add an 'in' display filter operation, I need to define\r
- several things. This can happen in different ways. For instance,\r
- every value from the "in" value collection will result in a test.\r
- There are 2 options here, either a test for a single value:\r
-\r
- (x in {a b c})\r
-\r
- or a test for a value in a given range:\r
-\r
- (x in {a ... z})\r
-\r
- or even a combination of both. The former example can be reduced to:\r
-\r
- ((x == a) or (x == b) or (x == c))\r
-\r
- while the latter can be reduced to\r
-\r
- ((x >= MIN(a, z)) and (x <= MAX(a, z)))\r
-\r
- I understand that I can replace "x in {" with the following steps:\r
- first store x in the "in" test buffer, then add "(" to the display\r
- filter expression internally.\r
-\r
- Similarly I can replace the closing brace "}" with the following steps:\r
- release x from the "in" test buffer and then add ")" to the display\r
- filter expression internally.\r
-\r
- How could I do this?\r
-\r
-Answer:\r
-\r
- This could be done in grammar.lemon. The grammar would produce syntax\r
- tree nodes, combining them with "or", when it is given tokens that\r
- represent the "in" syntax.\r
-\r
- It could also be done later in the process, maybe in semcheck.c. But\r
- if you can do it earlier, in grammar.lemon, then you shouldn't have to\r
- worry about modifying anything in semcheck.c, as the syntax tree that\r
- is passed to semcheck.c won't contain any new type of operators... just\r
- lots of nodes combined with "or".\r
-\r
-How to add an operator FOO to the display filter language?\r
-==========================================================\r
-\r
-Go to ethereal/epan/dfilter/\r
-\r
-Edit grammar.lemon and add the operator. Add the operator FOO and the test logic (defining TEST_OP_FOO).\r
-\r
-Edit scanner.l and add the operator name(s) hence defining TOKEN_TEST_FOO. Also update the simple() or add the new operand's code.\r
-\r
-Edit sttype-test.h and add the TEST_OP_FOO to the list of test operations.\r
-\r
-Edit sttype-test.c and add TEST_OP_FOO to the num_operands() method.\r
-\r
-Edit gencode.c, add TEST_OP_FOO in the gen_test() method by defining ANY_FOO.\r
-\r
-Edit dfvm.h and add ANY_FOO to the enum dfvm_opcode_t structure.\r
-\r
-Edit dfvm.c and add ANY_FOO to dfvm_dump() (for the dftest display filter test binary), to dfvm_apply() hence defining the methods fvalue_foo().\r
-\r
-Edit semcheck.c and look at the check_relation_XXX() methods if they still apply to the foo operator; if not, amend the code. Start from the check_test() method to discover the logic.\r
-\r
-Go to ethereal/epan/ftypes/\r
-\r
-Edit ftypes.h and declare the fvalue_foo(), ftype_can_foo() and fvalue_foo() methods. Add the cmp_foo() method to the struct _ftype_t.\r
-\r
-This is the first time that a make in ethereal/epan/dfilter/ can succeed. If it fails, then some code in the previously edited files must be corrected.\r
-\r
-Edit ftypes.c and define the fvalue_foo() method with its associated logic. Define also the ftype_can_foo() and fvalue_foo() methods.\r
-\r
-Edit all ftype-*.c files and add the required fvalue_foo() methods.\r
-\r
-This is the point where you should be able to compile without errors in ethereal/epan/ftypes/. If not, first fix the errors.\r
-\r
-Go to ethereal/epan/ and run make. If this one succeeds, then we're almost done as no errors should occur here.\r
-\r
-Go to ethereal/ and run make. One thing to do is make dftest and see if you can construct valid display filters with your new operator. Or you may want to move directly to the generation of ethereal.\r
-\r
-Look also at ethereal/gtk/dfilter_expr_dlg.c and edit the display filter expression generator.\r
+$Id$
+
+How does the display filter logic work?
+=======================================
+
+scanner.l looks at the display filter string and finds reserved words,
+punctuation, etc. This information gets passed to the parser produced by
+grammar.lemon. The grammar's job is to create a syntax-tree out of the
+information provided by the scanner. The syntax tree organizes the
+information from the scanner into something that is grammatical in the
+dfilter language.
+
+The routines in semcheck.c then check the semantics of the syntax tree, and do
+any modifications necessary to the syntax tree to make the dfilter work....
+things like converting val_strings to integers, etc.
+
+Then gencode.c converts the syntax tree into a list of "dfvm" (display filter
+virtual machine) instructions. These dfvm instructions are what runs the
+display filter engine.
+
+Example: add an 'in' display filter operation
+=============================================
+
+This example has been discussed on ethereal-dev in April 2004. It illustrates
+how a more complex operation can be added to the display filter language.
+
+Question:
+
+ If I want to add an 'in' display filter operation, I need to define
+ several things. This can happen in different ways. For instance,
+ every value from the "in" value collection will result in a test.
+ There are 2 options here, either a test for a single value:
+
+ (x in {a b c})
+
+ or a test for a value in a given range:
+
+ (x in {a ... z})
+
+ or even a combination of both. The former example can be reduced to:
+
+ ((x == a) or (x == b) or (x == c))
+
+ while the latter can be reduced to
+
+ ((x >= MIN(a, z)) and (x <= MAX(a, z)))
+
+ I understand that I can replace "x in {" with the following steps:
+ first store x in the "in" test buffer, then add "(" to the display
+ filter expression internally.
+
+ Similarly I can replace the closing brace "}" with the following steps:
+ release x from the "in" test buffer and then add ")" to the display
+ filter expression internally.
+
+ How could I do this?
+
+Answer:
+
+ This could be done in grammar.lemon. The grammar would produce syntax
+ tree nodes, combining them with "or", when it is given tokens that
+ represent the "in" syntax.
+
+ It could also be done later in the process, maybe in semcheck.c. But
+ if you can do it earlier, in grammar.lemon, then you shouldn't have to
+ worry about modifying anything in semcheck.c, as the syntax tree that
+ is passed to semcheck.c won't contain any new type of operators... just
+ lots of nodes combined with "or".
+
+How to add an operator FOO to the display filter language?
+==========================================================
+
+Go to ethereal/epan/dfilter/
+
+Edit grammar.lemon and add the operator. Add the operator FOO and the test logic (defining TEST_OP_FOO).
+
+Edit scanner.l and add the operator name(s) hence defining TOKEN_TEST_FOO. Also update the simple() or add the new operand's code.
+
+Edit sttype-test.h and add the TEST_OP_FOO to the list of test operations.
+
+Edit sttype-test.c and add TEST_OP_FOO to the num_operands() method.
+
+Edit gencode.c, add TEST_OP_FOO in the gen_test() method by defining ANY_FOO.
+
+Edit dfvm.h and add ANY_FOO to the enum dfvm_opcode_t structure.
+
+Edit dfvm.c and add ANY_FOO to dfvm_dump() (for the dftest display filter test binary), to dfvm_apply() hence defining the methods fvalue_foo().
+
+Edit semcheck.c and look at the check_relation_XXX() methods if they still apply to the foo operator; if not, amend the code. Start from the check_test() method to discover the logic.
+
+Go to ethereal/epan/ftypes/
+
+Edit ftypes.h and declare the fvalue_foo(), ftype_can_foo() and fvalue_foo() methods. Add the cmp_foo() method to the struct _ftype_t.
+
+This is the first time that a make in ethereal/epan/dfilter/ can succeed. If it fails, then some code in the previously edited files must be corrected.
+
+Edit ftypes.c and define the fvalue_foo() method with its associated logic. Define also the ftype_can_foo() and fvalue_foo() methods.
+
+Edit all ftype-*.c files and add the required fvalue_foo() methods.
+
+This is the point where you should be able to compile without errors in ethereal/epan/ftypes/. If not, first fix the errors.
+
+Go to ethereal/epan/ and run make. If this one succeeds, then we're almost done as no errors should occur here.
+
+Go to ethereal/ and run make. One thing to do is make dftest and see if you can construct valid display filters with your new operator. Or you may want to move directly to the generation of ethereal.
+
+Look also at ethereal/gtk/dfilter_expr_dlg.c and edit the display filter expression generator.
/*
- * $Id: dfilter-int.h,v 1.9 2004/06/15 10:38:14 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: dfilter.c,v 1.18 2004/06/16 07:33:46 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: dfilter.h,v 1.9 2004/05/09 10:03:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: dfvm.c,v 1.15 2004/02/27 12:00:30 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: dfvm.h,v 1.11 2004/02/27 12:00:30 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* drange.c
* Routines for providing general range support to the dfilter library
*
- * $Id: drange.c,v 1.4 2002/08/28 20:40:55 jmayer Exp $
+ * $Id$
*
* Copyright (c) 2000 by Ed Warnicke <hagbard@physics.rutgers.edu>
*
/* drange.h
* Routines for providing general range support to the dfilter library
*
- * $Id: drange.h,v 1.4 2004/01/18 15:34:23 jmayer Exp $
+ * $Id$
*
* Copyright (c) 2000 by Ed Warnicke <hagbard@physics.rutgers.edu>
*
/*
- * $Id: gencode.c,v 1.13 2004/02/27 12:00:30 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-/* $Id: glib-util.c,v 1.2 2002/08/28 20:40:55 jmayer Exp $ */
+/* $Id$ */
#include <string.h>
#include <glib.h>
-/* $Id: glib-util.h,v 1.1 2001/02/01 20:21:18 gram Exp $ */
+/* $Id$ */
char*
g_substrdup(const char *s, int start, int len);
-/* $Id: grammar.lemon,v 1.10 2004/06/03 07:36:24 guy Exp $ */
+/* $Id$ */
%include {
#ifdef HAVE_CONFIG_H
%{
/*
- * $Id: scanner.l,v 1.20 2004/06/03 07:36:24 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: semcheck.c,v 1.28 2004/06/15 10:16:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: semcheck.h,v 1.3 2002/08/28 20:40:56 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: sttype-integer.c,v 1.2 2002/08/28 20:40:56 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: sttype-pointer.c,v 1.3 2002/08/28 20:40:56 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: sttype-range.c,v 1.5 2002/08/28 20:40:56 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: sttype-range.h,v 1.4 2002/08/28 20:40:56 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: sttype-string.c,v 1.4 2003/07/25 03:44:01 gram Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: sttype-test.c,v 1.6 2004/02/27 12:00:31 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: sttype-test.h,v 1.6 2004/02/27 12:00:31 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: syntax-tree.c,v 1.6 2004/06/03 07:36:25 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: syntax-tree.h,v 1.6 2004/06/03 07:36:25 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* epan.h
*
- * $Id: epan.c,v 1.25 2004/04/16 23:16:28 guy Exp $
+ * $Id$
*
* Ethereal Protocol Analyzer Library
*/
/* epan.h
*
- * $Id: epan.h,v 1.17 2004/04/16 23:16:28 guy Exp $
+ * $Id$
*
* Ethereal Protocol Analyzer Library
*
/* epan_dissect.h
*
- * $Id: epan_dissect.h,v 1.2 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal Protocol Analyzer Library
*
* This source code may be translated into executable form and incorporated
* into proprietary software; there is no requirement for such software to
* contain a copyright notice related to this source.
- * $Id: except.c,v 1.3 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
* $Name: $
*/
#define XCEPT_BUFFER_SIZE 1024
#ifdef KAZLIB_RCSID
-static const char rcsid[] = "$Id: except.c,v 1.3 2002/08/28 20:40:44 jmayer Exp $";
+static const char rcsid[] = "$Id$";
#endif
#define group except_group
* into proprietary software; there is no requirement for such software to
* contain a copyright notice related to this source.
*
- * $Id: except.h,v 1.4 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
* $Name: $
*/
/* filesystem.c
* Filesystem utility routines
*
- * $Id: filesystem.c,v 1.29 2004/01/24 02:01:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* filesystem.h
* Filesystem utility definitions
*
- * $Id: filesystem.h,v 1.17 2004/01/24 02:01:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* frame_data.c
* Routines for packet disassembly
*
- * $Id: frame_data.c,v 1.5 2003/07/08 05:29:42 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* frame_data.h
* Definitions for frame_data structures and routines
*
- * $Id: frame_data.h,v 1.13 2004/01/31 04:10:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
#
-# $Id: Makefile.am,v 1.8 2004/04/14 18:42:19 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@zing.org>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.10 2004/06/26 02:16:16 guy Exp $
+# $Id$
include ..\..\config.nmake
/*
- * $Id: ftype-bytes.c,v 1.26 2004/06/06 14:29:07 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftype-double.c,v 1.13 2004/02/27 12:00:31 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftype-integer.c,v 1.17 2004/02/27 12:00:31 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftype-ipv4.c,v 1.16 2004/02/27 12:00:32 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftype-none.c,v 1.9 2004/02/27 12:00:32 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/*
- * $Id: ftype-pcre.c,v 1.3 2004/02/27 12:00:32 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftype-string.c,v 1.23 2004/05/09 08:25:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftype-time.c,v 1.23 2004/02/27 12:00:32 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftype-tvbuff.c,v 1.18 2004/02/27 12:00:32 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftypes-int.h,v 1.12 2003/12/10 21:12:02 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: ftypes.c,v 1.26 2004/07/04 02:29:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ftypes.h
* Definitions for field types
*
- * $Id: ftypes.h,v 1.35 2004/07/04 02:29:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Useful macro for use during development.
*
- * $Id: gdebug.h,v 1.3 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* inet_aton.h
*
- * $Id: inet_aton.h,v 1.2 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
#endif
#if defined(LIBC_SCCS) && !defined(lint)
-static char rcsid[] = "$Id: inet_ntop.c,v 1.7 2002/10/29 00:28:10 guy Exp $";
+static char rcsid[] = "$Id$";
#endif /* LIBC_SCCS and not lint */
#ifdef HAVE_SYS_PARAM_H
#endif
#if defined(LIBC_SCCS) && !defined(lint)
-static char rcsid[] = "$Id: inet_pton.c,v 1.5 2002/10/29 00:28:10 guy Exp $";
+static char rcsid[] = "$Id$";
#endif /* LIBC_SCCS and not lint */
#ifdef HAVE_SYS_PARAM_H
/* inet_v6defs.h
*
- * $Id: inet_v6defs.h,v 1.3 2003/02/28 05:09:50 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for handling of 64-bit integers
* 2001 Ronnie Sahlberg
*
- * $Id: int-64bit.c,v 1.3 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* int-64bit.h
* Handling of 64-bit integers
*
- * $Id: int-64bit.h,v 1.2 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
*
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: ipv4.c,v 1.7 2004/02/01 02:35:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: ipv4.h,v 1.5 2003/07/31 04:18:00 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ipv6-utils.h
* Definitions for IPv6 packet disassembly
*
- * $Id: ipv6-utils.h,v 1.2 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* nstime.h
* Definition of data structure to hold time values with nanosecond resolution
*
- * $Id: nstime.h,v 1.2 2002/08/28 20:40:44 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for ISO/OSI network and transport protocol packet disassembly
* Main entrance point and common functions
*
- * $Id: osi-utils.c,v 1.14 2003/11/20 19:05:40 guy Exp $
+ * $Id$
* Laurent Deniel <laurent.deniel@free.fr>
* Ralf Schneider <Ralf.Schneider@t-online.de>
*
/* osi-utils.h
*
- * $Id: osi-utils.h,v 1.5 2003/08/26 01:00:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet.c
* Routines for packet disassembly
*
- * $Id: packet.c,v 1.104 2004/04/23 19:47:11 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet.h
* Definitions for packet disassembly structures and routines
*
- * $Id: packet.h,v 1.74 2004/06/19 00:07:23 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet_info.h
* Definitions for packet info structures and routines
*
- * $Id: packet_info.h,v 1.41 2004/06/25 06:31:47 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Definitions for extracting and translating integers safely and portably
* via pointers.
*
- * $Id: pint.h,v 1.8 2003/07/29 20:50:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* plugins.c
* plugin routines
*
- * $Id: plugins.c,v 1.85 2004/06/30 08:21:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* plugins.h
* definitions for plugins structures
*
- * $Id: plugins.h,v 1.11 2004/05/20 13:48:25 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* proto.c
* Routines for protocol tree
*
- * $Id: proto.c,v 1.136 2004/07/09 21:52:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* proto.h
* Definitions for protocol display
*
- * $Id: proto.h,v 1.68 2004/05/15 00:52:02 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations of routines for dissectors to use to report errors to
* the user (e.g., problems with preference settings)
*
- * $Id: report_err.h,v 1.2 2004/04/16 23:16:28 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* resolv.c
* Routines for network object lookup
*
- * $Id: resolv.c,v 1.44 2004/06/25 07:00:54 jmayer Exp $
+ * $Id$
*
* Laurent Deniel <laurent.deniel@free.fr>
*
/* resolv.h
* Definitions for network object lookup
*
- * $Id: resolv.h,v 1.18 2004/06/25 07:00:54 jmayer Exp $
+ * $Id$
*
* Laurent Deniel <laurent.deniel@free.fr>
*
/* slab.h
* Definitions for very simple slab handling
*
- * $Id: slab.h,v 1.4 2004/07/04 02:29:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SNA
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: sna-utils.c,v 1.5 2003/08/26 01:00:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* sna-utils.h
* Definitions for SNA dissection.
*
- * $Id: sna-utils.h,v 1.4 2003/08/26 01:00:30 guy Exp $
+ * $Id$
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
/* strutil.c
* String utility routines
*
- * $Id: strutil.c,v 1.21 2004/06/06 14:29:07 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* strutil.h
* String utility definitions
*
- * $Id: strutil.h,v 1.16 2004/06/06 14:29:07 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* timestamp.c
* Routines for timestamp type setting.
*
- * $Id: timestamp.c,v 1.2 2004/03/20 08:32:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* timestamp.h
* Defines for packet timestamps
*
- * $Id: timestamp.h,v 1.5 2004/03/18 19:04:32 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* to_str.c
* Routines for utilities to convert various other types to strings.
*
- * $Id: to_str.c,v 1.45 2004/06/16 23:09:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* to_str.h
* Definitions for utilities to convert various other types to strings.
*
- * $Id: to_str.h,v 1.22 2004/01/10 12:50:19 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* tvbtest : tvbtest.o tvbuff.o except.o
*
- * $Id: tvbtest.c,v 1.3 2002/08/28 20:40:45 jmayer Exp $
+ * $Id$
*
* Copyright (c) 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
*
* the data of a backing tvbuff, or can be a composite of
* other tvbuffs.
*
- * $Id: tvbuff.c,v 1.65 2004/05/10 22:14:07 obiot Exp $
+ * $Id$
*
* Copyright (c) 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
*
* the data of a backing tvbuff, or can be a composite of
* other tvbuffs.
*
- * $Id: tvbuff.h,v 1.42 2004/05/05 06:55:09 obiot Exp $
+ * $Id$
*
* Copyright (c) 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
*
/* value_string.c
* Routines for value_strings
*
- * $Id: value_string.c,v 1.5 2003/12/01 23:41:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* value_string.h
* Definitions for value_string structures and routines
*
- * $Id: value_string.h,v 1.6 2004/05/07 11:34:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
# -*- python -*-
#
-# $Id: ethereal_be.py,v 1.6 2001/11/19 22:58:49 guy Exp $
+# $Id$
#
# File : ethereal_be.py
#
# -*- python -*-
#
-# $Id: ethereal_gen.py,v 1.29 2004/02/20 13:51:30 jmayer Exp $
+# $Id$
#
# ethereal_gen.py (part of idl2eth)
#
/* etypes.h
* Defines ethernet packet types, similar to tcpdump's ethertype.h
*
- * $Id: etypes.h,v 1.39 2004/04/07 06:04:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* file.c
* File I/O routines
*
- * $Id: file.c,v 1.389 2004/07/08 11:07:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* file.h
* Definitions for file structures and routines
*
- * $Id: file.h,v 1.119 2004/07/08 10:36:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* filters.c
* Code for reading and writing the filters file.
*
- * $Id: filters.c,v 1.16 2003/12/04 00:45:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* filters.c
* Declarations of routines for reading and writing the filters file.
*
- * $Id: filters.h,v 1.4 2003/12/04 00:45:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* follow.c
*
- * $Id: follow.c,v 1.34 2004/01/23 01:42:45 jmayer Exp $
+ * $Id$
*
* Copyright 1998 Mike Hall <mlh@io.com>
*
/* follow.h
*
- * $Id: follow.h,v 1.15 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Copyright 1998 Mike Hall <mlh@io.com>
*
/* format-oid.h
* Declare routine for formatting OIDs
*
- * $Id: format-oid.h,v 1.3 2003/09/08 19:40:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: g711.c,v 1.3 2003/03/10 19:58:47 guy Exp $
+ * $Id$
*
* This source code is a product of Sun Microsystems, Inc. and is provided
* for unrestricted use. Users may copy or modify this source code without
*
* Definitions for routines for u-law, A-law and linear PCM conversions
*
- * $Id: g711.h,v 1.2 2003/03/06 21:57:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* Getopt for GNU.
- $Id: getopt.c,v 1.4 2002/08/28 21:00:06 jmayer Exp $
+ $Id$
NOTE: getopt is now part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
/* globals.h
* Global defines, etc.
*
- * $Id: globals.h,v 1.34 2004/06/01 17:37:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* definition for them; when this file is empty, get rid of all includes
* of it, and get rid of it.
*
- * $Id: greproto.h,v 1.3 2002/08/28 21:00:06 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
# Automake file for the GTK interface routines for Ethereal
#
-# $Id: Makefile.am,v 1.107 2004/07/09 23:02:37 guy Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
# a) common to both files and
# b) portable between both files
#
-# $Id: Makefile.common,v 1.16 2004/06/21 17:25:19 ulfl Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.79 2004/07/07 16:23:13 ulfl Exp $
+# $Id$
include ..\config.nmake
/* about_dlg.c
*
- * $Id: about_dlg.c,v 1.23 2004/07/07 07:01:37 guy Exp $
+ * $Id$
*
* Ulf Lamping <ulf.lamping@web.de>
*
/* about_dlg.h
* Declarations of routines for the "About" dialog
*
- * $Id: about_dlg.h,v 1.6 2004/07/04 12:15:41 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* MUCH code modified from service_response_time_table.c.
*
- * $Id: ansi_a_stat.c,v 1.18 2004/05/23 23:24:05 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* MUCH code modified from service_response_time_table.c.
*
- * $Id: ansi_map_stat.c,v 1.23 2004/05/26 11:37:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* bootp_stat.c
* boop_stat 2003 Jean-Michel FAYARD
*
- * $Id: bootp_stat.c,v 1.27 2004/05/23 23:24:05 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture_combo_utils.c
* Utilities for combo box of interface names
*
- * $Id: capture_combo_utils.c,v 1.4 2003/12/21 12:17:58 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture_combo_utils.c
* Declarations of tilities for combo box of interface names
*
- * $Id: capture_combo_utils.h,v 1.2 2004/06/01 20:28:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-/* capture_dlg.c\r
- * Routines for packet capture windows\r
- *\r
- * $Id: capture_dlg.c,v 1.138 2004/07/13 07:15:43 guy Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#ifdef HAVE_CONFIG_H\r
-# include "config.h"\r
-#endif\r
-\r
-#ifdef HAVE_LIBPCAP\r
-\r
-#include <pcap.h>\r
-#include <string.h>\r
-#include <gtk/gtk.h>\r
-\r
-#include <epan/packet.h>\r
-#include "capture.h"\r
-#include "globals.h"\r
-#include <epan/resolv.h>\r
-#include "main.h"\r
-#include "ui_util.h"\r
-#include "capture_dlg.h"\r
-#include "filter_prefs.h"\r
-#include "simple_dialog.h"\r
-#include "dlg_utils.h"\r
-#include "pcap-util.h"\r
-#include "capture_combo_utils.h"\r
-#include "prefs.h"\r
-#include "ringbuffer.h"\r
-#include <epan/filesystem.h>\r
-#include "compat_macros.h"\r
-#include "file_dlg.h"\r
-#include "help_dlg.h"\r
-#include "gtkglobals.h"\r
-\r
-#ifdef _WIN32\r
-#include "capture-wpcap.h"\r
-#endif\r
-\r
-/* Capture callback data keys */\r
-#define E_CAP_IFACE_KEY "cap_iface"\r
-#define E_CAP_IFACE_IP_KEY "cap_iface_ip"\r
-#define E_CAP_SNAP_CB_KEY "cap_snap_cb"\r
-#define E_CAP_LT_OM_KEY "cap_lt_om"\r
-#define E_CAP_LT_OM_LABEL_KEY "cap_lt_om_label"\r
-#ifdef _WIN32\r
-#define E_CAP_BUFFER_SIZE_SB_KEY "cap_buffer_size_sb"\r
-#endif\r
-#define E_CAP_SNAP_SB_KEY "cap_snap_sb"\r
-#define E_CAP_PROMISC_KEY "cap_promisc"\r
-#define E_CAP_FILT_KEY "cap_filter_te"\r
-#define E_CAP_FILE_TE_KEY "cap_file_te"\r
-#define E_CAP_MULTI_FILES_ON_CB_KEY "cap_multi_files_on_cb"\r
-#define E_CAP_RING_FILESIZE_CB_KEY "cap_ring_filesize_cb"\r
-#define E_CAP_RING_FILESIZE_SB_KEY "cap_ring_filesize_sb"\r
-#define E_CAP_RING_FILESIZE_OM_KEY "cap_ring_filesize_om"\r
-#define E_CAP_FILE_DURATION_CB_KEY "cap_file_duration_cb"\r
-#define E_CAP_FILE_DURATION_SB_KEY "cap_file_duration_sb"\r
-#define E_CAP_FILE_DURATION_OM_KEY "cap_file_duration_om"\r
-#define E_CAP_RING_NBF_CB_KEY "cap_ring_nbf_cb"\r
-#define E_CAP_RING_NBF_SB_KEY "cap_ring_nbf_sb"\r
-#define E_CAP_RING_NBF_LB_KEY "cap_ring_nbf_lb"\r
-#define E_CAP_STOP_FILES_CB_KEY "cap_stop_files_cb"\r
-#define E_CAP_STOP_FILES_SB_KEY "cap_stop_files_sb"\r
-#define E_CAP_STOP_FILES_LB_KEY "cap_stop_files_lb"\r
-#define E_CAP_SYNC_KEY "cap_sync"\r
-#define E_CAP_AUTO_SCROLL_KEY "cap_auto_scroll"\r
-#define E_CAP_HIDE_INFO_KEY "cap_hide_info"\r
-#define E_CAP_STOP_PACKETS_CB_KEY "cap_stop_packets_cb"\r
-#define E_CAP_STOP_PACKETS_SB_KEY "cap_stop_packets_sb"\r
-#define E_CAP_STOP_PACKETS_LB_KEY "cap_stop_packets_lb"\r
-#define E_CAP_STOP_FILESIZE_CB_KEY "cap_stop_filesize_cb"\r
-#define E_CAP_STOP_FILESIZE_SB_KEY "cap_stop_filesize_sb"\r
-#define E_CAP_STOP_FILESIZE_OM_KEY "cap_stop_filesize_om"\r
-#define E_CAP_STOP_DURATION_CB_KEY "cap_stop_duration_cb"\r
-#define E_CAP_STOP_DURATION_SB_KEY "cap_stop_duration_sb"\r
-#define E_CAP_STOP_DURATION_OM_KEY "cap_stop_duration_om"\r
-#define E_CAP_M_RESOLVE_KEY "cap_m_resolve"\r
-#define E_CAP_N_RESOLVE_KEY "cap_n_resolve"\r
-#define E_CAP_T_RESOLVE_KEY "cap_t_resolve"\r
-\r
-#define E_CAP_OM_LT_VALUE_KEY "cap_om_lt_value"\r
-\r
-static void\r
-capture_prep_file_cb(GtkWidget *file_bt, GtkWidget *file_te);\r
-\r
-static void\r
-select_link_type_cb(GtkWidget *w, gpointer data);\r
-\r
-static void\r
-capture_prep_adjust_sensitivity(GtkWidget *tb, gpointer parent_w);\r
-\r
-static void\r
-capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w);\r
-\r
-static void\r
-capture_prep_destroy_cb(GtkWidget *win, gpointer user_data);\r
-\r
-static void\r
-capture_prep_interface_changed_cb(GtkWidget *entry, gpointer parent_w);\r
-\r
-void\r
-capture_stop_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- capture_stop();\r
-}\r
-\r
-/*\r
- * Given text that contains an interface name possibly prefixed by an\r
- * interface description, extract the interface name.\r
- */\r
-static char *\r
-get_if_name(char *if_text)\r
-{\r
- char *if_name;\r
-\r
-#ifdef WIN32\r
- /*\r
- * We cannot assume that the interface name doesn't contain a space;\r
- * some names on Windows OT do.\r
- *\r
- * We also can't assume it begins with "\Device\", either, as, on\r
- * Windows OT, WinPcap doesn't put "\Device\" in front of the name.\r
- *\r
- * As I remember, we can't assume that the interface description\r
- * doesn't contain a colon, either; I think some do.\r
- *\r
- * We can probably assume that the interface *name* doesn't contain\r
- * a colon, however; if any interface name does contain a colon on\r
- * Windows, it'll be time to just get rid of the damn interface\r
- * descriptions in the drop-down list, have just the names in the\r
- * drop-down list, and have a "Browse..." button to browse for interfaces,\r
- * with names, descriptions, IP addresses, blah blah blah available when\r
- * possible.\r
- *\r
- * So we search backwards for a colon. If we don't find it, just\r
- * return the entire string; otherwise, skip the colon and any blanks\r
- * after it, and return that string.\r
- */\r
- if_name = if_text + strlen(if_text);\r
- for (;;) {\r
- if (if_name == if_text) {\r
- /* We're at the beginning of the string; return it. */\r
- break;\r
- }\r
- if_name--;\r
- if (*if_name == ':') {\r
- /*\r
- * We've found a colon.\r
- * Unfortunately, a colon is used in the string "rpcap://",\r
- * which is used in case of a remote capture.\r
- * So we'll check to make sure the colon isn't followed by "//";\r
- * it'll be followed by a blank if it separates the description\r
- * and the interface name. (We don't wire in "rpcap", in case we\r
- * support other protocols in the same syntax.)\r
- */\r
- if (strncmp(if_name, "://", 3) != 0) {\r
- /*\r
- * OK, we've found a colon not followed by "//". Skip blanks\r
- * following it.\r
- */\r
- if_name++;\r
- while (*if_name == ' ')\r
- if_name++;\r
- break;\r
- }\r
- }\r
- /* Keep looking for a colon not followed by "//". */\r
- }\r
-#else\r
- /*\r
- * There's a space between the interface description and name, and\r
- * the interface name shouldn't have a space in it (it doesn't, on\r
- * UNIX systems); look backwards in the string for a space.\r
- *\r
- * (An interface name might, however, contain a colon in it, which\r
- * is why we don't use the colon search on UNIX.)\r
- */\r
- if_name = strrchr(if_text, ' ');\r
- if (if_name == NULL) {\r
- if_name = if_text;\r
- } else {\r
- if_name++;\r
- }\r
-#endif\r
- return if_name;\r
-}\r
-\r
-/*\r
- * Keep a static pointer to the current "Capture Options" window, if\r
- * any, so that if somebody tries to do "Capture:Start" while there's\r
- * already a "Capture Options" window up, we just pop up the existing\r
- * one, rather than creating a new one.\r
- */\r
-static GtkWidget *cap_open_w;\r
-\r
-\r
-/* From tcptraceroute, convert a numeric IP address to a string */\r
-/* XXX - this functionality is already somewhere in our code */\r
-#define IPTOSBUFFERS 12\r
-char *iptos(u_long in)\r
-{\r
- static char output[IPTOSBUFFERS][3*4+3+1];\r
- static short which;\r
- u_char *p;\r
-\r
- p = (u_char *)∈\r
- which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);\r
- sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);\r
- return output[which];\r
-}\r
-\r
-\r
-static void\r
-set_link_type_list(GtkWidget *linktype_om, GtkWidget *entry)\r
-{\r
- gchar *entry_text;\r
- gchar *if_text;\r
- gchar *if_name;\r
- GList *if_list;\r
- GList *if_entry;\r
- if_info_t *if_info;\r
- GList *lt_list;\r
- int err;\r
- char err_buf[PCAP_ERRBUF_SIZE];\r
- GtkWidget *lt_menu, *lt_menu_item;\r
- GList *lt_entry;\r
- data_link_info_t *data_link_info;\r
- gchar *linktype_menu_label;\r
- guint num_supported_link_types;\r
- GtkWidget *linktype_lb = OBJECT_GET_DATA(linktype_om, E_CAP_LT_OM_LABEL_KEY);\r
- GtkWidget *if_ip_lb;\r
- GString *ip_str = g_string_new("IP address: ");\r
- int ips = 0;\r
- GSList *curr_ip;\r
-\r
- lt_menu = gtk_menu_new();\r
- entry_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));\r
- if_text = g_strstrip(entry_text);\r
- if_name = get_if_name(if_text);\r
-\r
- /*\r
- * If the interface name is in the list of known interfaces, get\r
- * its list of link-layer types and set the option menu to display it.\r
- *\r
- * If it's not, don't bother - the user might be in the middle of\r
- * editing the list, or it might be a remote device in which case\r
- * getting the list could take an arbitrarily-long period of time.\r
- * The list currently won't contain any remote devices (as\r
- * "pcap_findalldevs()" doesn't know about remote devices, and neither\r
- * does the code we use if "pcap_findalldevs()" isn't available), but\r
- * should contain all the local devices on which you can capture.\r
- */\r
- lt_list = NULL;\r
- if (*if_name != '\0') {\r
- /*\r
- * Try to get the list of known interfaces.\r
- */\r
- if_list = get_interface_list(&err, err_buf);\r
- if (if_list != NULL) {\r
- /*\r
- * We have the list - check it.\r
- */\r
- for (if_entry = if_list; if_entry != NULL;\r
- if_entry = g_list_next(if_entry)) {\r
- if_info = if_entry->data;\r
- if (strcmp(if_info->name, if_name) == 0) {\r
- /*\r
- * It's in the list.\r
- * Get the list of link-layer types for it.\r
- */\r
- lt_list = get_pcap_linktype_list(if_name, err_buf);\r
-\r
- /* create string of list of IP addresses of this interface */\r
- for( ; curr_ip = g_slist_nth(if_info->ip_addr, ips); ips++) {\r
- if (ips != 0) {\r
- g_string_append(ip_str, ", ");\r
- }\r
-\r
- g_string_append(ip_str, iptos(*((guint32 *)curr_ip->data)));\r
- }\r
-\r
- if(if_info->loopback) {\r
- g_string_append(ip_str, " (loopback)");\r
- }\r
- }\r
- }\r
- free_interface_list(if_list);\r
- }\r
- }\r
- g_free(entry_text);\r
- num_supported_link_types = 0;\r
- for (lt_entry = lt_list; lt_entry != NULL; lt_entry = g_list_next(lt_entry)) {\r
- data_link_info = lt_entry->data;\r
- if (data_link_info->description != NULL) {\r
- lt_menu_item = gtk_menu_item_new_with_label(data_link_info->description);\r
- OBJECT_SET_DATA(lt_menu_item, E_CAP_LT_OM_KEY, linktype_om);\r
- SIGNAL_CONNECT(lt_menu_item, "activate", select_link_type_cb,\r
- GINT_TO_POINTER(data_link_info->dlt));\r
- num_supported_link_types++;\r
- } else {\r
- /* Not supported - tell them about it but don't let them select it. */\r
- linktype_menu_label = g_strdup_printf("%s (not supported)",\r
- data_link_info->name);\r
- lt_menu_item = gtk_menu_item_new_with_label(linktype_menu_label);\r
- g_free(linktype_menu_label);\r
- gtk_widget_set_sensitive(lt_menu_item, FALSE);\r
- }\r
- gtk_menu_append(GTK_MENU(lt_menu), lt_menu_item);\r
- }\r
- if (lt_list != NULL)\r
- free_pcap_linktype_list(lt_list);\r
- gtk_option_menu_set_menu(GTK_OPTION_MENU(linktype_om), lt_menu);\r
- gtk_widget_set_sensitive(linktype_lb, num_supported_link_types >= 2);\r
- gtk_widget_set_sensitive(linktype_om, num_supported_link_types >= 2);\r
-\r
- if_ip_lb = OBJECT_GET_DATA(linktype_om, E_CAP_IFACE_KEY);\r
- if(ips == 0) {\r
- g_string_append(ip_str, "unknown");\r
- }\r
- gtk_label_set_text(GTK_LABEL(if_ip_lb), ip_str->str);\r
- g_string_free(ip_str, TRUE);\r
-}\r
-\r
-\r
-#define TIME_UNIT_SECOND 0\r
-#define TIME_UNIT_MINUTE 1\r
-#define TIME_UNIT_HOUR 2\r
-#define TIME_UNIT_DAY 3\r
-#define MAX_TIME_UNITS 4\r
-static char *time_unit_name[MAX_TIME_UNITS] = {\r
- "second(s)",\r
- "minute(s)",\r
- "hour(s)",\r
- "day(s)",\r
-};\r
-\r
-static GtkWidget *time_unit_option_menu_new(guint32 value) {\r
- GtkWidget *unit_om, *menu, *menu_item;\r
- int i;\r
-\r
- unit_om=gtk_option_menu_new();\r
- menu=gtk_menu_new();\r
- for(i=0;i<MAX_TIME_UNITS;i++){\r
- menu_item=gtk_menu_item_new_with_label(time_unit_name[i]);\r
- OBJECT_SET_DATA(menu_item, "time_unit", GINT_TO_POINTER(i));\r
- gtk_menu_append(GTK_MENU(menu), menu_item);\r
- }\r
-\r
- /* the selected menu item can't be changed, once the option_menu \r
- is created, so set the matching menu item now */\r
- /* days */\r
- if(value >= 60 * 60 * 24) {\r
- gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_DAY);\r
- } else {\r
- /* hours */\r
- if(value >= 60 * 60) {\r
- gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_HOUR);\r
- } else {\r
- /* minutes */\r
- if(value >= 60) {\r
- gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_MINUTE);\r
- } else {\r
- /* seconds */\r
- gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_SECOND);\r
- }\r
- }\r
- }\r
-\r
- gtk_option_menu_set_menu(GTK_OPTION_MENU(unit_om), menu);\r
-\r
- return unit_om;\r
-}\r
-\r
-static guint32 time_unit_option_menu_convert_value(\r
-guint32 value)\r
-{\r
- /* days */\r
- if(value >= 60 * 60 * 24) {\r
- return value / (60 * 60 * 24);\r
- }\r
-\r
- /* hours */\r
- if(value >= 60 * 60) {\r
- return value / (60 * 60);\r
- }\r
-\r
- /* minutes */\r
- if(value >= 60) {\r
- return value / 60;\r
- }\r
-\r
- /* seconds */\r
- return value;\r
-}\r
-\r
-static guint32 time_unit_option_menu_get_value(\r
-GtkWidget *unit_om,\r
-guint32 value)\r
-{\r
- GtkWidget *menu, *menu_item;\r
- int unit;\r
- \r
- menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(unit_om));\r
- menu_item = gtk_menu_get_active(GTK_MENU(menu));\r
- unit = GPOINTER_TO_INT(OBJECT_GET_DATA(menu_item, "time_unit"));\r
-\r
-\r
- switch(unit) {\r
- case(TIME_UNIT_SECOND):\r
- return value;\r
- break;\r
- case(TIME_UNIT_MINUTE):\r
- return value * 60;\r
- break;\r
- case(TIME_UNIT_HOUR):\r
- return value * 60 * 60;\r
- break;\r
- case(TIME_UNIT_DAY):\r
- return value * 60 * 60 * 24;\r
- break;\r
- default:\r
- g_assert_not_reached();\r
- return 0;\r
- }\r
-}\r
-\r
-\r
-#define SIZE_UNIT_BYTES 0\r
-#define SIZE_UNIT_KILOBYTES 1\r
-#define SIZE_UNIT_MEGABYTES 2\r
-#define SIZE_UNIT_GIGABYTES 3\r
-#define MAX_SIZE_UNITS 4\r
-static char *size_unit_name[MAX_SIZE_UNITS] = {\r
- "byte(s)",\r
- "kilobyte(s)",\r
- "megabyte(s)",\r
- "gigabyte(s)",\r
-};\r
-\r
-static GtkWidget *size_unit_option_menu_new(guint32 value) {\r
- GtkWidget *unit_om, *menu, *menu_item;\r
- int i;\r
-\r
- unit_om=gtk_option_menu_new();\r
- menu=gtk_menu_new();\r
- for(i=0;i<MAX_SIZE_UNITS;i++){\r
- menu_item=gtk_menu_item_new_with_label(size_unit_name[i]);\r
- OBJECT_SET_DATA(menu_item, "size_unit", GINT_TO_POINTER(i));\r
- gtk_menu_append(GTK_MENU(menu), menu_item);\r
- }\r
-\r
- /* the selected menu item can't be changed, once the option_menu \r
- is created, so set the matching menu item now */\r
- /* gigabytes */\r
- if(value >= 1024 * 1024 * 1024) {\r
- gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_GIGABYTES);\r
- } else {\r
- /* megabytes */\r
- if(value >= 1024 * 1024) {\r
- gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_MEGABYTES);\r
- } else {\r
- /* kilobytes */\r
- if(value >= 1024) {\r
- gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_KILOBYTES);\r
- } else {\r
- /* bytes */\r
- gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_BYTES);\r
- }\r
- }\r
- }\r
- \r
- gtk_option_menu_set_menu(GTK_OPTION_MENU(unit_om), menu);\r
-\r
- return unit_om;\r
-}\r
-\r
-static guint32 size_unit_option_menu_set_value(\r
-guint32 value)\r
-{\r
- /* gigabytes */\r
- if(value >= 1024 * 1024 * 1024) {\r
- return value / (1024 * 1024 * 1024);\r
- }\r
-\r
- /* megabytes */\r
- if(value >= 1024 * 1024) {\r
- return value / (1024 * 1024);\r
- }\r
-\r
- /* kilobytes */\r
- if(value >= 1024) {\r
- return value / 1024;\r
- }\r
-\r
- /* bytes */\r
- return value;\r
-}\r
-\r
-static guint32 size_unit_option_menu_convert_value(\r
-GtkWidget *unit_om,\r
-guint32 value)\r
-{\r
- GtkWidget *menu, *menu_item;\r
- int unit;\r
- \r
- menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(unit_om));\r
- menu_item = gtk_menu_get_active(GTK_MENU(menu));\r
- unit = GPOINTER_TO_INT(OBJECT_GET_DATA(menu_item, "size_unit"));\r
-\r
-\r
- switch(unit) {\r
- case(SIZE_UNIT_BYTES):\r
- return value;\r
- break;\r
- case(SIZE_UNIT_KILOBYTES):\r
- if(value > G_MAXINT / 1024) {\r
- return 0;\r
- } else {\r
- return value * 1024;\r
- }\r
- break;\r
- case(SIZE_UNIT_MEGABYTES):\r
- if(value > G_MAXINT / (1024 * 1024)) {\r
- return 0;\r
- } else {\r
- return value * 1024 * 1024;\r
- }\r
- break;\r
- case(SIZE_UNIT_GIGABYTES):\r
- if(value > G_MAXINT / (1024 * 1024 * 1024)) {\r
- return 0;\r
- } else {\r
- return value * 1024 * 1024 * 1024;\r
- }\r
- break;\r
- default:\r
- g_assert_not_reached();\r
- return 0;\r
- }\r
-}\r
-\r
-\r
-void\r
-capture_prep(void)\r
-{\r
- GtkWidget *main_vb,\r
- *main_hb, *left_vb, *right_vb,\r
-\r
- *capture_fr, *capture_vb,\r
- *if_hb, *if_cb, *if_lb,\r
- *if_ip_hb, *if_ip_lb,\r
- *linktype_hb, *linktype_lb, *linktype_om,\r
- *snap_hb, *snap_cb, *snap_sb, *snap_lb,\r
- *promisc_cb,\r
- *filter_hb, *filter_bt, *filter_te,\r
-\r
- *file_fr, *file_vb,\r
- *file_hb, *file_bt, *file_lb, *file_te,\r
- *multi_tb, *multi_files_on_cb, \r
- *ring_filesize_cb, *ring_filesize_sb, *ring_filesize_om,\r
- *file_duration_cb, *file_duration_sb, *file_duration_om,\r
- *ringbuffer_nbf_cb, *ringbuffer_nbf_sb, *ringbuffer_nbf_lb, \r
- *stop_files_cb, *stop_files_sb, *stop_files_lb,\r
-\r
- *limit_fr, *limit_vb, *limit_tb,\r
- *stop_packets_cb, *stop_packets_sb, *stop_packets_lb,\r
- *stop_filesize_cb, *stop_filesize_sb, *stop_filesize_om,\r
- *stop_duration_cb, *stop_duration_sb, *stop_duration_om,\r
-\r
- *display_fr, *display_vb,\r
- *sync_cb, *auto_scroll_cb, *hide_info_cb,\r
-\r
- *resolv_fr, *resolv_vb,\r
- *m_resolv_cb, *n_resolv_cb, *t_resolv_cb,\r
- *bbox, *ok_bt, *cancel_bt,\r
- *help_bt;\r
-#if GTK_MAJOR_VERSION < 2\r
- GtkAccelGroup *accel_group;\r
-#endif\r
- GtkTooltips *tooltips;\r
- GtkAdjustment *snap_adj, *ringbuffer_nbf_adj,\r
- *stop_packets_adj, *stop_filesize_adj, *stop_duration_adj, *stop_files_adj, *ring_filesize_adj, *file_duration_adj;\r
- GList *if_list, *combo_list;\r
- int err;\r
- int row;\r
- char err_str[PCAP_ERRBUF_SIZE];\r
- gchar *cant_get_if_list_errstr;\r
-#ifdef _WIN32\r
- GtkAdjustment *buffer_size_adj;\r
- GtkWidget *buffer_size_lb, *buffer_size_sb;\r
-#endif\r
- guint32 value;\r
-\r
- if (cap_open_w != NULL) {\r
- /* There's already a "Capture Options" dialog box; reactivate it. */\r
- reactivate_window(cap_open_w);\r
- return;\r
- }\r
-\r
-#ifdef _WIN32\r
- /* Is WPcap loaded? */\r
- if (!has_wpcap) {\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,\r
- "Unable to load WinPcap (wpcap.dll); Ethereal will not be able\n"\r
- "to capture packets.\n\n"\r
- "In order to capture packets, WinPcap must be installed; see\n"\r
- "\n"\r
- " http://winpcap.polito.it/\n"\r
- "\n"\r
- "or the mirror at\n"\r
- "\n"\r
- " http://winpcap.mirror.ethereal.com/\n"\r
- "\n"\r
- "or the mirror at\n"\r
- "\n"\r
- " http://www.mirrors.wiretapped.net/security/packet-capture/winpcap/\n"\r
- "\n"\r
- "for a downloadable version of WinPcap and for instructions\n"\r
- "on how to install WinPcap.");\r
- return;\r
- }\r
-#endif\r
-\r
- if_list = get_interface_list(&err, err_str);\r
- if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) {\r
- cant_get_if_list_errstr = cant_get_if_list_error_message(err_str);\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s",\r
- cant_get_if_list_errstr);\r
- g_free(cant_get_if_list_errstr);\r
- }\r
-\r
- cap_open_w = dlg_window_new("Ethereal: Capture Options");\r
-\r
- tooltips = gtk_tooltips_new();\r
-\r
-#if GTK_MAJOR_VERSION < 2\r
- /* Accelerator group for the accelerators (or, as they're called in\r
- Windows and, I think, in Motif, "mnemonics"; Alt+<key> is a mnemonic,\r
- Ctrl+<key> is an accelerator). */\r
- accel_group = gtk_accel_group_new();\r
- gtk_window_add_accel_group(GTK_WINDOW(cap_open_w), accel_group);\r
-#endif\r
-\r
- main_vb = gtk_vbox_new(FALSE, 0);\r
- gtk_container_border_width(GTK_CONTAINER(main_vb), 5);\r
- gtk_container_add(GTK_CONTAINER(cap_open_w), main_vb);\r
-\r
- /* Capture-related options frame */\r
- capture_fr = gtk_frame_new("Capture");\r
- gtk_container_add(GTK_CONTAINER(main_vb), capture_fr);\r
-\r
- capture_vb = gtk_vbox_new(FALSE, 3);\r
- gtk_container_border_width(GTK_CONTAINER(capture_vb), 5);\r
- gtk_container_add(GTK_CONTAINER(capture_fr), capture_vb);\r
-\r
- /* Interface row */\r
- if_hb = gtk_hbox_new(FALSE, 3);\r
- gtk_container_add(GTK_CONTAINER(capture_vb), if_hb);\r
-\r
- if_lb = gtk_label_new("Interface:");\r
- gtk_box_pack_start(GTK_BOX(if_hb), if_lb, FALSE, FALSE, 6);\r
-\r
- if_cb = gtk_combo_new();\r
- combo_list = build_capture_combo_list(if_list, TRUE);\r
- if (combo_list != NULL)\r
- gtk_combo_set_popdown_strings(GTK_COMBO(if_cb), combo_list);\r
- if (cfile.iface == NULL && prefs.capture_device != NULL) {\r
- /* No interface was specified on the command line or in a previous\r
- capture, but there is one specified in the preferences file;\r
- make the one from the preferences file the default */\r
- cfile.iface = g_strdup(prefs.capture_device);\r
- }\r
- if (cfile.iface != NULL)\r
- gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry), cfile.iface);\r
- else if (combo_list != NULL) {\r
- gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry),\r
- (char *)combo_list->data);\r
- }\r
- free_capture_combo_list(combo_list);\r
- free_interface_list(if_list);\r
- gtk_tooltips_set_tip(tooltips, GTK_COMBO(if_cb)->entry, \r
- "Choose which interface (network card) will be used to capture packets from. "\r
- "Be sure to select the correct one, as it's a common mistake to select the wrong interface.", NULL);\r
- gtk_box_pack_start(GTK_BOX(if_hb), if_cb, TRUE, TRUE, 6);\r
-\r
- if_ip_hb = gtk_hbox_new(FALSE, 3);\r
- gtk_box_pack_start(GTK_BOX(capture_vb), if_ip_hb, FALSE, FALSE, 0);\r
-\r
- if_ip_lb = gtk_label_new("");\r
- gtk_box_pack_start(GTK_BOX(if_ip_hb), if_ip_lb, FALSE, FALSE, 6);\r
-\r
- /* Linktype row */\r
- linktype_hb = gtk_hbox_new(FALSE, 3);\r
- gtk_box_pack_start(GTK_BOX(capture_vb), linktype_hb, FALSE, FALSE, 0);\r
-\r
- linktype_lb = gtk_label_new("Link-layer header type:");\r
- gtk_box_pack_start(GTK_BOX(linktype_hb), linktype_lb, FALSE, FALSE, 6);\r
-\r
- linktype_om = gtk_option_menu_new();\r
- OBJECT_SET_DATA(linktype_om, E_CAP_LT_OM_LABEL_KEY, linktype_lb);\r
- /* Default to "use the default" */\r
- OBJECT_SET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY, GINT_TO_POINTER(-1));\r
- OBJECT_SET_DATA(linktype_om, E_CAP_IFACE_KEY, if_ip_lb);\r
- set_link_type_list(linktype_om, GTK_COMBO(if_cb)->entry);\r
- /*\r
- * XXX - in some cases, this is "multiple link-layer header types", e.g.\r
- * some 802.11 interfaces on FreeBSD 5.2 and later, where you can request\r
- * fake Ethernet, 802.11, or 802.11-plus-radio-information headers.\r
- *\r
- * In other cases, it's "multiple link-layer types", e.g., with recent\r
- * versions of libpcap, a DAG card on an "HDLC" WAN, where you can\r
- * request Cisco HDLC or PPP depending on what type of traffic is going\r
- * over the WAN, or an Ethernet interface, where you can request Ethernet\r
- * or DOCSIS, the latter being for some Cisco cable modem equipment that\r
- * can be configured to send raw DOCSIS frames over an Ethernet inside\r
- * Ethernet low-level framing, for traffic capture purposes.\r
- *\r
- * We leave it as "multiple link-layer types" for now.\r
- */\r
- gtk_tooltips_set_tip(tooltips, linktype_om, \r
- "The selected interface supports multiple link-layer types; select the desired one.", NULL);\r
- gtk_box_pack_start (GTK_BOX(linktype_hb), linktype_om, FALSE, FALSE, 0);\r
- SIGNAL_CONNECT(GTK_ENTRY(GTK_COMBO(if_cb)->entry), "changed",\r
- capture_prep_interface_changed_cb, linktype_om);\r
-\r
-#ifdef _WIN32\r
- buffer_size_lb = gtk_label_new("Buffer size:");\r
- gtk_box_pack_start (GTK_BOX(linktype_hb), buffer_size_lb, FALSE, FALSE, 0);\r
-\r
- buffer_size_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat) capture_opts.buffer_size,\r
- 1, 65535, 1.0, 10.0, 0.0);\r
- buffer_size_sb = gtk_spin_button_new (buffer_size_adj, 0, 0);\r
- gtk_spin_button_set_value(GTK_SPIN_BUTTON (buffer_size_sb), (gfloat) capture_opts.buffer_size);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (buffer_size_sb), TRUE);\r
- WIDGET_SET_SIZE(buffer_size_sb, 80, -1);\r
- gtk_tooltips_set_tip(tooltips, buffer_size_sb, \r
- "The memory buffer size used while capturing. If you notice packet drops, you can try to increase this size.", NULL);\r
- gtk_box_pack_start (GTK_BOX(linktype_hb), buffer_size_sb, FALSE, FALSE, 0);\r
-\r
- buffer_size_lb = gtk_label_new("megabyte(s)");\r
- gtk_box_pack_start (GTK_BOX(linktype_hb), buffer_size_lb, FALSE, FALSE, 0);\r
-#endif\r
-\r
- /* Promiscuous mode row */\r
- promisc_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(\r
- "Capture packets in _promiscuous mode", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(promisc_cb),\r
- capture_opts.promisc_mode);\r
- gtk_tooltips_set_tip(tooltips, promisc_cb, \r
- "Usually a network card will only capture the traffic sent to its own network address. "\r
- "If you want to capture all traffic that the network card can \"see\", mark this option. "\r
- "See the FAQ for some more details of capturing packets from a switched network.", NULL);\r
- gtk_container_add(GTK_CONTAINER(capture_vb), promisc_cb);\r
-\r
- /* Capture length row */\r
- snap_hb = gtk_hbox_new(FALSE, 3);\r
- gtk_container_add(GTK_CONTAINER(capture_vb), snap_hb);\r
-\r
- snap_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC("_Limit each packet to", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(snap_cb),\r
- capture_opts.has_snaplen);\r
- SIGNAL_CONNECT(snap_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, snap_cb, \r
- "Limit the maximum number of bytes to be captured from each packet. This size includes the "\r
- "link-layer header and all subsequent headers. ", NULL);\r
- gtk_box_pack_start(GTK_BOX(snap_hb), snap_cb, FALSE, FALSE, 0);\r
-\r
- snap_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat) capture_opts.snaplen,\r
- MIN_PACKET_SIZE, WTAP_MAX_PACKET_SIZE, 1.0, 10.0, 0.0);\r
- snap_sb = gtk_spin_button_new (snap_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (snap_sb), TRUE);\r
- WIDGET_SET_SIZE(snap_sb, 80, -1);\r
- gtk_box_pack_start (GTK_BOX(snap_hb), snap_sb, FALSE, FALSE, 0);\r
-\r
- snap_lb = gtk_label_new("bytes");\r
- gtk_misc_set_alignment(GTK_MISC(snap_lb), 0, 0.5);\r
- gtk_box_pack_start(GTK_BOX(snap_hb), snap_lb, FALSE, FALSE, 0);\r
-\r
- /* Filter row */\r
- filter_hb = gtk_hbox_new(FALSE, 3);\r
- gtk_box_pack_start(GTK_BOX(capture_vb), filter_hb, FALSE, FALSE, 0);\r
-\r
- filter_bt = BUTTON_NEW_FROM_STOCK(ETHEREAL_STOCK_CAPTURE_FILTER_ENTRY);\r
- SIGNAL_CONNECT(filter_bt, "clicked", capture_filter_construct_cb, NULL);\r
- SIGNAL_CONNECT(filter_bt, "destroy", filter_button_destroy_cb, NULL);\r
- gtk_tooltips_set_tip(tooltips, filter_bt, \r
- "Select a capture filter to reduce the amount of packets to be captured. "\r
- "See \"Capture Filters\" in the online help for further information how to use it.", \r
- NULL);\r
- gtk_box_pack_start(GTK_BOX(filter_hb), filter_bt, FALSE, FALSE, 3);\r
-\r
- filter_te = gtk_entry_new();\r
- if (cfile.cfilter) gtk_entry_set_text(GTK_ENTRY(filter_te), cfile.cfilter);\r
- OBJECT_SET_DATA(filter_bt, E_FILT_TE_PTR_KEY, filter_te);\r
- gtk_tooltips_set_tip(tooltips, filter_te, \r
- "Enter a capture filter to reduce the amount of packets to be captured. "\r
- "See \"Capture Filters\" in the online help for further information how to use it.", \r
- NULL);\r
- gtk_box_pack_start(GTK_BOX(filter_hb), filter_te, TRUE, TRUE, 3);\r
-\r
- main_hb = gtk_hbox_new(FALSE, 5);\r
- gtk_container_border_width(GTK_CONTAINER(main_hb), 0);\r
- gtk_container_add(GTK_CONTAINER(main_vb), main_hb);\r
-\r
- left_vb = gtk_vbox_new(FALSE, 0);\r
- gtk_container_border_width(GTK_CONTAINER(left_vb), 0);\r
- gtk_box_pack_start(GTK_BOX(main_hb), left_vb, TRUE, TRUE, 0);\r
-\r
- right_vb = gtk_vbox_new(FALSE, 0);\r
- gtk_container_border_width(GTK_CONTAINER(right_vb), 0);\r
- gtk_box_pack_start(GTK_BOX(main_hb), right_vb, FALSE, FALSE, 0);\r
-\r
-\r
- /* Capture file-related options frame */\r
- file_fr = gtk_frame_new("Capture File(s)");\r
- gtk_container_add(GTK_CONTAINER(left_vb), file_fr);\r
-\r
- file_vb = gtk_vbox_new(FALSE, 3);\r
- gtk_container_border_width(GTK_CONTAINER(file_vb), 5);\r
- gtk_container_add(GTK_CONTAINER(file_fr), file_vb);\r
-\r
- /* File row */\r
- file_hb = gtk_hbox_new(FALSE, 3);\r
- gtk_box_pack_start(GTK_BOX(file_vb), file_hb, FALSE, FALSE, 0);\r
-\r
- file_lb = gtk_label_new("File:");\r
- gtk_box_pack_start(GTK_BOX(file_hb), file_lb, FALSE, FALSE, 3);\r
-\r
- file_te = gtk_entry_new();\r
- gtk_tooltips_set_tip(tooltips, file_te, \r
- "Enter the file name to which captured data will be written. "\r
- "If you don't enter something here, a temporary file will be used.",\r
- NULL);\r
- gtk_box_pack_start(GTK_BOX(file_hb), file_te, TRUE, TRUE, 3);\r
-\r
- file_bt = BUTTON_NEW_FROM_STOCK(ETHEREAL_STOCK_BROWSE);\r
- gtk_tooltips_set_tip(tooltips, file_bt, \r
- "Select a file to which captured data will be written, "\r
- "instead of entering the file name directly. ",\r
- NULL);\r
- gtk_box_pack_start(GTK_BOX(file_hb), file_bt, FALSE, FALSE, 3);\r
-\r
- SIGNAL_CONNECT(file_bt, "clicked", capture_prep_file_cb, file_te);\r
-\r
- /* multiple files table */\r
- multi_tb = gtk_table_new(5, 3, FALSE);\r
- gtk_table_set_row_spacings(GTK_TABLE(multi_tb), 1);\r
- gtk_table_set_col_spacings(GTK_TABLE(multi_tb), 3);\r
- gtk_box_pack_start(GTK_BOX(file_vb), multi_tb, FALSE, FALSE, 0);\r
- row = 0;\r
-\r
- /* multiple files row */\r
- multi_files_on_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC("Use _multiple files", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(multi_files_on_cb),\r
- capture_opts.multi_files_on);\r
- SIGNAL_CONNECT(multi_files_on_cb, "toggled", capture_prep_adjust_sensitivity,\r
- cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, multi_files_on_cb, \r
- "Instead of using a single capture file, multiple files will be created. "\r
- "The generated file names will contain an incrementing number and the start time of the capture.", NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), multi_files_on_cb, 0, 1, row, row+1);\r
- row++;\r
-\r
- /* Ring buffer filesize row */\r
- ring_filesize_cb = gtk_check_button_new_with_label("Next file every");\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ring_filesize_cb),\r
- capture_opts.has_autostop_filesize);\r
- SIGNAL_CONNECT(ring_filesize_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, ring_filesize_cb, \r
- "If the selected file size is exceeded, capturing switches to the next file.",\r
- NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), ring_filesize_cb, 0, 1, row, row+1);\r
-\r
- ring_filesize_adj = (GtkAdjustment *) gtk_adjustment_new(0.0,\r
- 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);\r
- ring_filesize_sb = gtk_spin_button_new (ring_filesize_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (ring_filesize_sb), TRUE);\r
- WIDGET_SET_SIZE(ring_filesize_sb, 80, -1);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), ring_filesize_sb, 1, 2, row, row+1);\r
-\r
- ring_filesize_om = size_unit_option_menu_new(capture_opts.autostop_filesize);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), ring_filesize_om, 2, 3, row, row+1);\r
-\r
- value = size_unit_option_menu_set_value(capture_opts.autostop_filesize);\r
- gtk_adjustment_set_value(ring_filesize_adj, (gfloat) value);\r
-\r
- row++;\r
-\r
- /* Ring buffer duration row */\r
- file_duration_cb = gtk_check_button_new_with_label("Next file every");\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(file_duration_cb),\r
- capture_opts.has_file_duration);\r
- SIGNAL_CONNECT(file_duration_cb, "toggled", \r
- capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, file_duration_cb, \r
- "If the selected duration is exceeded, capturing switches to the next file.",\r
- NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), file_duration_cb, 0, 1, row, row+1);\r
-\r
- file_duration_adj = (GtkAdjustment *)gtk_adjustment_new(0.0,\r
- 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);\r
- file_duration_sb = gtk_spin_button_new (file_duration_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (file_duration_sb), TRUE);\r
- WIDGET_SET_SIZE(file_duration_sb, 80, -1);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), file_duration_sb, 1, 2, row, row+1);\r
-\r
- file_duration_om = time_unit_option_menu_new(capture_opts.file_duration);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), file_duration_om, 2, 3, row, row+1);\r
-\r
- value = time_unit_option_menu_convert_value(capture_opts.file_duration);\r
- gtk_adjustment_set_value(file_duration_adj, (gfloat) value);\r
- row++;\r
-\r
- /* Ring buffer files row */\r
- ringbuffer_nbf_cb = gtk_check_button_new_with_label("Ring buffer with");\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb),\r
- capture_opts.has_ring_num_files);\r
- SIGNAL_CONNECT(ringbuffer_nbf_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, ringbuffer_nbf_cb, \r
- "After capturing has switched to the next file and the given number of files has exceeded, "\r
- "the oldest file will be removed.",\r
- NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), ringbuffer_nbf_cb, 0, 1, row, row+1);\r
-\r
- ringbuffer_nbf_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat) capture_opts.ring_num_files,\r
- 2/*RINGBUFFER_MIN_NUM_FILES*/, RINGBUFFER_MAX_NUM_FILES, 1.0, 10.0, 0.0);\r
- ringbuffer_nbf_sb = gtk_spin_button_new (ringbuffer_nbf_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (ringbuffer_nbf_sb), TRUE);\r
- WIDGET_SET_SIZE(ringbuffer_nbf_sb, 80, -1);\r
- SIGNAL_CONNECT(ringbuffer_nbf_sb, "changed", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), ringbuffer_nbf_sb, 1, 2, row, row+1);\r
-\r
- ringbuffer_nbf_lb = gtk_label_new("files");\r
- gtk_misc_set_alignment(GTK_MISC(ringbuffer_nbf_lb), 0, 0.5);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), ringbuffer_nbf_lb, 2, 3, row, row+1);\r
- row++;\r
-\r
- /* Files row */\r
- stop_files_cb = gtk_check_button_new_with_label("Stop capture after");\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_files_cb),\r
- capture_opts.has_autostop_files);\r
- SIGNAL_CONNECT(stop_files_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, stop_files_cb, \r
- "Stop capturing after the given number of \"file switches\" have been done.", NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), stop_files_cb, 0, 1, row, row+1);\r
-\r
- stop_files_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat)capture_opts.autostop_files,\r
- 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);\r
- stop_files_sb = gtk_spin_button_new (stop_files_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_files_sb), TRUE);\r
- WIDGET_SET_SIZE(stop_files_sb, 80, -1);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), stop_files_sb, 1, 2, row, row+1);\r
-\r
- stop_files_lb = gtk_label_new("file(s)");\r
- gtk_misc_set_alignment(GTK_MISC(stop_files_lb), 0, 0.5);\r
- gtk_table_attach_defaults(GTK_TABLE(multi_tb), stop_files_lb, 2, 3, row, row+1);\r
- row++;\r
-\r
- /* Capture limits frame */\r
- limit_fr = gtk_frame_new("Stop Capture ...");\r
- gtk_container_add(GTK_CONTAINER(left_vb), limit_fr);\r
-\r
- limit_vb = gtk_vbox_new(FALSE, 3);\r
- gtk_container_border_width(GTK_CONTAINER(limit_vb), 5);\r
- gtk_container_add(GTK_CONTAINER(limit_fr), limit_vb);\r
-\r
- /* limits table */\r
- limit_tb = gtk_table_new(3, 3, FALSE);\r
- gtk_table_set_row_spacings(GTK_TABLE(limit_tb), 1);\r
- gtk_table_set_col_spacings(GTK_TABLE(limit_tb), 3);\r
- gtk_box_pack_start(GTK_BOX(limit_vb), limit_tb, FALSE, FALSE, 0);\r
- row = 0;\r
-\r
- /* Packet count row */\r
- stop_packets_cb = gtk_check_button_new_with_label("... after");\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_packets_cb),\r
- capture_opts.has_autostop_packets);\r
- SIGNAL_CONNECT(stop_packets_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, stop_packets_cb, \r
- "Stop capturing after the given number of packets have been captured.", NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_packets_cb, 0, 1, row, row+1);\r
-\r
- stop_packets_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat)capture_opts.autostop_packets,\r
- 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);\r
- stop_packets_sb = gtk_spin_button_new (stop_packets_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_packets_sb), TRUE);\r
- WIDGET_SET_SIZE(stop_packets_sb, 80, -1);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_packets_sb, 1, 2, row, row+1);\r
-\r
- stop_packets_lb = gtk_label_new("packet(s)");\r
- gtk_misc_set_alignment(GTK_MISC(stop_packets_lb), 0, 0.5);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_packets_lb, 2, 3, row, row+1);\r
- row++;\r
-\r
- /* Filesize row */\r
- stop_filesize_cb = gtk_check_button_new_with_label("... after");\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_filesize_cb),\r
- capture_opts.has_autostop_filesize);\r
- SIGNAL_CONNECT(stop_filesize_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, stop_filesize_cb, \r
- "Stop capturing after the given amount of capture data has been captured.", NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_filesize_cb, 0, 1, row, row+1);\r
-\r
- stop_filesize_adj = (GtkAdjustment *) gtk_adjustment_new(0.0,\r
- 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);\r
- stop_filesize_sb = gtk_spin_button_new (stop_filesize_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_filesize_sb), TRUE);\r
- WIDGET_SET_SIZE(stop_filesize_sb, 80, -1);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_filesize_sb, 1, 2, row, row+1);\r
-\r
- stop_filesize_om = size_unit_option_menu_new(capture_opts.autostop_filesize);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_filesize_om, 2, 3, row, row+1);\r
-\r
- value = size_unit_option_menu_set_value(capture_opts.autostop_filesize);\r
- gtk_adjustment_set_value(stop_filesize_adj, (gfloat) value);\r
-\r
- row++;\r
-\r
- /* Duration row */\r
- stop_duration_cb = gtk_check_button_new_with_label("... after");\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_duration_cb),\r
- capture_opts.has_autostop_duration);\r
- SIGNAL_CONNECT(stop_duration_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, stop_duration_cb, \r
- "Stop capturing after the given time is exceeded.", NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_duration_cb, 0, 1, row, row+1);\r
-\r
- stop_duration_adj = (GtkAdjustment *) gtk_adjustment_new(0.0,\r
- 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);\r
- stop_duration_sb = gtk_spin_button_new (stop_duration_adj, 0, 0);\r
- gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_duration_sb), TRUE);\r
- WIDGET_SET_SIZE(stop_duration_sb, 80, -1);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_duration_sb, 1, 2, row, row+1);\r
-\r
- stop_duration_om = time_unit_option_menu_new(capture_opts.autostop_duration);\r
- gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_duration_om, 2, 3, row, row+1);\r
-\r
- value = time_unit_option_menu_convert_value(capture_opts.autostop_duration);\r
- gtk_adjustment_set_value(stop_duration_adj, (gfloat) value);\r
- row++;\r
-\r
- /* Display-related options frame */\r
- display_fr = gtk_frame_new("Display Options");\r
- gtk_container_add(GTK_CONTAINER(right_vb), display_fr);\r
-\r
- display_vb = gtk_vbox_new(FALSE, 0);\r
- gtk_container_border_width(GTK_CONTAINER(display_vb), 5);\r
- gtk_container_add(GTK_CONTAINER(display_fr), display_vb);\r
-\r
- /* "Update display in real time" row */\r
- sync_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(\r
- "_Update list of packets in real time", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sync_cb),\r
- capture_opts.sync_mode);\r
- SIGNAL_CONNECT(sync_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, sync_cb, \r
- "Using this option will show the captured packets immediately on the main screen. "\r
- "Please note: this will slow down capturing, so increased packet drops might appear.", NULL);\r
- gtk_container_add(GTK_CONTAINER(display_vb), sync_cb);\r
-\r
- /* "Auto-scroll live update" row */\r
- auto_scroll_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(\r
- "_Automatic scrolling in live capture", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(auto_scroll_cb), auto_scroll_live);\r
- gtk_tooltips_set_tip(tooltips, auto_scroll_cb, \r
- "This will scroll the \"Packet List\" automatically to the latest captured packet, "\r
- "when the \"Update List of packets in real time\" option is used.", NULL);\r
- gtk_container_add(GTK_CONTAINER(display_vb), auto_scroll_cb);\r
-\r
- /* "Hide capture info" row */\r
- hide_info_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(\r
- "_Hide capture info dialog", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(hide_info_cb), !capture_opts.show_info);\r
- gtk_tooltips_set_tip(tooltips, hide_info_cb, \r
- "Hide the capture info dialog while capturing.", NULL);\r
- gtk_container_add(GTK_CONTAINER(display_vb), hide_info_cb);\r
-\r
- /* Name Resolution frame */\r
- resolv_fr = gtk_frame_new("Name Resolution");\r
- gtk_container_add(GTK_CONTAINER(right_vb), resolv_fr);\r
-\r
- resolv_vb = gtk_vbox_new(FALSE, 0);\r
- gtk_container_border_width(GTK_CONTAINER(resolv_vb), 5);\r
- gtk_container_add(GTK_CONTAINER(resolv_fr), resolv_vb);\r
-\r
- m_resolv_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(\r
- "Enable _MAC name resolution", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(m_resolv_cb),\r
- g_resolv_flags & RESOLV_MAC);\r
- gtk_tooltips_set_tip(tooltips, m_resolv_cb, \r
- "Perform MAC layer name resolution while capturing.", NULL);\r
- gtk_container_add(GTK_CONTAINER(resolv_vb), m_resolv_cb);\r
-\r
- n_resolv_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(\r
- "Enable _network name resolution", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(n_resolv_cb),\r
- g_resolv_flags & RESOLV_NETWORK);\r
- gtk_tooltips_set_tip(tooltips, n_resolv_cb, \r
- "Perform network layer name resolution while capturing.", NULL);\r
- gtk_container_add(GTK_CONTAINER(resolv_vb), n_resolv_cb);\r
-\r
- t_resolv_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(\r
- "Enable _transport name resolution", accel_group);\r
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(t_resolv_cb),\r
- g_resolv_flags & RESOLV_TRANSPORT);\r
- gtk_tooltips_set_tip(tooltips, t_resolv_cb, \r
- "Perform transport layer name resolution while capturing.", NULL);\r
- gtk_container_add(GTK_CONTAINER(resolv_vb), t_resolv_cb);\r
-\r
- /* Button row: OK and cancel buttons */\r
- bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);\r
- gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);\r
-\r
- ok_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_OK);\r
- SIGNAL_CONNECT(ok_bt, "clicked", capture_prep_ok_cb, cap_open_w);\r
- gtk_tooltips_set_tip(tooltips, ok_bt, \r
- "Start the capture process.", NULL);\r
-\r
- cancel_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CANCEL);\r
- gtk_tooltips_set_tip(tooltips, cancel_bt, \r
- "Cancel and exit dialog.", NULL);\r
- window_set_cancel_button(cap_open_w, cancel_bt, window_cancel_button_cb);\r
-\r
- help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);\r
- gtk_tooltips_set_tip(tooltips, help_bt, \r
- "Show help about capturing.", NULL);\r
- SIGNAL_CONNECT(help_bt, "clicked", help_topic_cb, "Capturing");\r
-\r
- gtk_widget_grab_default(ok_bt);\r
-\r
- /* Attach pointers to needed widgets to the capture prefs window/object */\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_IFACE_KEY, if_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_SNAP_CB_KEY, snap_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_SNAP_SB_KEY, snap_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_LT_OM_KEY, linktype_om);\r
-#ifdef _WIN32\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_BUFFER_SIZE_SB_KEY, buffer_size_sb);\r
-#endif\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_PROMISC_KEY, promisc_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_FILT_KEY, filter_te);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_TE_KEY, file_te);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_MULTI_FILES_ON_CB_KEY, multi_files_on_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_RING_NBF_CB_KEY, ringbuffer_nbf_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_RING_NBF_SB_KEY, ringbuffer_nbf_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_RING_NBF_LB_KEY, ringbuffer_nbf_lb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_RING_FILESIZE_CB_KEY, ring_filesize_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_RING_FILESIZE_SB_KEY, ring_filesize_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_RING_FILESIZE_OM_KEY, ring_filesize_om);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_DURATION_CB_KEY, file_duration_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_DURATION_SB_KEY, file_duration_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_DURATION_OM_KEY, file_duration_om);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_SYNC_KEY, sync_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_AUTO_SCROLL_KEY, auto_scroll_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_HIDE_INFO_KEY, hide_info_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_PACKETS_CB_KEY, stop_packets_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_PACKETS_SB_KEY, stop_packets_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_PACKETS_LB_KEY, stop_packets_lb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILESIZE_CB_KEY, stop_filesize_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILESIZE_SB_KEY, stop_filesize_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILESIZE_OM_KEY, stop_filesize_om);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_DURATION_CB_KEY, stop_duration_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_DURATION_SB_KEY, stop_duration_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_DURATION_OM_KEY, stop_duration_om);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILES_CB_KEY, stop_files_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILES_SB_KEY, stop_files_sb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILES_LB_KEY, stop_files_lb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_M_RESOLVE_KEY, m_resolv_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_N_RESOLVE_KEY, n_resolv_cb);\r
- OBJECT_SET_DATA(cap_open_w, E_CAP_T_RESOLVE_KEY, t_resolv_cb);\r
-\r
- /* Set the sensitivity of various widgets as per the settings of other\r
- widgets. */\r
- capture_prep_adjust_sensitivity(NULL, cap_open_w);\r
-\r
- /* Catch the "activate" signal on the text\r
- entries, so that if the user types Return there, we act as if the\r
- "OK" button had been selected, as happens if Return is typed if some\r
- widget that *doesn't* handle the Return key has the input focus. */\r
- dlg_set_activate(GTK_COMBO(if_cb)->entry, ok_bt);\r
- dlg_set_activate(filter_te, ok_bt);\r
- dlg_set_activate(file_te, ok_bt);\r
-\r
- /* XXX - why does not\r
-\r
- gtk_widget_grab_focus(if_cb);\r
-\r
- give the initial focus to the "Interface" combo box?\r
-\r
- Or should I phrase that as "why does GTK+ continually frustrate\r
- attempts to make GUIs driveable from the keyboard?" We have to\r
- go catch the activate signal on every single GtkEntry widget\r
- (rather than having widgets whose activate signal is *not*\r
- caught not catch the Return keystroke, so that it passes on,\r
- ultimately, to the window, which can activate the default\r
- widget, i.e. the "OK" button); we have to catch the "key_press_event"\r
- signal and have the handler check for ESC, so that we can have ESC\r
- activate the "Cancel" button; in order to support Alt+<key> mnemonics\r
- for buttons and the like, we may have to construct an accelerator\r
- group by hand and set up the accelerators by hand (if that even\r
- works - I've not tried it yet); we have to do a "gtk_widget_grab_focus()"\r
- to keep some container widget from getting the initial focus, so that\r
- you don't have to tab into the first widget in order to start typing\r
- in it; and it now appears that you simply *can't* make a combo box\r
- get the initial focus, at least not in the obvious fashion. Sigh.... */\r
-\r
- SIGNAL_CONNECT(cap_open_w, "delete_event", window_delete_event_cb, NULL);\r
- SIGNAL_CONNECT(cap_open_w, "destroy", capture_prep_destroy_cb, NULL);\r
-\r
- gtk_widget_show_all(cap_open_w);\r
- window_present(cap_open_w);\r
-}\r
-\r
-static void \r
-capture_prep_answered_cb(gpointer dialog _U_, gint btn, gpointer data)\r
-{\r
- switch(btn) {\r
- case(ESD_BTN_SAVE):\r
- /* save file first */\r
- file_save_as_cmd(after_save_capture_dialog, data);\r
- break;\r
- case(ESD_BTN_DONT_SAVE):\r
- capture_prep();\r
- break;\r
- case(ESD_BTN_CANCEL):\r
- break;\r
- default:\r
- g_assert_not_reached();\r
- }\r
-}\r
-\r
-void\r
-capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- gpointer dialog;\r
-\r
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {\r
- /* user didn't saved his current file, ask him */\r
- dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_SAVE_DONTSAVE_CANCEL,\r
- PRIMARY_TEXT_START "Save capture file before starting a new capture?" PRIMARY_TEXT_END "\n\n"\r
- "If you start a new capture without saving, your current capture data will\nbe discarded.");\r
- simple_dialog_set_cb(dialog, capture_prep_answered_cb, NULL);\r
- } else {\r
- /* unchanged file, just capture a new one */\r
- capture_prep();\r
- }\r
-}\r
-\r
-static void\r
-select_link_type_cb(GtkWidget *w, gpointer data)\r
-{\r
- int new_linktype = GPOINTER_TO_INT(data);\r
- GtkWidget *linktype_om = OBJECT_GET_DATA(w, E_CAP_LT_OM_KEY);\r
- int old_linktype = GPOINTER_TO_INT(OBJECT_GET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY));\r
-\r
- if (old_linktype != new_linktype)\r
- OBJECT_SET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY, GINT_TO_POINTER(new_linktype));\r
-}\r
-\r
-static void\r
-capture_prep_file_cb(GtkWidget *file_bt, GtkWidget *file_te)\r
-{\r
- file_selection_browse(file_bt, file_te, "Ethereal: Specify a Capture File", FILE_SELECTION_OPEN);\r
-}\r
-\r
-\r
-static void\r
-capture_prep_ok_cb(GtkWidget *ok_bt _U_, gpointer parent_w) {\r
- GtkWidget *if_cb, *snap_cb, *snap_sb, *promisc_cb, *filter_te,\r
- *file_te, *multi_files_on_cb, *ringbuffer_nbf_sb, *ringbuffer_nbf_cb,\r
- *linktype_om, *sync_cb, *auto_scroll_cb, *hide_info_cb,\r
- *stop_packets_cb, *stop_packets_sb,\r
- *stop_filesize_cb, *stop_filesize_sb, *stop_filesize_om,\r
- *stop_duration_cb, *stop_duration_sb, *stop_duration_om,\r
- *ring_filesize_cb, *ring_filesize_sb, *ring_filesize_om,\r
- *file_duration_cb, *file_duration_sb, *file_duration_om,\r
- *stop_files_cb, *stop_files_sb,\r
- *m_resolv_cb, *n_resolv_cb, *t_resolv_cb;\r
-#ifdef _WIN32\r
- GtkWidget *buffer_size_sb;\r
-#endif\r
- gchar *entry_text;\r
- gchar *if_text;\r
- gchar *if_name;\r
- const gchar *filter_text;\r
- gchar *save_file;\r
- const gchar *g_save_file;\r
- gchar *cf_name;\r
- gchar *dirname;\r
- gint32 tmp;\r
-\r
- if_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_IFACE_KEY);\r
- snap_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_CB_KEY);\r
- snap_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_SB_KEY);\r
- linktype_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_LT_OM_KEY);\r
-#ifdef _WIN32\r
- buffer_size_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_BUFFER_SIZE_SB_KEY);\r
-#endif\r
- promisc_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_PROMISC_KEY);\r
- filter_te = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILT_KEY);\r
- file_te = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_TE_KEY);\r
- multi_files_on_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_MULTI_FILES_ON_CB_KEY);\r
- ringbuffer_nbf_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_CB_KEY);\r
- ringbuffer_nbf_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_SB_KEY);\r
- ring_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_CB_KEY);\r
- ring_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_SB_KEY);\r
- ring_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_OM_KEY);\r
- file_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_CB_KEY);\r
- file_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_SB_KEY);\r
- file_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_OM_KEY);\r
- sync_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SYNC_KEY);\r
- auto_scroll_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_AUTO_SCROLL_KEY);\r
- hide_info_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_HIDE_INFO_KEY);\r
- stop_packets_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_CB_KEY);\r
- stop_packets_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_SB_KEY);\r
- stop_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_CB_KEY);\r
- stop_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_SB_KEY);\r
- stop_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_OM_KEY);\r
- stop_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_CB_KEY);\r
- stop_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_SB_KEY);\r
- stop_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_OM_KEY);\r
- stop_files_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_CB_KEY);\r
- stop_files_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_SB_KEY);\r
- m_resolv_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_M_RESOLVE_KEY);\r
- n_resolv_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_N_RESOLVE_KEY);\r
- t_resolv_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_T_RESOLVE_KEY);\r
-\r
- entry_text =\r
- g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry)));\r
- if_text = g_strstrip(entry_text);\r
- if_name = get_if_name(if_text);\r
- if (*if_name == '\0') {\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,\r
- "You didn't specify an interface on which to capture packets.");\r
- g_free(entry_text);\r
- return;\r
- }\r
- if (cfile.iface)\r
- g_free(cfile.iface);\r
- cfile.iface = g_strdup(if_name);\r
- g_free(entry_text);\r
-\r
- capture_opts.linktype =\r
- GPOINTER_TO_INT(OBJECT_GET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY));\r
-\r
-#ifdef _WIN32\r
- capture_opts.buffer_size = \r
- gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(buffer_size_sb));\r
-#endif\r
-\r
- capture_opts.has_snaplen =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(snap_cb));\r
- if (capture_opts.has_snaplen) {\r
- capture_opts.snaplen =\r
- gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(snap_sb));\r
- if (capture_opts.snaplen < 1)\r
- capture_opts.snaplen = WTAP_MAX_PACKET_SIZE;\r
- else if (capture_opts.snaplen < MIN_PACKET_SIZE)\r
- capture_opts.snaplen = MIN_PACKET_SIZE;\r
- }\r
-\r
- capture_opts.promisc_mode =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(promisc_cb));\r
-\r
- /* XXX - don't try to get clever and set "cfile.filter" to NULL if the\r
- filter string is empty, as an indication that we don't have a filter\r
- and thus don't have to set a filter when capturing - the version of\r
- libpcap in Red Hat Linux 6.1, and versions based on later patches\r
- in that series, don't bind the AF_PACKET socket to an interface\r
- until a filter is set, which means they aren't bound at all if\r
- no filter is set, which means no packets arrive as input on that\r
- socket, which means Ethereal never sees any packets. */\r
- filter_text = gtk_entry_get_text(GTK_ENTRY(filter_te));\r
- if (cfile.cfilter)\r
- g_free(cfile.cfilter);\r
- g_assert(filter_text != NULL);\r
- cfile.cfilter = g_strdup(filter_text);\r
-\r
- g_save_file = gtk_entry_get_text(GTK_ENTRY(file_te));\r
- if (g_save_file && g_save_file[0]) {\r
- /* User specified a file to which the capture should be written. */\r
- save_file = g_strdup(g_save_file);\r
- /* Save the directory name for future file dialogs. */\r
- cf_name = g_strdup(g_save_file);\r
- dirname = get_dirname(cf_name); /* Overwrites cf_name */\r
- set_last_open_dir(dirname);\r
- g_free(cf_name);\r
- } else {\r
- /* User didn't specify a file; save to a temporary file. */\r
- save_file = NULL;\r
- }\r
-\r
- capture_opts.has_autostop_packets =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_packets_cb));\r
- if (capture_opts.has_autostop_packets)\r
- capture_opts.autostop_packets =\r
- gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_packets_sb));\r
-\r
- capture_opts.has_autostop_duration =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_duration_cb));\r
- if (capture_opts.has_autostop_duration) {\r
- capture_opts.autostop_duration =\r
- gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_duration_sb));\r
- capture_opts.autostop_duration =\r
- time_unit_option_menu_get_value(stop_duration_om, capture_opts.autostop_duration);\r
- }\r
-\r
- capture_opts.sync_mode =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sync_cb));\r
-\r
- auto_scroll_live =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(auto_scroll_cb));\r
-\r
- capture_opts.show_info =\r
- !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hide_info_cb));\r
-\r
- g_resolv_flags |= g_resolv_flags & RESOLV_CONCURRENT;\r
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_resolv_cb)))\r
- g_resolv_flags |= RESOLV_MAC;\r
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(n_resolv_cb)))\r
- g_resolv_flags |= RESOLV_NETWORK;\r
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(t_resolv_cb)))\r
- g_resolv_flags |= RESOLV_TRANSPORT;\r
-\r
- capture_opts.has_ring_num_files =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb)); \r
-\r
- capture_opts.ring_num_files =\r
- gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(ringbuffer_nbf_sb));\r
- if (capture_opts.ring_num_files > RINGBUFFER_MAX_NUM_FILES)\r
- capture_opts.ring_num_files = RINGBUFFER_MAX_NUM_FILES;\r
-#if RINGBUFFER_MIN_NUM_FILES > 0\r
- else if (capture_opts.ring_num_files < RINGBUFFER_MIN_NUM_FILES)\r
- capture_opts.ring_num_files = RINGBUFFER_MIN_NUM_FILES;\r
-#endif\r
-\r
- capture_opts.multi_files_on =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(multi_files_on_cb));\r
-\r
- if(capture_opts.sync_mode)\r
- capture_opts.multi_files_on = FALSE;\r
-\r
- if (capture_opts.multi_files_on) {\r
- capture_opts.has_autostop_filesize =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ring_filesize_cb));\r
- if (capture_opts.has_autostop_filesize) {\r
- tmp = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(ring_filesize_sb));\r
- tmp = size_unit_option_menu_convert_value(ring_filesize_om, tmp);\r
- if(tmp != 0) {\r
- capture_opts.autostop_filesize = tmp;\r
- } else {\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,\r
- PRIMARY_TEXT_START "Multiple files: Requested filesize too large!\n\n" PRIMARY_TEXT_END\r
- "The setting \"Next file every x byte(s)\" can't be greater than %u bytes (2GB).", G_MAXINT);\r
- return;\r
- } \r
- }\r
-\r
- /* test if the settings are ok for a ringbuffer */\r
- if (save_file == NULL) {\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,\r
- PRIMARY_TEXT_START "Multiple files: No capture file name given!\n\n" PRIMARY_TEXT_END\r
- "You must specify a filename if you want to use multiple files.");\r
- return;\r
- } else if (!capture_opts.has_autostop_filesize) {\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,\r
- PRIMARY_TEXT_START "Multiple files: No file limit given!\n\n" PRIMARY_TEXT_END\r
- "You must specify a file size at which is switched to the next capture file\n"\r
- "if you want to use multiple files.");\r
- g_free(save_file);\r
- return;\r
- }\r
- } else {\r
- capture_opts.has_autostop_filesize =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_filesize_cb));\r
- if (capture_opts.has_autostop_filesize) {\r
- tmp = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_filesize_sb));\r
- tmp = size_unit_option_menu_convert_value(stop_filesize_om, tmp);\r
- if(tmp != 0) {\r
- capture_opts.autostop_filesize = tmp;\r
- } else {\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,\r
- PRIMARY_TEXT_START "Stop Capture: Requested filesize too large!\n\n" PRIMARY_TEXT_END\r
- "The setting \"... after x byte(s)\" can't be greater than %u bytes (2GB).", G_MAXINT);\r
- return;\r
- } \r
- }\r
- }\r
-\r
- capture_opts.has_file_duration =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(file_duration_cb));\r
- if (capture_opts.has_file_duration) {\r
- capture_opts.file_duration =\r
- gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(file_duration_sb));\r
- capture_opts.file_duration =\r
- time_unit_option_menu_get_value(file_duration_om, capture_opts.file_duration);\r
- }\r
-\r
- capture_opts.has_autostop_files =\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_files_cb));\r
- if (capture_opts.has_autostop_files)\r
- capture_opts.autostop_files =\r
- gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_files_sb));\r
-\r
- window_destroy(GTK_WIDGET(parent_w));\r
-\r
- do_capture(save_file);\r
- if (save_file != NULL)\r
- g_free(save_file);\r
-}\r
-\r
-static void\r
-capture_prep_destroy_cb(GtkWidget *win, gpointer user_data _U_)\r
-{\r
- GtkWidget *fs;\r
-\r
- /* Is there a file selection dialog associated with this\r
- Capture Options dialog? */\r
- fs = OBJECT_GET_DATA(win, E_FILE_SEL_DIALOG_PTR_KEY);\r
-\r
- if (fs != NULL) {\r
- /* Yes. Destroy it. */\r
- window_destroy(fs);\r
- }\r
-\r
- /* Note that we no longer have a "Capture Options" dialog box. */\r
- cap_open_w = NULL;\r
-}\r
-\r
-static void\r
-capture_prep_interface_changed_cb(GtkWidget *entry, gpointer argp)\r
-{\r
- GtkWidget *linktype_om = argp;\r
-\r
- set_link_type_list(linktype_om, entry);\r
-}\r
-\r
-/*\r
- * Adjust the sensitivity of various widgets as per the current setting\r
- * of other widgets.\r
- */\r
-static void\r
-capture_prep_adjust_sensitivity(GtkWidget *tb _U_, gpointer parent_w)\r
-{\r
- GtkWidget *if_cb,\r
- *snap_cb, *snap_sb,\r
- *multi_files_on_cb, *ringbuffer_nbf_cb, *ringbuffer_nbf_sb, *ringbuffer_nbf_lb,\r
- *ring_filesize_cb, *ring_filesize_sb, *ring_filesize_om,\r
- *file_duration_cb, *file_duration_sb, *file_duration_om,\r
- *sync_cb, *auto_scroll_cb, *hide_info_cb,\r
- *stop_packets_cb, *stop_packets_sb, *stop_packets_lb,\r
- *stop_filesize_cb, *stop_filesize_sb, *stop_filesize_om,\r
- *stop_duration_cb, *stop_duration_sb, *stop_duration_om,\r
- *stop_files_cb, *stop_files_sb, *stop_files_lb;\r
-\r
-\r
- if_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_IFACE_KEY);\r
- snap_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_CB_KEY);\r
- snap_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_SB_KEY);\r
- multi_files_on_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_MULTI_FILES_ON_CB_KEY);\r
- ringbuffer_nbf_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_CB_KEY);\r
- ringbuffer_nbf_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_SB_KEY);\r
- ringbuffer_nbf_lb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_LB_KEY);\r
- ring_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_CB_KEY);\r
- ring_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_SB_KEY);\r
- ring_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_OM_KEY);\r
- file_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_CB_KEY);\r
- file_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_SB_KEY);\r
- file_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_OM_KEY);\r
- sync_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SYNC_KEY);\r
- auto_scroll_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_AUTO_SCROLL_KEY);\r
- hide_info_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_HIDE_INFO_KEY);\r
- stop_packets_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_CB_KEY);\r
- stop_packets_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_SB_KEY);\r
- stop_packets_lb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_LB_KEY);\r
- stop_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_CB_KEY);\r
- stop_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_SB_KEY);\r
- stop_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_OM_KEY);\r
- stop_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_CB_KEY);\r
- stop_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_SB_KEY);\r
- stop_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_OM_KEY);\r
- stop_files_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_CB_KEY);\r
- stop_files_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_SB_KEY);\r
- stop_files_lb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_LB_KEY);\r
-\r
- /* The snapshot length spinbox is sensitive if the "Limit each packet\r
- to" checkbox is on. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(snap_sb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(snap_cb)));\r
-\r
-\r
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sync_cb))) {\r
- /* "Update list of packets in real time" captures enabled; we don't\r
- support ring buffer mode for those captures, so turn ring buffer\r
- mode off if it's on, and make its toggle button, and the spin\r
- button for the number of ring buffer files (and the spin button's\r
- label), insensitive. */\r
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(multi_files_on_cb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(multi_files_on_cb), FALSE);\r
-\r
- /* Auto-scroll mode is meaningful only in "Update list of packets\r
- in real time" captures, so make its toggle button sensitive. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(auto_scroll_cb), TRUE);\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(hide_info_cb), TRUE);\r
- } else {\r
- /* "Update list of packets in real time" captures disabled; that\r
- means ring buffer mode is OK, so make its toggle button\r
- sensitive. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(multi_files_on_cb), TRUE);\r
-\r
- /* Auto-scroll mode is meaningful only in "Update list of packets\r
- in real time" captures, so make its toggle button insensitive. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(auto_scroll_cb), FALSE);\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(hide_info_cb), FALSE);\r
- }\r
-\r
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(multi_files_on_cb))) {\r
- /* Ring buffer mode enabled. */\r
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ring_filesize_cb), TRUE);\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_cb), TRUE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_sb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb)));\r
- gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_lb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb)));\r
-\r
- /* The ring filesize spinbox is sensitive if the "Next capture file\r
- after N kilobytes" checkbox is on. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_cb), TRUE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_sb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ring_filesize_cb)));\r
- gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_om),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ring_filesize_cb)));\r
-\r
- /* The ring duration spinbox is sensitive if the "Next capture file\r
- after N seconds" checkbox is on. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(file_duration_cb), TRUE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(file_duration_sb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(file_duration_cb)));\r
- gtk_widget_set_sensitive(GTK_WIDGET(file_duration_om),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(file_duration_cb)));\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_cb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_sb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_om), FALSE);\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_files_cb), TRUE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_files_sb), \r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_files_cb)));\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_files_lb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_files_cb)));\r
- } else {\r
- /* Ring buffer mode disabled. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_cb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_sb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_lb), FALSE);\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_cb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_sb),FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_om),FALSE);\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(file_duration_cb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(file_duration_sb),FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(file_duration_om),FALSE);\r
-\r
- /* The maximum file size spinbox is sensitive if the "Stop capture\r
- after N kilobytes" checkbox is on. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_cb), TRUE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_sb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_filesize_cb)));\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_om),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_filesize_cb)));\r
-\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_files_cb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_files_sb), FALSE);\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_files_lb), FALSE);\r
- }\r
-\r
- /* The maximum packet count spinbox is sensitive if the "Stop capture\r
- after N packets" checkbox is on. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_packets_sb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_packets_cb)));\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_packets_lb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_packets_cb)));\r
-\r
- /* The capture duration spinbox is sensitive if the "Stop capture\r
- after N seconds" checkbox is on. */\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_duration_sb),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_duration_cb)));\r
- gtk_widget_set_sensitive(GTK_WIDGET(stop_duration_om),\r
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_duration_cb)));\r
-}\r
-\r
-#endif /* HAVE_LIBPCAP */\r
+/* capture_dlg.c
+ * Routines for packet capture windows
+ *
+ * $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
+
+#ifdef HAVE_LIBPCAP
+
+#include <pcap.h>
+#include <string.h>
+#include <gtk/gtk.h>
+
+#include <epan/packet.h>
+#include "capture.h"
+#include "globals.h"
+#include <epan/resolv.h>
+#include "main.h"
+#include "ui_util.h"
+#include "capture_dlg.h"
+#include "filter_prefs.h"
+#include "simple_dialog.h"
+#include "dlg_utils.h"
+#include "pcap-util.h"
+#include "capture_combo_utils.h"
+#include "prefs.h"
+#include "ringbuffer.h"
+#include <epan/filesystem.h>
+#include "compat_macros.h"
+#include "file_dlg.h"
+#include "help_dlg.h"
+#include "gtkglobals.h"
+
+#ifdef _WIN32
+#include "capture-wpcap.h"
+#endif
+
+/* Capture callback data keys */
+#define E_CAP_IFACE_KEY "cap_iface"
+#define E_CAP_IFACE_IP_KEY "cap_iface_ip"
+#define E_CAP_SNAP_CB_KEY "cap_snap_cb"
+#define E_CAP_LT_OM_KEY "cap_lt_om"
+#define E_CAP_LT_OM_LABEL_KEY "cap_lt_om_label"
+#ifdef _WIN32
+#define E_CAP_BUFFER_SIZE_SB_KEY "cap_buffer_size_sb"
+#endif
+#define E_CAP_SNAP_SB_KEY "cap_snap_sb"
+#define E_CAP_PROMISC_KEY "cap_promisc"
+#define E_CAP_FILT_KEY "cap_filter_te"
+#define E_CAP_FILE_TE_KEY "cap_file_te"
+#define E_CAP_MULTI_FILES_ON_CB_KEY "cap_multi_files_on_cb"
+#define E_CAP_RING_FILESIZE_CB_KEY "cap_ring_filesize_cb"
+#define E_CAP_RING_FILESIZE_SB_KEY "cap_ring_filesize_sb"
+#define E_CAP_RING_FILESIZE_OM_KEY "cap_ring_filesize_om"
+#define E_CAP_FILE_DURATION_CB_KEY "cap_file_duration_cb"
+#define E_CAP_FILE_DURATION_SB_KEY "cap_file_duration_sb"
+#define E_CAP_FILE_DURATION_OM_KEY "cap_file_duration_om"
+#define E_CAP_RING_NBF_CB_KEY "cap_ring_nbf_cb"
+#define E_CAP_RING_NBF_SB_KEY "cap_ring_nbf_sb"
+#define E_CAP_RING_NBF_LB_KEY "cap_ring_nbf_lb"
+#define E_CAP_STOP_FILES_CB_KEY "cap_stop_files_cb"
+#define E_CAP_STOP_FILES_SB_KEY "cap_stop_files_sb"
+#define E_CAP_STOP_FILES_LB_KEY "cap_stop_files_lb"
+#define E_CAP_SYNC_KEY "cap_sync"
+#define E_CAP_AUTO_SCROLL_KEY "cap_auto_scroll"
+#define E_CAP_HIDE_INFO_KEY "cap_hide_info"
+#define E_CAP_STOP_PACKETS_CB_KEY "cap_stop_packets_cb"
+#define E_CAP_STOP_PACKETS_SB_KEY "cap_stop_packets_sb"
+#define E_CAP_STOP_PACKETS_LB_KEY "cap_stop_packets_lb"
+#define E_CAP_STOP_FILESIZE_CB_KEY "cap_stop_filesize_cb"
+#define E_CAP_STOP_FILESIZE_SB_KEY "cap_stop_filesize_sb"
+#define E_CAP_STOP_FILESIZE_OM_KEY "cap_stop_filesize_om"
+#define E_CAP_STOP_DURATION_CB_KEY "cap_stop_duration_cb"
+#define E_CAP_STOP_DURATION_SB_KEY "cap_stop_duration_sb"
+#define E_CAP_STOP_DURATION_OM_KEY "cap_stop_duration_om"
+#define E_CAP_M_RESOLVE_KEY "cap_m_resolve"
+#define E_CAP_N_RESOLVE_KEY "cap_n_resolve"
+#define E_CAP_T_RESOLVE_KEY "cap_t_resolve"
+
+#define E_CAP_OM_LT_VALUE_KEY "cap_om_lt_value"
+
+static void
+capture_prep_file_cb(GtkWidget *file_bt, GtkWidget *file_te);
+
+static void
+select_link_type_cb(GtkWidget *w, gpointer data);
+
+static void
+capture_prep_adjust_sensitivity(GtkWidget *tb, gpointer parent_w);
+
+static void
+capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w);
+
+static void
+capture_prep_destroy_cb(GtkWidget *win, gpointer user_data);
+
+static void
+capture_prep_interface_changed_cb(GtkWidget *entry, gpointer parent_w);
+
+void
+capture_stop_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ capture_stop();
+}
+
+/*
+ * Given text that contains an interface name possibly prefixed by an
+ * interface description, extract the interface name.
+ */
+static char *
+get_if_name(char *if_text)
+{
+ char *if_name;
+
+#ifdef WIN32
+ /*
+ * We cannot assume that the interface name doesn't contain a space;
+ * some names on Windows OT do.
+ *
+ * We also can't assume it begins with "\Device\", either, as, on
+ * Windows OT, WinPcap doesn't put "\Device\" in front of the name.
+ *
+ * As I remember, we can't assume that the interface description
+ * doesn't contain a colon, either; I think some do.
+ *
+ * We can probably assume that the interface *name* doesn't contain
+ * a colon, however; if any interface name does contain a colon on
+ * Windows, it'll be time to just get rid of the damn interface
+ * descriptions in the drop-down list, have just the names in the
+ * drop-down list, and have a "Browse..." button to browse for interfaces,
+ * with names, descriptions, IP addresses, blah blah blah available when
+ * possible.
+ *
+ * So we search backwards for a colon. If we don't find it, just
+ * return the entire string; otherwise, skip the colon and any blanks
+ * after it, and return that string.
+ */
+ if_name = if_text + strlen(if_text);
+ for (;;) {
+ if (if_name == if_text) {
+ /* We're at the beginning of the string; return it. */
+ break;
+ }
+ if_name--;
+ if (*if_name == ':') {
+ /*
+ * We've found a colon.
+ * Unfortunately, a colon is used in the string "rpcap://",
+ * which is used in case of a remote capture.
+ * So we'll check to make sure the colon isn't followed by "//";
+ * it'll be followed by a blank if it separates the description
+ * and the interface name. (We don't wire in "rpcap", in case we
+ * support other protocols in the same syntax.)
+ */
+ if (strncmp(if_name, "://", 3) != 0) {
+ /*
+ * OK, we've found a colon not followed by "//". Skip blanks
+ * following it.
+ */
+ if_name++;
+ while (*if_name == ' ')
+ if_name++;
+ break;
+ }
+ }
+ /* Keep looking for a colon not followed by "//". */
+ }
+#else
+ /*
+ * There's a space between the interface description and name, and
+ * the interface name shouldn't have a space in it (it doesn't, on
+ * UNIX systems); look backwards in the string for a space.
+ *
+ * (An interface name might, however, contain a colon in it, which
+ * is why we don't use the colon search on UNIX.)
+ */
+ if_name = strrchr(if_text, ' ');
+ if (if_name == NULL) {
+ if_name = if_text;
+ } else {
+ if_name++;
+ }
+#endif
+ return if_name;
+}
+
+/*
+ * Keep a static pointer to the current "Capture Options" window, if
+ * any, so that if somebody tries to do "Capture:Start" while there's
+ * already a "Capture Options" window up, we just pop up the existing
+ * one, rather than creating a new one.
+ */
+static GtkWidget *cap_open_w;
+
+
+/* From tcptraceroute, convert a numeric IP address to a string */
+/* XXX - this functionality is already somewhere in our code */
+#define IPTOSBUFFERS 12
+char *iptos(u_long in)
+{
+ static char output[IPTOSBUFFERS][3*4+3+1];
+ static short which;
+ u_char *p;
+
+ p = (u_char *)∈
+ which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
+ sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
+ return output[which];
+}
+
+
+static void
+set_link_type_list(GtkWidget *linktype_om, GtkWidget *entry)
+{
+ gchar *entry_text;
+ gchar *if_text;
+ gchar *if_name;
+ GList *if_list;
+ GList *if_entry;
+ if_info_t *if_info;
+ GList *lt_list;
+ int err;
+ char err_buf[PCAP_ERRBUF_SIZE];
+ GtkWidget *lt_menu, *lt_menu_item;
+ GList *lt_entry;
+ data_link_info_t *data_link_info;
+ gchar *linktype_menu_label;
+ guint num_supported_link_types;
+ GtkWidget *linktype_lb = OBJECT_GET_DATA(linktype_om, E_CAP_LT_OM_LABEL_KEY);
+ GtkWidget *if_ip_lb;
+ GString *ip_str = g_string_new("IP address: ");
+ int ips = 0;
+ GSList *curr_ip;
+
+ lt_menu = gtk_menu_new();
+ entry_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+ if_text = g_strstrip(entry_text);
+ if_name = get_if_name(if_text);
+
+ /*
+ * If the interface name is in the list of known interfaces, get
+ * its list of link-layer types and set the option menu to display it.
+ *
+ * If it's not, don't bother - the user might be in the middle of
+ * editing the list, or it might be a remote device in which case
+ * getting the list could take an arbitrarily-long period of time.
+ * The list currently won't contain any remote devices (as
+ * "pcap_findalldevs()" doesn't know about remote devices, and neither
+ * does the code we use if "pcap_findalldevs()" isn't available), but
+ * should contain all the local devices on which you can capture.
+ */
+ lt_list = NULL;
+ if (*if_name != '\0') {
+ /*
+ * Try to get the list of known interfaces.
+ */
+ if_list = get_interface_list(&err, err_buf);
+ if (if_list != NULL) {
+ /*
+ * We have the list - check it.
+ */
+ for (if_entry = if_list; if_entry != NULL;
+ if_entry = g_list_next(if_entry)) {
+ if_info = if_entry->data;
+ if (strcmp(if_info->name, if_name) == 0) {
+ /*
+ * It's in the list.
+ * Get the list of link-layer types for it.
+ */
+ lt_list = get_pcap_linktype_list(if_name, err_buf);
+
+ /* create string of list of IP addresses of this interface */
+ for( ; curr_ip = g_slist_nth(if_info->ip_addr, ips); ips++) {
+ if (ips != 0) {
+ g_string_append(ip_str, ", ");
+ }
+
+ g_string_append(ip_str, iptos(*((guint32 *)curr_ip->data)));
+ }
+
+ if(if_info->loopback) {
+ g_string_append(ip_str, " (loopback)");
+ }
+ }
+ }
+ free_interface_list(if_list);
+ }
+ }
+ g_free(entry_text);
+ num_supported_link_types = 0;
+ for (lt_entry = lt_list; lt_entry != NULL; lt_entry = g_list_next(lt_entry)) {
+ data_link_info = lt_entry->data;
+ if (data_link_info->description != NULL) {
+ lt_menu_item = gtk_menu_item_new_with_label(data_link_info->description);
+ OBJECT_SET_DATA(lt_menu_item, E_CAP_LT_OM_KEY, linktype_om);
+ SIGNAL_CONNECT(lt_menu_item, "activate", select_link_type_cb,
+ GINT_TO_POINTER(data_link_info->dlt));
+ num_supported_link_types++;
+ } else {
+ /* Not supported - tell them about it but don't let them select it. */
+ linktype_menu_label = g_strdup_printf("%s (not supported)",
+ data_link_info->name);
+ lt_menu_item = gtk_menu_item_new_with_label(linktype_menu_label);
+ g_free(linktype_menu_label);
+ gtk_widget_set_sensitive(lt_menu_item, FALSE);
+ }
+ gtk_menu_append(GTK_MENU(lt_menu), lt_menu_item);
+ }
+ if (lt_list != NULL)
+ free_pcap_linktype_list(lt_list);
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(linktype_om), lt_menu);
+ gtk_widget_set_sensitive(linktype_lb, num_supported_link_types >= 2);
+ gtk_widget_set_sensitive(linktype_om, num_supported_link_types >= 2);
+
+ if_ip_lb = OBJECT_GET_DATA(linktype_om, E_CAP_IFACE_KEY);
+ if(ips == 0) {
+ g_string_append(ip_str, "unknown");
+ }
+ gtk_label_set_text(GTK_LABEL(if_ip_lb), ip_str->str);
+ g_string_free(ip_str, TRUE);
+}
+
+
+#define TIME_UNIT_SECOND 0
+#define TIME_UNIT_MINUTE 1
+#define TIME_UNIT_HOUR 2
+#define TIME_UNIT_DAY 3
+#define MAX_TIME_UNITS 4
+static char *time_unit_name[MAX_TIME_UNITS] = {
+ "second(s)",
+ "minute(s)",
+ "hour(s)",
+ "day(s)",
+};
+
+static GtkWidget *time_unit_option_menu_new(guint32 value) {
+ GtkWidget *unit_om, *menu, *menu_item;
+ int i;
+
+ unit_om=gtk_option_menu_new();
+ menu=gtk_menu_new();
+ for(i=0;i<MAX_TIME_UNITS;i++){
+ menu_item=gtk_menu_item_new_with_label(time_unit_name[i]);
+ OBJECT_SET_DATA(menu_item, "time_unit", GINT_TO_POINTER(i));
+ gtk_menu_append(GTK_MENU(menu), menu_item);
+ }
+
+ /* the selected menu item can't be changed, once the option_menu
+ is created, so set the matching menu item now */
+ /* days */
+ if(value >= 60 * 60 * 24) {
+ gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_DAY);
+ } else {
+ /* hours */
+ if(value >= 60 * 60) {
+ gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_HOUR);
+ } else {
+ /* minutes */
+ if(value >= 60) {
+ gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_MINUTE);
+ } else {
+ /* seconds */
+ gtk_menu_set_active(GTK_MENU(menu), TIME_UNIT_SECOND);
+ }
+ }
+ }
+
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(unit_om), menu);
+
+ return unit_om;
+}
+
+static guint32 time_unit_option_menu_convert_value(
+guint32 value)
+{
+ /* days */
+ if(value >= 60 * 60 * 24) {
+ return value / (60 * 60 * 24);
+ }
+
+ /* hours */
+ if(value >= 60 * 60) {
+ return value / (60 * 60);
+ }
+
+ /* minutes */
+ if(value >= 60) {
+ return value / 60;
+ }
+
+ /* seconds */
+ return value;
+}
+
+static guint32 time_unit_option_menu_get_value(
+GtkWidget *unit_om,
+guint32 value)
+{
+ GtkWidget *menu, *menu_item;
+ int unit;
+
+ menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(unit_om));
+ menu_item = gtk_menu_get_active(GTK_MENU(menu));
+ unit = GPOINTER_TO_INT(OBJECT_GET_DATA(menu_item, "time_unit"));
+
+
+ switch(unit) {
+ case(TIME_UNIT_SECOND):
+ return value;
+ break;
+ case(TIME_UNIT_MINUTE):
+ return value * 60;
+ break;
+ case(TIME_UNIT_HOUR):
+ return value * 60 * 60;
+ break;
+ case(TIME_UNIT_DAY):
+ return value * 60 * 60 * 24;
+ break;
+ default:
+ g_assert_not_reached();
+ return 0;
+ }
+}
+
+
+#define SIZE_UNIT_BYTES 0
+#define SIZE_UNIT_KILOBYTES 1
+#define SIZE_UNIT_MEGABYTES 2
+#define SIZE_UNIT_GIGABYTES 3
+#define MAX_SIZE_UNITS 4
+static char *size_unit_name[MAX_SIZE_UNITS] = {
+ "byte(s)",
+ "kilobyte(s)",
+ "megabyte(s)",
+ "gigabyte(s)",
+};
+
+static GtkWidget *size_unit_option_menu_new(guint32 value) {
+ GtkWidget *unit_om, *menu, *menu_item;
+ int i;
+
+ unit_om=gtk_option_menu_new();
+ menu=gtk_menu_new();
+ for(i=0;i<MAX_SIZE_UNITS;i++){
+ menu_item=gtk_menu_item_new_with_label(size_unit_name[i]);
+ OBJECT_SET_DATA(menu_item, "size_unit", GINT_TO_POINTER(i));
+ gtk_menu_append(GTK_MENU(menu), menu_item);
+ }
+
+ /* the selected menu item can't be changed, once the option_menu
+ is created, so set the matching menu item now */
+ /* gigabytes */
+ if(value >= 1024 * 1024 * 1024) {
+ gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_GIGABYTES);
+ } else {
+ /* megabytes */
+ if(value >= 1024 * 1024) {
+ gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_MEGABYTES);
+ } else {
+ /* kilobytes */
+ if(value >= 1024) {
+ gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_KILOBYTES);
+ } else {
+ /* bytes */
+ gtk_menu_set_active(GTK_MENU(menu), SIZE_UNIT_BYTES);
+ }
+ }
+ }
+
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(unit_om), menu);
+
+ return unit_om;
+}
+
+static guint32 size_unit_option_menu_set_value(
+guint32 value)
+{
+ /* gigabytes */
+ if(value >= 1024 * 1024 * 1024) {
+ return value / (1024 * 1024 * 1024);
+ }
+
+ /* megabytes */
+ if(value >= 1024 * 1024) {
+ return value / (1024 * 1024);
+ }
+
+ /* kilobytes */
+ if(value >= 1024) {
+ return value / 1024;
+ }
+
+ /* bytes */
+ return value;
+}
+
+static guint32 size_unit_option_menu_convert_value(
+GtkWidget *unit_om,
+guint32 value)
+{
+ GtkWidget *menu, *menu_item;
+ int unit;
+
+ menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(unit_om));
+ menu_item = gtk_menu_get_active(GTK_MENU(menu));
+ unit = GPOINTER_TO_INT(OBJECT_GET_DATA(menu_item, "size_unit"));
+
+
+ switch(unit) {
+ case(SIZE_UNIT_BYTES):
+ return value;
+ break;
+ case(SIZE_UNIT_KILOBYTES):
+ if(value > G_MAXINT / 1024) {
+ return 0;
+ } else {
+ return value * 1024;
+ }
+ break;
+ case(SIZE_UNIT_MEGABYTES):
+ if(value > G_MAXINT / (1024 * 1024)) {
+ return 0;
+ } else {
+ return value * 1024 * 1024;
+ }
+ break;
+ case(SIZE_UNIT_GIGABYTES):
+ if(value > G_MAXINT / (1024 * 1024 * 1024)) {
+ return 0;
+ } else {
+ return value * 1024 * 1024 * 1024;
+ }
+ break;
+ default:
+ g_assert_not_reached();
+ return 0;
+ }
+}
+
+
+void
+capture_prep(void)
+{
+ GtkWidget *main_vb,
+ *main_hb, *left_vb, *right_vb,
+
+ *capture_fr, *capture_vb,
+ *if_hb, *if_cb, *if_lb,
+ *if_ip_hb, *if_ip_lb,
+ *linktype_hb, *linktype_lb, *linktype_om,
+ *snap_hb, *snap_cb, *snap_sb, *snap_lb,
+ *promisc_cb,
+ *filter_hb, *filter_bt, *filter_te,
+
+ *file_fr, *file_vb,
+ *file_hb, *file_bt, *file_lb, *file_te,
+ *multi_tb, *multi_files_on_cb,
+ *ring_filesize_cb, *ring_filesize_sb, *ring_filesize_om,
+ *file_duration_cb, *file_duration_sb, *file_duration_om,
+ *ringbuffer_nbf_cb, *ringbuffer_nbf_sb, *ringbuffer_nbf_lb,
+ *stop_files_cb, *stop_files_sb, *stop_files_lb,
+
+ *limit_fr, *limit_vb, *limit_tb,
+ *stop_packets_cb, *stop_packets_sb, *stop_packets_lb,
+ *stop_filesize_cb, *stop_filesize_sb, *stop_filesize_om,
+ *stop_duration_cb, *stop_duration_sb, *stop_duration_om,
+
+ *display_fr, *display_vb,
+ *sync_cb, *auto_scroll_cb, *hide_info_cb,
+
+ *resolv_fr, *resolv_vb,
+ *m_resolv_cb, *n_resolv_cb, *t_resolv_cb,
+ *bbox, *ok_bt, *cancel_bt,
+ *help_bt;
+#if GTK_MAJOR_VERSION < 2
+ GtkAccelGroup *accel_group;
+#endif
+ GtkTooltips *tooltips;
+ GtkAdjustment *snap_adj, *ringbuffer_nbf_adj,
+ *stop_packets_adj, *stop_filesize_adj, *stop_duration_adj, *stop_files_adj, *ring_filesize_adj, *file_duration_adj;
+ GList *if_list, *combo_list;
+ int err;
+ int row;
+ char err_str[PCAP_ERRBUF_SIZE];
+ gchar *cant_get_if_list_errstr;
+#ifdef _WIN32
+ GtkAdjustment *buffer_size_adj;
+ GtkWidget *buffer_size_lb, *buffer_size_sb;
+#endif
+ guint32 value;
+
+ if (cap_open_w != NULL) {
+ /* There's already a "Capture Options" dialog box; reactivate it. */
+ reactivate_window(cap_open_w);
+ return;
+ }
+
+#ifdef _WIN32
+ /* Is WPcap loaded? */
+ if (!has_wpcap) {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ "Unable to load WinPcap (wpcap.dll); Ethereal will not be able\n"
+ "to capture packets.\n\n"
+ "In order to capture packets, WinPcap must be installed; see\n"
+ "\n"
+ " http://winpcap.polito.it/\n"
+ "\n"
+ "or the mirror at\n"
+ "\n"
+ " http://winpcap.mirror.ethereal.com/\n"
+ "\n"
+ "or the mirror at\n"
+ "\n"
+ " http://www.mirrors.wiretapped.net/security/packet-capture/winpcap/\n"
+ "\n"
+ "for a downloadable version of WinPcap and for instructions\n"
+ "on how to install WinPcap.");
+ return;
+ }
+#endif
+
+ if_list = get_interface_list(&err, err_str);
+ if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) {
+ cant_get_if_list_errstr = cant_get_if_list_error_message(err_str);
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s",
+ cant_get_if_list_errstr);
+ g_free(cant_get_if_list_errstr);
+ }
+
+ cap_open_w = dlg_window_new("Ethereal: Capture Options");
+
+ tooltips = gtk_tooltips_new();
+
+#if GTK_MAJOR_VERSION < 2
+ /* Accelerator group for the accelerators (or, as they're called in
+ Windows and, I think, in Motif, "mnemonics"; Alt+<key> is a mnemonic,
+ Ctrl+<key> is an accelerator). */
+ accel_group = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(cap_open_w), accel_group);
+#endif
+
+ main_vb = gtk_vbox_new(FALSE, 0);
+ gtk_container_border_width(GTK_CONTAINER(main_vb), 5);
+ gtk_container_add(GTK_CONTAINER(cap_open_w), main_vb);
+
+ /* Capture-related options frame */
+ capture_fr = gtk_frame_new("Capture");
+ gtk_container_add(GTK_CONTAINER(main_vb), capture_fr);
+
+ capture_vb = gtk_vbox_new(FALSE, 3);
+ gtk_container_border_width(GTK_CONTAINER(capture_vb), 5);
+ gtk_container_add(GTK_CONTAINER(capture_fr), capture_vb);
+
+ /* Interface row */
+ if_hb = gtk_hbox_new(FALSE, 3);
+ gtk_container_add(GTK_CONTAINER(capture_vb), if_hb);
+
+ if_lb = gtk_label_new("Interface:");
+ gtk_box_pack_start(GTK_BOX(if_hb), if_lb, FALSE, FALSE, 6);
+
+ if_cb = gtk_combo_new();
+ combo_list = build_capture_combo_list(if_list, TRUE);
+ if (combo_list != NULL)
+ gtk_combo_set_popdown_strings(GTK_COMBO(if_cb), combo_list);
+ if (cfile.iface == NULL && prefs.capture_device != NULL) {
+ /* No interface was specified on the command line or in a previous
+ capture, but there is one specified in the preferences file;
+ make the one from the preferences file the default */
+ cfile.iface = g_strdup(prefs.capture_device);
+ }
+ if (cfile.iface != NULL)
+ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry), cfile.iface);
+ else if (combo_list != NULL) {
+ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry),
+ (char *)combo_list->data);
+ }
+ free_capture_combo_list(combo_list);
+ free_interface_list(if_list);
+ gtk_tooltips_set_tip(tooltips, GTK_COMBO(if_cb)->entry,
+ "Choose which interface (network card) will be used to capture packets from. "
+ "Be sure to select the correct one, as it's a common mistake to select the wrong interface.", NULL);
+ gtk_box_pack_start(GTK_BOX(if_hb), if_cb, TRUE, TRUE, 6);
+
+ if_ip_hb = gtk_hbox_new(FALSE, 3);
+ gtk_box_pack_start(GTK_BOX(capture_vb), if_ip_hb, FALSE, FALSE, 0);
+
+ if_ip_lb = gtk_label_new("");
+ gtk_box_pack_start(GTK_BOX(if_ip_hb), if_ip_lb, FALSE, FALSE, 6);
+
+ /* Linktype row */
+ linktype_hb = gtk_hbox_new(FALSE, 3);
+ gtk_box_pack_start(GTK_BOX(capture_vb), linktype_hb, FALSE, FALSE, 0);
+
+ linktype_lb = gtk_label_new("Link-layer header type:");
+ gtk_box_pack_start(GTK_BOX(linktype_hb), linktype_lb, FALSE, FALSE, 6);
+
+ linktype_om = gtk_option_menu_new();
+ OBJECT_SET_DATA(linktype_om, E_CAP_LT_OM_LABEL_KEY, linktype_lb);
+ /* Default to "use the default" */
+ OBJECT_SET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY, GINT_TO_POINTER(-1));
+ OBJECT_SET_DATA(linktype_om, E_CAP_IFACE_KEY, if_ip_lb);
+ set_link_type_list(linktype_om, GTK_COMBO(if_cb)->entry);
+ /*
+ * XXX - in some cases, this is "multiple link-layer header types", e.g.
+ * some 802.11 interfaces on FreeBSD 5.2 and later, where you can request
+ * fake Ethernet, 802.11, or 802.11-plus-radio-information headers.
+ *
+ * In other cases, it's "multiple link-layer types", e.g., with recent
+ * versions of libpcap, a DAG card on an "HDLC" WAN, where you can
+ * request Cisco HDLC or PPP depending on what type of traffic is going
+ * over the WAN, or an Ethernet interface, where you can request Ethernet
+ * or DOCSIS, the latter being for some Cisco cable modem equipment that
+ * can be configured to send raw DOCSIS frames over an Ethernet inside
+ * Ethernet low-level framing, for traffic capture purposes.
+ *
+ * We leave it as "multiple link-layer types" for now.
+ */
+ gtk_tooltips_set_tip(tooltips, linktype_om,
+ "The selected interface supports multiple link-layer types; select the desired one.", NULL);
+ gtk_box_pack_start (GTK_BOX(linktype_hb), linktype_om, FALSE, FALSE, 0);
+ SIGNAL_CONNECT(GTK_ENTRY(GTK_COMBO(if_cb)->entry), "changed",
+ capture_prep_interface_changed_cb, linktype_om);
+
+#ifdef _WIN32
+ buffer_size_lb = gtk_label_new("Buffer size:");
+ gtk_box_pack_start (GTK_BOX(linktype_hb), buffer_size_lb, FALSE, FALSE, 0);
+
+ buffer_size_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat) capture_opts.buffer_size,
+ 1, 65535, 1.0, 10.0, 0.0);
+ buffer_size_sb = gtk_spin_button_new (buffer_size_adj, 0, 0);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON (buffer_size_sb), (gfloat) capture_opts.buffer_size);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (buffer_size_sb), TRUE);
+ WIDGET_SET_SIZE(buffer_size_sb, 80, -1);
+ gtk_tooltips_set_tip(tooltips, buffer_size_sb,
+ "The memory buffer size used while capturing. If you notice packet drops, you can try to increase this size.", NULL);
+ gtk_box_pack_start (GTK_BOX(linktype_hb), buffer_size_sb, FALSE, FALSE, 0);
+
+ buffer_size_lb = gtk_label_new("megabyte(s)");
+ gtk_box_pack_start (GTK_BOX(linktype_hb), buffer_size_lb, FALSE, FALSE, 0);
+#endif
+
+ /* Promiscuous mode row */
+ promisc_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(
+ "Capture packets in _promiscuous mode", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(promisc_cb),
+ capture_opts.promisc_mode);
+ gtk_tooltips_set_tip(tooltips, promisc_cb,
+ "Usually a network card will only capture the traffic sent to its own network address. "
+ "If you want to capture all traffic that the network card can \"see\", mark this option. "
+ "See the FAQ for some more details of capturing packets from a switched network.", NULL);
+ gtk_container_add(GTK_CONTAINER(capture_vb), promisc_cb);
+
+ /* Capture length row */
+ snap_hb = gtk_hbox_new(FALSE, 3);
+ gtk_container_add(GTK_CONTAINER(capture_vb), snap_hb);
+
+ snap_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC("_Limit each packet to", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(snap_cb),
+ capture_opts.has_snaplen);
+ SIGNAL_CONNECT(snap_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, snap_cb,
+ "Limit the maximum number of bytes to be captured from each packet. This size includes the "
+ "link-layer header and all subsequent headers. ", NULL);
+ gtk_box_pack_start(GTK_BOX(snap_hb), snap_cb, FALSE, FALSE, 0);
+
+ snap_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat) capture_opts.snaplen,
+ MIN_PACKET_SIZE, WTAP_MAX_PACKET_SIZE, 1.0, 10.0, 0.0);
+ snap_sb = gtk_spin_button_new (snap_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (snap_sb), TRUE);
+ WIDGET_SET_SIZE(snap_sb, 80, -1);
+ gtk_box_pack_start (GTK_BOX(snap_hb), snap_sb, FALSE, FALSE, 0);
+
+ snap_lb = gtk_label_new("bytes");
+ gtk_misc_set_alignment(GTK_MISC(snap_lb), 0, 0.5);
+ gtk_box_pack_start(GTK_BOX(snap_hb), snap_lb, FALSE, FALSE, 0);
+
+ /* Filter row */
+ filter_hb = gtk_hbox_new(FALSE, 3);
+ gtk_box_pack_start(GTK_BOX(capture_vb), filter_hb, FALSE, FALSE, 0);
+
+ filter_bt = BUTTON_NEW_FROM_STOCK(ETHEREAL_STOCK_CAPTURE_FILTER_ENTRY);
+ SIGNAL_CONNECT(filter_bt, "clicked", capture_filter_construct_cb, NULL);
+ SIGNAL_CONNECT(filter_bt, "destroy", filter_button_destroy_cb, NULL);
+ gtk_tooltips_set_tip(tooltips, filter_bt,
+ "Select a capture filter to reduce the amount of packets to be captured. "
+ "See \"Capture Filters\" in the online help for further information how to use it.",
+ NULL);
+ gtk_box_pack_start(GTK_BOX(filter_hb), filter_bt, FALSE, FALSE, 3);
+
+ filter_te = gtk_entry_new();
+ if (cfile.cfilter) gtk_entry_set_text(GTK_ENTRY(filter_te), cfile.cfilter);
+ OBJECT_SET_DATA(filter_bt, E_FILT_TE_PTR_KEY, filter_te);
+ gtk_tooltips_set_tip(tooltips, filter_te,
+ "Enter a capture filter to reduce the amount of packets to be captured. "
+ "See \"Capture Filters\" in the online help for further information how to use it.",
+ NULL);
+ gtk_box_pack_start(GTK_BOX(filter_hb), filter_te, TRUE, TRUE, 3);
+
+ main_hb = gtk_hbox_new(FALSE, 5);
+ gtk_container_border_width(GTK_CONTAINER(main_hb), 0);
+ gtk_container_add(GTK_CONTAINER(main_vb), main_hb);
+
+ left_vb = gtk_vbox_new(FALSE, 0);
+ gtk_container_border_width(GTK_CONTAINER(left_vb), 0);
+ gtk_box_pack_start(GTK_BOX(main_hb), left_vb, TRUE, TRUE, 0);
+
+ right_vb = gtk_vbox_new(FALSE, 0);
+ gtk_container_border_width(GTK_CONTAINER(right_vb), 0);
+ gtk_box_pack_start(GTK_BOX(main_hb), right_vb, FALSE, FALSE, 0);
+
+
+ /* Capture file-related options frame */
+ file_fr = gtk_frame_new("Capture File(s)");
+ gtk_container_add(GTK_CONTAINER(left_vb), file_fr);
+
+ file_vb = gtk_vbox_new(FALSE, 3);
+ gtk_container_border_width(GTK_CONTAINER(file_vb), 5);
+ gtk_container_add(GTK_CONTAINER(file_fr), file_vb);
+
+ /* File row */
+ file_hb = gtk_hbox_new(FALSE, 3);
+ gtk_box_pack_start(GTK_BOX(file_vb), file_hb, FALSE, FALSE, 0);
+
+ file_lb = gtk_label_new("File:");
+ gtk_box_pack_start(GTK_BOX(file_hb), file_lb, FALSE, FALSE, 3);
+
+ file_te = gtk_entry_new();
+ gtk_tooltips_set_tip(tooltips, file_te,
+ "Enter the file name to which captured data will be written. "
+ "If you don't enter something here, a temporary file will be used.",
+ NULL);
+ gtk_box_pack_start(GTK_BOX(file_hb), file_te, TRUE, TRUE, 3);
+
+ file_bt = BUTTON_NEW_FROM_STOCK(ETHEREAL_STOCK_BROWSE);
+ gtk_tooltips_set_tip(tooltips, file_bt,
+ "Select a file to which captured data will be written, "
+ "instead of entering the file name directly. ",
+ NULL);
+ gtk_box_pack_start(GTK_BOX(file_hb), file_bt, FALSE, FALSE, 3);
+
+ SIGNAL_CONNECT(file_bt, "clicked", capture_prep_file_cb, file_te);
+
+ /* multiple files table */
+ multi_tb = gtk_table_new(5, 3, FALSE);
+ gtk_table_set_row_spacings(GTK_TABLE(multi_tb), 1);
+ gtk_table_set_col_spacings(GTK_TABLE(multi_tb), 3);
+ gtk_box_pack_start(GTK_BOX(file_vb), multi_tb, FALSE, FALSE, 0);
+ row = 0;
+
+ /* multiple files row */
+ multi_files_on_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC("Use _multiple files", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(multi_files_on_cb),
+ capture_opts.multi_files_on);
+ SIGNAL_CONNECT(multi_files_on_cb, "toggled", capture_prep_adjust_sensitivity,
+ cap_open_w);
+ gtk_tooltips_set_tip(tooltips, multi_files_on_cb,
+ "Instead of using a single capture file, multiple files will be created. "
+ "The generated file names will contain an incrementing number and the start time of the capture.", NULL);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), multi_files_on_cb, 0, 1, row, row+1);
+ row++;
+
+ /* Ring buffer filesize row */
+ ring_filesize_cb = gtk_check_button_new_with_label("Next file every");
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ring_filesize_cb),
+ capture_opts.has_autostop_filesize);
+ SIGNAL_CONNECT(ring_filesize_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, ring_filesize_cb,
+ "If the selected file size is exceeded, capturing switches to the next file.",
+ NULL);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), ring_filesize_cb, 0, 1, row, row+1);
+
+ ring_filesize_adj = (GtkAdjustment *) gtk_adjustment_new(0.0,
+ 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);
+ ring_filesize_sb = gtk_spin_button_new (ring_filesize_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (ring_filesize_sb), TRUE);
+ WIDGET_SET_SIZE(ring_filesize_sb, 80, -1);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), ring_filesize_sb, 1, 2, row, row+1);
+
+ ring_filesize_om = size_unit_option_menu_new(capture_opts.autostop_filesize);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), ring_filesize_om, 2, 3, row, row+1);
+
+ value = size_unit_option_menu_set_value(capture_opts.autostop_filesize);
+ gtk_adjustment_set_value(ring_filesize_adj, (gfloat) value);
+
+ row++;
+
+ /* Ring buffer duration row */
+ file_duration_cb = gtk_check_button_new_with_label("Next file every");
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(file_duration_cb),
+ capture_opts.has_file_duration);
+ SIGNAL_CONNECT(file_duration_cb, "toggled",
+ capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, file_duration_cb,
+ "If the selected duration is exceeded, capturing switches to the next file.",
+ NULL);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), file_duration_cb, 0, 1, row, row+1);
+
+ file_duration_adj = (GtkAdjustment *)gtk_adjustment_new(0.0,
+ 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);
+ file_duration_sb = gtk_spin_button_new (file_duration_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (file_duration_sb), TRUE);
+ WIDGET_SET_SIZE(file_duration_sb, 80, -1);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), file_duration_sb, 1, 2, row, row+1);
+
+ file_duration_om = time_unit_option_menu_new(capture_opts.file_duration);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), file_duration_om, 2, 3, row, row+1);
+
+ value = time_unit_option_menu_convert_value(capture_opts.file_duration);
+ gtk_adjustment_set_value(file_duration_adj, (gfloat) value);
+ row++;
+
+ /* Ring buffer files row */
+ ringbuffer_nbf_cb = gtk_check_button_new_with_label("Ring buffer with");
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb),
+ capture_opts.has_ring_num_files);
+ SIGNAL_CONNECT(ringbuffer_nbf_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, ringbuffer_nbf_cb,
+ "After capturing has switched to the next file and the given number of files has exceeded, "
+ "the oldest file will be removed.",
+ NULL);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), ringbuffer_nbf_cb, 0, 1, row, row+1);
+
+ ringbuffer_nbf_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat) capture_opts.ring_num_files,
+ 2/*RINGBUFFER_MIN_NUM_FILES*/, RINGBUFFER_MAX_NUM_FILES, 1.0, 10.0, 0.0);
+ ringbuffer_nbf_sb = gtk_spin_button_new (ringbuffer_nbf_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (ringbuffer_nbf_sb), TRUE);
+ WIDGET_SET_SIZE(ringbuffer_nbf_sb, 80, -1);
+ SIGNAL_CONNECT(ringbuffer_nbf_sb, "changed", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), ringbuffer_nbf_sb, 1, 2, row, row+1);
+
+ ringbuffer_nbf_lb = gtk_label_new("files");
+ gtk_misc_set_alignment(GTK_MISC(ringbuffer_nbf_lb), 0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), ringbuffer_nbf_lb, 2, 3, row, row+1);
+ row++;
+
+ /* Files row */
+ stop_files_cb = gtk_check_button_new_with_label("Stop capture after");
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_files_cb),
+ capture_opts.has_autostop_files);
+ SIGNAL_CONNECT(stop_files_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, stop_files_cb,
+ "Stop capturing after the given number of \"file switches\" have been done.", NULL);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), stop_files_cb, 0, 1, row, row+1);
+
+ stop_files_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat)capture_opts.autostop_files,
+ 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);
+ stop_files_sb = gtk_spin_button_new (stop_files_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_files_sb), TRUE);
+ WIDGET_SET_SIZE(stop_files_sb, 80, -1);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), stop_files_sb, 1, 2, row, row+1);
+
+ stop_files_lb = gtk_label_new("file(s)");
+ gtk_misc_set_alignment(GTK_MISC(stop_files_lb), 0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(multi_tb), stop_files_lb, 2, 3, row, row+1);
+ row++;
+
+ /* Capture limits frame */
+ limit_fr = gtk_frame_new("Stop Capture ...");
+ gtk_container_add(GTK_CONTAINER(left_vb), limit_fr);
+
+ limit_vb = gtk_vbox_new(FALSE, 3);
+ gtk_container_border_width(GTK_CONTAINER(limit_vb), 5);
+ gtk_container_add(GTK_CONTAINER(limit_fr), limit_vb);
+
+ /* limits table */
+ limit_tb = gtk_table_new(3, 3, FALSE);
+ gtk_table_set_row_spacings(GTK_TABLE(limit_tb), 1);
+ gtk_table_set_col_spacings(GTK_TABLE(limit_tb), 3);
+ gtk_box_pack_start(GTK_BOX(limit_vb), limit_tb, FALSE, FALSE, 0);
+ row = 0;
+
+ /* Packet count row */
+ stop_packets_cb = gtk_check_button_new_with_label("... after");
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_packets_cb),
+ capture_opts.has_autostop_packets);
+ SIGNAL_CONNECT(stop_packets_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, stop_packets_cb,
+ "Stop capturing after the given number of packets have been captured.", NULL);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_packets_cb, 0, 1, row, row+1);
+
+ stop_packets_adj = (GtkAdjustment *) gtk_adjustment_new((gfloat)capture_opts.autostop_packets,
+ 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);
+ stop_packets_sb = gtk_spin_button_new (stop_packets_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_packets_sb), TRUE);
+ WIDGET_SET_SIZE(stop_packets_sb, 80, -1);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_packets_sb, 1, 2, row, row+1);
+
+ stop_packets_lb = gtk_label_new("packet(s)");
+ gtk_misc_set_alignment(GTK_MISC(stop_packets_lb), 0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_packets_lb, 2, 3, row, row+1);
+ row++;
+
+ /* Filesize row */
+ stop_filesize_cb = gtk_check_button_new_with_label("... after");
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_filesize_cb),
+ capture_opts.has_autostop_filesize);
+ SIGNAL_CONNECT(stop_filesize_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, stop_filesize_cb,
+ "Stop capturing after the given amount of capture data has been captured.", NULL);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_filesize_cb, 0, 1, row, row+1);
+
+ stop_filesize_adj = (GtkAdjustment *) gtk_adjustment_new(0.0,
+ 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);
+ stop_filesize_sb = gtk_spin_button_new (stop_filesize_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_filesize_sb), TRUE);
+ WIDGET_SET_SIZE(stop_filesize_sb, 80, -1);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_filesize_sb, 1, 2, row, row+1);
+
+ stop_filesize_om = size_unit_option_menu_new(capture_opts.autostop_filesize);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_filesize_om, 2, 3, row, row+1);
+
+ value = size_unit_option_menu_set_value(capture_opts.autostop_filesize);
+ gtk_adjustment_set_value(stop_filesize_adj, (gfloat) value);
+
+ row++;
+
+ /* Duration row */
+ stop_duration_cb = gtk_check_button_new_with_label("... after");
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stop_duration_cb),
+ capture_opts.has_autostop_duration);
+ SIGNAL_CONNECT(stop_duration_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, stop_duration_cb,
+ "Stop capturing after the given time is exceeded.", NULL);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_duration_cb, 0, 1, row, row+1);
+
+ stop_duration_adj = (GtkAdjustment *) gtk_adjustment_new(0.0,
+ 1, (gfloat)INT_MAX, 1.0, 10.0, 0.0);
+ stop_duration_sb = gtk_spin_button_new (stop_duration_adj, 0, 0);
+ gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (stop_duration_sb), TRUE);
+ WIDGET_SET_SIZE(stop_duration_sb, 80, -1);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_duration_sb, 1, 2, row, row+1);
+
+ stop_duration_om = time_unit_option_menu_new(capture_opts.autostop_duration);
+ gtk_table_attach_defaults(GTK_TABLE(limit_tb), stop_duration_om, 2, 3, row, row+1);
+
+ value = time_unit_option_menu_convert_value(capture_opts.autostop_duration);
+ gtk_adjustment_set_value(stop_duration_adj, (gfloat) value);
+ row++;
+
+ /* Display-related options frame */
+ display_fr = gtk_frame_new("Display Options");
+ gtk_container_add(GTK_CONTAINER(right_vb), display_fr);
+
+ display_vb = gtk_vbox_new(FALSE, 0);
+ gtk_container_border_width(GTK_CONTAINER(display_vb), 5);
+ gtk_container_add(GTK_CONTAINER(display_fr), display_vb);
+
+ /* "Update display in real time" row */
+ sync_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(
+ "_Update list of packets in real time", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(sync_cb),
+ capture_opts.sync_mode);
+ SIGNAL_CONNECT(sync_cb, "toggled", capture_prep_adjust_sensitivity, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, sync_cb,
+ "Using this option will show the captured packets immediately on the main screen. "
+ "Please note: this will slow down capturing, so increased packet drops might appear.", NULL);
+ gtk_container_add(GTK_CONTAINER(display_vb), sync_cb);
+
+ /* "Auto-scroll live update" row */
+ auto_scroll_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(
+ "_Automatic scrolling in live capture", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(auto_scroll_cb), auto_scroll_live);
+ gtk_tooltips_set_tip(tooltips, auto_scroll_cb,
+ "This will scroll the \"Packet List\" automatically to the latest captured packet, "
+ "when the \"Update List of packets in real time\" option is used.", NULL);
+ gtk_container_add(GTK_CONTAINER(display_vb), auto_scroll_cb);
+
+ /* "Hide capture info" row */
+ hide_info_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(
+ "_Hide capture info dialog", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(hide_info_cb), !capture_opts.show_info);
+ gtk_tooltips_set_tip(tooltips, hide_info_cb,
+ "Hide the capture info dialog while capturing.", NULL);
+ gtk_container_add(GTK_CONTAINER(display_vb), hide_info_cb);
+
+ /* Name Resolution frame */
+ resolv_fr = gtk_frame_new("Name Resolution");
+ gtk_container_add(GTK_CONTAINER(right_vb), resolv_fr);
+
+ resolv_vb = gtk_vbox_new(FALSE, 0);
+ gtk_container_border_width(GTK_CONTAINER(resolv_vb), 5);
+ gtk_container_add(GTK_CONTAINER(resolv_fr), resolv_vb);
+
+ m_resolv_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(
+ "Enable _MAC name resolution", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(m_resolv_cb),
+ g_resolv_flags & RESOLV_MAC);
+ gtk_tooltips_set_tip(tooltips, m_resolv_cb,
+ "Perform MAC layer name resolution while capturing.", NULL);
+ gtk_container_add(GTK_CONTAINER(resolv_vb), m_resolv_cb);
+
+ n_resolv_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(
+ "Enable _network name resolution", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(n_resolv_cb),
+ g_resolv_flags & RESOLV_NETWORK);
+ gtk_tooltips_set_tip(tooltips, n_resolv_cb,
+ "Perform network layer name resolution while capturing.", NULL);
+ gtk_container_add(GTK_CONTAINER(resolv_vb), n_resolv_cb);
+
+ t_resolv_cb = CHECK_BUTTON_NEW_WITH_MNEMONIC(
+ "Enable _transport name resolution", accel_group);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(t_resolv_cb),
+ g_resolv_flags & RESOLV_TRANSPORT);
+ gtk_tooltips_set_tip(tooltips, t_resolv_cb,
+ "Perform transport layer name resolution while capturing.", NULL);
+ gtk_container_add(GTK_CONTAINER(resolv_vb), t_resolv_cb);
+
+ /* Button row: OK and cancel buttons */
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
+ gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);
+
+ ok_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_OK);
+ SIGNAL_CONNECT(ok_bt, "clicked", capture_prep_ok_cb, cap_open_w);
+ gtk_tooltips_set_tip(tooltips, ok_bt,
+ "Start the capture process.", NULL);
+
+ cancel_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CANCEL);
+ gtk_tooltips_set_tip(tooltips, cancel_bt,
+ "Cancel and exit dialog.", NULL);
+ window_set_cancel_button(cap_open_w, cancel_bt, window_cancel_button_cb);
+
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ gtk_tooltips_set_tip(tooltips, help_bt,
+ "Show help about capturing.", NULL);
+ SIGNAL_CONNECT(help_bt, "clicked", help_topic_cb, "Capturing");
+
+ gtk_widget_grab_default(ok_bt);
+
+ /* Attach pointers to needed widgets to the capture prefs window/object */
+ OBJECT_SET_DATA(cap_open_w, E_CAP_IFACE_KEY, if_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_SNAP_CB_KEY, snap_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_SNAP_SB_KEY, snap_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_LT_OM_KEY, linktype_om);
+#ifdef _WIN32
+ OBJECT_SET_DATA(cap_open_w, E_CAP_BUFFER_SIZE_SB_KEY, buffer_size_sb);
+#endif
+ OBJECT_SET_DATA(cap_open_w, E_CAP_PROMISC_KEY, promisc_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_FILT_KEY, filter_te);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_TE_KEY, file_te);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_MULTI_FILES_ON_CB_KEY, multi_files_on_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_RING_NBF_CB_KEY, ringbuffer_nbf_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_RING_NBF_SB_KEY, ringbuffer_nbf_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_RING_NBF_LB_KEY, ringbuffer_nbf_lb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_RING_FILESIZE_CB_KEY, ring_filesize_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_RING_FILESIZE_SB_KEY, ring_filesize_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_RING_FILESIZE_OM_KEY, ring_filesize_om);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_DURATION_CB_KEY, file_duration_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_DURATION_SB_KEY, file_duration_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_FILE_DURATION_OM_KEY, file_duration_om);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_SYNC_KEY, sync_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_AUTO_SCROLL_KEY, auto_scroll_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_HIDE_INFO_KEY, hide_info_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_PACKETS_CB_KEY, stop_packets_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_PACKETS_SB_KEY, stop_packets_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_PACKETS_LB_KEY, stop_packets_lb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILESIZE_CB_KEY, stop_filesize_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILESIZE_SB_KEY, stop_filesize_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILESIZE_OM_KEY, stop_filesize_om);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_DURATION_CB_KEY, stop_duration_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_DURATION_SB_KEY, stop_duration_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_DURATION_OM_KEY, stop_duration_om);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILES_CB_KEY, stop_files_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILES_SB_KEY, stop_files_sb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_STOP_FILES_LB_KEY, stop_files_lb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_M_RESOLVE_KEY, m_resolv_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_N_RESOLVE_KEY, n_resolv_cb);
+ OBJECT_SET_DATA(cap_open_w, E_CAP_T_RESOLVE_KEY, t_resolv_cb);
+
+ /* Set the sensitivity of various widgets as per the settings of other
+ widgets. */
+ capture_prep_adjust_sensitivity(NULL, cap_open_w);
+
+ /* Catch the "activate" signal on the text
+ entries, so that if the user types Return there, we act as if the
+ "OK" button had been selected, as happens if Return is typed if some
+ widget that *doesn't* handle the Return key has the input focus. */
+ dlg_set_activate(GTK_COMBO(if_cb)->entry, ok_bt);
+ dlg_set_activate(filter_te, ok_bt);
+ dlg_set_activate(file_te, ok_bt);
+
+ /* XXX - why does not
+
+ gtk_widget_grab_focus(if_cb);
+
+ give the initial focus to the "Interface" combo box?
+
+ Or should I phrase that as "why does GTK+ continually frustrate
+ attempts to make GUIs driveable from the keyboard?" We have to
+ go catch the activate signal on every single GtkEntry widget
+ (rather than having widgets whose activate signal is *not*
+ caught not catch the Return keystroke, so that it passes on,
+ ultimately, to the window, which can activate the default
+ widget, i.e. the "OK" button); we have to catch the "key_press_event"
+ signal and have the handler check for ESC, so that we can have ESC
+ activate the "Cancel" button; in order to support Alt+<key> mnemonics
+ for buttons and the like, we may have to construct an accelerator
+ group by hand and set up the accelerators by hand (if that even
+ works - I've not tried it yet); we have to do a "gtk_widget_grab_focus()"
+ to keep some container widget from getting the initial focus, so that
+ you don't have to tab into the first widget in order to start typing
+ in it; and it now appears that you simply *can't* make a combo box
+ get the initial focus, at least not in the obvious fashion. Sigh.... */
+
+ SIGNAL_CONNECT(cap_open_w, "delete_event", window_delete_event_cb, NULL);
+ SIGNAL_CONNECT(cap_open_w, "destroy", capture_prep_destroy_cb, NULL);
+
+ gtk_widget_show_all(cap_open_w);
+ window_present(cap_open_w);
+}
+
+static void
+capture_prep_answered_cb(gpointer dialog _U_, gint btn, gpointer data)
+{
+ switch(btn) {
+ case(ESD_BTN_SAVE):
+ /* save file first */
+ file_save_as_cmd(after_save_capture_dialog, data);
+ break;
+ case(ESD_BTN_DONT_SAVE):
+ capture_prep();
+ break;
+ case(ESD_BTN_CANCEL):
+ break;
+ default:
+ g_assert_not_reached();
+ }
+}
+
+void
+capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ gpointer dialog;
+
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
+ /* user didn't saved his current file, ask him */
+ dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_SAVE_DONTSAVE_CANCEL,
+ PRIMARY_TEXT_START "Save capture file before starting a new capture?" PRIMARY_TEXT_END "\n\n"
+ "If you start a new capture without saving, your current capture data will\nbe discarded.");
+ simple_dialog_set_cb(dialog, capture_prep_answered_cb, NULL);
+ } else {
+ /* unchanged file, just capture a new one */
+ capture_prep();
+ }
+}
+
+static void
+select_link_type_cb(GtkWidget *w, gpointer data)
+{
+ int new_linktype = GPOINTER_TO_INT(data);
+ GtkWidget *linktype_om = OBJECT_GET_DATA(w, E_CAP_LT_OM_KEY);
+ int old_linktype = GPOINTER_TO_INT(OBJECT_GET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY));
+
+ if (old_linktype != new_linktype)
+ OBJECT_SET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY, GINT_TO_POINTER(new_linktype));
+}
+
+static void
+capture_prep_file_cb(GtkWidget *file_bt, GtkWidget *file_te)
+{
+ file_selection_browse(file_bt, file_te, "Ethereal: Specify a Capture File", FILE_SELECTION_OPEN);
+}
+
+
+static void
+capture_prep_ok_cb(GtkWidget *ok_bt _U_, gpointer parent_w) {
+ GtkWidget *if_cb, *snap_cb, *snap_sb, *promisc_cb, *filter_te,
+ *file_te, *multi_files_on_cb, *ringbuffer_nbf_sb, *ringbuffer_nbf_cb,
+ *linktype_om, *sync_cb, *auto_scroll_cb, *hide_info_cb,
+ *stop_packets_cb, *stop_packets_sb,
+ *stop_filesize_cb, *stop_filesize_sb, *stop_filesize_om,
+ *stop_duration_cb, *stop_duration_sb, *stop_duration_om,
+ *ring_filesize_cb, *ring_filesize_sb, *ring_filesize_om,
+ *file_duration_cb, *file_duration_sb, *file_duration_om,
+ *stop_files_cb, *stop_files_sb,
+ *m_resolv_cb, *n_resolv_cb, *t_resolv_cb;
+#ifdef _WIN32
+ GtkWidget *buffer_size_sb;
+#endif
+ gchar *entry_text;
+ gchar *if_text;
+ gchar *if_name;
+ const gchar *filter_text;
+ gchar *save_file;
+ const gchar *g_save_file;
+ gchar *cf_name;
+ gchar *dirname;
+ gint32 tmp;
+
+ if_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_IFACE_KEY);
+ snap_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_CB_KEY);
+ snap_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_SB_KEY);
+ linktype_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_LT_OM_KEY);
+#ifdef _WIN32
+ buffer_size_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_BUFFER_SIZE_SB_KEY);
+#endif
+ promisc_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_PROMISC_KEY);
+ filter_te = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILT_KEY);
+ file_te = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_TE_KEY);
+ multi_files_on_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_MULTI_FILES_ON_CB_KEY);
+ ringbuffer_nbf_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_CB_KEY);
+ ringbuffer_nbf_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_SB_KEY);
+ ring_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_CB_KEY);
+ ring_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_SB_KEY);
+ ring_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_OM_KEY);
+ file_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_CB_KEY);
+ file_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_SB_KEY);
+ file_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_OM_KEY);
+ sync_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SYNC_KEY);
+ auto_scroll_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_AUTO_SCROLL_KEY);
+ hide_info_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_HIDE_INFO_KEY);
+ stop_packets_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_CB_KEY);
+ stop_packets_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_SB_KEY);
+ stop_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_CB_KEY);
+ stop_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_SB_KEY);
+ stop_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_OM_KEY);
+ stop_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_CB_KEY);
+ stop_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_SB_KEY);
+ stop_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_OM_KEY);
+ stop_files_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_CB_KEY);
+ stop_files_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_SB_KEY);
+ m_resolv_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_M_RESOLVE_KEY);
+ n_resolv_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_N_RESOLVE_KEY);
+ t_resolv_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_T_RESOLVE_KEY);
+
+ entry_text =
+ g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry)));
+ if_text = g_strstrip(entry_text);
+ if_name = get_if_name(if_text);
+ if (*if_name == '\0') {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ "You didn't specify an interface on which to capture packets.");
+ g_free(entry_text);
+ return;
+ }
+ if (cfile.iface)
+ g_free(cfile.iface);
+ cfile.iface = g_strdup(if_name);
+ g_free(entry_text);
+
+ capture_opts.linktype =
+ GPOINTER_TO_INT(OBJECT_GET_DATA(linktype_om, E_CAP_OM_LT_VALUE_KEY));
+
+#ifdef _WIN32
+ capture_opts.buffer_size =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(buffer_size_sb));
+#endif
+
+ capture_opts.has_snaplen =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(snap_cb));
+ if (capture_opts.has_snaplen) {
+ capture_opts.snaplen =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(snap_sb));
+ if (capture_opts.snaplen < 1)
+ capture_opts.snaplen = WTAP_MAX_PACKET_SIZE;
+ else if (capture_opts.snaplen < MIN_PACKET_SIZE)
+ capture_opts.snaplen = MIN_PACKET_SIZE;
+ }
+
+ capture_opts.promisc_mode =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(promisc_cb));
+
+ /* XXX - don't try to get clever and set "cfile.filter" to NULL if the
+ filter string is empty, as an indication that we don't have a filter
+ and thus don't have to set a filter when capturing - the version of
+ libpcap in Red Hat Linux 6.1, and versions based on later patches
+ in that series, don't bind the AF_PACKET socket to an interface
+ until a filter is set, which means they aren't bound at all if
+ no filter is set, which means no packets arrive as input on that
+ socket, which means Ethereal never sees any packets. */
+ filter_text = gtk_entry_get_text(GTK_ENTRY(filter_te));
+ if (cfile.cfilter)
+ g_free(cfile.cfilter);
+ g_assert(filter_text != NULL);
+ cfile.cfilter = g_strdup(filter_text);
+
+ g_save_file = gtk_entry_get_text(GTK_ENTRY(file_te));
+ if (g_save_file && g_save_file[0]) {
+ /* User specified a file to which the capture should be written. */
+ save_file = g_strdup(g_save_file);
+ /* Save the directory name for future file dialogs. */
+ cf_name = g_strdup(g_save_file);
+ dirname = get_dirname(cf_name); /* Overwrites cf_name */
+ set_last_open_dir(dirname);
+ g_free(cf_name);
+ } else {
+ /* User didn't specify a file; save to a temporary file. */
+ save_file = NULL;
+ }
+
+ capture_opts.has_autostop_packets =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_packets_cb));
+ if (capture_opts.has_autostop_packets)
+ capture_opts.autostop_packets =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_packets_sb));
+
+ capture_opts.has_autostop_duration =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_duration_cb));
+ if (capture_opts.has_autostop_duration) {
+ capture_opts.autostop_duration =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_duration_sb));
+ capture_opts.autostop_duration =
+ time_unit_option_menu_get_value(stop_duration_om, capture_opts.autostop_duration);
+ }
+
+ capture_opts.sync_mode =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sync_cb));
+
+ auto_scroll_live =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(auto_scroll_cb));
+
+ capture_opts.show_info =
+ !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hide_info_cb));
+
+ g_resolv_flags |= g_resolv_flags & RESOLV_CONCURRENT;
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_resolv_cb)))
+ g_resolv_flags |= RESOLV_MAC;
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(n_resolv_cb)))
+ g_resolv_flags |= RESOLV_NETWORK;
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(t_resolv_cb)))
+ g_resolv_flags |= RESOLV_TRANSPORT;
+
+ capture_opts.has_ring_num_files =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb));
+
+ capture_opts.ring_num_files =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(ringbuffer_nbf_sb));
+ if (capture_opts.ring_num_files > RINGBUFFER_MAX_NUM_FILES)
+ capture_opts.ring_num_files = RINGBUFFER_MAX_NUM_FILES;
+#if RINGBUFFER_MIN_NUM_FILES > 0
+ else if (capture_opts.ring_num_files < RINGBUFFER_MIN_NUM_FILES)
+ capture_opts.ring_num_files = RINGBUFFER_MIN_NUM_FILES;
+#endif
+
+ capture_opts.multi_files_on =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(multi_files_on_cb));
+
+ if(capture_opts.sync_mode)
+ capture_opts.multi_files_on = FALSE;
+
+ if (capture_opts.multi_files_on) {
+ capture_opts.has_autostop_filesize =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ring_filesize_cb));
+ if (capture_opts.has_autostop_filesize) {
+ tmp = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(ring_filesize_sb));
+ tmp = size_unit_option_menu_convert_value(ring_filesize_om, tmp);
+ if(tmp != 0) {
+ capture_opts.autostop_filesize = tmp;
+ } else {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ PRIMARY_TEXT_START "Multiple files: Requested filesize too large!\n\n" PRIMARY_TEXT_END
+ "The setting \"Next file every x byte(s)\" can't be greater than %u bytes (2GB).", G_MAXINT);
+ return;
+ }
+ }
+
+ /* test if the settings are ok for a ringbuffer */
+ if (save_file == NULL) {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ PRIMARY_TEXT_START "Multiple files: No capture file name given!\n\n" PRIMARY_TEXT_END
+ "You must specify a filename if you want to use multiple files.");
+ return;
+ } else if (!capture_opts.has_autostop_filesize) {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ PRIMARY_TEXT_START "Multiple files: No file limit given!\n\n" PRIMARY_TEXT_END
+ "You must specify a file size at which is switched to the next capture file\n"
+ "if you want to use multiple files.");
+ g_free(save_file);
+ return;
+ }
+ } else {
+ capture_opts.has_autostop_filesize =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_filesize_cb));
+ if (capture_opts.has_autostop_filesize) {
+ tmp = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_filesize_sb));
+ tmp = size_unit_option_menu_convert_value(stop_filesize_om, tmp);
+ if(tmp != 0) {
+ capture_opts.autostop_filesize = tmp;
+ } else {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ PRIMARY_TEXT_START "Stop Capture: Requested filesize too large!\n\n" PRIMARY_TEXT_END
+ "The setting \"... after x byte(s)\" can't be greater than %u bytes (2GB).", G_MAXINT);
+ return;
+ }
+ }
+ }
+
+ capture_opts.has_file_duration =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(file_duration_cb));
+ if (capture_opts.has_file_duration) {
+ capture_opts.file_duration =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(file_duration_sb));
+ capture_opts.file_duration =
+ time_unit_option_menu_get_value(file_duration_om, capture_opts.file_duration);
+ }
+
+ capture_opts.has_autostop_files =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_files_cb));
+ if (capture_opts.has_autostop_files)
+ capture_opts.autostop_files =
+ gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(stop_files_sb));
+
+ window_destroy(GTK_WIDGET(parent_w));
+
+ do_capture(save_file);
+ if (save_file != NULL)
+ g_free(save_file);
+}
+
+static void
+capture_prep_destroy_cb(GtkWidget *win, gpointer user_data _U_)
+{
+ GtkWidget *fs;
+
+ /* Is there a file selection dialog associated with this
+ Capture Options dialog? */
+ fs = OBJECT_GET_DATA(win, E_FILE_SEL_DIALOG_PTR_KEY);
+
+ if (fs != NULL) {
+ /* Yes. Destroy it. */
+ window_destroy(fs);
+ }
+
+ /* Note that we no longer have a "Capture Options" dialog box. */
+ cap_open_w = NULL;
+}
+
+static void
+capture_prep_interface_changed_cb(GtkWidget *entry, gpointer argp)
+{
+ GtkWidget *linktype_om = argp;
+
+ set_link_type_list(linktype_om, entry);
+}
+
+/*
+ * Adjust the sensitivity of various widgets as per the current setting
+ * of other widgets.
+ */
+static void
+capture_prep_adjust_sensitivity(GtkWidget *tb _U_, gpointer parent_w)
+{
+ GtkWidget *if_cb,
+ *snap_cb, *snap_sb,
+ *multi_files_on_cb, *ringbuffer_nbf_cb, *ringbuffer_nbf_sb, *ringbuffer_nbf_lb,
+ *ring_filesize_cb, *ring_filesize_sb, *ring_filesize_om,
+ *file_duration_cb, *file_duration_sb, *file_duration_om,
+ *sync_cb, *auto_scroll_cb, *hide_info_cb,
+ *stop_packets_cb, *stop_packets_sb, *stop_packets_lb,
+ *stop_filesize_cb, *stop_filesize_sb, *stop_filesize_om,
+ *stop_duration_cb, *stop_duration_sb, *stop_duration_om,
+ *stop_files_cb, *stop_files_sb, *stop_files_lb;
+
+
+ if_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_IFACE_KEY);
+ snap_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_CB_KEY);
+ snap_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SNAP_SB_KEY);
+ multi_files_on_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_MULTI_FILES_ON_CB_KEY);
+ ringbuffer_nbf_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_CB_KEY);
+ ringbuffer_nbf_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_SB_KEY);
+ ringbuffer_nbf_lb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_NBF_LB_KEY);
+ ring_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_CB_KEY);
+ ring_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_SB_KEY);
+ ring_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_RING_FILESIZE_OM_KEY);
+ file_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_CB_KEY);
+ file_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_SB_KEY);
+ file_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_FILE_DURATION_OM_KEY);
+ sync_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_SYNC_KEY);
+ auto_scroll_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_AUTO_SCROLL_KEY);
+ hide_info_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_HIDE_INFO_KEY);
+ stop_packets_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_CB_KEY);
+ stop_packets_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_SB_KEY);
+ stop_packets_lb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_PACKETS_LB_KEY);
+ stop_filesize_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_CB_KEY);
+ stop_filesize_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_SB_KEY);
+ stop_filesize_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILESIZE_OM_KEY);
+ stop_duration_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_CB_KEY);
+ stop_duration_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_SB_KEY);
+ stop_duration_om = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_DURATION_OM_KEY);
+ stop_files_cb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_CB_KEY);
+ stop_files_sb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_SB_KEY);
+ stop_files_lb = (GtkWidget *) OBJECT_GET_DATA(parent_w, E_CAP_STOP_FILES_LB_KEY);
+
+ /* The snapshot length spinbox is sensitive if the "Limit each packet
+ to" checkbox is on. */
+ gtk_widget_set_sensitive(GTK_WIDGET(snap_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(snap_cb)));
+
+
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sync_cb))) {
+ /* "Update list of packets in real time" captures enabled; we don't
+ support ring buffer mode for those captures, so turn ring buffer
+ mode off if it's on, and make its toggle button, and the spin
+ button for the number of ring buffer files (and the spin button's
+ label), insensitive. */
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(multi_files_on_cb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(multi_files_on_cb), FALSE);
+
+ /* Auto-scroll mode is meaningful only in "Update list of packets
+ in real time" captures, so make its toggle button sensitive. */
+ gtk_widget_set_sensitive(GTK_WIDGET(auto_scroll_cb), TRUE);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(hide_info_cb), TRUE);
+ } else {
+ /* "Update list of packets in real time" captures disabled; that
+ means ring buffer mode is OK, so make its toggle button
+ sensitive. */
+ gtk_widget_set_sensitive(GTK_WIDGET(multi_files_on_cb), TRUE);
+
+ /* Auto-scroll mode is meaningful only in "Update list of packets
+ in real time" captures, so make its toggle button insensitive. */
+ gtk_widget_set_sensitive(GTK_WIDGET(auto_scroll_cb), FALSE);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(hide_info_cb), FALSE);
+ }
+
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(multi_files_on_cb))) {
+ /* Ring buffer mode enabled. */
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ring_filesize_cb), TRUE);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_cb), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb)));
+ gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_lb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ringbuffer_nbf_cb)));
+
+ /* The ring filesize spinbox is sensitive if the "Next capture file
+ after N kilobytes" checkbox is on. */
+ gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_cb), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ring_filesize_cb)));
+ gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_om),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ring_filesize_cb)));
+
+ /* The ring duration spinbox is sensitive if the "Next capture file
+ after N seconds" checkbox is on. */
+ gtk_widget_set_sensitive(GTK_WIDGET(file_duration_cb), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(file_duration_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(file_duration_cb)));
+ gtk_widget_set_sensitive(GTK_WIDGET(file_duration_om),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(file_duration_cb)));
+
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_cb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_sb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_om), FALSE);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_files_cb), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_files_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_files_cb)));
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_files_lb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_files_cb)));
+ } else {
+ /* Ring buffer mode disabled. */
+ gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_cb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_sb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ringbuffer_nbf_lb), FALSE);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_cb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_sb),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(ring_filesize_om),FALSE);
+
+ gtk_widget_set_sensitive(GTK_WIDGET(file_duration_cb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(file_duration_sb),FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(file_duration_om),FALSE);
+
+ /* The maximum file size spinbox is sensitive if the "Stop capture
+ after N kilobytes" checkbox is on. */
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_cb), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_filesize_cb)));
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_filesize_om),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_filesize_cb)));
+
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_files_cb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_files_sb), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_files_lb), FALSE);
+ }
+
+ /* The maximum packet count spinbox is sensitive if the "Stop capture
+ after N packets" checkbox is on. */
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_packets_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_packets_cb)));
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_packets_lb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_packets_cb)));
+
+ /* The capture duration spinbox is sensitive if the "Stop capture
+ after N seconds" checkbox is on. */
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_duration_sb),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_duration_cb)));
+ gtk_widget_set_sensitive(GTK_WIDGET(stop_duration_om),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_duration_cb)));
+}
+
+#endif /* HAVE_LIBPCAP */
-/* capture_dlg.h\r
- * Definitions for packet capture windows\r
- *\r
- * $Id: capture_dlg.h,v 1.6 2004/06/04 20:05:30 ulfl Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@zing.org>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#ifndef __CAPTURE_DLG_H__\r
-#define __CAPTURE_DLG_H__\r
-\r
-/** @file\r
- * "Capture Options" dialog box.\r
- * @ingroup dialog_group\r
- */\r
-\r
-/** User requested the "Capture Options" dialog box by menu or toolbar.\r
- *\r
- * @param widget parent widget (unused)\r
- * @param data unused\r
- */\r
-void capture_prep_cb(GtkWidget *widget, gpointer data);\r
-\r
-/** User requested capture stop by menu or toolbar.\r
- *\r
- * @param widget parent widget (unused)\r
- * @param data unused\r
- */\r
-void capture_stop_cb(GtkWidget *widget, gpointer data);\r
-\r
-/** Create the "Capture Options" dialog box.\r
- */\r
-void capture_prep(void);\r
-\r
-/** User requested the "Capture Interfaces" dialog box by menu or toolbar.\r
- *\r
- * @param widget parent widget (unused)\r
- * @param data unused\r
- */\r
-void\r
-capture_if_cb(GtkWidget *widget, gpointer data);\r
-\r
-/** User requested the "Capture Interfaces" dialog box by menu or toolbar.\r
- *\r
- * @param capture_in_progress capture is in progress\r
- */\r
-void\r
-set_capture_if_dialog_for_capture_in_progress(gboolean capture_in_progress);\r
-\r
-#endif /* capture.h */\r
+/* capture_dlg.h
+ * Definitions for packet capture windows
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@zing.org>
+ * 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 __CAPTURE_DLG_H__
+#define __CAPTURE_DLG_H__
+
+/** @file
+ * "Capture Options" dialog box.
+ * @ingroup dialog_group
+ */
+
+/** User requested the "Capture Options" dialog box by menu or toolbar.
+ *
+ * @param widget parent widget (unused)
+ * @param data unused
+ */
+void capture_prep_cb(GtkWidget *widget, gpointer data);
+
+/** User requested capture stop by menu or toolbar.
+ *
+ * @param widget parent widget (unused)
+ * @param data unused
+ */
+void capture_stop_cb(GtkWidget *widget, gpointer data);
+
+/** Create the "Capture Options" dialog box.
+ */
+void capture_prep(void);
+
+/** User requested the "Capture Interfaces" dialog box by menu or toolbar.
+ *
+ * @param widget parent widget (unused)
+ * @param data unused
+ */
+void
+capture_if_cb(GtkWidget *widget, gpointer data);
+
+/** User requested the "Capture Interfaces" dialog box by menu or toolbar.
+ *
+ * @param capture_in_progress capture is in progress
+ */
+void
+set_capture_if_dialog_for_capture_in_progress(gboolean capture_in_progress);
+
+#endif /* capture.h */
-/* capture_if_dlg.c\r
- * Routines for the capture interface dialog\r
- *\r
- * $Id: capture_if_dlg.c,v 1.254 2004/06/30 06:58:56 guy Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-/* With MSVC and a libethereal.dll this file needs to import some variables \r
- in a special way. Therefore _NEED_VAR_IMPORT_ is defined. */\r
-/*#define _NEED_VAR_IMPORT_*/\r
-\r
-#ifdef HAVE_CONFIG_H\r
-# include "config.h"\r
-#endif\r
-\r
-#ifdef HAVE_LIBPCAP\r
-\r
-#ifdef HAVE_SYS_STAT_H\r
-# include <sys/stat.h>\r
-#endif\r
-\r
-#ifdef HAVE_SYS_WAIT_H\r
-# include <sys/wait.h>\r
-#endif\r
-\r
-\r
-#include <pcap.h>\r
-\r
-#include <gtk/gtk.h>\r
-\r
-#include "globals.h"\r
-#include "pcap-util.h"\r
-\r
-#ifdef _WIN32\r
-#include "capture-wpcap.h"\r
-#endif\r
-\r
-#include "compat_macros.h"\r
-#include "simple_dialog.h"\r
-#include "capture_dlg.h"\r
-\r
-#include "ui_util.h"\r
-#include "dlg_utils.h"\r
-\r
-#include "wtap.h"\r
-#include "capture.h"\r
-\r
-\r
-extern char *iptos(u_long in);\r
-\r
-extern gboolean is_capture_in_progress(void);\r
-\r
-/*\r
- * Keep a static pointer to the current "Capture Interfaces" window, if\r
- * any, so that if somebody tries to do "Capture:Start" while there's\r
- * already a "Capture Interfaces" window up, we just pop up the existing\r
- * one, rather than creating a new one.\r
- */\r
-static GtkWidget *cap_if_w;\r
-\r
-GList *if_data = NULL;\r
-\r
-guint timer_id;\r
-\r
-GtkWidget *stop_bt;\r
-\r
-GList *if_list;\r
-\r
-/*\r
- * Timeout, in milliseconds, for reads from the stream of captured packets.\r
- */\r
-#define CAP_READ_TIMEOUT 250\r
-\r
-\r
-/* the "runtime" data of one interface */\r
-typedef struct if_dlg_data_s {\r
- pcap_t *pch;\r
- GtkWidget *device_lb;\r
- GtkWidget *descr_lb;\r
- GtkWidget *ip_lb;\r
- GtkWidget *curr_lb;\r
- GtkWidget *last_lb;\r
- GtkWidget *capture_bt;\r
- GtkWidget *prepare_bt;\r
- guint32 last_packets;\r
- gchar *device;\r
-} if_dlg_data_t;\r
-\r
-void update_if(if_dlg_data_t *if_dlg_data);\r
-\r
-\r
-/* start capture button was pressed */\r
-static void\r
-capture_do_cb(GtkWidget *capture_bt _U_, gpointer if_data)\r
-{\r
- if_dlg_data_t *if_dlg_data = if_data;\r
-\r
- if (cfile.iface)\r
- g_free(cfile.iface);\r
-\r
- cfile.iface = g_strdup(if_dlg_data->device);\r
-\r
- do_capture(NULL /* save_file */);\r
-}\r
-\r
-\r
-/* prepare capture button was pressed */\r
-static void\r
-capture_prepare_cb(GtkWidget *prepare_bt _U_, gpointer if_data)\r
-{\r
- if_dlg_data_t *if_dlg_data = if_data;\r
-\r
- if (cfile.iface)\r
- g_free(cfile.iface);\r
-\r
- cfile.iface = g_strdup(if_dlg_data->device);\r
-\r
- capture_prep_cb(NULL, NULL);\r
-}\r
-\r
-\r
-/* open a single interface */\r
-void\r
-open_if(gchar *name, if_dlg_data_t *if_dlg_data)\r
-{\r
- gchar open_err_str[PCAP_ERRBUF_SIZE];\r
-\r
- if_dlg_data->pch = pcap_open_live(name,\r
- WTAP_MAX_PACKET_SIZE,\r
- capture_opts.promisc_mode, CAP_READ_TIMEOUT,\r
- open_err_str);\r
-\r
- if (if_dlg_data->pch != NULL) {\r
- update_if(if_dlg_data);\r
- } else {\r
- printf("open_if: %s\n", open_err_str);\r
- gtk_label_set_text(GTK_LABEL(if_dlg_data->curr_lb), "error");\r
- gtk_label_set_text(GTK_LABEL(if_dlg_data->last_lb), "error");\r
- }\r
-}\r
-\r
-/* update a single interface */\r
-void\r
-update_if(if_dlg_data_t *if_dlg_data)\r
-{\r
- struct pcap_stat stats;\r
- gchar *str;\r
- guint diff;\r
-\r
-\r
- /* pcap_stats() stats values differ on libpcap and winpcap!\r
- * libpcap: returns the number of packets since pcap_open_live\r
- * winpcap: returns the number of packets since the last pcap_stats call\r
- */\r
- if (if_dlg_data->pch) {\r
- if(pcap_stats(if_dlg_data->pch, &stats) >= 0) {\r
-#if WIN32\r
- diff = stats.ps_recv - if_dlg_data->last_packets;\r
- if_dlg_data->last_packets = stats.ps_recv;\r
-#else\r
- diff = stats.ps_recv;\r
- if_dlg_data->last_packets = stats.ps_recv + if_dlg_data->last_packets;\r
-#endif \r
-\r
- str = g_strdup_printf("%u", if_dlg_data->last_packets);\r
- gtk_label_set_text(GTK_LABEL(if_dlg_data->curr_lb), str);\r
- g_free(str);\r
- str = g_strdup_printf("%u", diff);\r
- gtk_label_set_text(GTK_LABEL(if_dlg_data->last_lb), str);\r
- g_free(str);\r
-\r
- gtk_widget_set_sensitive(if_dlg_data->curr_lb, diff);\r
- gtk_widget_set_sensitive(if_dlg_data->last_lb, diff);\r
- } else {\r
- gtk_label_set_text(GTK_LABEL(if_dlg_data->curr_lb), "error");\r
- gtk_label_set_text(GTK_LABEL(if_dlg_data->last_lb), "error");\r
- }\r
- }\r
-}\r
-\r
-\r
-/* close a single interface */\r
-void\r
-close_if(if_dlg_data_t *if_dlg_data)\r
-{\r
- if(if_dlg_data->pch)\r
- pcap_close(if_dlg_data->pch);\r
-}\r
-\r
-\r
-\r
-/* update all interfaces */\r
-gboolean\r
-update_all(gpointer data)\r
-{\r
- GList *curr;\r
- int ifs;\r
-\r
-\r
- if(!cap_if_w) {\r
- return FALSE;\r
- }\r
-\r
- for(ifs = 0; (curr = g_list_nth(data, ifs)); ifs++) {\r
- update_if(curr->data);\r
- }\r
-\r
- return TRUE;\r
-}\r
-\r
-\r
-/* a live capture has started or stopped */\r
-void\r
-set_capture_if_dialog_for_capture_in_progress(gboolean capture_in_progress)\r
-{\r
- GList *curr;\r
- int ifs;\r
-\r
- if(cap_if_w) {\r
- gtk_widget_set_sensitive(stop_bt, capture_in_progress);\r
- \r
- for(ifs = 0; (curr = g_list_nth(if_data, ifs)); ifs++) {\r
- if_dlg_data_t *if_dlg_data = curr->data;\r
-\r
- gtk_widget_set_sensitive(if_dlg_data->capture_bt, !capture_in_progress);\r
- gtk_widget_set_sensitive(if_dlg_data->prepare_bt, !capture_in_progress);\r
- } \r
- }\r
-}\r
-\r
-\r
-/* the window was closed, cleanup things */\r
-static void\r
-capture_if_destroy_cb(GtkWidget *win _U_, gpointer user_data _U_)\r
-{\r
- GList *curr;\r
- int ifs;\r
-\r
- gtk_timeout_remove(timer_id);\r
-\r
- for(ifs = 0; (curr = g_list_nth(if_data, ifs)); ifs++) {\r
- if_dlg_data_t *if_dlg_data = curr->data;\r
-\r
- close_if(if_dlg_data);\r
- g_free(curr->data);\r
- }\r
-\r
- if_data = NULL;\r
-\r
- free_interface_list(if_list);\r
-\r
- /* Note that we no longer have a "Capture Options" dialog box. */\r
- cap_if_w = NULL;\r
-}\r
-\r
-\r
-/* start getting capture stats from all interfaces */\r
-void\r
-capture_if_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- GtkWidget *main_vb, *bbox, *close_bt;\r
-\r
- GtkWidget *if_tb;\r
- GtkWidget *if_lb;\r
-#if GTK_MAJOR_VERSION < 2\r
- GtkAccelGroup *accel_group;\r
-#endif\r
- GtkTooltips *tooltips;\r
- int err;\r
- char err_str[PCAP_ERRBUF_SIZE];\r
- gchar *cant_get_if_list_errstr;\r
- int row;\r
- if_dlg_data_t *if_dlg_data;\r
- int ifs;\r
- GList *curr;\r
- if_info_t *if_info;\r
- GSList *curr_ip;\r
- guint32 ip_addr;\r
- GString *if_tool_str = g_string_new("");\r
- gchar *tmp_str;\r
-\r
-\r
- if (cap_if_w != NULL) {\r
- /* There's already a "Capture Interfaces" dialog box; reactivate it. */\r
- reactivate_window(cap_if_w);\r
- return;\r
- }\r
-\r
-#ifdef _WIN32\r
- /* Is WPcap loaded? */\r
- if (!has_wpcap) {\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,\r
- "Unable to load WinPcap (wpcap.dll); Ethereal will not be able\n"\r
- "to capture packets.\n\n"\r
- "In order to capture packets, WinPcap must be installed; see\n"\r
- "\n"\r
- " http://winpcap.polito.it/\n"\r
- "\n"\r
- "or the mirror at\n"\r
- "\n"\r
- " http://winpcap.mirror.ethereal.com/\n"\r
- "\n"\r
- "or the mirror at\n"\r
- "\n"\r
- " http://www.mirrors.wiretapped.net/security/packet-capture/winpcap/\n"\r
- "\n"\r
- "for a downloadable version of WinPcap and for instructions\n"\r
- "on how to install WinPcap.");\r
- return;\r
- }\r
-#endif\r
-\r
- if_list = get_interface_list(&err, err_str);\r
- if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) {\r
- cant_get_if_list_errstr = cant_get_if_list_error_message(err_str);\r
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s",\r
- cant_get_if_list_errstr);\r
- g_free(cant_get_if_list_errstr);\r
- return;\r
- }\r
-\r
- cap_if_w = window_new(GTK_WINDOW_TOPLEVEL, "Ethereal: Capture Interfaces");\r
-\r
- tooltips = gtk_tooltips_new();\r
-\r
-#if GTK_MAJOR_VERSION < 2\r
- /* Accelerator group for the accelerators (or, as they're called in\r
- Windows and, I think, in Motif, "mnemonics"; Alt+<key> is a mnemonic,\r
- Ctrl+<key> is an accelerator). */\r
- accel_group = gtk_accel_group_new();\r
- gtk_window_add_accel_group(GTK_WINDOW(cap_if_w), accel_group);\r
-#endif\r
-\r
- main_vb = gtk_vbox_new(FALSE, 0);\r
- gtk_container_border_width(GTK_CONTAINER(main_vb), 5);\r
- gtk_container_add(GTK_CONTAINER(cap_if_w), main_vb);\r
-\r
-\r
- if_tb = gtk_table_new(6,1, FALSE);\r
- gtk_table_set_row_spacings(GTK_TABLE(if_tb), 3);\r
- gtk_table_set_col_spacings(GTK_TABLE(if_tb), 3);\r
- gtk_container_add(GTK_CONTAINER(main_vb), if_tb);\r
-\r
- row = 0;\r
-\r
-#ifndef WIN32\r
- if_lb = gtk_label_new("Device");\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 0, 1, row, row+1);\r
-#endif\r
-\r
- if_lb = gtk_label_new("Description");\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 1, 2, row, row+1);\r
-\r
- if_lb = gtk_label_new(" IP ");\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 2, 3, row, row+1);\r
-\r
- if_lb = gtk_label_new("Packets");\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 3, 4, row, row+1);\r
-\r
- if_lb = gtk_label_new(" Packets/s ");\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 4, 5, row, row+1);\r
-\r
- stop_bt = BUTTON_NEW_FROM_STOCK(GTK_STOCK_STOP);\r
- gtk_tooltips_set_tip(tooltips, stop_bt, \r
- "Stop a running capture.", NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), stop_bt, 5, 7, row, row+1);\r
- SIGNAL_CONNECT(stop_bt, "clicked", capture_stop_cb, NULL);\r
-\r
- row++;\r
-\r
- for(ifs = 0; (curr = g_list_nth(if_list, ifs)); ifs++) {\r
- g_string_assign(if_tool_str, "");\r
- if_info = curr->data;\r
- if_dlg_data = g_malloc0(sizeof(if_dlg_data_t));\r
-\r
- /* device name */\r
- if_dlg_data->device_lb = gtk_label_new(if_info->name);\r
- if_dlg_data->device = if_info->name;\r
-#ifndef WIN32\r
- gtk_misc_set_alignment(GTK_MISC(if_dlg_data->device_lb), 0.0, 0.5);\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->device_lb, 0, 1, row, row+1);\r
-#endif\r
- g_string_append(if_tool_str, "Device: ");\r
- g_string_append(if_tool_str, if_info->name);\r
- g_string_append(if_tool_str, "\n");\r
-\r
- /* description */\r
- if_dlg_data->descr_lb = gtk_label_new(if_info->description);\r
- gtk_misc_set_alignment(GTK_MISC(if_dlg_data->descr_lb), 0.0, 0.5);\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->descr_lb, 1, 2, row, row+1);\r
-\r
- g_string_append(if_tool_str, "Description: ");\r
- g_string_append(if_tool_str, if_info->description);\r
- g_string_append(if_tool_str, "\n");\r
-\r
- /* IP address */\r
- /* only one IP address will be shown */\r
- g_string_append(if_tool_str, "IP: ");\r
- curr_ip = g_slist_nth(if_info->ip_addr, 0);\r
- if(curr_ip) {\r
- ip_addr = *((guint32 *)curr_ip->data);\r
- if_dlg_data->ip_lb = gtk_label_new(iptos(ip_addr));\r
- g_string_append(if_tool_str, iptos(ip_addr));\r
- } else {\r
- ip_addr = 0;\r
- if_dlg_data->ip_lb = gtk_label_new("unknown");\r
- g_string_append(if_tool_str, "unknown");\r
- }\r
- gtk_widget_set_sensitive(if_dlg_data->ip_lb, ip_addr);\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->ip_lb, 2, 3, row, row+1);\r
- g_string_append(if_tool_str, "\n");\r
-\r
- /* packets */\r
- if_dlg_data->curr_lb = gtk_label_new("-");\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->curr_lb, 3, 4, row, row+1);\r
-\r
- /* packets/s */\r
- if_dlg_data->last_lb = gtk_label_new("-");\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->last_lb, 4, 5, row, row+1);\r
-\r
- /* capture button */\r
- if_dlg_data->capture_bt = gtk_button_new_with_label("Capture");\r
- SIGNAL_CONNECT(if_dlg_data->capture_bt, "clicked", capture_do_cb, if_dlg_data);\r
- tmp_str = g_strdup_printf("Immediately start a capture from this interface:\n\n%s", if_tool_str->str);\r
- gtk_tooltips_set_tip(tooltips, if_dlg_data->capture_bt, \r
- tmp_str, NULL);\r
- g_free(tmp_str);\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->capture_bt, 5, 6, row, row+1);\r
-\r
- /* prepare button */\r
- if_dlg_data->prepare_bt = gtk_button_new_with_label("Prepare");\r
- SIGNAL_CONNECT(if_dlg_data->prepare_bt, "clicked", capture_prepare_cb, if_dlg_data);\r
- gtk_tooltips_set_tip(tooltips, if_dlg_data->prepare_bt, \r
- "Open the capture options dialog with this interface selected.", NULL);\r
- gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->prepare_bt, 6, 7, row, row+1);\r
-\r
- open_if(if_info->name, if_dlg_data);\r
-\r
- if_data = g_list_append(if_data, if_dlg_data);\r
-\r
- row++;\r
- }\r
-\r
- g_string_free(if_tool_str, TRUE);\r
-\r
- /* Button row: close button */\r
- bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);\r
- gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);\r
-\r
- close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);\r
- window_set_cancel_button(cap_if_w, close_bt, window_cancel_button_cb);\r
- gtk_tooltips_set_tip(tooltips, close_bt, "Close this window.", NULL);\r
-\r
- gtk_widget_grab_default(close_bt);\r
-\r
- SIGNAL_CONNECT(cap_if_w, "delete_event", window_delete_event_cb, NULL);\r
- SIGNAL_CONNECT(cap_if_w, "destroy", capture_if_destroy_cb, NULL);\r
-\r
- gtk_widget_show_all(cap_if_w);\r
- window_present(cap_if_w);\r
-\r
- set_capture_if_dialog_for_capture_in_progress(is_capture_in_progress());\r
-\r
- /* update the interface list every 1000ms */\r
- timer_id = gtk_timeout_add(1000, update_all, if_data);\r
-}\r
-\r
-\r
-#endif /* HAVE_LIBPCAP */\r
+/* capture_if_dlg.c
+ * Routines for the capture interface dialog
+ *
+ * $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.
+ */
+
+/* With MSVC and a libethereal.dll this file needs to import some variables
+ in a special way. Therefore _NEED_VAR_IMPORT_ is defined. */
+/*#define _NEED_VAR_IMPORT_*/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#ifdef HAVE_LIBPCAP
+
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+
+#ifdef HAVE_SYS_WAIT_H
+# include <sys/wait.h>
+#endif
+
+
+#include <pcap.h>
+
+#include <gtk/gtk.h>
+
+#include "globals.h"
+#include "pcap-util.h"
+
+#ifdef _WIN32
+#include "capture-wpcap.h"
+#endif
+
+#include "compat_macros.h"
+#include "simple_dialog.h"
+#include "capture_dlg.h"
+
+#include "ui_util.h"
+#include "dlg_utils.h"
+
+#include "wtap.h"
+#include "capture.h"
+
+
+extern char *iptos(u_long in);
+
+extern gboolean is_capture_in_progress(void);
+
+/*
+ * Keep a static pointer to the current "Capture Interfaces" window, if
+ * any, so that if somebody tries to do "Capture:Start" while there's
+ * already a "Capture Interfaces" window up, we just pop up the existing
+ * one, rather than creating a new one.
+ */
+static GtkWidget *cap_if_w;
+
+GList *if_data = NULL;
+
+guint timer_id;
+
+GtkWidget *stop_bt;
+
+GList *if_list;
+
+/*
+ * Timeout, in milliseconds, for reads from the stream of captured packets.
+ */
+#define CAP_READ_TIMEOUT 250
+
+
+/* the "runtime" data of one interface */
+typedef struct if_dlg_data_s {
+ pcap_t *pch;
+ GtkWidget *device_lb;
+ GtkWidget *descr_lb;
+ GtkWidget *ip_lb;
+ GtkWidget *curr_lb;
+ GtkWidget *last_lb;
+ GtkWidget *capture_bt;
+ GtkWidget *prepare_bt;
+ guint32 last_packets;
+ gchar *device;
+} if_dlg_data_t;
+
+void update_if(if_dlg_data_t *if_dlg_data);
+
+
+/* start capture button was pressed */
+static void
+capture_do_cb(GtkWidget *capture_bt _U_, gpointer if_data)
+{
+ if_dlg_data_t *if_dlg_data = if_data;
+
+ if (cfile.iface)
+ g_free(cfile.iface);
+
+ cfile.iface = g_strdup(if_dlg_data->device);
+
+ do_capture(NULL /* save_file */);
+}
+
+
+/* prepare capture button was pressed */
+static void
+capture_prepare_cb(GtkWidget *prepare_bt _U_, gpointer if_data)
+{
+ if_dlg_data_t *if_dlg_data = if_data;
+
+ if (cfile.iface)
+ g_free(cfile.iface);
+
+ cfile.iface = g_strdup(if_dlg_data->device);
+
+ capture_prep_cb(NULL, NULL);
+}
+
+
+/* open a single interface */
+void
+open_if(gchar *name, if_dlg_data_t *if_dlg_data)
+{
+ gchar open_err_str[PCAP_ERRBUF_SIZE];
+
+ if_dlg_data->pch = pcap_open_live(name,
+ WTAP_MAX_PACKET_SIZE,
+ capture_opts.promisc_mode, CAP_READ_TIMEOUT,
+ open_err_str);
+
+ if (if_dlg_data->pch != NULL) {
+ update_if(if_dlg_data);
+ } else {
+ printf("open_if: %s\n", open_err_str);
+ gtk_label_set_text(GTK_LABEL(if_dlg_data->curr_lb), "error");
+ gtk_label_set_text(GTK_LABEL(if_dlg_data->last_lb), "error");
+ }
+}
+
+/* update a single interface */
+void
+update_if(if_dlg_data_t *if_dlg_data)
+{
+ struct pcap_stat stats;
+ gchar *str;
+ guint diff;
+
+
+ /* pcap_stats() stats values differ on libpcap and winpcap!
+ * libpcap: returns the number of packets since pcap_open_live
+ * winpcap: returns the number of packets since the last pcap_stats call
+ */
+ if (if_dlg_data->pch) {
+ if(pcap_stats(if_dlg_data->pch, &stats) >= 0) {
+#if WIN32
+ diff = stats.ps_recv - if_dlg_data->last_packets;
+ if_dlg_data->last_packets = stats.ps_recv;
+#else
+ diff = stats.ps_recv;
+ if_dlg_data->last_packets = stats.ps_recv + if_dlg_data->last_packets;
+#endif
+
+ str = g_strdup_printf("%u", if_dlg_data->last_packets);
+ gtk_label_set_text(GTK_LABEL(if_dlg_data->curr_lb), str);
+ g_free(str);
+ str = g_strdup_printf("%u", diff);
+ gtk_label_set_text(GTK_LABEL(if_dlg_data->last_lb), str);
+ g_free(str);
+
+ gtk_widget_set_sensitive(if_dlg_data->curr_lb, diff);
+ gtk_widget_set_sensitive(if_dlg_data->last_lb, diff);
+ } else {
+ gtk_label_set_text(GTK_LABEL(if_dlg_data->curr_lb), "error");
+ gtk_label_set_text(GTK_LABEL(if_dlg_data->last_lb), "error");
+ }
+ }
+}
+
+
+/* close a single interface */
+void
+close_if(if_dlg_data_t *if_dlg_data)
+{
+ if(if_dlg_data->pch)
+ pcap_close(if_dlg_data->pch);
+}
+
+
+
+/* update all interfaces */
+gboolean
+update_all(gpointer data)
+{
+ GList *curr;
+ int ifs;
+
+
+ if(!cap_if_w) {
+ return FALSE;
+ }
+
+ for(ifs = 0; (curr = g_list_nth(data, ifs)); ifs++) {
+ update_if(curr->data);
+ }
+
+ return TRUE;
+}
+
+
+/* a live capture has started or stopped */
+void
+set_capture_if_dialog_for_capture_in_progress(gboolean capture_in_progress)
+{
+ GList *curr;
+ int ifs;
+
+ if(cap_if_w) {
+ gtk_widget_set_sensitive(stop_bt, capture_in_progress);
+
+ for(ifs = 0; (curr = g_list_nth(if_data, ifs)); ifs++) {
+ if_dlg_data_t *if_dlg_data = curr->data;
+
+ gtk_widget_set_sensitive(if_dlg_data->capture_bt, !capture_in_progress);
+ gtk_widget_set_sensitive(if_dlg_data->prepare_bt, !capture_in_progress);
+ }
+ }
+}
+
+
+/* the window was closed, cleanup things */
+static void
+capture_if_destroy_cb(GtkWidget *win _U_, gpointer user_data _U_)
+{
+ GList *curr;
+ int ifs;
+
+ gtk_timeout_remove(timer_id);
+
+ for(ifs = 0; (curr = g_list_nth(if_data, ifs)); ifs++) {
+ if_dlg_data_t *if_dlg_data = curr->data;
+
+ close_if(if_dlg_data);
+ g_free(curr->data);
+ }
+
+ if_data = NULL;
+
+ free_interface_list(if_list);
+
+ /* Note that we no longer have a "Capture Options" dialog box. */
+ cap_if_w = NULL;
+}
+
+
+/* start getting capture stats from all interfaces */
+void
+capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ GtkWidget *main_vb, *bbox, *close_bt;
+
+ GtkWidget *if_tb;
+ GtkWidget *if_lb;
+#if GTK_MAJOR_VERSION < 2
+ GtkAccelGroup *accel_group;
+#endif
+ GtkTooltips *tooltips;
+ int err;
+ char err_str[PCAP_ERRBUF_SIZE];
+ gchar *cant_get_if_list_errstr;
+ int row;
+ if_dlg_data_t *if_dlg_data;
+ int ifs;
+ GList *curr;
+ if_info_t *if_info;
+ GSList *curr_ip;
+ guint32 ip_addr;
+ GString *if_tool_str = g_string_new("");
+ gchar *tmp_str;
+
+
+ if (cap_if_w != NULL) {
+ /* There's already a "Capture Interfaces" dialog box; reactivate it. */
+ reactivate_window(cap_if_w);
+ return;
+ }
+
+#ifdef _WIN32
+ /* Is WPcap loaded? */
+ if (!has_wpcap) {
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+ "Unable to load WinPcap (wpcap.dll); Ethereal will not be able\n"
+ "to capture packets.\n\n"
+ "In order to capture packets, WinPcap must be installed; see\n"
+ "\n"
+ " http://winpcap.polito.it/\n"
+ "\n"
+ "or the mirror at\n"
+ "\n"
+ " http://winpcap.mirror.ethereal.com/\n"
+ "\n"
+ "or the mirror at\n"
+ "\n"
+ " http://www.mirrors.wiretapped.net/security/packet-capture/winpcap/\n"
+ "\n"
+ "for a downloadable version of WinPcap and for instructions\n"
+ "on how to install WinPcap.");
+ return;
+ }
+#endif
+
+ if_list = get_interface_list(&err, err_str);
+ if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) {
+ cant_get_if_list_errstr = cant_get_if_list_error_message(err_str);
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s",
+ cant_get_if_list_errstr);
+ g_free(cant_get_if_list_errstr);
+ return;
+ }
+
+ cap_if_w = window_new(GTK_WINDOW_TOPLEVEL, "Ethereal: Capture Interfaces");
+
+ tooltips = gtk_tooltips_new();
+
+#if GTK_MAJOR_VERSION < 2
+ /* Accelerator group for the accelerators (or, as they're called in
+ Windows and, I think, in Motif, "mnemonics"; Alt+<key> is a mnemonic,
+ Ctrl+<key> is an accelerator). */
+ accel_group = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(cap_if_w), accel_group);
+#endif
+
+ main_vb = gtk_vbox_new(FALSE, 0);
+ gtk_container_border_width(GTK_CONTAINER(main_vb), 5);
+ gtk_container_add(GTK_CONTAINER(cap_if_w), main_vb);
+
+
+ if_tb = gtk_table_new(6,1, FALSE);
+ gtk_table_set_row_spacings(GTK_TABLE(if_tb), 3);
+ gtk_table_set_col_spacings(GTK_TABLE(if_tb), 3);
+ gtk_container_add(GTK_CONTAINER(main_vb), if_tb);
+
+ row = 0;
+
+#ifndef WIN32
+ if_lb = gtk_label_new("Device");
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 0, 1, row, row+1);
+#endif
+
+ if_lb = gtk_label_new("Description");
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 1, 2, row, row+1);
+
+ if_lb = gtk_label_new(" IP ");
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 2, 3, row, row+1);
+
+ if_lb = gtk_label_new("Packets");
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 3, 4, row, row+1);
+
+ if_lb = gtk_label_new(" Packets/s ");
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 4, 5, row, row+1);
+
+ stop_bt = BUTTON_NEW_FROM_STOCK(GTK_STOCK_STOP);
+ gtk_tooltips_set_tip(tooltips, stop_bt,
+ "Stop a running capture.", NULL);
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), stop_bt, 5, 7, row, row+1);
+ SIGNAL_CONNECT(stop_bt, "clicked", capture_stop_cb, NULL);
+
+ row++;
+
+ for(ifs = 0; (curr = g_list_nth(if_list, ifs)); ifs++) {
+ g_string_assign(if_tool_str, "");
+ if_info = curr->data;
+ if_dlg_data = g_malloc0(sizeof(if_dlg_data_t));
+
+ /* device name */
+ if_dlg_data->device_lb = gtk_label_new(if_info->name);
+ if_dlg_data->device = if_info->name;
+#ifndef WIN32
+ gtk_misc_set_alignment(GTK_MISC(if_dlg_data->device_lb), 0.0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->device_lb, 0, 1, row, row+1);
+#endif
+ g_string_append(if_tool_str, "Device: ");
+ g_string_append(if_tool_str, if_info->name);
+ g_string_append(if_tool_str, "\n");
+
+ /* description */
+ if_dlg_data->descr_lb = gtk_label_new(if_info->description);
+ gtk_misc_set_alignment(GTK_MISC(if_dlg_data->descr_lb), 0.0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->descr_lb, 1, 2, row, row+1);
+
+ g_string_append(if_tool_str, "Description: ");
+ g_string_append(if_tool_str, if_info->description);
+ g_string_append(if_tool_str, "\n");
+
+ /* IP address */
+ /* only one IP address will be shown */
+ g_string_append(if_tool_str, "IP: ");
+ curr_ip = g_slist_nth(if_info->ip_addr, 0);
+ if(curr_ip) {
+ ip_addr = *((guint32 *)curr_ip->data);
+ if_dlg_data->ip_lb = gtk_label_new(iptos(ip_addr));
+ g_string_append(if_tool_str, iptos(ip_addr));
+ } else {
+ ip_addr = 0;
+ if_dlg_data->ip_lb = gtk_label_new("unknown");
+ g_string_append(if_tool_str, "unknown");
+ }
+ gtk_widget_set_sensitive(if_dlg_data->ip_lb, ip_addr);
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->ip_lb, 2, 3, row, row+1);
+ g_string_append(if_tool_str, "\n");
+
+ /* packets */
+ if_dlg_data->curr_lb = gtk_label_new("-");
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->curr_lb, 3, 4, row, row+1);
+
+ /* packets/s */
+ if_dlg_data->last_lb = gtk_label_new("-");
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->last_lb, 4, 5, row, row+1);
+
+ /* capture button */
+ if_dlg_data->capture_bt = gtk_button_new_with_label("Capture");
+ SIGNAL_CONNECT(if_dlg_data->capture_bt, "clicked", capture_do_cb, if_dlg_data);
+ tmp_str = g_strdup_printf("Immediately start a capture from this interface:\n\n%s", if_tool_str->str);
+ gtk_tooltips_set_tip(tooltips, if_dlg_data->capture_bt,
+ tmp_str, NULL);
+ g_free(tmp_str);
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->capture_bt, 5, 6, row, row+1);
+
+ /* prepare button */
+ if_dlg_data->prepare_bt = gtk_button_new_with_label("Prepare");
+ SIGNAL_CONNECT(if_dlg_data->prepare_bt, "clicked", capture_prepare_cb, if_dlg_data);
+ gtk_tooltips_set_tip(tooltips, if_dlg_data->prepare_bt,
+ "Open the capture options dialog with this interface selected.", NULL);
+ gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->prepare_bt, 6, 7, row, row+1);
+
+ open_if(if_info->name, if_dlg_data);
+
+ if_data = g_list_append(if_data, if_dlg_data);
+
+ row++;
+ }
+
+ g_string_free(if_tool_str, TRUE);
+
+ /* Button row: close button */
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);
+
+ close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
+ window_set_cancel_button(cap_if_w, close_bt, window_cancel_button_cb);
+ gtk_tooltips_set_tip(tooltips, close_bt, "Close this window.", NULL);
+
+ gtk_widget_grab_default(close_bt);
+
+ SIGNAL_CONNECT(cap_if_w, "delete_event", window_delete_event_cb, NULL);
+ SIGNAL_CONNECT(cap_if_w, "destroy", capture_if_destroy_cb, NULL);
+
+ gtk_widget_show_all(cap_if_w);
+ window_present(cap_if_w);
+
+ set_capture_if_dialog_for_capture_in_progress(is_capture_in_progress());
+
+ /* update the interface list every 1000ms */
+ timer_id = gtk_timeout_add(1000, update_all, if_data);
+}
+
+
+#endif /* HAVE_LIBPCAP */
/* capture_info_dlg.c
* Routines for packet capture info dialog
*
- * $Id: capture_info_dlg.c,v 1.17 2004/05/27 17:26:46 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture_prefs.c
* Dialog box for capture preferences
*
- * $Id: capture_prefs.c,v 1.39 2004/07/13 05:43:59 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture_prefs.h
* Definitions for capture preferences window
*
- * $Id: capture_prefs.h,v 1.5 2004/06/04 20:05:30 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* color_dlg.c
* Definitions for dialog boxes for color filters
*
- * $Id: color_dlg.c,v 1.52 2004/06/05 10:13:37 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* color_dlg.h
* Definitions for dialog boxes for color filters
*
- * $Id: color_dlg.h,v 1.6 2004/06/04 20:05:30 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* color_filters.c
* Routines for color filters
*
- * $Id: color_filters.c,v 1.10 2004/04/16 19:36:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* color_filters.h
* Definitions for color filters
*
- * $Id: color_filters.h,v 1.7 2004/06/01 20:28:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Utilities for converting between "toolkit-independent" and GDK
* notions of color
*
- * $Id: color_utils.c,v 1.4 2002/09/23 19:09:49 oabad Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Declarations of utilities for converting between "toolkit-independent"
* and GDK notions of color
*
- * $Id: color_utils.h,v 1.3 2004/06/01 20:28:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* colors.c
* Routines for colors
*
- * $Id: colors.c,v 1.28 2004/01/31 03:22:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* colors.h
* Definitions for color structures and routines
*
- * $Id: colors.h,v 1.12 2004/06/01 20:28:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* column_prefs.c
* Dialog box for column preferences
*
- * $Id: column_prefs.c,v 1.24 2004/05/27 16:48:36 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* column_prefs.h
* Definitions for column preferences window
*
- * $Id: column_prefs.h,v 1.7 2004/06/04 20:05:30 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* compat_macros.h
* GTK-related Global defines, etc.
*
- * $Id: compat_macros.h,v 1.21 2004/07/13 07:15:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* dcerpc_stat.c
* dcerpc_stat 2002 Ronnie Sahlberg
*
- * $Id: dcerpc_stat.c,v 1.58 2004/06/02 07:12:09 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* decode_as_dlg.c
*
- * $Id: decode_as_dlg.c,v 1.41 2004/06/10 09:46:26 guy Exp $
+ * $Id$
*
* Routines to modify dissector tables on the fly.
*
/* decode_as_dlg.h
*
- * $Id: decode_as_dlg.h,v 1.6 2004/06/04 20:05:30 ulfl Exp $
+ * $Id$
*
* Routines to modify dissector tables on the fly.
*
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com> and
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: dfilter_expr_dlg.c,v 1.60 2004/06/10 20:16:50 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* dfilter_expr_dlg.h
* Definitions for dialog boxes for display filter expression construction
*
- * $Id: dfilter_expr_dlg.h,v 1.4 2004/06/04 20:05:30 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* dlg_utils.c
* Utilities to use when constructing dialogs
*
- * $Id: dlg_utils.c,v 1.42 2004/07/13 07:15:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* dlg_utils.h
* Declarations of utilities to use when constructing dialogs
*
- * $Id: dlg_utils.h,v 1.21 2004/06/05 12:12:13 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_eth.c
* endpoint_talkers_eth 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_eth.c,v 1.25 2004/05/02 17:25:09 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_fc.c
* endpoint_talkers_fc 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_fc.c,v 1.25 2004/05/02 17:25:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_fddi.c
* endpoint_talkers_fddi 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_fddi.c,v 1.20 2004/05/02 17:25:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_ip.c
* endpoint_talkers_ip 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_ip.c,v 1.26 2004/05/02 17:25:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_ipx.c
* endpoint_talkers_ipx 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_ipx.c,v 1.24 2004/05/02 17:25:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* endpoint_talkers_table 2003 Ronnie Sahlberg
* Helper routines common to all endpoint talkers tap.
*
- * $Id: endpoint_talkers_table.c,v 1.47 2004/07/13 18:14:00 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* endpoint_talkers_table 2003 Ronnie Sahlberg
* Helper routines common to all endpoint talkers taps.
*
- * $Id: endpoint_talkers_table.h,v 1.14 2004/06/05 13:28:13 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_tcpip.c
* endpoint_talkers_tcpip 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_tcpip.c,v 1.27 2004/05/02 17:25:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_tr.c
* endpoint_talkers_tr 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_tr.c,v 1.26 2004/05/02 17:25:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* endpoint_talkers_udpip.c
* endpoint_talkers_udpip 2003 Ronnie Sahlberg
*
- * $Id: endpoint_talkers_udpip.c,v 1.27 2004/05/02 17:25:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball, Josh MacDonald,
* Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
*
- * $Id: ethclist.c,v 1.1 2004/01/09 08:36:22 guy Exp $
+ * $Id$
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball, Josh MacDonald
* Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
*
- * $Id: ethclist.h,v 1.4 2004/06/01 21:56:03 ulfl Exp $
+ * $Id$
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
/* fc_stat.c
* fc_stat 2003 Ronnie Sahlberg
*
- * $Id: fc_stat.c,v 1.34 2004/06/02 07:12:09 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* file_dlg.c
* Dialog boxes for handling files
*
- * $Id: file_dlg.c,v 1.128 2004/07/13 07:15:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* file_dlg.h
* Definitions for dialog boxes for handling files
*
- * $Id: file_dlg.h,v 1.13 2004/06/17 21:53:25 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* (This used to be a notebook page under "Preferences", hence the
* "prefs" in the file name.)
*
- * $Id: filter_prefs.c,v 1.67 2004/06/05 10:27:38 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* (This used to be a notebook page under "Preferences", hence the
* "prefs" in the file name.)
*
- * $Id: filter_prefs.h,v 1.21 2004/06/05 12:12:13 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* find_dlg.c
* Routines for "find frame" window
*
- * $Id: find_dlg.c,v 1.53 2004/05/26 03:49:23 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* find_dlg.h
* Definitions for "find frame" window
*
- * $Id: find_dlg.h,v 1.8 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* follow_dlg.c
*
- * $Id: follow_dlg.c,v 1.69 2004/07/09 23:02:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* follow_dlg.c
*
- * $Id: follow_dlg.h,v 1.6 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* font_utils.c
* Utilities to use for font manipulation
*
- * $Id: font_utils.c,v 1.1 2004/06/17 16:35:24 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* font_utils.h
* Declarations of utilities to use for font manipulation
*
- * $Id: font_utils.h,v 1.1 2004/06/17 16:35:24 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* goto_dlg.c
* Routines for "go to packet" window
*
- * $Id: goto_dlg.c,v 1.27 2004/06/01 17:33:36 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* goto_dlg.h
* Definitions for "go to frame" window
*
- * $Id: goto_dlg.h,v 1.4 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
*
* MUCH code modified from service_response_time_table.c.
*
- * $Id: gsm_a_stat.c,v 1.18 2004/05/23 23:24:05 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* MUCH code modified from service_response_time_table.c.
*
- * $Id: gsm_map_stat.c,v 1.9 2004/05/23 23:24:05 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* gsm_map_stat.h
*
- * $Id: gsm_map_stat.h,v 1.3 2004/06/05 11:03:14 ulfl Exp $
+ * $Id$
*
* Copyright 2004, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
*
* Modified from summary_dlg.c
*
- * $Id: gsm_map_summary.c,v 1.3 2004/05/23 23:24:05 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* gui functions used by stats
* Copyright 2003 Lars Roland
*
- * $Id: gtk_stat_util.c,v 1.6 2004/06/01 21:56:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* gui functions used by stats
* Copyright 2003 Lars Roland
*
- * $Id: gtk_stat_util.h,v 1.4 2004/06/01 21:56:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* gtkglobals.h
* GTK-related Global defines, etc.
*
- * $Id: gtkglobals.h,v 1.31 2004/07/09 23:02:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* gui_prefs.c
* Dialog box for GUI preferences
*
- * $Id: gui_prefs.c,v 1.77 2004/07/14 08:04:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* gui_prefs.h
* Definitions for GUI preferences window
*
- * $Id: gui_prefs.h,v 1.8 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* h225 message counter for ethereal
* Copyright 2003 Lars Roland
*
- * $Id: h225_counter.c,v 1.22 2004/06/02 07:12:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* h225 RAS Service Response Time statistics for ethereal
* Copyright 2003 Lars Roland
*
- * $Id: h225_ras_srt.c,v 1.19 2004/06/02 07:12:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* help_dlg.c
*
- * $Id: help_dlg.c,v 1.56 2004/06/05 09:57:10 ulfl Exp $
+ * $Id$
*
* Laurent Deniel <laurent.deniel@free.fr>
*
/* help_dlg.h
*
- * $Id: help_dlg.h,v 1.8 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Laurent Deniel <laurent.deniel@free.fr>
*
/* hostlist_eth.c 2004 Ian Schorr
* modified from endpoint_talkers_eth.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_eth.c,v 1.6 2004/05/02 21:16:08 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* hostlist_fc.c 2004 Ian Schorr
* modified from endpoint_talkers_fc.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_fc.c,v 1.6 2004/05/02 21:16:08 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* hostlist_fddi.c 2004 Ian Schorr
* modified from endpoint_talkers_fddi.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_fddi.c,v 1.6 2004/05/02 21:16:08 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* hostlist_ip.c 2004 Ian Schorr
* modified from endpoint_talkers_ip.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_ip.c,v 1.6 2004/05/02 21:16:08 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* hostlist_ipx.c 2004 Ian Schorr
* modified from endpoint_talkers_ipx.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_ipx.c,v 1.6 2004/05/02 21:16:08 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* modified from endpoint_talkers_table.c 2003 Ronnie Sahlberg
* Helper routines common to all host list taps.
*
- * $Id: hostlist_table.c,v 1.19 2004/07/13 18:14:00 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* modified from endpoint_talkers_table 2003 Ronnie Sahlberg
* Helper routines common to all host talkers taps.
*
- * $Id: hostlist_table.h,v 1.8 2004/06/05 13:28:13 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* hostlist_tcpip.c 2004 Ian Schorr
* modified from endpoint_talkers_tcpip.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_tcpip.c,v 1.6 2004/05/02 21:16:09 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* hostlist_tr.c 2004 Ian Schorr
* modified from endpoint_talkers_tr.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_tr.c,v 1.6 2004/05/02 21:16:09 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* hostlist_udpip.c 2004 Ian Schorr
* modified from endpoint_talkers_udpip.c 2003 Ronnie Sahlberg
*
- * $Id: hostlist_udpip.c,v 1.6 2004/05/02 21:16:09 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* http_stat.c
* http_stat 2003 Jean-Michel FAYARD
*
- * $Id: http_stat.c,v 1.30 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* io_stat.c
* io_stat 2002 Ronnie Sahlberg
*
- * $Id: io_stat.c,v 1.76 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Temporary redefinition of "isprint()" to cope with GTK+ 1.3 and
* later using UTF-8 strings
*
- * $Id: isprint.h,v 1.1 2004/07/09 23:02:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* MUCH code modified from service_response_time_table.c.
*
- * $Id: isup_stat.c,v 1.23 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* keys.h
* Key definitions for various objects
*
- * $Id: keys.h,v 1.15 2004/06/01 21:56:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* layout_prefs.c
* Dialog box for layout preferences
*
- * $Id: layout_prefs.c,v 1.8 2004/05/05 07:31:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* layout_prefs.h
* Definitions for layout preferences window
*
- * $Id: layout_prefs.h,v 1.6 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ldap_stat.c
* ldap_stat 2003 Ronnie Sahlberg
*
- * $Id: ldap_stat.c,v 1.22 2004/06/02 07:12:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* main.c
*
- * $Id: main.c,v 1.458 2004/07/13 07:15:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* main.h
* Global defines, etc.
*
- * $Id: main.h,v 1.56 2004/06/23 01:38:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-/* menu.c\r
- * Menu routines\r
- *\r
- * $Id: menu.c,v 1.208 2004/07/07 16:26:52 ulfl Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#ifdef HAVE_CONFIG_H\r
-# include "config.h"\r
-#endif\r
-\r
-#include <gtk/gtk.h>\r
-\r
-#include <string.h>\r
-\r
-#include "main.h"\r
-#include "menu.h"\r
-#include "tap_menu.h"\r
-#include <epan/packet.h>\r
-#include <epan/resolv.h>\r
-#include "prefs.h"\r
-#include "about_dlg.h"\r
-#include "capture_dlg.h"\r
-#include "color_dlg.h"\r
-#include "filter_prefs.h"\r
-#include "dlg_utils.h"\r
-#include "file_dlg.h"\r
-#include "find_dlg.h"\r
-#include "goto_dlg.h"\r
-#include "summary_dlg.h"\r
-#include "prefs_dlg.h"\r
-#include "packet_win.h"\r
-#include "print.h"\r
-#include "follow_dlg.h"\r
-#include "decode_as_dlg.h"\r
-#include "help_dlg.h"\r
-#include "supported_protos_dlg.h"\r
-#include "proto_dlg.h"\r
-#include "proto_hier_stats_dlg.h"\r
-#include "keys.h"\r
-#include <epan/plugins.h>\r
-#include <epan/epan_dissect.h>\r
-#include "compat_macros.h"\r
-#include "toolbar.h"\r
-#include "gtkglobals.h"\r
-#include "register.h"\r
-#include "../tap.h"\r
-#include "../menu.h"\r
-#include "../ipproto.h"\r
-#include "packet_list.h"\r
-#include "ethclist.h"\r
-#include "recent.h"\r
-#include "../ui_util.h"\r
-#include "proto_draw.h"\r
-#include "endpoint_talkers_table.h"\r
-#include "hostlist_table.h"\r
-#include "simple_dialog.h"\r
-#include <epan/timestamp.h>\r
-\r
-GtkWidget *popup_menu_object;\r
-\r
-static void\r
-clear_menu_recent_capture_file_cmd_cb(GtkWidget *w, gpointer unused _U_);\r
-\r
-typedef struct _menu_item {\r
- char *name;\r
- gint group;\r
- gboolean enabled;\r
- GtkItemFactoryCallback callback;\r
- gpointer callback_data;\r
- gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *);\r
- gboolean (*selected_tree_row_enabled)(field_info *);\r
- GList *children;\r
-} menu_item_t;\r
-\r
-static GList *tap_menu_tree_root = NULL;\r
-\r
-static void \r
-merge_all_tap_menus(GList *node);\r
-\r
-#define GTK_MENU_FUNC(a) ((GtkItemFactoryCallback)(a))\r
-\r
-static void menus_init(void);\r
-static void set_menu_sensitivity (GtkItemFactory *, const gchar *, gint);\r
-static void main_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void filter_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void packet_list_show_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void tree_view_show_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void byte_view_show_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void statusbar_show_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void timestamp_absolute_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void timestamp_absolute_date_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void timestamp_relative_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void timestamp_delta_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void name_resolution_mac_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void name_resolution_network_cb(GtkWidget *w _U_, gpointer d _U_);\r
-static void name_resolution_transport_cb(GtkWidget *w _U_, gpointer d _U_);\r
-#ifdef HAVE_LIBPCAP\r
-static void auto_scroll_live_cb(GtkWidget *w _U_, gpointer d _U_);\r
-#endif\r
-\r
-/* This is the GtkItemFactoryEntry structure used to generate new menus.\r
- Item 1: The menu path. The letter after the underscore indicates an\r
- accelerator key once the menu is open.\r
- Item 2: The accelerator key for the entry\r
- Item 3: The callback function.\r
- Item 4: The callback action. This changes the parameters with\r
- which the function is called. The default is 0.\r
- Item 5: The item type, used to define what kind of an item it is.\r
- Here are the possible values:\r
-\r
- NULL -> "<Item>"\r
- "" -> "<Item>"\r
- "<Title>" -> create a title item\r
- "<Item>" -> create a simple item\r
- "<ImageItem>" -> create an item holding an image (gtk2)\r
- "<StockItem>" -> create an item holding a stock image (gtk2)\r
- "<CheckItem>" -> create a check item\r
- "<ToggleItem>" -> create a toggle item\r
- "<RadioItem>" -> create a radio item\r
- <path> -> path of a radio item to link against\r
- "<Separator>" -> create a separator\r
- "<Tearoff>" -> create a tearoff separator (gtk2)\r
- "<Branch>" -> create an item to hold sub items (optional)\r
- "<LastBranch>" -> create a right justified branch\r
- Item 6: extra data needed for ImageItem and StockItem (gtk2)\r
- */\r
-\r
-/* main menu */\r
-static GtkItemFactoryEntry menu_items[] =\r
-{\r
- ITEM_FACTORY_ENTRY("/_File", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/File/_Open...", "<control>O", file_open_cmd_cb,\r
- 0, GTK_STOCK_OPEN),\r
- ITEM_FACTORY_ENTRY("/File/Open _Recent", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/File/_Merge...", NULL, file_merge_cmd_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/File/_Close", "<control>W", file_close_cmd_cb,\r
- 0, GTK_STOCK_CLOSE),\r
- ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/File/_Save", "<control>S", file_save_cmd_cb,\r
- 0, GTK_STOCK_SAVE),\r
- ITEM_FACTORY_STOCK_ENTRY("/File/Save _As...", "<shift><control>S", file_save_as_cmd_cb,\r
- 0, GTK_STOCK_SAVE_AS),\r
- ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/File/_Export", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/File/Export/as \"Plain _Text\" file...", NULL, export_text_cmd_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/File/Export/as \"_PostScript\" file...", NULL, export_ps_cmd_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/File/Export/as XML - \"P_SML\" (packet summary) file...", NULL, export_psml_cmd_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/File/Export/as XML - \"P_DML\" (packet details) file...", NULL, export_pdml_cmd_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/File/Export/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/File/Export/Selected Packet _Bytes...", "<control>H", savehex_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/File/_Print...", "<control>P", file_print_cmd_cb,\r
- 0, GTK_STOCK_PRINT),\r
- ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/File/_Quit", "<control>Q", file_quit_cmd_cb,\r
- 0, GTK_STOCK_QUIT),\r
- ITEM_FACTORY_ENTRY("/_Edit", NULL, NULL, 0, "<Branch>", NULL),\r
-#if 0\r
- /* Un-#if this when we actually implement Cut/Copy/Paste. */\r
- ITEM_FACTORY_STOCK_ENTRY("/Edit/Cut", "<control>X", NULL,\r
- 0, GTK_STOCK_CUT),\r
- ITEM_FACTORY_STOCK_ENTRY("/Edit/Copy", "<control>C", NULL,\r
- 0, GTK_STOCK_COPY),\r
- ITEM_FACTORY_STOCK_ENTRY("/Edit/Paste", "<control>V", NULL,\r
- 0, GTK_STOCK_PASTE),\r
- ITEM_FACTORY_ENTRY("/Edit/<separator>", NULL, NULL, 0, "<Separator>"),\r
-#endif\r
- ITEM_FACTORY_STOCK_ENTRY("/Edit/_Find Packet...", "<control>F",\r
- find_frame_cb, 0, GTK_STOCK_FIND),\r
- ITEM_FACTORY_STOCK_ENTRY("/Edit/Find Ne_xt", "<control>N", find_next_cb,\r
- 0, GTK_STOCK_GO_FORWARD),\r
- ITEM_FACTORY_STOCK_ENTRY("/Edit/Find Pre_vious", "<control>B",\r
- find_previous_cb, 0, GTK_STOCK_GO_BACK),\r
- ITEM_FACTORY_ENTRY("/Edit/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/_Time Reference", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/Time Reference/Set Time Reference (toggle)", "<control>T", reftime_frame_cb, REFTIME_TOGGLE, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/Time Reference/Find Next", NULL, reftime_frame_cb, REFTIME_FIND_NEXT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/Time Reference/Find Previous", NULL, reftime_frame_cb, REFTIME_FIND_PREV, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/_Mark Packet", "<control>M", mark_frame_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/Mark _All Packets", NULL, mark_all_frames_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/_Unmark All Packets", NULL, unmark_all_frames_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Edit/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Edit/_Preferences...", "<shift><control>P", prefs_cb,\r
- 0, GTK_STOCK_PREFERENCES),\r
- ITEM_FACTORY_ENTRY("/_View", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/_Main Toolbar", NULL, main_toolbar_show_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/_Filter Toolbar", NULL, filter_toolbar_show_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/_Statusbar", NULL, statusbar_show_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Packet _List", NULL, packet_list_show_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Packet _Details", NULL, tree_view_show_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Packet _Bytes", NULL, byte_view_show_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/_Time Display Format", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Time Display Format/Time of Day", NULL, timestamp_absolute_cb, \r
- 0, "<RadioItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Time Display Format/Date and Time of Day", NULL, timestamp_absolute_date_cb, \r
- 0, "/View/Time Display Format/Time of Day", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Time Display Format/Seconds Since Beginning of Capture", NULL, timestamp_relative_cb, \r
- 0, "/View/Time Display Format/Time of Day", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Time Display Format/Seconds Since Previous Packet", NULL, timestamp_delta_cb, \r
- 0, "/View/Time Display Format/Time of Day", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Name Resol_ution", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Name Resolution/_Resolve Name", NULL, resolve_name_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/View/Name Resolution/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Name Resolution/Enable for _MAC Layer", NULL, name_resolution_mac_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Name Resolution/Enable for _Network Layer", NULL, name_resolution_network_cb, 0, "<CheckItem>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Name Resolution/Enable for _Transport Layer", NULL, name_resolution_transport_cb, 0, "<CheckItem>", NULL),\r
-#ifdef HAVE_LIBPCAP\r
- ITEM_FACTORY_ENTRY("/View/Auto Scroll in Li_ve Capture", NULL, auto_scroll_live_cb, 0, "<CheckItem>", NULL),\r
-#endif\r
- ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/View/_Zoom In", "<control>plus", view_zoom_in_cb,\r
- 0, GTK_STOCK_ZOOM_IN),\r
- ITEM_FACTORY_STOCK_ENTRY("/View/Zoom _Out", "<control>minus", view_zoom_out_cb,\r
- 0, GTK_STOCK_ZOOM_OUT),\r
- ITEM_FACTORY_STOCK_ENTRY("/View/_Normal Size", "<control>equal", view_zoom_100_cb,\r
- 0, GTK_STOCK_ZOOM_100),\r
- ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Collapse _All", NULL, collapse_all_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/View/_Expand All", NULL, expand_all_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/View/Expand Tree", NULL, expand_tree_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/View/_Coloring Rules...", NULL, color_display_cb,\r
- 0, GTK_STOCK_SELECT_COLOR),\r
- ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/View/Show Packet in New _Window", NULL,\r
- new_window_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/View/_Reload", "<control>R", file_reload_cmd_cb,\r
- 0, GTK_STOCK_REFRESH),\r
- ITEM_FACTORY_ENTRY("/_Go", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Go/_Go to Packet...", "<control>G",\r
- goto_frame_cb, 0, GTK_STOCK_JUMP_TO),\r
- ITEM_FACTORY_ENTRY("/Go/Go to _Corresponding Packet", NULL, goto_framenum_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Go/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Go/_First Packet", NULL,\r
- goto_top_frame_cb, 0, GTK_STOCK_GOTO_TOP),\r
- ITEM_FACTORY_STOCK_ENTRY("/Go/_Last Packet", NULL,\r
- goto_bottom_frame_cb, 0, GTK_STOCK_GOTO_BOTTOM),\r
-#ifdef HAVE_LIBPCAP\r
- ITEM_FACTORY_ENTRY("/_Capture", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Capture/_Start...", "<control>K",\r
- capture_prep_cb, 0, ETHEREAL_STOCK_CAPTURE_START),\r
- ITEM_FACTORY_STOCK_ENTRY("/Capture/S_top", "<control>E", capture_stop_cb,\r
- 0, GTK_STOCK_STOP),\r
- ITEM_FACTORY_ENTRY("/Capture/_Interfaces...", NULL,\r
- capture_if_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Capture/_Capture Filters...", NULL, cfilter_dialog_cb,\r
- 0, ETHEREAL_STOCK_CAPTURE_FILTER),\r
-#endif /* HAVE_LIBPCAP */\r
- ITEM_FACTORY_ENTRY("/_Analyze", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Analyze/_Display Filters...", NULL, dfilter_dialog_cb,\r
- 0, ETHEREAL_STOCK_DISPLAY_FILTER),\r
- ITEM_FACTORY_ENTRY("/Analyze/Appl_y as Filter", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/_Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/_Not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... _and Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_AND|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... _or Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_OR|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... a_nd not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_AND_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... o_r not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_OR_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/_Prepare a Filter", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/_Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_REPLACE, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/_Not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... _and Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_AND, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... _or Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_OR, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... a_nd not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_AND_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... o_r not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_OR_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/_Enabled Protocols...", "<shift><control>R", proto_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/Decode _As...", NULL, decode_as_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/_User Specified Decodes...", NULL,\r
- decode_show_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Analyze/_Follow TCP Stream", NULL,\r
- follow_stream_cb, 0, NULL, NULL), \r
- ITEM_FACTORY_ENTRY("/_Statistics", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Statistics/_Summary", NULL, summary_open_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Statistics/_Protocol Hierarchy", NULL,\r
- proto_hier_stats_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Statistics/Conversations", NULL,\r
- init_ett_notebook_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Statistics/Endpoints", NULL,\r
- init_hostlist_notebook_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/_Help", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Help/_Contents", "F1", help_cb, 0, GTK_STOCK_HELP),\r
- ITEM_FACTORY_ENTRY("/Help/_Supported Protocols", NULL, supported_cb, 0, NULL, NULL),\r
-#if (GLIB_MAJOR_VERSION >= 2)\r
- /* currently, glib1.x can't start a webbrowser, see webbrowser.c for details */\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal", NULL, url_localpage_cb, LOCALPAGE_MAN_ETHEREAL, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal Filter", NULL, url_localpage_cb, LOCALPAGE_MAN_ETHEREAL_FILTER, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Tethereal", NULL, url_localpage_cb, LOCALPAGE_MAN_TETHEREAL, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Mergecap", NULL, url_localpage_cb, LOCALPAGE_MAN_MERGECAP, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Editcap", NULL, url_localpage_cb, LOCALPAGE_MAN_EDITCAP, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Text2pcap", NULL, url_localpage_cb, LOCALPAGE_MAN_TEXT2PCAP, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_STOCK_ENTRY("/Help/Ethereal Online/Home Page", NULL, url_onlinepage_cb, ONLINEPAGE_HOME, GTK_STOCK_HOME),\r
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/User's Guide", NULL, url_onlinepage_cb, ONLINEPAGE_USERGUIDE, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/FAQ's", NULL, url_onlinepage_cb, ONLINEPAGE_FAQ, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Downloads", NULL, url_onlinepage_cb, ONLINEPAGE_DOWNLOAD, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Example Files", NULL, url_onlinepage_cb, ONLINEPAGE_SAMPLE, NULL, NULL),\r
-#endif\r
- ITEM_FACTORY_ENTRY("/Help/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Help/_About Ethereal", NULL, about_ethereal_cb,\r
- 0, NULL, NULL)\r
-};\r
-\r
-\r
-/* calculate the number of menu_items */\r
-static int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]);\r
-\r
-/* packet list popup */\r
-static GtkItemFactoryEntry packet_list_menu_items[] =\r
-{\r
- ITEM_FACTORY_ENTRY("/Follow TCP Stream", NULL, follow_stream_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Decode As...", NULL, decode_as_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Display Filters...", NULL, dfilter_dialog_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Mark Packet", NULL, mark_frame_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Time Reference", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Time Reference/Set Time Reference (toggle)", NULL, reftime_frame_cb, REFTIME_TOGGLE, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Time Reference/Find Next", NULL, reftime_frame_cb, REFTIME_FIND_NEXT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Time Reference/Find Previous", NULL, reftime_frame_cb, REFTIME_FIND_PREV, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/_Selected", NULL, match_selected_plist_cb, \r
- MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/_Not Selected", NULL, match_selected_plist_cb, \r
- MATCH_SELECTED_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... _and Selected", NULL, match_selected_plist_cb, \r
- MATCH_SELECTED_AND|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... _or Selected", NULL, match_selected_plist_cb, \r
- MATCH_SELECTED_OR|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... a_nd not Selected", NULL, match_selected_plist_cb, \r
- MATCH_SELECTED_AND_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... o_r not Selected", NULL, match_selected_plist_cb,\r
- MATCH_SELECTED_OR_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
-\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/_Selected", NULL, match_selected_plist_cb,\r
- MATCH_SELECTED_REPLACE, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/_Not Selected", NULL, match_selected_plist_cb,\r
- MATCH_SELECTED_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... _and Selected", NULL, match_selected_plist_cb,\r
- MATCH_SELECTED_AND, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... _or Selected", NULL, match_selected_plist_cb,\r
- MATCH_SELECTED_OR, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... a_nd not Selected", NULL, match_selected_plist_cb,\r
- MATCH_SELECTED_AND_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... o_r not Selected", NULL, match_selected_plist_cb,\r
- MATCH_SELECTED_OR_NOT, NULL, NULL),\r
-\r
- ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Coloring Rules...", NULL, color_display_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Print...", NULL, file_print_cmd_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Show Packet in New Window", NULL, new_window_cb,\r
- 0, NULL, NULL),\r
-};\r
-\r
-static GtkItemFactoryEntry tree_view_menu_items[] =\r
-{\r
- ITEM_FACTORY_ENTRY("/Follow TCP Stream", NULL, follow_stream_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Decode As...", NULL, decode_as_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Display Filters...", NULL, dfilter_dialog_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/_Resolve Name", NULL, resolve_name_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/_Go to Corresponding Packet", NULL, goto_framenum_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/_Export Selected Packet Bytes...", NULL, savehex_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Protocol Preferences...", NULL, properties_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/_Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/_Not Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... _and Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_AND|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... _or Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_OR|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... a_nd not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_AND_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Apply as Filter/... o_r not Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_OR_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),\r
-\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter", NULL, NULL, 0, "<Branch>", NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/_Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_REPLACE, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/_Not Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... _and Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_AND, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... _or Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_OR, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... a_nd not Selected", NULL, match_selected_ptree_cb, \r
- MATCH_SELECTED_AND_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Prepare a Filter/... o_r not Selected", NULL, match_selected_ptree_cb,\r
- MATCH_SELECTED_OR_NOT, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),\r
- ITEM_FACTORY_ENTRY("/Collapse All", NULL, collapse_all_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Expand All", NULL, expand_all_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Expand Tree", NULL, expand_tree_cb, 0, NULL, NULL)\r
-};\r
-\r
-static GtkItemFactoryEntry hexdump_menu_items[] =\r
-{\r
- ITEM_FACTORY_ENTRY("/Follow TCP Stream", NULL, follow_stream_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Decode As...", NULL, decode_as_cb, 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Display Filters...", NULL, dfilter_dialog_cb,\r
- 0, NULL, NULL),\r
- ITEM_FACTORY_ENTRY("/Export Selected Packet Bytes...", NULL, savehex_cb,\r
- 0, NULL, NULL)\r
-};\r
-\r
-static int initialize = TRUE;\r
-static GtkItemFactory *main_menu_factory = NULL;\r
-static GtkItemFactory *packet_list_menu_factory = NULL;\r
-static GtkItemFactory *tree_view_menu_factory = NULL;\r
-static GtkItemFactory *hexdump_menu_factory = NULL;\r
-\r
-static GSList *popup_menu_list = NULL;\r
-\r
-static GtkAccelGroup *grp;\r
-\r
-GtkWidget *\r
-main_menu_new(GtkAccelGroup ** table) {\r
- GtkWidget *menubar;\r
-\r
- grp = gtk_accel_group_new();\r
-\r
- if (initialize)\r
- menus_init();\r
-\r
- menubar = main_menu_factory->widget;\r
-\r
- if (table)\r
- *table = grp;\r
-\r
- return menubar;\r
-}\r
-\r
-static void\r
-menus_init(void) {\r
- if (initialize) {\r
- initialize = FALSE;\r
-\r
- /* popup */\r
- packet_list_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);\r
- popup_menu_object = gtk_menu_new();\r
- gtk_item_factory_create_items_ac(packet_list_menu_factory, sizeof(packet_list_menu_items)/sizeof(packet_list_menu_items[0]), packet_list_menu_items, popup_menu_object, 2);\r
- OBJECT_SET_DATA(popup_menu_object, PM_PACKET_LIST_KEY,\r
- packet_list_menu_factory->widget);\r
- popup_menu_list = g_slist_append((GSList *)popup_menu_list, packet_list_menu_factory);\r
-\r
- tree_view_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);\r
- gtk_item_factory_create_items_ac(tree_view_menu_factory, sizeof(tree_view_menu_items)/sizeof(tree_view_menu_items[0]), tree_view_menu_items, popup_menu_object, 2);\r
- OBJECT_SET_DATA(popup_menu_object, PM_TREE_VIEW_KEY,\r
- tree_view_menu_factory->widget);\r
- popup_menu_list = g_slist_append((GSList *)popup_menu_list, tree_view_menu_factory);\r
-\r
- hexdump_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);\r
- gtk_item_factory_create_items_ac(hexdump_menu_factory, sizeof(hexdump_menu_items)/sizeof(hexdump_menu_items[0]), hexdump_menu_items, popup_menu_object, 2);\r
- OBJECT_SET_DATA(popup_menu_object, PM_HEXDUMP_KEY,\r
- hexdump_menu_factory->widget);\r
- popup_menu_list = g_slist_append((GSList *)popup_menu_list, hexdump_menu_factory);\r
-\r
- /* main */\r
- main_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", grp);\r
- gtk_item_factory_create_items_ac(main_menu_factory, nmenu_items, menu_items, NULL, 2);\r
-\r
- merge_all_tap_menus(tap_menu_tree_root);\r
-\r
- /* Initialize enabled/disabled state of menu items */\r
- set_menus_for_unsaved_capture_file(FALSE);\r
- set_menus_for_capture_file(FALSE);\r
-#if 0\r
- /* Un-#if this when we actually implement Cut/Copy/Paste.\r
- Then make sure you enable them when they can be done. */\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Cut", FALSE);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Copy", FALSE);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Paste", FALSE);\r
-#endif\r
-\r
- set_menus_for_captured_packets(FALSE);\r
- set_menus_for_selected_packet(&cfile);\r
- set_menus_for_selected_tree_row(&cfile);\r
-\r
- /* init with an empty recent files list */\r
- clear_menu_recent_capture_file_cmd_cb(NULL, NULL);\r
- }\r
-}\r
-\r
-\r
-gint tap_menu_item_add_compare(gconstpointer a, gconstpointer b)\r
-{\r
- return strcmp(\r
- ((const menu_item_t *) a)->name, \r
- ((const menu_item_t *) b)->name);\r
-}\r
-\r
-\r
-/* add a menuitem below the current node */\r
-GList * tap_menu_item_add(\r
- char *name, \r
- gint group, \r
- GtkItemFactoryCallback callback,\r
- gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *),\r
- gboolean (*selected_tree_row_enabled)(field_info *),\r
- gpointer callback_data,\r
- GList *curnode)\r
-{\r
- menu_item_t *curr;\r
- menu_item_t *child;\r
-\r
-\r
- child = g_malloc(sizeof (menu_item_t));\r
- child->group = group;\r
- child->name = name;\r
- child->callback = callback;\r
- child->selected_packet_enabled = selected_packet_enabled;\r
- child->selected_tree_row_enabled = selected_tree_row_enabled;\r
- child->callback_data = callback_data;\r
- child->enabled = FALSE;\r
- child->children = NULL;\r
-\r
- /* insert the new child node into the parent */\r
- curr = curnode->data;\r
- curr->children = g_list_insert_sorted(curr->children, child, tap_menu_item_add_compare);\r
-\r
- /* return the new node */\r
- /* XXX: improve this */\r
- return g_list_find(curr->children, child);\r
-}\r
-\r
-/*\r
- * Add a new menu item for a tap.\r
- * This must be called after we've created the main menu, so it can't\r
- * be called from the routine that registers taps - we have to introduce\r
- * another per-tap registration routine.\r
- *\r
- * "callback" gets called when the menu item is selected; it should do\r
- * the work of creating the tap window.\r
- *\r
- * "selected_packet_enabled" gets called by "set_menus_for_selected_packet()";\r
- * it's passed a Boolean that's TRUE if a packet is selected and FALSE\r
- * otherwise, and should return TRUE if the tap will work now (which\r
- * might depend on whether a packet is selected and, if one is, on the\r
- * packet) and FALSE if not.\r
- *\r
- * "selected_tree_row_enabled" gets called by\r
- * "set_menus_for_selected_tree_row()"; it's passed a Boolean that's TRUE if\r
- * a protocol tree row is selected and FALSE otherwise, and should return\r
- * TRUE if the tap will work now (which might depend on whether a tree row\r
- * is selected and, if one is, on the tree row) and FALSE if not.\r
- */\r
-void\r
-register_tap_menu_item(\r
- char *name, \r
- REGISTER_TAP_GROUP_E group,\r
- GtkItemFactoryCallback callback,\r
- gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *),\r
- gboolean (*selected_tree_row_enabled)(field_info *),\r
- gpointer callback_data)\r
-{\r
- /*static const char toolspath[] = "/Statistics/";*/\r
- char *toolspath;\r
- char *p;\r
- char *menupath;\r
- size_t menupathlen;\r
- menu_item_t *child;\r
- GList *curnode;\r
- GList *childnode;\r
-\r
- /*\r
- * The menu path must be relative.\r
- */\r
- g_assert(*name != '/');\r
-\r
- switch(group) {\r
- case(REGISTER_TAP_GROUP_GENERIC): toolspath = "/Statistics/"; break;\r
- case(REGISTER_TAP_GROUP_CONVERSATION_LIST): toolspath = "/Statistics/_Conversation List/"; break;\r
- case(REGISTER_TAP_GROUP_ENDPOINT_LIST): toolspath = "/Statistics/_Endpoint List/"; break;\r
- case(REGISTER_TAP_GROUP_RESPONSE_TIME): toolspath = "/Statistics/Service _Response Time/"; break;\r
- case(REGISTER_TAP_GROUP_NONE): toolspath = "/Statistics/"; break;\r
- default:\r
- g_assert(0);\r
- toolspath = NULL;\r
- }\r
-\r
- /* add the (empty) root node, if not already done */\r
- if(tap_menu_tree_root == NULL) {\r
- child = g_malloc0(sizeof (menu_item_t));\r
- tap_menu_tree_root = g_list_append(NULL, child);\r
- }\r
-\r
- /*\r
- * Create any submenus required.\r
- */\r
- curnode = tap_menu_tree_root;\r
- p = name;\r
- while ((p = strchr(p, '/')) != NULL) {\r
- /*\r
- * OK, everything between "name" and "p" is\r
- * a menu relative subtree into which the menu item\r
- * will be placed.\r
- *\r
- * Construct the absolute path name of that subtree.\r
- */\r
- menupathlen = strlen(toolspath) + 1 + (p - name);\r
- menupath = g_malloc(menupathlen);\r
- strcpy(menupath, toolspath);\r
- strncat(menupath, name, p - name);\r
-\r
- /*\r
- * Does there exist an entry with that path at this\r
- * level of the Analyze menu tree?\r
- */\r
- child = curnode->data;\r
- for (childnode = child->children; childnode != NULL; childnode = childnode->next) {\r
- child = childnode->data;\r
- if (strcmp(child->name, menupath) == 0)\r
- break;\r
- }\r
- if (childnode == NULL) {\r
- /*\r
- * No. Create such an item as a subtree, and\r
- * add it to the Tools menu tree.\r
- */\r
- childnode = tap_menu_item_add(\r
- menupath, group, NULL, NULL ,NULL, NULL, curnode);\r
- } else {\r
- /*\r
- * Yes. We don't need this "menupath" any longer.\r
- */\r
- g_free(menupath);\r
- }\r
- curnode = childnode;\r
-\r
- /*\r
- * Skip over the '/' we found.\r
- */\r
- p++;\r
- }\r
-\r
- /*\r
- * Construct the main menu path for the menu item.\r
- */\r
- menupathlen = strlen(toolspath) + 1 + strlen(name);\r
- menupath = g_malloc(menupathlen);\r
- strcpy(menupath, toolspath);\r
- strcat(menupath, name);\r
-\r
- /*\r
- * Construct an item factory entry for the item, and add it to\r
- * the main menu.\r
- */\r
- tap_menu_item_add(\r
- menupath, group, callback, \r
- selected_packet_enabled, selected_tree_row_enabled, \r
- callback_data, curnode);\r
-}\r
-\r
-\r
-guint merge_tap_menus_layered(GList *node, gint group) {\r
- GtkItemFactoryEntry *entry;\r
- GList *child;\r
- guint added = 0;\r
- menu_item_t *node_data = node->data;\r
-\r
- /*\r
- * Is this a leaf node or an interior node?\r
- */\r
- if (node_data->children == NULL) {\r
- /*\r
- * It's a leaf node.\r
- */\r
-\r
- /*\r
- * The root node doesn't correspond to a menu tree item; it\r
- * has a null name pointer.\r
- */\r
- if (node_data->name != NULL && group == node_data->group) {\r
- entry = g_malloc0(sizeof (GtkItemFactoryEntry));\r
- entry->path = node_data->name;\r
- entry->callback = node_data->callback;\r
- gtk_item_factory_create_item(main_menu_factory, entry, node_data->callback_data, 2);\r
- set_menu_sensitivity(main_menu_factory, node_data->name, FALSE); /* no capture file yet */\r
- added++;\r
- }\r
- } else {\r
- /*\r
- * It's an interior node; call\r
- * "merge_tap_menus_layered()" on all its children \r
- */\r
-\r
- /*\r
- * The root node doesn't correspond to a menu tree item; it\r
- * has a null name pointer.\r
- */\r
- if (node_data->name != NULL && group == node_data->group) {\r
- entry = g_malloc0(sizeof (GtkItemFactoryEntry));\r
- entry->path = node_data->name;\r
- entry->item_type = "<Branch>";\r
- gtk_item_factory_create_item(main_menu_factory, entry,\r
- NULL, 2);\r
- set_menu_sensitivity(main_menu_factory, node_data->name,\r
- FALSE); /* no children yet */\r
- added++;\r
- }\r
-\r
- for (child = node_data->children; child != NULL; child =\r
- child->next) {\r
- added += merge_tap_menus_layered(child, group);\r
- }\r
- }\r
-\r
- return added;\r
-}\r
-\r
-\r
-void merge_all_tap_menus(GList *node) {\r
- GtkItemFactoryEntry *entry;\r
-\r
- entry = g_malloc0(sizeof (GtkItemFactoryEntry));\r
- entry->item_type = "<Separator>";\r
- entry->path = "/Statistics/";\r
-\r
- /* \r
- * merge only the menu items of the specific group,\r
- * and then append a seperator\r
- */\r
- if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_GENERIC)) {\r
- gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);\r
- }\r
- if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_CONVERSATION_LIST)) {\r
- /*gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);*/\r
- }\r
- if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_ENDPOINT_LIST)) {\r
- /*gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);*/\r
- }\r
- if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_RESPONSE_TIME)) {\r
- gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);\r
- }\r
- if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_NONE)) {\r
- /*gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);*/\r
- }\r
-}\r
-\r
-\r
-\r
-/*\r
- * Enable/disable menu sensitivity.\r
- */\r
-static void\r
-set_menu_sensitivity(GtkItemFactory *ifactory, const gchar *path, gint val)\r
-{\r
- GSList *menu_list;\r
- GtkWidget *menu_item;\r
- gchar *dup;\r
- gchar *dest;\r
-\r
-\r
- /* the underscore character regularly confuses things, as it will prevent finding \r
- * the menu_item, so it has to be removed first */\r
- dup = g_strdup(path);\r
- dest = dup;\r
- while(*path) {\r
- if (*path != '_') {\r
- *dest = *path;\r
- dest++;\r
- }\r
- path++;\r
- }\r
- *dest = '\0';\r
-\r
- if (ifactory == NULL) {\r
- /*\r
- * Do it for all pop-up menus.\r
- */\r
- for (menu_list = popup_menu_list; menu_list != NULL;\r
- menu_list = g_slist_next(menu_list))\r
- set_menu_sensitivity(menu_list->data, dup, val);\r
- } else {\r
- /*\r
- * Do it for that particular menu.\r
- */\r
- if ((menu_item = gtk_item_factory_get_widget(ifactory, dup)) != NULL) {\r
- if (GTK_IS_MENU(menu_item)) {\r
- /*\r
- * "dup" refers to a submenu; "gtk_item_factory_get_widget()"\r
- * gets the menu, not the item that, when selected, pops up\r
- * the submenu.\r
- *\r
- * We have to change the latter item's sensitivity, so that\r
- * it shows up normally if sensitive and grayed-out if\r
- * insensitive.\r
- */\r
- menu_item = gtk_menu_get_attach_widget(GTK_MENU(menu_item));\r
- }\r
- gtk_widget_set_sensitive(menu_item, val);\r
- } else{\r
- /* be sure this menu item *is* existing */\r
- g_assert_not_reached();\r
- }\r
- }\r
-\r
- g_free(dup);\r
-}\r
-\r
-void\r
-set_menu_object_data_meat(GtkItemFactory *ifactory, gchar *path, gchar *key, gpointer data)\r
-{\r
- GtkWidget *menu = NULL;\r
-\r
- if ((menu = gtk_item_factory_get_widget(ifactory, path)) != NULL)\r
- OBJECT_SET_DATA(menu, key, data);\r
-}\r
-\r
-void\r
-set_menu_object_data (gchar *path, gchar *key, gpointer data) {\r
- GSList *menu_list = popup_menu_list;\r
- gchar *shortpath = strrchr(path, '/');\r
-\r
- set_menu_object_data_meat(main_menu_factory, path, key, data);\r
- while (menu_list != NULL) {\r
- set_menu_object_data_meat(menu_list->data, shortpath, key, data);\r
- menu_list = g_slist_next(menu_list);\r
- }\r
-}\r
-\r
-\r
-/* Recently used capture files submenu: \r
- * Submenu containing the recently used capture files.\r
- * The capture filenames are always kept with the absolute path, to be independant\r
- * of the current path. \r
- * They are only stored inside the labels of the submenu (no separate list). */\r
-\r
-#define MENU_RECENT_FILES_PATH "/File/Open Recent"\r
-#define MENU_RECENT_FILES_KEY "Recent File Name"\r
-\r
-void\r
-update_menu_recent_capture_file1(GtkWidget *widget, gpointer cnt) {\r
- gchar *widget_cf_name;\r
-\r
- widget_cf_name = OBJECT_GET_DATA(widget, MENU_RECENT_FILES_KEY);\r
-\r
- /* if this menu item is a file, count it */\r
- if (widget_cf_name) {\r
- (*(guint *)cnt)++;\r
- }\r
-}\r
-\r
-\r
-/* update the menu */\r
-void\r
-update_menu_recent_capture_file(GtkWidget *submenu_recent_files) {\r
- guint cnt = 0;\r
-\r
- gtk_container_foreach(GTK_CONTAINER(submenu_recent_files), \r
- update_menu_recent_capture_file1, &cnt);\r
-\r
- /* make parent menu item sensitive only, if we have any valid files in the list */\r
- set_menu_sensitivity(main_menu_factory, MENU_RECENT_FILES_PATH, cnt);\r
-}\r
-\r
-\r
-/* remove the capture filename from the "Recent Files" menu */\r
-void\r
-remove_menu_recent_capture_file(GtkWidget *widget, gpointer unused _U_) {\r
- GtkWidget *submenu_recent_files;\r
- gchar *widget_cf_name;\r
-\r
-\r
- widget_cf_name = OBJECT_GET_DATA(widget, MENU_RECENT_FILES_KEY);\r
- g_free(widget_cf_name);\r
-\r
- /* get the submenu container item */\r
- submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);\r
-\r
- /* XXX: is this all we need to do, to free the menu item and its label?\r
- The reference count of widget will go to 0, so it'll be freed;\r
- will that free the label? */\r
- gtk_container_remove(GTK_CONTAINER(submenu_recent_files), widget);\r
-}\r
-\r
-\r
-/* callback, if the user pushed the <Clear File List> item */\r
-static void\r
-clear_menu_recent_capture_file_cmd_cb(GtkWidget *w _U_, gpointer unused _U_) {\r
- GtkWidget *submenu_recent_files;\r
-\r
-\r
- submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);\r
-\r
- gtk_container_foreach(GTK_CONTAINER(submenu_recent_files), \r
- remove_menu_recent_capture_file, NULL);\r
-\r
- update_menu_recent_capture_file(submenu_recent_files);\r
-}\r
-\r
-\r
-/* callback, if the user pushed a recent file submenu item */\r
-void\r
-menu_open_recent_file_cmd(GtkWidget *w)\r
-{\r
- GtkWidget *submenu_recent_files;\r
- GtkWidget *menu_item_child;\r
- gchar *cf_name;\r
- int err;\r
-\r
- submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);\r
-\r
- /* get capture filename from the menu item label */\r
- menu_item_child = (GTK_BIN(w))->child;\r
- gtk_label_get(GTK_LABEL(menu_item_child), &cf_name);\r
-\r
- /* open and read the capture file (this will close an existing file) */\r
- if ((err = cf_open(cf_name, FALSE, &cfile)) == 0) {\r
- cf_read(&cfile);\r
- } else {\r
- /* the capture file isn't existing any longer, remove menu item */\r
- /* XXX: ask user to remove item, it's maybe only a temporary problem */\r
- remove_menu_recent_capture_file(w, NULL);\r
- }\r
-\r
- update_menu_recent_capture_file(submenu_recent_files);\r
-}\r
-\r
-static void menu_open_recent_file_answered_cb(gpointer dialog _U_, gint btn, gpointer data _U_)\r
-{\r
- switch(btn) {\r
- case(ESD_BTN_YES):\r
- /* save file first */\r
- file_save_as_cmd(after_save_open_recent_file, data);\r
- break;\r
- case(ESD_BTN_NO):\r
- cf_close(&cfile);\r
- menu_open_recent_file_cmd(data);\r
- break;\r
- case(ESD_BTN_CANCEL):\r
- break;\r
- default:\r
- g_assert_not_reached();\r
- }\r
-}\r
-\r
-void\r
-menu_open_recent_file_cmd_cb(GtkWidget *widget, gpointer data _U_) {\r
- gpointer dialog;\r
-\r
-\r
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {\r
- /* user didn't saved his current file, ask him */\r
- dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,\r
- PRIMARY_TEXT_START "Save capture file before opening a new one?" PRIMARY_TEXT_END "\n\n"\r
- "If you open a new capture file without saving, your current capture data will be discarded.");\r
- simple_dialog_set_cb(dialog, menu_open_recent_file_answered_cb, widget);\r
- } else {\r
- /* unchanged file */\r
- menu_open_recent_file_cmd(widget);\r
- }\r
-}\r
-\r
-/* add the capture filename (with an absolute path) to the "Recent Files" menu */\r
-void\r
-add_menu_recent_capture_file_absolute(gchar *cf_name) {\r
- GtkWidget *submenu_recent_files;\r
- GList *menu_item_list;\r
- GList *li;\r
- gchar *widget_cf_name;\r
- gchar *normalized_cf_name;\r
- GtkWidget *menu_item;\r
- guint cnt;\r
-\r
-\r
-\r
- normalized_cf_name = g_strdup(cf_name);\r
-#ifdef WIN32\r
- /* replace all slashes by backslashes */\r
- g_strdelimit(normalized_cf_name, "/", '\\');\r
-#endif\r
-\r
- /* get the submenu container item */\r
- submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);\r
-\r
- /* convert container to a GList */\r
- menu_item_list = gtk_container_children(GTK_CONTAINER(submenu_recent_files));\r
-\r
- /* iterate through list items of menu_item_list, \r
- * removing special items, a maybe duplicate entry and every item above count_max */\r
- cnt = 1;\r
- for (li = g_list_first(menu_item_list); li; li = li->next, cnt++) {\r
- /* get capture filename */\r
- menu_item = GTK_WIDGET(li->data);\r
- widget_cf_name = OBJECT_GET_DATA(menu_item, MENU_RECENT_FILES_KEY);\r
-\r
- /* if this element string is one of our special items (seperator, ...) or\r
- * already in the list or \r
- * this element is above maximum count (too old), remove it */\r
- if (!widget_cf_name ||\r
-#ifdef WIN32\r
- /* do a case insensitive compare on win32 */\r
-#if GLIB_MAJOR_VERSION < 2\r
- g_strncasecmp(widget_cf_name, normalized_cf_name, 1000) == 0 ||\r
-#else\r
- g_ascii_strncasecmp(widget_cf_name, normalized_cf_name, 1000) == 0 ||\r
-#endif\r
-#else /* WIN32 */\r
- /* do a case sensitive compare on unix */\r
- strncmp(widget_cf_name, normalized_cf_name, 1000) == 0 ||\r
-#endif\r
- cnt >= prefs.gui_recent_files_count_max) {\r
- remove_menu_recent_capture_file(li->data, NULL);\r
- cnt--;\r
- }\r
- }\r
-\r
- g_list_free(menu_item_list);\r
-\r
- /* add new item at latest position */\r
- menu_item = gtk_menu_item_new_with_label(normalized_cf_name);\r
- OBJECT_SET_DATA(menu_item, MENU_RECENT_FILES_KEY, normalized_cf_name);\r
- gtk_menu_prepend (GTK_MENU(submenu_recent_files), menu_item);\r
- SIGNAL_CONNECT_OBJECT(GTK_OBJECT(menu_item), "activate", \r
- menu_open_recent_file_cmd_cb, (GtkObject *) menu_item);\r
- gtk_widget_show (menu_item);\r
-\r
- /* add seperator at last position */\r
- menu_item = gtk_menu_item_new();\r
- gtk_menu_append (GTK_MENU(submenu_recent_files), menu_item);\r
- gtk_widget_show (menu_item);\r
-\r
- /* add new "clear list" item at last position */\r
-#if GTK_MAJOR_VERSION < 2\r
- menu_item = gtk_menu_item_new_with_label("<Clear File List>");\r
-#else\r
- menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLEAR, NULL);\r
-#endif\r
- gtk_menu_append (GTK_MENU(submenu_recent_files), menu_item);\r
- SIGNAL_CONNECT_OBJECT(GTK_OBJECT(menu_item), "activate", \r
- clear_menu_recent_capture_file_cmd_cb, (GtkObject *) menu_item);\r
- gtk_widget_show (menu_item);\r
-\r
- update_menu_recent_capture_file(submenu_recent_files);\r
-}\r
-\r
-\r
-/* add the capture filename to the "Recent Files" menu */\r
-/* (will change nothing, if this filename is already in the menu) */\r
-void\r
-add_menu_recent_capture_file(gchar *cf_name) {\r
- gchar *curr;\r
- gchar *absolute;\r
- \r
- \r
- /* if this filename is an absolute path, we can use it directly */\r
- if (g_path_is_absolute(cf_name)) {\r
- add_menu_recent_capture_file_absolute(cf_name);\r
- return;\r
- }\r
-\r
- /* this filename is not an absolute path, prepend the current dir */\r
- curr = g_get_current_dir();\r
- absolute = g_strdup_printf("%s%s%s", curr, G_DIR_SEPARATOR_S, cf_name);\r
- add_menu_recent_capture_file_absolute(absolute);\r
- g_free(curr);\r
- g_free(absolute);\r
-}\r
-\r
-\r
-/* write all capture filenames of the menu to the user's recent file */\r
-void\r
-menu_recent_file_write_all(FILE *rf) {\r
- GtkWidget *submenu_recent_files;\r
- GList *children;\r
- GList *child;\r
- gchar *cf_name;\r
-\r
-\r
- submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);\r
-\r
- /* we have to iterate backwards through the children's list,\r
- * so we get the latest item last in the file.\r
- * (don't use gtk_container_foreach() here, it will return the wrong iteration order) */\r
- children = gtk_container_children(GTK_CONTAINER(submenu_recent_files));\r
- child = g_list_last(children);\r
- while(child != NULL) {\r
- /* get capture filename from the menu item label */\r
- cf_name = OBJECT_GET_DATA(child->data, MENU_RECENT_FILES_KEY);\r
- if (cf_name) {\r
- fprintf (rf, RECENT_KEY_CAPTURE_FILE ": %s\n", cf_name);\r
- }\r
-\r
- child = g_list_previous(child);\r
- }\r
-\r
- g_list_free(children);\r
-}\r
-\r
-\r
-static void\r
-main_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
-\r
- /* save current setting in recent */\r
- recent.main_toolbar_show = GTK_CHECK_MENU_ITEM(w)->active;\r
-\r
- main_widgets_show_or_hide();\r
-}\r
-\r
-\r
-static void\r
-filter_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
-\r
- /* save current setting in recent */\r
- recent.filter_toolbar_show = GTK_CHECK_MENU_ITEM(w)->active;\r
-\r
- main_widgets_show_or_hide();\r
-}\r
-\r
-\r
-static void\r
-packet_list_show_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
-\r
- /* save current setting in recent */\r
- recent.packet_list_show = GTK_CHECK_MENU_ITEM(w)->active;\r
-\r
- main_widgets_show_or_hide();\r
-}\r
-\r
-\r
-static void\r
-tree_view_show_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
-\r
- /* save current setting in recent */\r
- recent.tree_view_show = GTK_CHECK_MENU_ITEM(w)->active;\r
-\r
- main_widgets_show_or_hide();\r
-}\r
-\r
-\r
-static void\r
-byte_view_show_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
-\r
- /* save current setting in recent */\r
- recent.byte_view_show = GTK_CHECK_MENU_ITEM(w)->active;\r
-\r
- main_widgets_show_or_hide();\r
-}\r
-\r
-\r
-static void\r
-statusbar_show_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
-\r
- /* save current setting in recent */\r
- recent.statusbar_show = GTK_CHECK_MENU_ITEM(w)->active;\r
-\r
- main_widgets_show_or_hide();\r
-}\r
-\r
-\r
-static void \r
-timestamp_absolute_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- if (recent.gui_time_format != TS_ABSOLUTE) {\r
- set_timestamp_setting(TS_ABSOLUTE);\r
- recent.gui_time_format = TS_ABSOLUTE;\r
- change_time_formats(&cfile);\r
- }\r
-}\r
-\r
-static void \r
-timestamp_absolute_date_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- if (recent.gui_time_format != TS_ABSOLUTE_WITH_DATE) {\r
- set_timestamp_setting(TS_ABSOLUTE_WITH_DATE);\r
- recent.gui_time_format = TS_ABSOLUTE_WITH_DATE;\r
- change_time_formats(&cfile);\r
- }\r
-}\r
-\r
-static void \r
-timestamp_relative_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- if (recent.gui_time_format != TS_RELATIVE) {\r
- set_timestamp_setting(TS_RELATIVE);\r
- recent.gui_time_format = TS_RELATIVE;\r
- change_time_formats(&cfile);\r
- }\r
-}\r
-\r
-static void \r
-timestamp_delta_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- if (recent.gui_time_format != TS_DELTA) {\r
- set_timestamp_setting(TS_DELTA);\r
- recent.gui_time_format = TS_DELTA;\r
- change_time_formats(&cfile);\r
- }\r
-}\r
-\r
-void\r
-menu_name_resolution_changed(void)\r
-{\r
- GtkWidget *menu = NULL;\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Name Resolution/Enable for MAC Layer");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), g_resolv_flags & RESOLV_MAC);\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Name Resolution/Enable for Network Layer");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), g_resolv_flags & RESOLV_NETWORK);\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Name Resolution/Enable for Transport Layer");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), g_resolv_flags & RESOLV_TRANSPORT);\r
-}\r
-\r
-static void \r
-name_resolution_mac_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- if (GTK_CHECK_MENU_ITEM(w)->active) {\r
- g_resolv_flags |= RESOLV_MAC;\r
- } else {\r
- g_resolv_flags &= ~RESOLV_MAC;\r
- }\r
-}\r
-\r
-static void \r
-name_resolution_network_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- if (GTK_CHECK_MENU_ITEM(w)->active) {\r
- g_resolv_flags |= RESOLV_NETWORK;\r
- } else {\r
- g_resolv_flags &= ~RESOLV_NETWORK;\r
- }\r
-}\r
-\r
-static void \r
-name_resolution_transport_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- if (GTK_CHECK_MENU_ITEM(w)->active) {\r
- g_resolv_flags |= RESOLV_TRANSPORT;\r
- } else {\r
- g_resolv_flags &= ~RESOLV_TRANSPORT;\r
- }\r
-}\r
-\r
-#ifdef HAVE_LIBPCAP\r
-static void \r
-auto_scroll_live_cb(GtkWidget *w _U_, gpointer d _U_)\r
-{\r
- auto_scroll_live = GTK_CHECK_MENU_ITEM(w)->active;\r
-}\r
-#endif\r
-\r
-/* the recent file read has finished, update the menu corresponding */\r
-void\r
-menu_recent_read_finished(void) {\r
- GtkWidget *menu = NULL;\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Main Toolbar");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.main_toolbar_show);\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Filter Toolbar");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.filter_toolbar_show);\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Statusbar");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.statusbar_show);\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Packet List");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.packet_list_show);\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Packet Details");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.tree_view_show);\r
-\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Packet Bytes");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.byte_view_show);\r
-\r
- menu_name_resolution_changed();\r
-\r
-#ifdef HAVE_LIBPCAP\r
- menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Auto Scroll in Live Capture");\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), auto_scroll_live);\r
-#endif\r
-\r
- main_widgets_rearrange();\r
-\r
- /* don't change the time format, if we had a command line value */\r
- if (get_timestamp_setting() != TS_NOT_SET) {\r
- recent.gui_time_format = get_timestamp_setting();\r
- }\r
-\r
- switch(recent.gui_time_format) {\r
- case(TS_ABSOLUTE):\r
- menu = gtk_item_factory_get_widget(main_menu_factory, \r
- "/View/Time Display Format/Time of Day");\r
- /* set_active will not trigger the callback when activating an active item! */\r
- recent.gui_time_format = -1;\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), FALSE);\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);\r
- break;\r
- case(TS_ABSOLUTE_WITH_DATE):\r
- menu = gtk_item_factory_get_widget(main_menu_factory, \r
- "/View/Time Display Format/Date and Time of Day");\r
- recent.gui_time_format = -1;\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);\r
- break;\r
- case(TS_RELATIVE):\r
- menu = gtk_item_factory_get_widget(main_menu_factory, \r
- "/View/Time Display Format/Seconds Since Beginning of Capture");\r
- recent.gui_time_format = -1;\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);\r
- break;\r
- case(TS_DELTA):\r
- menu = gtk_item_factory_get_widget(main_menu_factory, \r
- "/View/Time Display Format/Seconds Since Previous Packet");\r
- recent.gui_time_format = -1;\r
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);\r
- break;\r
- default:\r
- g_assert_not_reached();\r
- }\r
-}\r
-\r
-\r
-gint\r
-popup_menu_handler(GtkWidget *widget, GdkEvent *event, gpointer data)\r
-{\r
- GtkWidget *menu = (GtkWidget *)data;\r
- GdkEventButton *event_button = NULL;\r
- gint row, column;\r
-\r
- if(widget == NULL || event == NULL || data == NULL) {\r
- return FALSE;\r
- }\r
-\r
- /*\r
- * If we ever want to make the menu differ based on what row\r
- * and/or column we're above, we'd use "eth_clist_get_selection_info()"\r
- * to find the row and column number for the coordinates; a CTree is,\r
- * I guess, like a CList with one column(?) and the expander widget\r
- * as a pixmap.\r
- */\r
- /* Check if we are on packet_list object */\r
- if (widget == OBJECT_GET_DATA(popup_menu_object, E_MPACKET_LIST_KEY)) {\r
- if (packet_list_get_event_row_column(widget, (GdkEventButton *)event,\r
- &row, &column)) {\r
- OBJECT_SET_DATA(popup_menu_object, E_MPACKET_LIST_ROW_KEY,\r
- GINT_TO_POINTER(row));\r
- OBJECT_SET_DATA(popup_menu_object, E_MPACKET_LIST_COL_KEY,\r
- GINT_TO_POINTER(column));\r
- packet_list_set_selected_row(row);\r
- }\r
- }\r
-\r
- /* Check if we are on tree_view object */\r
- if (widget == tree_view) {\r
- tree_view_select(widget, (GdkEventButton *) event);\r
- }\r
-\r
- /* Check if we are on byte_view object */\r
- if(widget == get_notebook_bv_ptr(byte_nb_ptr)) {\r
- byte_view_select(widget, (GdkEventButton *) event);\r
- }\r
-\r
- /* context menu handler (but the byte view notebook pages have their own handler) */\r
- if(event->type == GDK_BUTTON_PRESS && widget != byte_nb_ptr) {\r
- event_button = (GdkEventButton *) event;\r
-\r
- /* To qoute the "Gdk Event Structures" doc:\r
- * "Normally button 1 is the left mouse button, 2 is the middle button, and 3 is the right button" */\r
- if(event_button->button == 3) {\r
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,\r
- event_button->button,\r
- event_button->time);\r
- SIGNAL_EMIT_STOP_BY_NAME(widget, "button_press_event");\r
- return TRUE;\r
- }\r
- }\r
-#if GTK_MAJOR_VERSION >= 2\r
- /* GDK_2BUTTON_PRESS is a doubleclick -> expand/collapse tree row */\r
- /* GTK version 1 seems to be doing this automatically */\r
- if (widget == tree_view && event->type == GDK_2BUTTON_PRESS) {\r
- GtkTreePath *path;\r
-\r
- if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget),\r
- (gint) (((GdkEventButton *)event)->x),\r
- (gint) (((GdkEventButton *)event)->y),\r
- &path, NULL, NULL, NULL))\r
- {\r
- if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(widget), path))\r
- gtk_tree_view_collapse_row(GTK_TREE_VIEW(widget), path);\r
- else\r
- gtk_tree_view_expand_row(GTK_TREE_VIEW(widget), path,\r
- FALSE);\r
- gtk_tree_path_free(path);\r
- }\r
- }\r
-#endif\r
- return FALSE;\r
-}\r
-\r
-/* Enable or disable menu items based on whether you have a capture file\r
- you've finished reading. */\r
-void\r
-set_menus_for_capture_file(gboolean have_capture_file)\r
-{\r
- set_menu_sensitivity(main_menu_factory, "/File/Open...", have_capture_file);\r
- set_menu_sensitivity(main_menu_factory, "/File/Open Recent", have_capture_file);\r
- set_menu_sensitivity(main_menu_factory, "/File/Merge...", have_capture_file);\r
- set_menu_sensitivity(main_menu_factory, "/File/Close", have_capture_file);\r
- set_menu_sensitivity(main_menu_factory, "/File/Save As...",\r
- have_capture_file);\r
- set_menu_sensitivity(main_menu_factory, "/File/Export", have_capture_file);\r
- set_menu_sensitivity(main_menu_factory, "/View/Reload", have_capture_file);\r
- set_toolbar_for_capture_file(have_capture_file);\r
- packets_bar_update();\r
-}\r
-\r
-/* Enable or disable menu items based on whether you have an unsaved\r
- capture file you've finished reading. */\r
-void\r
-set_menus_for_unsaved_capture_file(gboolean have_unsaved_capture_file)\r
-{\r
- set_menu_sensitivity(main_menu_factory, "/File/Save",\r
- have_unsaved_capture_file);\r
- set_toolbar_for_unsaved_capture_file(have_unsaved_capture_file);\r
-}\r
-\r
-/* Enable or disable menu items based on whether there's a capture in\r
- progress. */\r
-void\r
-set_menus_for_capture_in_progress(gboolean capture_in_progress)\r
-{\r
- set_menu_sensitivity(main_menu_factory, "/File/Open...",\r
- !capture_in_progress);\r
- set_menu_sensitivity(main_menu_factory, "/File/Open Recent", \r
- !capture_in_progress);\r
-#ifdef HAVE_LIBPCAP\r
- set_menu_sensitivity(main_menu_factory, "/Capture/Start...",\r
- !capture_in_progress);\r
- set_menu_sensitivity(main_menu_factory, "/Capture/Stop",\r
- capture_in_progress);\r
-#endif /* HAVE_LIBPCAP */\r
- set_toolbar_for_capture_in_progress(capture_in_progress);\r
-\r
- set_capture_if_dialog_for_capture_in_progress(capture_in_progress);\r
-}\r
-\r
-/* Enable or disable menu items based on whether you have some captured\r
- packets. */\r
-static gboolean\r
-walk_menu_tree_for_captured_packets(GList *node,\r
- gboolean have_captured_packets)\r
-{\r
- gboolean is_enabled;\r
- GList *child;\r
- menu_item_t *node_data = node->data;\r
-\r
- /*\r
- * Is this a leaf node or an interior node?\r
- */\r
- if (node_data->children == NULL) {\r
- /*\r
- * It's a leaf node.\r
- *\r
- * If it has no "selected_packet_enabled()" or\r
- * "selected_tree_row_enabled()" routines, we enable\r
- * it. This allows tap windows to be popped up even\r
- * if you have no capture file; this is done to let\r
- * the user pop up multiple tap windows before reading\r
- * in a capture file, so that they can be processed in\r
- * parallel while the capture file is being read rather\r
- * than one at at time as you pop up the windows, and to\r
- * let the user pop up tap windows before starting an\r
- * "Update list of packets in real time" capture, so that\r
- * the statistics can be displayed while the capture is\r
- * in progress.\r
- *\r
- * If it has either of those routines, we disable it for\r
- * now - as long as, when a capture is first available,\r
- * we don't get called after a packet or tree row is\r
- * selected, that's OK.\r
- * XXX - that should be done better.\r
- */\r
- if (node_data->selected_packet_enabled == NULL &&\r
- node_data->selected_tree_row_enabled == NULL)\r
- node_data->enabled = TRUE;\r
- else\r
- node_data->enabled = FALSE;\r
- } else {\r
- /*\r
- * It's an interior node; call\r
- * "walk_menu_tree_for_captured_packets()" on all its\r
- * children and, if any of them are enabled, enable\r
- * this node, otherwise disable it.\r
- *\r
- * XXX - should we just leave all interior nodes enabled?\r
- * Which is a better UI choice?\r
- */\r
- is_enabled = FALSE;\r
- for (child = node_data->children; child != NULL; child =\r
- child->next) {\r
- if (walk_menu_tree_for_captured_packets(child,\r
- have_captured_packets))\r
- is_enabled = TRUE;\r
- }\r
- node_data->enabled = is_enabled;\r
- }\r
-\r
- /*\r
- * The root node doesn't correspond to a menu tree item; it\r
- * has a null name pointer.\r
- */\r
- if (node_data->name != NULL) {\r
- set_menu_sensitivity(main_menu_factory, node_data->name,\r
- node_data->enabled);\r
- }\r
- return node_data->enabled;\r
-}\r
-\r
-void\r
-set_menus_for_captured_packets(gboolean have_captured_packets)\r
-{\r
- set_menu_sensitivity(main_menu_factory, "/File/Print...",\r
- have_captured_packets);\r
- set_menu_sensitivity(packet_list_menu_factory, "/Print...",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Find Packet...",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Find Next",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Find Previous",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/View/Zoom In",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/View/Zoom Out",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/View/Normal Size",\r
- have_captured_packets);\r
- set_menu_sensitivity(packet_list_menu_factory, "/Coloring Rules...",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Go/Go to Packet...",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Go/First Packet",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Go/Last Packet",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Statistics/Summary",\r
- have_captured_packets);\r
- set_menu_sensitivity(main_menu_factory, "/Statistics/Protocol Hierarchy", \r
- have_captured_packets);\r
- \r
- walk_menu_tree_for_captured_packets(tap_menu_tree_root,\r
- have_captured_packets);\r
- set_toolbar_for_captured_packets(have_captured_packets);\r
- packets_bar_update();\r
-}\r
-\r
-/* Enable or disable menu items based on whether a packet is selected and,\r
- if so, on the properties of the packet. */\r
-static gboolean\r
-walk_menu_tree_for_selected_packet(GList *node, frame_data *fd,\r
- epan_dissect_t *edt)\r
-{\r
- gboolean is_enabled;\r
- GList *child;\r
- menu_item_t *node_data = node->data;\r
-\r
- /*\r
- * Is this a leaf node or an interior node?\r
- */\r
- if (node_data->children == NULL) {\r
- /*\r
- * It's a leaf node.\r
- *\r
- * If it has no "selected_packet_enabled()" routine,\r
- * leave its enabled/disabled status alone - it\r
- * doesn't depend on whether we have a packet selected\r
- * or not or on the selected packet.\r
- *\r
- * If it has a "selected_packet_enabled()" routine,\r
- * call it and set the item's enabled/disabled status\r
- * based on its return value.\r
- */\r
- if (node_data->selected_packet_enabled != NULL)\r
- node_data->enabled = node_data->selected_packet_enabled(fd, edt);\r
- } else {\r
- /*\r
- * It's an interior node; call\r
- * "walk_menu_tree_for_selected_packet()" on all its\r
- * children and, if any of them are enabled, enable\r
- * this node, otherwise disable it.\r
- *\r
- * XXX - should we just leave all interior nodes enabled?\r
- * Which is a better UI choice?\r
- */\r
- is_enabled = FALSE;\r
- for (child = node_data->children; child != NULL; child =\r
- child->next) {\r
- if (walk_menu_tree_for_selected_packet(child, fd, edt))\r
- is_enabled = TRUE;\r
- }\r
- node_data->enabled = is_enabled;\r
- }\r
-\r
- /*\r
- * The root node doesn't correspond to a menu tree item; it\r
- * has a null name pointer.\r
- */\r
- if (node_data->name != NULL) {\r
- set_menu_sensitivity(main_menu_factory, node_data->name,\r
- node_data->enabled);\r
- }\r
- return node_data->enabled;\r
-}\r
-\r
-void\r
-set_menus_for_selected_packet(capture_file *cf)\r
-{\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Mark Packet",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(packet_list_menu_factory, "/Mark Packet",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Time Reference",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(packet_list_menu_factory, "/Time Reference",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Mark All Packets",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(main_menu_factory, "/Edit/Unmark All Packets",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(main_menu_factory, "/View/Collapse All",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Collapse All",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(main_menu_factory, "/View/Expand All",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Expand All",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(main_menu_factory, "/View/Show Packet in New Window",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(packet_list_menu_factory, "/Show Packet in New Window",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(main_menu_factory, "/Analyze/Follow TCP Stream",\r
- cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE);\r
- set_menu_sensitivity(NULL, "/Follow TCP Stream",\r
- cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE);\r
- set_menu_sensitivity(main_menu_factory, "/Analyze/Decode As...",\r
- cf->current_frame != NULL && decode_as_ok());\r
- set_menu_sensitivity(NULL, "/Decode As...",\r
- cf->current_frame != NULL && decode_as_ok());\r
- set_menu_sensitivity(main_menu_factory, "/View/Name Resolution/Resolve Name",\r
- cf->current_frame != NULL && (g_resolv_flags & RESOLV_ALL_ADDRS) != RESOLV_ALL_ADDRS);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Resolve Name",\r
- cf->current_frame != NULL && (g_resolv_flags & RESOLV_ALL_ADDRS) != RESOLV_ALL_ADDRS);\r
- set_menu_sensitivity(packet_list_menu_factory, "/Apply as Filter",\r
- cf->current_frame != NULL);\r
- set_menu_sensitivity(packet_list_menu_factory, "/Prepare a Filter",\r
- cf->current_frame != NULL);\r
-\r
- walk_menu_tree_for_selected_packet(tap_menu_tree_root, cf->current_frame,\r
- cf->edt);\r
- packets_bar_update();\r
-}\r
-\r
-/* Enable or disable menu items based on whether a tree row is selected\r
- and, if so, on the properties of the tree row. */\r
-static gboolean\r
-walk_menu_tree_for_selected_tree_row(GList *node, field_info *fi)\r
-{\r
- gboolean is_enabled;\r
- GList *child;\r
- menu_item_t *node_data = node->data;\r
-\r
- /*\r
- * Is this a leaf node or an interior node?\r
- */\r
- if (node_data->children == NULL) {\r
- /*\r
- * It's a leaf node.\r
- *\r
- * If it has no "selected_tree_row_enabled()" routine,\r
- * leave its enabled/disabled status alone - it\r
- * doesn't depend on whether we have a tree row selected\r
- * or not or on the selected tree row.\r
- *\r
- * If it has a "selected_tree_row_enabled()" routine,\r
- * call it and set the item's enabled/disabled status\r
- * based on its return value.\r
- */\r
- if (node_data->selected_tree_row_enabled != NULL)\r
- node_data->enabled = node_data->selected_tree_row_enabled(fi);\r
- } else {\r
- /*\r
- * It's an interior node; call\r
- * "walk_menu_tree_for_selected_tree_row()" on all its\r
- * children and, if any of them are enabled, enable\r
- * this node, otherwise disable it.\r
- *\r
- * XXX - should we just leave all interior nodes enabled?\r
- * Which is a better UI choice?\r
- */\r
- is_enabled = FALSE;\r
- for (child = node_data->children; child != NULL; child =\r
- child->next) {\r
- if (walk_menu_tree_for_selected_tree_row(child, fi))\r
- is_enabled = TRUE;\r
- }\r
- node_data->enabled = is_enabled;\r
- }\r
-\r
- /*\r
- * The root node doesn't correspond to a menu tree item; it\r
- * has a null name pointer.\r
- */\r
- if (node_data->name != NULL) {\r
- set_menu_sensitivity(main_menu_factory, node_data->name,\r
- node_data->enabled);\r
- }\r
- return node_data->enabled;\r
-}\r
-\r
-void\r
-set_menus_for_selected_tree_row(capture_file *cf)\r
-{\r
- gboolean properties;\r
-\r
-\r
- set_menu_sensitivity(main_menu_factory, "/File/Export/Selected Packet Bytes...", \r
- cf->finfo_selected != NULL); \r
- set_menu_sensitivity(tree_view_menu_factory, "/Export Selected Packet Bytes...", \r
- cf->finfo_selected != NULL);\r
- set_menu_sensitivity(hexdump_menu_factory, "/Export Selected Packet Bytes...", \r
- cf->finfo_selected != NULL);\r
- \r
- if (cf->finfo_selected != NULL) {\r
- header_field_info *hfinfo = cf->finfo_selected->hfinfo;\r
- if (hfinfo->parent == -1) {\r
- properties = prefs_is_registered_protocol(hfinfo->abbrev);\r
- } else {\r
- properties = prefs_is_registered_protocol(proto_registrar_get_abbrev(hfinfo->parent));\r
- }\r
- set_menu_sensitivity(main_menu_factory,\r
- "/Go/Go to Corresponding Packet", hfinfo->type == FT_FRAMENUM);\r
- set_menu_sensitivity(tree_view_menu_factory,\r
- "/Go to Corresponding Packet", hfinfo->type == FT_FRAMENUM);\r
- set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Filter",\r
- proto_can_match_selected(cf->finfo_selected, cf->edt));\r
- set_menu_sensitivity(tree_view_menu_factory, "/Apply as Filter",\r
- proto_can_match_selected(cf->finfo_selected, cf->edt));\r
- set_menu_sensitivity(main_menu_factory, "/Analyze/Prepare a Filter",\r
- proto_can_match_selected(cf->finfo_selected, cf->edt));\r
- set_menu_sensitivity(tree_view_menu_factory, "/Prepare a Filter",\r
- proto_can_match_selected(cf->finfo_selected, cf->edt));\r
- set_menu_sensitivity(tree_view_menu_factory, "/Protocol Preferences...",\r
- properties);\r
- set_menu_sensitivity(main_menu_factory, "/View/Expand Tree", cf->finfo_selected->tree_type != -1);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Expand Tree", cf->finfo_selected->tree_type != -1);\r
- } else {\r
- set_menu_sensitivity(main_menu_factory,\r
- "/Go/Go to Corresponding Packet", FALSE);\r
- set_menu_sensitivity(tree_view_menu_factory,\r
- "/Go to Corresponding Packet", FALSE);\r
- set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Filter", FALSE);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Apply as Filter", FALSE);\r
- set_menu_sensitivity(main_menu_factory, "/Analyze/Prepare a Filter", FALSE);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Prepare a Filter", FALSE);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Protocol Preferences...",\r
- FALSE);\r
- set_menu_sensitivity(main_menu_factory, "/View/Expand Tree", FALSE);\r
- set_menu_sensitivity(tree_view_menu_factory, "/Expand Tree", FALSE);\r
- }\r
-\r
- walk_menu_tree_for_selected_tree_row(tap_menu_tree_root, cf->finfo_selected);\r
-}\r
+/* menu.c
+ * Menu routines
+ *
+ * $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 <gtk/gtk.h>
+
+#include <string.h>
+
+#include "main.h"
+#include "menu.h"
+#include "tap_menu.h"
+#include <epan/packet.h>
+#include <epan/resolv.h>
+#include "prefs.h"
+#include "about_dlg.h"
+#include "capture_dlg.h"
+#include "color_dlg.h"
+#include "filter_prefs.h"
+#include "dlg_utils.h"
+#include "file_dlg.h"
+#include "find_dlg.h"
+#include "goto_dlg.h"
+#include "summary_dlg.h"
+#include "prefs_dlg.h"
+#include "packet_win.h"
+#include "print.h"
+#include "follow_dlg.h"
+#include "decode_as_dlg.h"
+#include "help_dlg.h"
+#include "supported_protos_dlg.h"
+#include "proto_dlg.h"
+#include "proto_hier_stats_dlg.h"
+#include "keys.h"
+#include <epan/plugins.h>
+#include <epan/epan_dissect.h>
+#include "compat_macros.h"
+#include "toolbar.h"
+#include "gtkglobals.h"
+#include "register.h"
+#include "../tap.h"
+#include "../menu.h"
+#include "../ipproto.h"
+#include "packet_list.h"
+#include "ethclist.h"
+#include "recent.h"
+#include "../ui_util.h"
+#include "proto_draw.h"
+#include "endpoint_talkers_table.h"
+#include "hostlist_table.h"
+#include "simple_dialog.h"
+#include <epan/timestamp.h>
+
+GtkWidget *popup_menu_object;
+
+static void
+clear_menu_recent_capture_file_cmd_cb(GtkWidget *w, gpointer unused _U_);
+
+typedef struct _menu_item {
+ char *name;
+ gint group;
+ gboolean enabled;
+ GtkItemFactoryCallback callback;
+ gpointer callback_data;
+ gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *);
+ gboolean (*selected_tree_row_enabled)(field_info *);
+ GList *children;
+} menu_item_t;
+
+static GList *tap_menu_tree_root = NULL;
+
+static void
+merge_all_tap_menus(GList *node);
+
+#define GTK_MENU_FUNC(a) ((GtkItemFactoryCallback)(a))
+
+static void menus_init(void);
+static void set_menu_sensitivity (GtkItemFactory *, const gchar *, gint);
+static void main_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_);
+static void filter_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_);
+static void packet_list_show_cb(GtkWidget *w _U_, gpointer d _U_);
+static void tree_view_show_cb(GtkWidget *w _U_, gpointer d _U_);
+static void byte_view_show_cb(GtkWidget *w _U_, gpointer d _U_);
+static void statusbar_show_cb(GtkWidget *w _U_, gpointer d _U_);
+static void timestamp_absolute_cb(GtkWidget *w _U_, gpointer d _U_);
+static void timestamp_absolute_date_cb(GtkWidget *w _U_, gpointer d _U_);
+static void timestamp_relative_cb(GtkWidget *w _U_, gpointer d _U_);
+static void timestamp_delta_cb(GtkWidget *w _U_, gpointer d _U_);
+static void name_resolution_mac_cb(GtkWidget *w _U_, gpointer d _U_);
+static void name_resolution_network_cb(GtkWidget *w _U_, gpointer d _U_);
+static void name_resolution_transport_cb(GtkWidget *w _U_, gpointer d _U_);
+#ifdef HAVE_LIBPCAP
+static void auto_scroll_live_cb(GtkWidget *w _U_, gpointer d _U_);
+#endif
+
+/* This is the GtkItemFactoryEntry structure used to generate new menus.
+ Item 1: The menu path. The letter after the underscore indicates an
+ accelerator key once the menu is open.
+ Item 2: The accelerator key for the entry
+ Item 3: The callback function.
+ Item 4: The callback action. This changes the parameters with
+ which the function is called. The default is 0.
+ Item 5: The item type, used to define what kind of an item it is.
+ Here are the possible values:
+
+ NULL -> "<Item>"
+ "" -> "<Item>"
+ "<Title>" -> create a title item
+ "<Item>" -> create a simple item
+ "<ImageItem>" -> create an item holding an image (gtk2)
+ "<StockItem>" -> create an item holding a stock image (gtk2)
+ "<CheckItem>" -> create a check item
+ "<ToggleItem>" -> create a toggle item
+ "<RadioItem>" -> create a radio item
+ <path> -> path of a radio item to link against
+ "<Separator>" -> create a separator
+ "<Tearoff>" -> create a tearoff separator (gtk2)
+ "<Branch>" -> create an item to hold sub items (optional)
+ "<LastBranch>" -> create a right justified branch
+ Item 6: extra data needed for ImageItem and StockItem (gtk2)
+ */
+
+/* main menu */
+static GtkItemFactoryEntry menu_items[] =
+{
+ ITEM_FACTORY_ENTRY("/_File", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/File/_Open...", "<control>O", file_open_cmd_cb,
+ 0, GTK_STOCK_OPEN),
+ ITEM_FACTORY_ENTRY("/File/Open _Recent", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/File/_Merge...", NULL, file_merge_cmd_cb, 0, NULL, NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/File/_Close", "<control>W", file_close_cmd_cb,
+ 0, GTK_STOCK_CLOSE),
+ ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/File/_Save", "<control>S", file_save_cmd_cb,
+ 0, GTK_STOCK_SAVE),
+ ITEM_FACTORY_STOCK_ENTRY("/File/Save _As...", "<shift><control>S", file_save_as_cmd_cb,
+ 0, GTK_STOCK_SAVE_AS),
+ ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/File/_Export", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/File/Export/as \"Plain _Text\" file...", NULL, export_text_cmd_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/File/Export/as \"_PostScript\" file...", NULL, export_ps_cmd_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/File/Export/as XML - \"P_SML\" (packet summary) file...", NULL, export_psml_cmd_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/File/Export/as XML - \"P_DML\" (packet details) file...", NULL, export_pdml_cmd_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/File/Export/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/File/Export/Selected Packet _Bytes...", "<control>H", savehex_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/File/_Print...", "<control>P", file_print_cmd_cb,
+ 0, GTK_STOCK_PRINT),
+ ITEM_FACTORY_ENTRY("/File/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/File/_Quit", "<control>Q", file_quit_cmd_cb,
+ 0, GTK_STOCK_QUIT),
+ ITEM_FACTORY_ENTRY("/_Edit", NULL, NULL, 0, "<Branch>", NULL),
+#if 0
+ /* Un-#if this when we actually implement Cut/Copy/Paste. */
+ ITEM_FACTORY_STOCK_ENTRY("/Edit/Cut", "<control>X", NULL,
+ 0, GTK_STOCK_CUT),
+ ITEM_FACTORY_STOCK_ENTRY("/Edit/Copy", "<control>C", NULL,
+ 0, GTK_STOCK_COPY),
+ ITEM_FACTORY_STOCK_ENTRY("/Edit/Paste", "<control>V", NULL,
+ 0, GTK_STOCK_PASTE),
+ ITEM_FACTORY_ENTRY("/Edit/<separator>", NULL, NULL, 0, "<Separator>"),
+#endif
+ ITEM_FACTORY_STOCK_ENTRY("/Edit/_Find Packet...", "<control>F",
+ find_frame_cb, 0, GTK_STOCK_FIND),
+ ITEM_FACTORY_STOCK_ENTRY("/Edit/Find Ne_xt", "<control>N", find_next_cb,
+ 0, GTK_STOCK_GO_FORWARD),
+ ITEM_FACTORY_STOCK_ENTRY("/Edit/Find Pre_vious", "<control>B",
+ find_previous_cb, 0, GTK_STOCK_GO_BACK),
+ ITEM_FACTORY_ENTRY("/Edit/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Edit/_Time Reference", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Edit/Time Reference/Set Time Reference (toggle)", "<control>T", reftime_frame_cb, REFTIME_TOGGLE, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Edit/Time Reference/Find Next", NULL, reftime_frame_cb, REFTIME_FIND_NEXT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Edit/Time Reference/Find Previous", NULL, reftime_frame_cb, REFTIME_FIND_PREV, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Edit/_Mark Packet", "<control>M", mark_frame_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Edit/Mark _All Packets", NULL, mark_all_frames_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Edit/_Unmark All Packets", NULL, unmark_all_frames_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Edit/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Edit/_Preferences...", "<shift><control>P", prefs_cb,
+ 0, GTK_STOCK_PREFERENCES),
+ ITEM_FACTORY_ENTRY("/_View", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/View/_Main Toolbar", NULL, main_toolbar_show_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/_Filter Toolbar", NULL, filter_toolbar_show_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/_Statusbar", NULL, statusbar_show_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Packet _List", NULL, packet_list_show_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Packet _Details", NULL, tree_view_show_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Packet _Bytes", NULL, byte_view_show_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/View/_Time Display Format", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Time Display Format/Time of Day", NULL, timestamp_absolute_cb,
+ 0, "<RadioItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Time Display Format/Date and Time of Day", NULL, timestamp_absolute_date_cb,
+ 0, "/View/Time Display Format/Time of Day", NULL),
+ ITEM_FACTORY_ENTRY("/View/Time Display Format/Seconds Since Beginning of Capture", NULL, timestamp_relative_cb,
+ 0, "/View/Time Display Format/Time of Day", NULL),
+ ITEM_FACTORY_ENTRY("/View/Time Display Format/Seconds Since Previous Packet", NULL, timestamp_delta_cb,
+ 0, "/View/Time Display Format/Time of Day", NULL),
+ ITEM_FACTORY_ENTRY("/View/Name Resol_ution", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Name Resolution/_Resolve Name", NULL, resolve_name_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/View/Name Resolution/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Name Resolution/Enable for _MAC Layer", NULL, name_resolution_mac_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Name Resolution/Enable for _Network Layer", NULL, name_resolution_network_cb, 0, "<CheckItem>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Name Resolution/Enable for _Transport Layer", NULL, name_resolution_transport_cb, 0, "<CheckItem>", NULL),
+#ifdef HAVE_LIBPCAP
+ ITEM_FACTORY_ENTRY("/View/Auto Scroll in Li_ve Capture", NULL, auto_scroll_live_cb, 0, "<CheckItem>", NULL),
+#endif
+ ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/View/_Zoom In", "<control>plus", view_zoom_in_cb,
+ 0, GTK_STOCK_ZOOM_IN),
+ ITEM_FACTORY_STOCK_ENTRY("/View/Zoom _Out", "<control>minus", view_zoom_out_cb,
+ 0, GTK_STOCK_ZOOM_OUT),
+ ITEM_FACTORY_STOCK_ENTRY("/View/_Normal Size", "<control>equal", view_zoom_100_cb,
+ 0, GTK_STOCK_ZOOM_100),
+ ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Collapse _All", NULL, collapse_all_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/View/_Expand All", NULL, expand_all_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/View/Expand Tree", NULL, expand_tree_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/View/_Coloring Rules...", NULL, color_display_cb,
+ 0, GTK_STOCK_SELECT_COLOR),
+ ITEM_FACTORY_ENTRY("/View/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/View/Show Packet in New _Window", NULL,
+ new_window_cb, 0, NULL, NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/View/_Reload", "<control>R", file_reload_cmd_cb,
+ 0, GTK_STOCK_REFRESH),
+ ITEM_FACTORY_ENTRY("/_Go", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Go/_Go to Packet...", "<control>G",
+ goto_frame_cb, 0, GTK_STOCK_JUMP_TO),
+ ITEM_FACTORY_ENTRY("/Go/Go to _Corresponding Packet", NULL, goto_framenum_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Go/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Go/_First Packet", NULL,
+ goto_top_frame_cb, 0, GTK_STOCK_GOTO_TOP),
+ ITEM_FACTORY_STOCK_ENTRY("/Go/_Last Packet", NULL,
+ goto_bottom_frame_cb, 0, GTK_STOCK_GOTO_BOTTOM),
+#ifdef HAVE_LIBPCAP
+ ITEM_FACTORY_ENTRY("/_Capture", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Capture/_Start...", "<control>K",
+ capture_prep_cb, 0, ETHEREAL_STOCK_CAPTURE_START),
+ ITEM_FACTORY_STOCK_ENTRY("/Capture/S_top", "<control>E", capture_stop_cb,
+ 0, GTK_STOCK_STOP),
+ ITEM_FACTORY_ENTRY("/Capture/_Interfaces...", NULL,
+ capture_if_cb, 0, NULL, NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Capture/_Capture Filters...", NULL, cfilter_dialog_cb,
+ 0, ETHEREAL_STOCK_CAPTURE_FILTER),
+#endif /* HAVE_LIBPCAP */
+ ITEM_FACTORY_ENTRY("/_Analyze", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Analyze/_Display Filters...", NULL, dfilter_dialog_cb,
+ 0, ETHEREAL_STOCK_DISPLAY_FILTER),
+ ITEM_FACTORY_ENTRY("/Analyze/Appl_y as Filter", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/_Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/_Not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... _and Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... _or Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... a_nd not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Apply as Filter/... o_r not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/_Prepare a Filter", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/_Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_REPLACE, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/_Not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... _and Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... _or Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... a_nd not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Prepare a Filter/... o_r not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/_Enabled Protocols...", "<shift><control>R", proto_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/Decode _As...", NULL, decode_as_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/_User Specified Decodes...", NULL,
+ decode_show_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Analyze/_Follow TCP Stream", NULL,
+ follow_stream_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/_Statistics", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Statistics/_Summary", NULL, summary_open_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Statistics/_Protocol Hierarchy", NULL,
+ proto_hier_stats_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Statistics/Conversations", NULL,
+ init_ett_notebook_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Statistics/Endpoints", NULL,
+ init_hostlist_notebook_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/_Help", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Help/_Contents", "F1", help_cb, 0, GTK_STOCK_HELP),
+ ITEM_FACTORY_ENTRY("/Help/_Supported Protocols", NULL, supported_cb, 0, NULL, NULL),
+#if (GLIB_MAJOR_VERSION >= 2)
+ /* currently, glib1.x can't start a webbrowser, see webbrowser.c for details */
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal", NULL, url_localpage_cb, LOCALPAGE_MAN_ETHEREAL, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal Filter", NULL, url_localpage_cb, LOCALPAGE_MAN_ETHEREAL_FILTER, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Tethereal", NULL, url_localpage_cb, LOCALPAGE_MAN_TETHEREAL, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Mergecap", NULL, url_localpage_cb, LOCALPAGE_MAN_MERGECAP, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Editcap", NULL, url_localpage_cb, LOCALPAGE_MAN_EDITCAP, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Text2pcap", NULL, url_localpage_cb, LOCALPAGE_MAN_TEXT2PCAP, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Help/Ethereal Online/Home Page", NULL, url_onlinepage_cb, ONLINEPAGE_HOME, GTK_STOCK_HOME),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/User's Guide", NULL, url_onlinepage_cb, ONLINEPAGE_USERGUIDE, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/FAQ's", NULL, url_onlinepage_cb, ONLINEPAGE_FAQ, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Downloads", NULL, url_onlinepage_cb, ONLINEPAGE_DOWNLOAD, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Example Files", NULL, url_onlinepage_cb, ONLINEPAGE_SAMPLE, NULL, NULL),
+#endif
+ ITEM_FACTORY_ENTRY("/Help/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Help/_About Ethereal", NULL, about_ethereal_cb,
+ 0, NULL, NULL)
+};
+
+
+/* calculate the number of menu_items */
+static int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]);
+
+/* packet list popup */
+static GtkItemFactoryEntry packet_list_menu_items[] =
+{
+ ITEM_FACTORY_ENTRY("/Follow TCP Stream", NULL, follow_stream_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Decode As...", NULL, decode_as_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Display Filters...", NULL, dfilter_dialog_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Mark Packet", NULL, mark_frame_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Time Reference", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Time Reference/Set Time Reference (toggle)", NULL, reftime_frame_cb, REFTIME_TOGGLE, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Time Reference/Find Next", NULL, reftime_frame_cb, REFTIME_FIND_NEXT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Time Reference/Find Previous", NULL, reftime_frame_cb, REFTIME_FIND_PREV, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/_Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/_Not Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... _and Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_AND|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... _or Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_OR|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... a_nd not Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_AND_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... o_r not Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_OR_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+
+ ITEM_FACTORY_ENTRY("/Prepare a Filter", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/_Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_REPLACE, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/_Not Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... _and Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_AND, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... _or Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_OR, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... a_nd not Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_AND_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... o_r not Selected", NULL, match_selected_plist_cb,
+ MATCH_SELECTED_OR_NOT, NULL, NULL),
+
+ ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Coloring Rules...", NULL, color_display_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Print...", NULL, file_print_cmd_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Show Packet in New Window", NULL, new_window_cb,
+ 0, NULL, NULL),
+};
+
+static GtkItemFactoryEntry tree_view_menu_items[] =
+{
+ ITEM_FACTORY_ENTRY("/Follow TCP Stream", NULL, follow_stream_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Decode As...", NULL, decode_as_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Display Filters...", NULL, dfilter_dialog_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/_Resolve Name", NULL, resolve_name_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/_Go to Corresponding Packet", NULL, goto_framenum_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/_Export Selected Packet Bytes...", NULL, savehex_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Protocol Preferences...", NULL, properties_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/_Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_REPLACE|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/_Not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... _and Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... _or Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... a_nd not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Apply as Filter/... o_r not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR_NOT|MATCH_SELECTED_APPLY_NOW, NULL, NULL),
+
+ ITEM_FACTORY_ENTRY("/Prepare a Filter", NULL, NULL, 0, "<Branch>", NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/_Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_REPLACE, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/_Not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... _and Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... _or Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... a_nd not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_AND_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Prepare a Filter/... o_r not Selected", NULL, match_selected_ptree_cb,
+ MATCH_SELECTED_OR_NOT, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/<separator>", NULL, NULL, 0, "<Separator>", NULL),
+ ITEM_FACTORY_ENTRY("/Collapse All", NULL, collapse_all_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Expand All", NULL, expand_all_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Expand Tree", NULL, expand_tree_cb, 0, NULL, NULL)
+};
+
+static GtkItemFactoryEntry hexdump_menu_items[] =
+{
+ ITEM_FACTORY_ENTRY("/Follow TCP Stream", NULL, follow_stream_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Decode As...", NULL, decode_as_cb, 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Display Filters...", NULL, dfilter_dialog_cb,
+ 0, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Export Selected Packet Bytes...", NULL, savehex_cb,
+ 0, NULL, NULL)
+};
+
+static int initialize = TRUE;
+static GtkItemFactory *main_menu_factory = NULL;
+static GtkItemFactory *packet_list_menu_factory = NULL;
+static GtkItemFactory *tree_view_menu_factory = NULL;
+static GtkItemFactory *hexdump_menu_factory = NULL;
+
+static GSList *popup_menu_list = NULL;
+
+static GtkAccelGroup *grp;
+
+GtkWidget *
+main_menu_new(GtkAccelGroup ** table) {
+ GtkWidget *menubar;
+
+ grp = gtk_accel_group_new();
+
+ if (initialize)
+ menus_init();
+
+ menubar = main_menu_factory->widget;
+
+ if (table)
+ *table = grp;
+
+ return menubar;
+}
+
+static void
+menus_init(void) {
+ if (initialize) {
+ initialize = FALSE;
+
+ /* popup */
+ packet_list_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);
+ popup_menu_object = gtk_menu_new();
+ gtk_item_factory_create_items_ac(packet_list_menu_factory, sizeof(packet_list_menu_items)/sizeof(packet_list_menu_items[0]), packet_list_menu_items, popup_menu_object, 2);
+ OBJECT_SET_DATA(popup_menu_object, PM_PACKET_LIST_KEY,
+ packet_list_menu_factory->widget);
+ popup_menu_list = g_slist_append((GSList *)popup_menu_list, packet_list_menu_factory);
+
+ tree_view_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);
+ gtk_item_factory_create_items_ac(tree_view_menu_factory, sizeof(tree_view_menu_items)/sizeof(tree_view_menu_items[0]), tree_view_menu_items, popup_menu_object, 2);
+ OBJECT_SET_DATA(popup_menu_object, PM_TREE_VIEW_KEY,
+ tree_view_menu_factory->widget);
+ popup_menu_list = g_slist_append((GSList *)popup_menu_list, tree_view_menu_factory);
+
+ hexdump_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU, "<main>", NULL);
+ gtk_item_factory_create_items_ac(hexdump_menu_factory, sizeof(hexdump_menu_items)/sizeof(hexdump_menu_items[0]), hexdump_menu_items, popup_menu_object, 2);
+ OBJECT_SET_DATA(popup_menu_object, PM_HEXDUMP_KEY,
+ hexdump_menu_factory->widget);
+ popup_menu_list = g_slist_append((GSList *)popup_menu_list, hexdump_menu_factory);
+
+ /* main */
+ main_menu_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", grp);
+ gtk_item_factory_create_items_ac(main_menu_factory, nmenu_items, menu_items, NULL, 2);
+
+ merge_all_tap_menus(tap_menu_tree_root);
+
+ /* Initialize enabled/disabled state of menu items */
+ set_menus_for_unsaved_capture_file(FALSE);
+ set_menus_for_capture_file(FALSE);
+#if 0
+ /* Un-#if this when we actually implement Cut/Copy/Paste.
+ Then make sure you enable them when they can be done. */
+ set_menu_sensitivity(main_menu_factory, "/Edit/Cut", FALSE);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Copy", FALSE);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Paste", FALSE);
+#endif
+
+ set_menus_for_captured_packets(FALSE);
+ set_menus_for_selected_packet(&cfile);
+ set_menus_for_selected_tree_row(&cfile);
+
+ /* init with an empty recent files list */
+ clear_menu_recent_capture_file_cmd_cb(NULL, NULL);
+ }
+}
+
+
+gint tap_menu_item_add_compare(gconstpointer a, gconstpointer b)
+{
+ return strcmp(
+ ((const menu_item_t *) a)->name,
+ ((const menu_item_t *) b)->name);
+}
+
+
+/* add a menuitem below the current node */
+GList * tap_menu_item_add(
+ char *name,
+ gint group,
+ GtkItemFactoryCallback callback,
+ gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *),
+ gboolean (*selected_tree_row_enabled)(field_info *),
+ gpointer callback_data,
+ GList *curnode)
+{
+ menu_item_t *curr;
+ menu_item_t *child;
+
+
+ child = g_malloc(sizeof (menu_item_t));
+ child->group = group;
+ child->name = name;
+ child->callback = callback;
+ child->selected_packet_enabled = selected_packet_enabled;
+ child->selected_tree_row_enabled = selected_tree_row_enabled;
+ child->callback_data = callback_data;
+ child->enabled = FALSE;
+ child->children = NULL;
+
+ /* insert the new child node into the parent */
+ curr = curnode->data;
+ curr->children = g_list_insert_sorted(curr->children, child, tap_menu_item_add_compare);
+
+ /* return the new node */
+ /* XXX: improve this */
+ return g_list_find(curr->children, child);
+}
+
+/*
+ * Add a new menu item for a tap.
+ * This must be called after we've created the main menu, so it can't
+ * be called from the routine that registers taps - we have to introduce
+ * another per-tap registration routine.
+ *
+ * "callback" gets called when the menu item is selected; it should do
+ * the work of creating the tap window.
+ *
+ * "selected_packet_enabled" gets called by "set_menus_for_selected_packet()";
+ * it's passed a Boolean that's TRUE if a packet is selected and FALSE
+ * otherwise, and should return TRUE if the tap will work now (which
+ * might depend on whether a packet is selected and, if one is, on the
+ * packet) and FALSE if not.
+ *
+ * "selected_tree_row_enabled" gets called by
+ * "set_menus_for_selected_tree_row()"; it's passed a Boolean that's TRUE if
+ * a protocol tree row is selected and FALSE otherwise, and should return
+ * TRUE if the tap will work now (which might depend on whether a tree row
+ * is selected and, if one is, on the tree row) and FALSE if not.
+ */
+void
+register_tap_menu_item(
+ char *name,
+ REGISTER_TAP_GROUP_E group,
+ GtkItemFactoryCallback callback,
+ gboolean (*selected_packet_enabled)(frame_data *, epan_dissect_t *),
+ gboolean (*selected_tree_row_enabled)(field_info *),
+ gpointer callback_data)
+{
+ /*static const char toolspath[] = "/Statistics/";*/
+ char *toolspath;
+ char *p;
+ char *menupath;
+ size_t menupathlen;
+ menu_item_t *child;
+ GList *curnode;
+ GList *childnode;
+
+ /*
+ * The menu path must be relative.
+ */
+ g_assert(*name != '/');
+
+ switch(group) {
+ case(REGISTER_TAP_GROUP_GENERIC): toolspath = "/Statistics/"; break;
+ case(REGISTER_TAP_GROUP_CONVERSATION_LIST): toolspath = "/Statistics/_Conversation List/"; break;
+ case(REGISTER_TAP_GROUP_ENDPOINT_LIST): toolspath = "/Statistics/_Endpoint List/"; break;
+ case(REGISTER_TAP_GROUP_RESPONSE_TIME): toolspath = "/Statistics/Service _Response Time/"; break;
+ case(REGISTER_TAP_GROUP_NONE): toolspath = "/Statistics/"; break;
+ default:
+ g_assert(0);
+ toolspath = NULL;
+ }
+
+ /* add the (empty) root node, if not already done */
+ if(tap_menu_tree_root == NULL) {
+ child = g_malloc0(sizeof (menu_item_t));
+ tap_menu_tree_root = g_list_append(NULL, child);
+ }
+
+ /*
+ * Create any submenus required.
+ */
+ curnode = tap_menu_tree_root;
+ p = name;
+ while ((p = strchr(p, '/')) != NULL) {
+ /*
+ * OK, everything between "name" and "p" is
+ * a menu relative subtree into which the menu item
+ * will be placed.
+ *
+ * Construct the absolute path name of that subtree.
+ */
+ menupathlen = strlen(toolspath) + 1 + (p - name);
+ menupath = g_malloc(menupathlen);
+ strcpy(menupath, toolspath);
+ strncat(menupath, name, p - name);
+
+ /*
+ * Does there exist an entry with that path at this
+ * level of the Analyze menu tree?
+ */
+ child = curnode->data;
+ for (childnode = child->children; childnode != NULL; childnode = childnode->next) {
+ child = childnode->data;
+ if (strcmp(child->name, menupath) == 0)
+ break;
+ }
+ if (childnode == NULL) {
+ /*
+ * No. Create such an item as a subtree, and
+ * add it to the Tools menu tree.
+ */
+ childnode = tap_menu_item_add(
+ menupath, group, NULL, NULL ,NULL, NULL, curnode);
+ } else {
+ /*
+ * Yes. We don't need this "menupath" any longer.
+ */
+ g_free(menupath);
+ }
+ curnode = childnode;
+
+ /*
+ * Skip over the '/' we found.
+ */
+ p++;
+ }
+
+ /*
+ * Construct the main menu path for the menu item.
+ */
+ menupathlen = strlen(toolspath) + 1 + strlen(name);
+ menupath = g_malloc(menupathlen);
+ strcpy(menupath, toolspath);
+ strcat(menupath, name);
+
+ /*
+ * Construct an item factory entry for the item, and add it to
+ * the main menu.
+ */
+ tap_menu_item_add(
+ menupath, group, callback,
+ selected_packet_enabled, selected_tree_row_enabled,
+ callback_data, curnode);
+}
+
+
+guint merge_tap_menus_layered(GList *node, gint group) {
+ GtkItemFactoryEntry *entry;
+ GList *child;
+ guint added = 0;
+ menu_item_t *node_data = node->data;
+
+ /*
+ * Is this a leaf node or an interior node?
+ */
+ if (node_data->children == NULL) {
+ /*
+ * It's a leaf node.
+ */
+
+ /*
+ * The root node doesn't correspond to a menu tree item; it
+ * has a null name pointer.
+ */
+ if (node_data->name != NULL && group == node_data->group) {
+ entry = g_malloc0(sizeof (GtkItemFactoryEntry));
+ entry->path = node_data->name;
+ entry->callback = node_data->callback;
+ gtk_item_factory_create_item(main_menu_factory, entry, node_data->callback_data, 2);
+ set_menu_sensitivity(main_menu_factory, node_data->name, FALSE); /* no capture file yet */
+ added++;
+ }
+ } else {
+ /*
+ * It's an interior node; call
+ * "merge_tap_menus_layered()" on all its children
+ */
+
+ /*
+ * The root node doesn't correspond to a menu tree item; it
+ * has a null name pointer.
+ */
+ if (node_data->name != NULL && group == node_data->group) {
+ entry = g_malloc0(sizeof (GtkItemFactoryEntry));
+ entry->path = node_data->name;
+ entry->item_type = "<Branch>";
+ gtk_item_factory_create_item(main_menu_factory, entry,
+ NULL, 2);
+ set_menu_sensitivity(main_menu_factory, node_data->name,
+ FALSE); /* no children yet */
+ added++;
+ }
+
+ for (child = node_data->children; child != NULL; child =
+ child->next) {
+ added += merge_tap_menus_layered(child, group);
+ }
+ }
+
+ return added;
+}
+
+
+void merge_all_tap_menus(GList *node) {
+ GtkItemFactoryEntry *entry;
+
+ entry = g_malloc0(sizeof (GtkItemFactoryEntry));
+ entry->item_type = "<Separator>";
+ entry->path = "/Statistics/";
+
+ /*
+ * merge only the menu items of the specific group,
+ * and then append a seperator
+ */
+ if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_GENERIC)) {
+ gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);
+ }
+ if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_CONVERSATION_LIST)) {
+ /*gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);*/
+ }
+ if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_ENDPOINT_LIST)) {
+ /*gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);*/
+ }
+ if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_RESPONSE_TIME)) {
+ gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);
+ }
+ if (merge_tap_menus_layered(node, REGISTER_TAP_GROUP_NONE)) {
+ /*gtk_item_factory_create_item(main_menu_factory, entry, NULL, 2);*/
+ }
+}
+
+
+
+/*
+ * Enable/disable menu sensitivity.
+ */
+static void
+set_menu_sensitivity(GtkItemFactory *ifactory, const gchar *path, gint val)
+{
+ GSList *menu_list;
+ GtkWidget *menu_item;
+ gchar *dup;
+ gchar *dest;
+
+
+ /* the underscore character regularly confuses things, as it will prevent finding
+ * the menu_item, so it has to be removed first */
+ dup = g_strdup(path);
+ dest = dup;
+ while(*path) {
+ if (*path != '_') {
+ *dest = *path;
+ dest++;
+ }
+ path++;
+ }
+ *dest = '\0';
+
+ if (ifactory == NULL) {
+ /*
+ * Do it for all pop-up menus.
+ */
+ for (menu_list = popup_menu_list; menu_list != NULL;
+ menu_list = g_slist_next(menu_list))
+ set_menu_sensitivity(menu_list->data, dup, val);
+ } else {
+ /*
+ * Do it for that particular menu.
+ */
+ if ((menu_item = gtk_item_factory_get_widget(ifactory, dup)) != NULL) {
+ if (GTK_IS_MENU(menu_item)) {
+ /*
+ * "dup" refers to a submenu; "gtk_item_factory_get_widget()"
+ * gets the menu, not the item that, when selected, pops up
+ * the submenu.
+ *
+ * We have to change the latter item's sensitivity, so that
+ * it shows up normally if sensitive and grayed-out if
+ * insensitive.
+ */
+ menu_item = gtk_menu_get_attach_widget(GTK_MENU(menu_item));
+ }
+ gtk_widget_set_sensitive(menu_item, val);
+ } else{
+ /* be sure this menu item *is* existing */
+ g_assert_not_reached();
+ }
+ }
+
+ g_free(dup);
+}
+
+void
+set_menu_object_data_meat(GtkItemFactory *ifactory, gchar *path, gchar *key, gpointer data)
+{
+ GtkWidget *menu = NULL;
+
+ if ((menu = gtk_item_factory_get_widget(ifactory, path)) != NULL)
+ OBJECT_SET_DATA(menu, key, data);
+}
+
+void
+set_menu_object_data (gchar *path, gchar *key, gpointer data) {
+ GSList *menu_list = popup_menu_list;
+ gchar *shortpath = strrchr(path, '/');
+
+ set_menu_object_data_meat(main_menu_factory, path, key, data);
+ while (menu_list != NULL) {
+ set_menu_object_data_meat(menu_list->data, shortpath, key, data);
+ menu_list = g_slist_next(menu_list);
+ }
+}
+
+
+/* Recently used capture files submenu:
+ * Submenu containing the recently used capture files.
+ * The capture filenames are always kept with the absolute path, to be independant
+ * of the current path.
+ * They are only stored inside the labels of the submenu (no separate list). */
+
+#define MENU_RECENT_FILES_PATH "/File/Open Recent"
+#define MENU_RECENT_FILES_KEY "Recent File Name"
+
+void
+update_menu_recent_capture_file1(GtkWidget *widget, gpointer cnt) {
+ gchar *widget_cf_name;
+
+ widget_cf_name = OBJECT_GET_DATA(widget, MENU_RECENT_FILES_KEY);
+
+ /* if this menu item is a file, count it */
+ if (widget_cf_name) {
+ (*(guint *)cnt)++;
+ }
+}
+
+
+/* update the menu */
+void
+update_menu_recent_capture_file(GtkWidget *submenu_recent_files) {
+ guint cnt = 0;
+
+ gtk_container_foreach(GTK_CONTAINER(submenu_recent_files),
+ update_menu_recent_capture_file1, &cnt);
+
+ /* make parent menu item sensitive only, if we have any valid files in the list */
+ set_menu_sensitivity(main_menu_factory, MENU_RECENT_FILES_PATH, cnt);
+}
+
+
+/* remove the capture filename from the "Recent Files" menu */
+void
+remove_menu_recent_capture_file(GtkWidget *widget, gpointer unused _U_) {
+ GtkWidget *submenu_recent_files;
+ gchar *widget_cf_name;
+
+
+ widget_cf_name = OBJECT_GET_DATA(widget, MENU_RECENT_FILES_KEY);
+ g_free(widget_cf_name);
+
+ /* get the submenu container item */
+ submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);
+
+ /* XXX: is this all we need to do, to free the menu item and its label?
+ The reference count of widget will go to 0, so it'll be freed;
+ will that free the label? */
+ gtk_container_remove(GTK_CONTAINER(submenu_recent_files), widget);
+}
+
+
+/* callback, if the user pushed the <Clear File List> item */
+static void
+clear_menu_recent_capture_file_cmd_cb(GtkWidget *w _U_, gpointer unused _U_) {
+ GtkWidget *submenu_recent_files;
+
+
+ submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);
+
+ gtk_container_foreach(GTK_CONTAINER(submenu_recent_files),
+ remove_menu_recent_capture_file, NULL);
+
+ update_menu_recent_capture_file(submenu_recent_files);
+}
+
+
+/* callback, if the user pushed a recent file submenu item */
+void
+menu_open_recent_file_cmd(GtkWidget *w)
+{
+ GtkWidget *submenu_recent_files;
+ GtkWidget *menu_item_child;
+ gchar *cf_name;
+ int err;
+
+ submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);
+
+ /* get capture filename from the menu item label */
+ menu_item_child = (GTK_BIN(w))->child;
+ gtk_label_get(GTK_LABEL(menu_item_child), &cf_name);
+
+ /* open and read the capture file (this will close an existing file) */
+ if ((err = cf_open(cf_name, FALSE, &cfile)) == 0) {
+ cf_read(&cfile);
+ } else {
+ /* the capture file isn't existing any longer, remove menu item */
+ /* XXX: ask user to remove item, it's maybe only a temporary problem */
+ remove_menu_recent_capture_file(w, NULL);
+ }
+
+ update_menu_recent_capture_file(submenu_recent_files);
+}
+
+static void menu_open_recent_file_answered_cb(gpointer dialog _U_, gint btn, gpointer data _U_)
+{
+ switch(btn) {
+ case(ESD_BTN_YES):
+ /* save file first */
+ file_save_as_cmd(after_save_open_recent_file, data);
+ break;
+ case(ESD_BTN_NO):
+ cf_close(&cfile);
+ menu_open_recent_file_cmd(data);
+ break;
+ case(ESD_BTN_CANCEL):
+ break;
+ default:
+ g_assert_not_reached();
+ }
+}
+
+void
+menu_open_recent_file_cmd_cb(GtkWidget *widget, gpointer data _U_) {
+ gpointer dialog;
+
+
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
+ /* user didn't saved his current file, ask him */
+ dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,
+ PRIMARY_TEXT_START "Save capture file before opening a new one?" PRIMARY_TEXT_END "\n\n"
+ "If you open a new capture file without saving, your current capture data will be discarded.");
+ simple_dialog_set_cb(dialog, menu_open_recent_file_answered_cb, widget);
+ } else {
+ /* unchanged file */
+ menu_open_recent_file_cmd(widget);
+ }
+}
+
+/* add the capture filename (with an absolute path) to the "Recent Files" menu */
+void
+add_menu_recent_capture_file_absolute(gchar *cf_name) {
+ GtkWidget *submenu_recent_files;
+ GList *menu_item_list;
+ GList *li;
+ gchar *widget_cf_name;
+ gchar *normalized_cf_name;
+ GtkWidget *menu_item;
+ guint cnt;
+
+
+
+ normalized_cf_name = g_strdup(cf_name);
+#ifdef WIN32
+ /* replace all slashes by backslashes */
+ g_strdelimit(normalized_cf_name, "/", '\\');
+#endif
+
+ /* get the submenu container item */
+ submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);
+
+ /* convert container to a GList */
+ menu_item_list = gtk_container_children(GTK_CONTAINER(submenu_recent_files));
+
+ /* iterate through list items of menu_item_list,
+ * removing special items, a maybe duplicate entry and every item above count_max */
+ cnt = 1;
+ for (li = g_list_first(menu_item_list); li; li = li->next, cnt++) {
+ /* get capture filename */
+ menu_item = GTK_WIDGET(li->data);
+ widget_cf_name = OBJECT_GET_DATA(menu_item, MENU_RECENT_FILES_KEY);
+
+ /* if this element string is one of our special items (seperator, ...) or
+ * already in the list or
+ * this element is above maximum count (too old), remove it */
+ if (!widget_cf_name ||
+#ifdef WIN32
+ /* do a case insensitive compare on win32 */
+#if GLIB_MAJOR_VERSION < 2
+ g_strncasecmp(widget_cf_name, normalized_cf_name, 1000) == 0 ||
+#else
+ g_ascii_strncasecmp(widget_cf_name, normalized_cf_name, 1000) == 0 ||
+#endif
+#else /* WIN32 */
+ /* do a case sensitive compare on unix */
+ strncmp(widget_cf_name, normalized_cf_name, 1000) == 0 ||
+#endif
+ cnt >= prefs.gui_recent_files_count_max) {
+ remove_menu_recent_capture_file(li->data, NULL);
+ cnt--;
+ }
+ }
+
+ g_list_free(menu_item_list);
+
+ /* add new item at latest position */
+ menu_item = gtk_menu_item_new_with_label(normalized_cf_name);
+ OBJECT_SET_DATA(menu_item, MENU_RECENT_FILES_KEY, normalized_cf_name);
+ gtk_menu_prepend (GTK_MENU(submenu_recent_files), menu_item);
+ SIGNAL_CONNECT_OBJECT(GTK_OBJECT(menu_item), "activate",
+ menu_open_recent_file_cmd_cb, (GtkObject *) menu_item);
+ gtk_widget_show (menu_item);
+
+ /* add seperator at last position */
+ menu_item = gtk_menu_item_new();
+ gtk_menu_append (GTK_MENU(submenu_recent_files), menu_item);
+ gtk_widget_show (menu_item);
+
+ /* add new "clear list" item at last position */
+#if GTK_MAJOR_VERSION < 2
+ menu_item = gtk_menu_item_new_with_label("<Clear File List>");
+#else
+ menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLEAR, NULL);
+#endif
+ gtk_menu_append (GTK_MENU(submenu_recent_files), menu_item);
+ SIGNAL_CONNECT_OBJECT(GTK_OBJECT(menu_item), "activate",
+ clear_menu_recent_capture_file_cmd_cb, (GtkObject *) menu_item);
+ gtk_widget_show (menu_item);
+
+ update_menu_recent_capture_file(submenu_recent_files);
+}
+
+
+/* add the capture filename to the "Recent Files" menu */
+/* (will change nothing, if this filename is already in the menu) */
+void
+add_menu_recent_capture_file(gchar *cf_name) {
+ gchar *curr;
+ gchar *absolute;
+
+
+ /* if this filename is an absolute path, we can use it directly */
+ if (g_path_is_absolute(cf_name)) {
+ add_menu_recent_capture_file_absolute(cf_name);
+ return;
+ }
+
+ /* this filename is not an absolute path, prepend the current dir */
+ curr = g_get_current_dir();
+ absolute = g_strdup_printf("%s%s%s", curr, G_DIR_SEPARATOR_S, cf_name);
+ add_menu_recent_capture_file_absolute(absolute);
+ g_free(curr);
+ g_free(absolute);
+}
+
+
+/* write all capture filenames of the menu to the user's recent file */
+void
+menu_recent_file_write_all(FILE *rf) {
+ GtkWidget *submenu_recent_files;
+ GList *children;
+ GList *child;
+ gchar *cf_name;
+
+
+ submenu_recent_files = gtk_item_factory_get_widget(main_menu_factory, MENU_RECENT_FILES_PATH);
+
+ /* we have to iterate backwards through the children's list,
+ * so we get the latest item last in the file.
+ * (don't use gtk_container_foreach() here, it will return the wrong iteration order) */
+ children = gtk_container_children(GTK_CONTAINER(submenu_recent_files));
+ child = g_list_last(children);
+ while(child != NULL) {
+ /* get capture filename from the menu item label */
+ cf_name = OBJECT_GET_DATA(child->data, MENU_RECENT_FILES_KEY);
+ if (cf_name) {
+ fprintf (rf, RECENT_KEY_CAPTURE_FILE ": %s\n", cf_name);
+ }
+
+ child = g_list_previous(child);
+ }
+
+ g_list_free(children);
+}
+
+
+static void
+main_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+
+ /* save current setting in recent */
+ recent.main_toolbar_show = GTK_CHECK_MENU_ITEM(w)->active;
+
+ main_widgets_show_or_hide();
+}
+
+
+static void
+filter_toolbar_show_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+
+ /* save current setting in recent */
+ recent.filter_toolbar_show = GTK_CHECK_MENU_ITEM(w)->active;
+
+ main_widgets_show_or_hide();
+}
+
+
+static void
+packet_list_show_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+
+ /* save current setting in recent */
+ recent.packet_list_show = GTK_CHECK_MENU_ITEM(w)->active;
+
+ main_widgets_show_or_hide();
+}
+
+
+static void
+tree_view_show_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+
+ /* save current setting in recent */
+ recent.tree_view_show = GTK_CHECK_MENU_ITEM(w)->active;
+
+ main_widgets_show_or_hide();
+}
+
+
+static void
+byte_view_show_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+
+ /* save current setting in recent */
+ recent.byte_view_show = GTK_CHECK_MENU_ITEM(w)->active;
+
+ main_widgets_show_or_hide();
+}
+
+
+static void
+statusbar_show_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+
+ /* save current setting in recent */
+ recent.statusbar_show = GTK_CHECK_MENU_ITEM(w)->active;
+
+ main_widgets_show_or_hide();
+}
+
+
+static void
+timestamp_absolute_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ if (recent.gui_time_format != TS_ABSOLUTE) {
+ set_timestamp_setting(TS_ABSOLUTE);
+ recent.gui_time_format = TS_ABSOLUTE;
+ change_time_formats(&cfile);
+ }
+}
+
+static void
+timestamp_absolute_date_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ if (recent.gui_time_format != TS_ABSOLUTE_WITH_DATE) {
+ set_timestamp_setting(TS_ABSOLUTE_WITH_DATE);
+ recent.gui_time_format = TS_ABSOLUTE_WITH_DATE;
+ change_time_formats(&cfile);
+ }
+}
+
+static void
+timestamp_relative_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ if (recent.gui_time_format != TS_RELATIVE) {
+ set_timestamp_setting(TS_RELATIVE);
+ recent.gui_time_format = TS_RELATIVE;
+ change_time_formats(&cfile);
+ }
+}
+
+static void
+timestamp_delta_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ if (recent.gui_time_format != TS_DELTA) {
+ set_timestamp_setting(TS_DELTA);
+ recent.gui_time_format = TS_DELTA;
+ change_time_formats(&cfile);
+ }
+}
+
+void
+menu_name_resolution_changed(void)
+{
+ GtkWidget *menu = NULL;
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Name Resolution/Enable for MAC Layer");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), g_resolv_flags & RESOLV_MAC);
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Name Resolution/Enable for Network Layer");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), g_resolv_flags & RESOLV_NETWORK);
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Name Resolution/Enable for Transport Layer");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), g_resolv_flags & RESOLV_TRANSPORT);
+}
+
+static void
+name_resolution_mac_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ if (GTK_CHECK_MENU_ITEM(w)->active) {
+ g_resolv_flags |= RESOLV_MAC;
+ } else {
+ g_resolv_flags &= ~RESOLV_MAC;
+ }
+}
+
+static void
+name_resolution_network_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ if (GTK_CHECK_MENU_ITEM(w)->active) {
+ g_resolv_flags |= RESOLV_NETWORK;
+ } else {
+ g_resolv_flags &= ~RESOLV_NETWORK;
+ }
+}
+
+static void
+name_resolution_transport_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ if (GTK_CHECK_MENU_ITEM(w)->active) {
+ g_resolv_flags |= RESOLV_TRANSPORT;
+ } else {
+ g_resolv_flags &= ~RESOLV_TRANSPORT;
+ }
+}
+
+#ifdef HAVE_LIBPCAP
+static void
+auto_scroll_live_cb(GtkWidget *w _U_, gpointer d _U_)
+{
+ auto_scroll_live = GTK_CHECK_MENU_ITEM(w)->active;
+}
+#endif
+
+/* the recent file read has finished, update the menu corresponding */
+void
+menu_recent_read_finished(void) {
+ GtkWidget *menu = NULL;
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Main Toolbar");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.main_toolbar_show);
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Filter Toolbar");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.filter_toolbar_show);
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Statusbar");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.statusbar_show);
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Packet List");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.packet_list_show);
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Packet Details");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.tree_view_show);
+
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Packet Bytes");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), recent.byte_view_show);
+
+ menu_name_resolution_changed();
+
+#ifdef HAVE_LIBPCAP
+ menu = gtk_item_factory_get_widget(main_menu_factory, "/View/Auto Scroll in Live Capture");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), auto_scroll_live);
+#endif
+
+ main_widgets_rearrange();
+
+ /* don't change the time format, if we had a command line value */
+ if (get_timestamp_setting() != TS_NOT_SET) {
+ recent.gui_time_format = get_timestamp_setting();
+ }
+
+ switch(recent.gui_time_format) {
+ case(TS_ABSOLUTE):
+ menu = gtk_item_factory_get_widget(main_menu_factory,
+ "/View/Time Display Format/Time of Day");
+ /* set_active will not trigger the callback when activating an active item! */
+ recent.gui_time_format = -1;
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), FALSE);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);
+ break;
+ case(TS_ABSOLUTE_WITH_DATE):
+ menu = gtk_item_factory_get_widget(main_menu_factory,
+ "/View/Time Display Format/Date and Time of Day");
+ recent.gui_time_format = -1;
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);
+ break;
+ case(TS_RELATIVE):
+ menu = gtk_item_factory_get_widget(main_menu_factory,
+ "/View/Time Display Format/Seconds Since Beginning of Capture");
+ recent.gui_time_format = -1;
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);
+ break;
+ case(TS_DELTA):
+ menu = gtk_item_factory_get_widget(main_menu_factory,
+ "/View/Time Display Format/Seconds Since Previous Packet");
+ recent.gui_time_format = -1;
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+}
+
+
+gint
+popup_menu_handler(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ GtkWidget *menu = (GtkWidget *)data;
+ GdkEventButton *event_button = NULL;
+ gint row, column;
+
+ if(widget == NULL || event == NULL || data == NULL) {
+ return FALSE;
+ }
+
+ /*
+ * If we ever want to make the menu differ based on what row
+ * and/or column we're above, we'd use "eth_clist_get_selection_info()"
+ * to find the row and column number for the coordinates; a CTree is,
+ * I guess, like a CList with one column(?) and the expander widget
+ * as a pixmap.
+ */
+ /* Check if we are on packet_list object */
+ if (widget == OBJECT_GET_DATA(popup_menu_object, E_MPACKET_LIST_KEY)) {
+ if (packet_list_get_event_row_column(widget, (GdkEventButton *)event,
+ &row, &column)) {
+ OBJECT_SET_DATA(popup_menu_object, E_MPACKET_LIST_ROW_KEY,
+ GINT_TO_POINTER(row));
+ OBJECT_SET_DATA(popup_menu_object, E_MPACKET_LIST_COL_KEY,
+ GINT_TO_POINTER(column));
+ packet_list_set_selected_row(row);
+ }
+ }
+
+ /* Check if we are on tree_view object */
+ if (widget == tree_view) {
+ tree_view_select(widget, (GdkEventButton *) event);
+ }
+
+ /* Check if we are on byte_view object */
+ if(widget == get_notebook_bv_ptr(byte_nb_ptr)) {
+ byte_view_select(widget, (GdkEventButton *) event);
+ }
+
+ /* context menu handler (but the byte view notebook pages have their own handler) */
+ if(event->type == GDK_BUTTON_PRESS && widget != byte_nb_ptr) {
+ event_button = (GdkEventButton *) event;
+
+ /* To qoute the "Gdk Event Structures" doc:
+ * "Normally button 1 is the left mouse button, 2 is the middle button, and 3 is the right button" */
+ if(event_button->button == 3) {
+ gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
+ event_button->button,
+ event_button->time);
+ SIGNAL_EMIT_STOP_BY_NAME(widget, "button_press_event");
+ return TRUE;
+ }
+ }
+#if GTK_MAJOR_VERSION >= 2
+ /* GDK_2BUTTON_PRESS is a doubleclick -> expand/collapse tree row */
+ /* GTK version 1 seems to be doing this automatically */
+ if (widget == tree_view && event->type == GDK_2BUTTON_PRESS) {
+ GtkTreePath *path;
+
+ if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget),
+ (gint) (((GdkEventButton *)event)->x),
+ (gint) (((GdkEventButton *)event)->y),
+ &path, NULL, NULL, NULL))
+ {
+ if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(widget), path))
+ gtk_tree_view_collapse_row(GTK_TREE_VIEW(widget), path);
+ else
+ gtk_tree_view_expand_row(GTK_TREE_VIEW(widget), path,
+ FALSE);
+ gtk_tree_path_free(path);
+ }
+ }
+#endif
+ return FALSE;
+}
+
+/* Enable or disable menu items based on whether you have a capture file
+ you've finished reading. */
+void
+set_menus_for_capture_file(gboolean have_capture_file)
+{
+ set_menu_sensitivity(main_menu_factory, "/File/Open...", have_capture_file);
+ set_menu_sensitivity(main_menu_factory, "/File/Open Recent", have_capture_file);
+ set_menu_sensitivity(main_menu_factory, "/File/Merge...", have_capture_file);
+ set_menu_sensitivity(main_menu_factory, "/File/Close", have_capture_file);
+ set_menu_sensitivity(main_menu_factory, "/File/Save As...",
+ have_capture_file);
+ set_menu_sensitivity(main_menu_factory, "/File/Export", have_capture_file);
+ set_menu_sensitivity(main_menu_factory, "/View/Reload", have_capture_file);
+ set_toolbar_for_capture_file(have_capture_file);
+ packets_bar_update();
+}
+
+/* Enable or disable menu items based on whether you have an unsaved
+ capture file you've finished reading. */
+void
+set_menus_for_unsaved_capture_file(gboolean have_unsaved_capture_file)
+{
+ set_menu_sensitivity(main_menu_factory, "/File/Save",
+ have_unsaved_capture_file);
+ set_toolbar_for_unsaved_capture_file(have_unsaved_capture_file);
+}
+
+/* Enable or disable menu items based on whether there's a capture in
+ progress. */
+void
+set_menus_for_capture_in_progress(gboolean capture_in_progress)
+{
+ set_menu_sensitivity(main_menu_factory, "/File/Open...",
+ !capture_in_progress);
+ set_menu_sensitivity(main_menu_factory, "/File/Open Recent",
+ !capture_in_progress);
+#ifdef HAVE_LIBPCAP
+ set_menu_sensitivity(main_menu_factory, "/Capture/Start...",
+ !capture_in_progress);
+ set_menu_sensitivity(main_menu_factory, "/Capture/Stop",
+ capture_in_progress);
+#endif /* HAVE_LIBPCAP */
+ set_toolbar_for_capture_in_progress(capture_in_progress);
+
+ set_capture_if_dialog_for_capture_in_progress(capture_in_progress);
+}
+
+/* Enable or disable menu items based on whether you have some captured
+ packets. */
+static gboolean
+walk_menu_tree_for_captured_packets(GList *node,
+ gboolean have_captured_packets)
+{
+ gboolean is_enabled;
+ GList *child;
+ menu_item_t *node_data = node->data;
+
+ /*
+ * Is this a leaf node or an interior node?
+ */
+ if (node_data->children == NULL) {
+ /*
+ * It's a leaf node.
+ *
+ * If it has no "selected_packet_enabled()" or
+ * "selected_tree_row_enabled()" routines, we enable
+ * it. This allows tap windows to be popped up even
+ * if you have no capture file; this is done to let
+ * the user pop up multiple tap windows before reading
+ * in a capture file, so that they can be processed in
+ * parallel while the capture file is being read rather
+ * than one at at time as you pop up the windows, and to
+ * let the user pop up tap windows before starting an
+ * "Update list of packets in real time" capture, so that
+ * the statistics can be displayed while the capture is
+ * in progress.
+ *
+ * If it has either of those routines, we disable it for
+ * now - as long as, when a capture is first available,
+ * we don't get called after a packet or tree row is
+ * selected, that's OK.
+ * XXX - that should be done better.
+ */
+ if (node_data->selected_packet_enabled == NULL &&
+ node_data->selected_tree_row_enabled == NULL)
+ node_data->enabled = TRUE;
+ else
+ node_data->enabled = FALSE;
+ } else {
+ /*
+ * It's an interior node; call
+ * "walk_menu_tree_for_captured_packets()" on all its
+ * children and, if any of them are enabled, enable
+ * this node, otherwise disable it.
+ *
+ * XXX - should we just leave all interior nodes enabled?
+ * Which is a better UI choice?
+ */
+ is_enabled = FALSE;
+ for (child = node_data->children; child != NULL; child =
+ child->next) {
+ if (walk_menu_tree_for_captured_packets(child,
+ have_captured_packets))
+ is_enabled = TRUE;
+ }
+ node_data->enabled = is_enabled;
+ }
+
+ /*
+ * The root node doesn't correspond to a menu tree item; it
+ * has a null name pointer.
+ */
+ if (node_data->name != NULL) {
+ set_menu_sensitivity(main_menu_factory, node_data->name,
+ node_data->enabled);
+ }
+ return node_data->enabled;
+}
+
+void
+set_menus_for_captured_packets(gboolean have_captured_packets)
+{
+ set_menu_sensitivity(main_menu_factory, "/File/Print...",
+ have_captured_packets);
+ set_menu_sensitivity(packet_list_menu_factory, "/Print...",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Find Packet...",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Find Next",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Find Previous",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/View/Zoom In",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/View/Zoom Out",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/View/Normal Size",
+ have_captured_packets);
+ set_menu_sensitivity(packet_list_menu_factory, "/Coloring Rules...",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Go/Go to Packet...",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Go/First Packet",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Go/Last Packet",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Statistics/Summary",
+ have_captured_packets);
+ set_menu_sensitivity(main_menu_factory, "/Statistics/Protocol Hierarchy",
+ have_captured_packets);
+
+ walk_menu_tree_for_captured_packets(tap_menu_tree_root,
+ have_captured_packets);
+ set_toolbar_for_captured_packets(have_captured_packets);
+ packets_bar_update();
+}
+
+/* Enable or disable menu items based on whether a packet is selected and,
+ if so, on the properties of the packet. */
+static gboolean
+walk_menu_tree_for_selected_packet(GList *node, frame_data *fd,
+ epan_dissect_t *edt)
+{
+ gboolean is_enabled;
+ GList *child;
+ menu_item_t *node_data = node->data;
+
+ /*
+ * Is this a leaf node or an interior node?
+ */
+ if (node_data->children == NULL) {
+ /*
+ * It's a leaf node.
+ *
+ * If it has no "selected_packet_enabled()" routine,
+ * leave its enabled/disabled status alone - it
+ * doesn't depend on whether we have a packet selected
+ * or not or on the selected packet.
+ *
+ * If it has a "selected_packet_enabled()" routine,
+ * call it and set the item's enabled/disabled status
+ * based on its return value.
+ */
+ if (node_data->selected_packet_enabled != NULL)
+ node_data->enabled = node_data->selected_packet_enabled(fd, edt);
+ } else {
+ /*
+ * It's an interior node; call
+ * "walk_menu_tree_for_selected_packet()" on all its
+ * children and, if any of them are enabled, enable
+ * this node, otherwise disable it.
+ *
+ * XXX - should we just leave all interior nodes enabled?
+ * Which is a better UI choice?
+ */
+ is_enabled = FALSE;
+ for (child = node_data->children; child != NULL; child =
+ child->next) {
+ if (walk_menu_tree_for_selected_packet(child, fd, edt))
+ is_enabled = TRUE;
+ }
+ node_data->enabled = is_enabled;
+ }
+
+ /*
+ * The root node doesn't correspond to a menu tree item; it
+ * has a null name pointer.
+ */
+ if (node_data->name != NULL) {
+ set_menu_sensitivity(main_menu_factory, node_data->name,
+ node_data->enabled);
+ }
+ return node_data->enabled;
+}
+
+void
+set_menus_for_selected_packet(capture_file *cf)
+{
+ set_menu_sensitivity(main_menu_factory, "/Edit/Mark Packet",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(packet_list_menu_factory, "/Mark Packet",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Time Reference",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(packet_list_menu_factory, "/Time Reference",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Mark All Packets",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/Edit/Unmark All Packets",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/View/Collapse All",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(tree_view_menu_factory, "/Collapse All",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/View/Expand All",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(tree_view_menu_factory, "/Expand All",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/View/Show Packet in New Window",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(packet_list_menu_factory, "/Show Packet in New Window",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Follow TCP Stream",
+ cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE);
+ set_menu_sensitivity(NULL, "/Follow TCP Stream",
+ cf->current_frame != NULL ? (cf->edt->pi.ipproto == IP_PROTO_TCP) : FALSE);
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Decode As...",
+ cf->current_frame != NULL && decode_as_ok());
+ set_menu_sensitivity(NULL, "/Decode As...",
+ cf->current_frame != NULL && decode_as_ok());
+ set_menu_sensitivity(main_menu_factory, "/View/Name Resolution/Resolve Name",
+ cf->current_frame != NULL && (g_resolv_flags & RESOLV_ALL_ADDRS) != RESOLV_ALL_ADDRS);
+ set_menu_sensitivity(tree_view_menu_factory, "/Resolve Name",
+ cf->current_frame != NULL && (g_resolv_flags & RESOLV_ALL_ADDRS) != RESOLV_ALL_ADDRS);
+ set_menu_sensitivity(packet_list_menu_factory, "/Apply as Filter",
+ cf->current_frame != NULL);
+ set_menu_sensitivity(packet_list_menu_factory, "/Prepare a Filter",
+ cf->current_frame != NULL);
+
+ walk_menu_tree_for_selected_packet(tap_menu_tree_root, cf->current_frame,
+ cf->edt);
+ packets_bar_update();
+}
+
+/* Enable or disable menu items based on whether a tree row is selected
+ and, if so, on the properties of the tree row. */
+static gboolean
+walk_menu_tree_for_selected_tree_row(GList *node, field_info *fi)
+{
+ gboolean is_enabled;
+ GList *child;
+ menu_item_t *node_data = node->data;
+
+ /*
+ * Is this a leaf node or an interior node?
+ */
+ if (node_data->children == NULL) {
+ /*
+ * It's a leaf node.
+ *
+ * If it has no "selected_tree_row_enabled()" routine,
+ * leave its enabled/disabled status alone - it
+ * doesn't depend on whether we have a tree row selected
+ * or not or on the selected tree row.
+ *
+ * If it has a "selected_tree_row_enabled()" routine,
+ * call it and set the item's enabled/disabled status
+ * based on its return value.
+ */
+ if (node_data->selected_tree_row_enabled != NULL)
+ node_data->enabled = node_data->selected_tree_row_enabled(fi);
+ } else {
+ /*
+ * It's an interior node; call
+ * "walk_menu_tree_for_selected_tree_row()" on all its
+ * children and, if any of them are enabled, enable
+ * this node, otherwise disable it.
+ *
+ * XXX - should we just leave all interior nodes enabled?
+ * Which is a better UI choice?
+ */
+ is_enabled = FALSE;
+ for (child = node_data->children; child != NULL; child =
+ child->next) {
+ if (walk_menu_tree_for_selected_tree_row(child, fi))
+ is_enabled = TRUE;
+ }
+ node_data->enabled = is_enabled;
+ }
+
+ /*
+ * The root node doesn't correspond to a menu tree item; it
+ * has a null name pointer.
+ */
+ if (node_data->name != NULL) {
+ set_menu_sensitivity(main_menu_factory, node_data->name,
+ node_data->enabled);
+ }
+ return node_data->enabled;
+}
+
+void
+set_menus_for_selected_tree_row(capture_file *cf)
+{
+ gboolean properties;
+
+
+ set_menu_sensitivity(main_menu_factory, "/File/Export/Selected Packet Bytes...",
+ cf->finfo_selected != NULL);
+ set_menu_sensitivity(tree_view_menu_factory, "/Export Selected Packet Bytes...",
+ cf->finfo_selected != NULL);
+ set_menu_sensitivity(hexdump_menu_factory, "/Export Selected Packet Bytes...",
+ cf->finfo_selected != NULL);
+
+ if (cf->finfo_selected != NULL) {
+ header_field_info *hfinfo = cf->finfo_selected->hfinfo;
+ if (hfinfo->parent == -1) {
+ properties = prefs_is_registered_protocol(hfinfo->abbrev);
+ } else {
+ properties = prefs_is_registered_protocol(proto_registrar_get_abbrev(hfinfo->parent));
+ }
+ set_menu_sensitivity(main_menu_factory,
+ "/Go/Go to Corresponding Packet", hfinfo->type == FT_FRAMENUM);
+ set_menu_sensitivity(tree_view_menu_factory,
+ "/Go to Corresponding Packet", hfinfo->type == FT_FRAMENUM);
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Filter",
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
+ set_menu_sensitivity(tree_view_menu_factory, "/Apply as Filter",
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Prepare a Filter",
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
+ set_menu_sensitivity(tree_view_menu_factory, "/Prepare a Filter",
+ proto_can_match_selected(cf->finfo_selected, cf->edt));
+ set_menu_sensitivity(tree_view_menu_factory, "/Protocol Preferences...",
+ properties);
+ set_menu_sensitivity(main_menu_factory, "/View/Expand Tree", cf->finfo_selected->tree_type != -1);
+ set_menu_sensitivity(tree_view_menu_factory, "/Expand Tree", cf->finfo_selected->tree_type != -1);
+ } else {
+ set_menu_sensitivity(main_menu_factory,
+ "/Go/Go to Corresponding Packet", FALSE);
+ set_menu_sensitivity(tree_view_menu_factory,
+ "/Go to Corresponding Packet", FALSE);
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Apply as Filter", FALSE);
+ set_menu_sensitivity(tree_view_menu_factory, "/Apply as Filter", FALSE);
+ set_menu_sensitivity(main_menu_factory, "/Analyze/Prepare a Filter", FALSE);
+ set_menu_sensitivity(tree_view_menu_factory, "/Prepare a Filter", FALSE);
+ set_menu_sensitivity(tree_view_menu_factory, "/Protocol Preferences...",
+ FALSE);
+ set_menu_sensitivity(main_menu_factory, "/View/Expand Tree", FALSE);
+ set_menu_sensitivity(tree_view_menu_factory, "/Expand Tree", FALSE);
+ }
+
+ walk_menu_tree_for_selected_tree_row(tap_menu_tree_root, cf->finfo_selected);
+}
/* menu.h
* Menu definitions
*
- * $Id: menu.h,v 1.20 2004/06/04 17:16:57 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* mgcp-statistics for ethereal
* Copyright 2003 Lars Roland
*
- * $Id: mgcp_stat.c,v 1.37 2004/06/02 07:12:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Modified from gsm_map_stat.c
*
- * $Id: mtp3_stat.c,v 1.2 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* mtp3_stat.h
*
- * $Id: mtp3_stat.h,v 1.2 2004/06/02 18:44:10 ulfl Exp $
+ * $Id$
*
* Copyright 2004, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
*
* Modified from gsm_map_summary.c
*
- * $Id: mtp3_summary.c,v 1.3 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* nameres_prefs.c
* Dialog box for name resolution preferences
*
- * $Id: nameres_prefs.c,v 1.11 2004/05/27 16:43:01 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* nameres_prefs.h
* Definitions for name resolution preferences window
*
- * $Id: nameres_prefs.h,v 1.5 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet_list.c
* packet list related functions 2002 Olivier Abad
*
- * $Id: packet_list.c,v 1.21 2004/06/17 16:35:25 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet_list.h
* Declarations of GTK+-specific routines for managing the packet list.
*
- * $Id: packet_list.h,v 1.5 2004/06/17 16:35:25 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet_win.c,v 1.45 2004/05/26 03:49:23 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet_win.h,v 1.10 2004/06/02 18:44:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* plugins_dlg.c
* Dialog boxes for plugins
*
- * $Id: plugins_dlg.c,v 1.37 2004/05/26 03:49:23 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* prefs_dlg.c
* Routines for handling preferences
*
- * $Id: prefs_dlg.c,v 1.87 2004/06/10 10:09:58 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* prefs_dlg.h
* Definitions for preference handling routines
*
- * $Id: prefs_dlg.h,v 1.12 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* print_dlg.c
* Dialog boxes for printing and exporting to text files
*
- * $Id: print_dlg.c,v 1.81 2004/07/08 10:36:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* print_mswin.c
* Printing support for MSWindows
*
- * $Id: print_mswin.c,v 1.7 2003/11/11 13:59:53 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* print_mswin.h
* Printing support for MSWindows
*
- * $Id: print_mswin.h,v 1.5 2004/06/02 20:14:51 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* print_prefs.c
* Dialog boxes for preferences for printing
*
- * $Id: print_prefs.c,v 1.22 2004/05/26 04:21:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* print_prefs.h
* Definitions for print preferences window
*
- * $Id: print_prefs.h,v 1.9 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* progress_dlg.c
* Routines for progress-bar (modal) dialog
*
- * $Id: progress_dlg.c,v 1.23 2004/05/26 03:49:24 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* proto_dlg.c
*
- * $Id: proto_dlg.c,v 1.35 2004/06/10 10:09:58 guy Exp $
+ * $Id$
*
* Laurent Deniel <laurent.deniel@free.fr>
*
/* proto_dlg.h
*
- * $Id: proto_dlg.h,v 1.5 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Laurent Deniel <laurent.deniel@free.fr>
*
/* proto_draw.c
* Routines for GTK+ packet display
*
- * $Id: proto_draw.c,v 1.108 2004/07/09 23:02:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* proto_draw.h
* Definitions for GTK+ packet display structures and routines
*
- * $Id: proto_draw.h,v 1.29 2004/06/05 13:28:13 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* proto_hier_stats_dlg.c
*
- * $Id: proto_hier_stats_dlg.c,v 1.18 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* proto_hier_stats_dlg.h
*
- * $Id: proto_hier_stats_dlg.h,v 1.3 2004/06/02 22:13:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* range_utils.c
* Packet range routines (save, print, ...) for GTK things
*
- * $Id: range_utils.c,v 1.3 2004/04/25 08:01:06 ulfl Exp $
+ * $Id$
*
* Ulf Lamping <ulf.lamping@web.de>
*
/* range_utils.h
* Declarations of utilities to with range_utils.c (packet range dialog)
*
- * $Id: range_utils.h,v 1.2 2004/06/02 22:13:04 ulfl Exp $
+ * $Id$
*
* Ulf Lamping <ulf.lamping@web.de>
*
* Recent "preference" handling routines
* Copyright 2004, Ulf Lamping <ulf.lamping@web.de>
*
- * $Id: recent.c,v 1.18 2004/07/09 21:13:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Definitions for recent "preference" handling routines
* Copyright 2004, Ulf Lamping <ulf.lamping@web.de>
*
- * $Id: recent.h,v 1.11 2004/06/04 17:16:58 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* rpc_progs.c
* rpc_progs 2002 Ronnie Sahlberg
*
- * $Id: rpc_progs.c,v 1.25 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* rpc_stat.c
* rpc_stat 2002 Ronnie Sahlberg
*
- * $Id: rpc_stat.c,v 1.48 2004/06/02 07:12:10 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* rtp_analysis.c
* RTP analysis addition for ethereal
*
- * $Id: rtp_analysis.c,v 1.47 2004/06/30 06:58:58 guy Exp $
+ * $Id$
*
* Copyright 2003, Alcatel Business Systems
* By Lars Ruoff <lars.ruoff@gmx.net>
/* rtp_analysis.h
* RTP analysis addition for ethereal
*
- * $Id: rtp_analysis.h,v 1.2 2004/06/02 22:13:04 ulfl Exp $
+ * $Id$
*
* Copyright 2003, Alcatel Business Systems
* By Lars Ruoff <lars.ruoff@gmx.net>
/* rtp_stream.c
* RTP streams summary addition for ethereal
*
- * $Id: rtp_stream.c,v 1.15 2004/06/29 20:46:29 ulfl Exp $
+ * $Id$
*
* Copyright 2003, Alcatel Business Systems
* By Lars Ruoff <lars.ruoff@gmx.net>
/* rtp_stream.h
* RTP streams summary addition for ethereal
*
- * $Id: rtp_stream.h,v 1.7 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Copyright 2003, Alcatel Business Systems
* By Lars Ruoff <lars.ruoff@gmx.net>
/* rtp_stream_dlg.c
* RTP streams summary addition for ethereal
*
- * $Id: rtp_stream_dlg.c,v 1.26 2004/06/30 21:17:55 etxrab Exp $
+ * $Id$
*
* Copyright 2003, Alcatel Business Systems
* By Lars Ruoff <lars.ruoff@gmx.net>
/* rtp_stream_dlg.h
* RTP streams summary addition for ethereal
*
- * $Id: rtp_stream_dlg.h,v 1.2 2004/06/02 22:13:04 ulfl Exp $
+ * $Id$
*
* Copyright 2003, Alcatel Business Systems
* By Lars Ruoff <lars.ruoff@gmx.net>
* 2003 Ronnie Sahlberg
* Sub-address types for MAC addresses
*
- * $Id: sat.h,v 1.1 2004/06/03 21:46:27 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Helper routines common to all service response time statistics
* tap.
*
- * $Id: service_response_time_table.c,v 1.19 2004/06/02 07:12:11 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Helper routines common to all service response time statistics
* tap.
*
- * $Id: service_response_time_table.h,v 1.4 2004/06/05 12:12:13 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* simple_dialog.c
* Simple message dialog box routines.
*
- * $Id: simple_dialog.c,v 1.40 2004/07/13 07:15:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* sip_stat.c
* sip_stat 2004 Martin Mathieson
*
- * $Id: sip_stat.c,v 1.6 2004/05/23 23:24:06 ulfl Exp $
+ * $Id$
* Copied from http_stat.c
*
* Ethereal - Network traffic analyzer
/* smb_stat.c
* smb_stat 2003 Ronnie Sahlberg
*
- * $Id: smb_stat.c,v 1.45 2004/06/02 07:12:11 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* stream_prefs.c
* Dialog boxes for preferences for the stream window
*
- * $Id: stream_prefs.c,v 1.20 2004/03/11 00:22:41 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* stream_prefs.h
* Definitions for stream preferences window
*
- * $Id: stream_prefs.h,v 1.7 2004/06/04 20:05:31 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* summary_dlg.c
* Routines for capture file summary window
*
- * $Id: summary_dlg.c,v 1.35 2004/06/18 20:23:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* summary_dlg.h
* Routines for capture file summary window
*
- * $Id: summary_dlg.h,v 1.3 2004/06/02 22:13:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
*
* Laurent Deniel <laurent.deniel@free.fr>
*
- * $Id: supported_protos_dlg.c,v 1.12 2004/06/17 16:35:25 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Laurent Deniel <laurent.deniel@free.fr>
*
- * $Id: supported_protos_dlg.h,v 1.3 2004/06/02 22:13:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for display filter dialog used by gui taps
* Copyright 2003 Lars Roland
*
- * $Id: tap_dfilter_dlg.c,v 1.10 2004/06/02 07:12:11 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Header file for display filter dialog used by GTK gui taps
* Copyright 2003 Lars Roland
*
- * $Id: tap_dfilter_dlg.h,v 1.3 2004/06/02 22:13:04 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap_menu.h
* Menu definitions for use by taps
*
- * $Id: tap_menu.h,v 1.6 2004/06/03 02:14:14 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* By Pavel Mores <pvl@uh.cz>
* Win32 port: rwh@unifiedtech.com
*
- * $Id: tcp_graph.c,v 1.64 2004/06/17 16:35:25 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* text_page.c
*
- * $Id: text_page.c,v 1.3 2004/06/17 16:35:26 ulfl Exp $
+ * $Id$
*
* Ulf Lamping
*
/* text_page.h
* Declarations of routine to construct a simple text page from a file.
*
- * $Id: text_page.h,v 1.4 2004/06/05 09:57:11 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* The main toolbar
* Copyright 2003, Ulf Lamping <ulf.lamping@web.de>
*
- * $Id: toolbar.c,v 1.29 2004/07/13 07:15:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Definitions for toolbar utility routines
* Copyright 2003, Ulf Lamping <ulf.lamping@web.de>
*
- * $Id: toolbar.h,v 1.9 2004/06/04 17:16:58 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ui_util.c
* UI utility routines
*
- * $Id: ui_util.c,v 1.29 2004/07/07 05:36:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ui_util.h
* Definitions for UI utility routines
*
- * $Id: ui_util.h,v 1.16 2004/07/07 05:36:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* webbrowser.h
* Web browser activation functions
*
- * $Id: webbrowser.h,v 1.3 2004/07/01 09:35:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* wsp_stat.c
* wsp_stat 2003 Jean-Michel FAYARD
*
- * $Id: wsp_stat.c,v 1.27 2004/05/23 23:24:07 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2003 Lars Roland
*
- * $Id: h225-persistentdata.c,v 1.1 2003/11/16 23:11:18 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2003 Lars Roland
*
- * $Id: h225-persistentdata.h,v 1.1 2003/11/16 23:11:18 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
# Automake file for Ethereal help files
#
-# $Id: Makefile.am,v 1.6 2004/02/09 18:22:28 ulfl Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.2 2003/12/22 08:07:13 ulfl Exp $
+# $Id$
include ..\config.nmake
/* iax2_codec_type.h
* Defines IAX2 codec types
*
- * $Id: iax2_codec_type.h,v 1.1 2004/06/25 06:31:46 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
#! @SHELL@
#
-# $Id: idl2eth.sh,v 1.1 2001/09/15 23:01:12 guy Exp $
+# $Id$
#
# File : idl2eth
#
#
-# $Id: Makefile.nmake,v 1.6 2003/10/10 21:31:48 guy Exp $
+# $Id$
#
include ..\config.nmake
* 4.4-Lite-2 Internet checksum routine, modified to take a vector of
* pointers/lengths giving the pieces to be checksummed.
*
- * $Id: in_cksum.c,v 1.9 2002/08/28 21:00:06 jmayer Exp $
+ * $Id$
*/
/*
/* in_cksum.h
* Declaration of Internet checksum routine.
*
- * $Id: in_cksum.h,v 1.1 2000/12/13 02:24:22 guy Exp $
+ * $Id$
*/
typedef struct {
* Definitions of structures and routines for dissection of options that
* work like IPv4 or IPv6 options
*
- * $Id: ip_opts.h,v 1.1 2003/07/11 09:30:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ipproto.c
* Routines for converting IPv4 protocol/v6 nxthdr field into string
*
- * $Id: ipproto.c,v 1.24 2003/11/24 21:42:13 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations of IP protocol numbers, and of routines for converting
* IP protocol numbers into strings.
*
- * $Id: ipproto.h,v 1.13 2003/11/25 00:21:06 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Temporary redefinition of "isprint()" to cope with GTK+ 1.3 and
* later using UTF-8 strings
*
- * $Id: isprint.h,v 1.1 2004/07/09 23:17:02 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* lapd_sapi.h
* Declarations of LAPD SAPI values.
*
- * $Id: lapd_sapi.h,v 1.1 2004/01/26 20:48:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* llcsaps.h
* Defines LLC SAP values.
*
- * $Id: llcsaps.h,v 1.7 2003/06/10 05:38:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
#!/usr/bin/perl -w
-# $Id: make-authors-short.pl,v 1.3 2004/05/22 14:05:33 jmayer Exp $
+# $Id$
# Remove tasks from individual author entries from AUTHORS file
# for use in the about dialog.
#!/bin/sh
#
-# $Id: make-faq,v 1.8 2004/02/18 00:31:22 jmayer Exp $
+# $Id$
#
# Make-faq - Creates a plain text version of the Ethereal FAQ
# from http://www.ethereal.com/faq.html
#!/usr/bin/perl -w
#
-# $Id: make-manuf,v 1.13 2004/02/01 02:26:30 jmayer Exp $
+# $Id$
#
# Make-manuf - Creates a file containing ethernet OUIs and their
# company IDs. It merges the databases at
#! /bin/sh
#
-# $Id: make-reg-dotc,v 1.8 2004/05/03 18:53:16 guy Exp $
+# $Id$
#
#
# seds for each input file. I wrote this python version so that
# less processes would have to be started.
#
-# $Id: make-reg-dotc.py,v 1.4 2003/07/21 07:05:44 girlich Exp $
+# $Id$
import os
import sys
#! /bin/sh
#
-# $Id: make-tapreg-dotc,v 1.4 2004/05/03 18:53:57 guy Exp $
+# $Id$
#
#
#
# Copyright 2004 Jörg Mayer (see AUTHORS file)
#
-# $Id: make-version.pl,v 1.7 2004/03/04 16:19:40 jmayer Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
# /etc/manuf - Ethernet vendor codes, and well-known MAC addresses
#
-# $Id: manuf,v 1.43 2004/06/18 14:27:13 jmayer Exp $
+# $Id$
#
# Laurent Deniel <laurent.deniel [AT] free.fr>
#
#
# Well-known addresses.
#
-# $Id: manuf,v 1.43 2004/06/18 14:27:13 jmayer Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald [AT] ethereal.com>
#
# /etc/manuf - Ethernet vendor codes, and well-known MAC addresses
#
-# $Id: manuf.tmpl,v 1.14 2003/04/29 23:58:00 jmayer Exp $
+# $Id$
#
# Laurent Deniel <laurent.deniel [AT] free.fr>
#
* Definitions for menu routines with toolkit-independent APIs but
* toolkit-dependent implementations.
*
- * $Id: menu.h,v 1.12 2003/12/13 18:01:29 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* Combine two dump files, either by appending or by merging by timestamp
*
- * $Id: merge.c,v 1.6 2004/06/29 20:59:23 ulfl Exp $
+ * $Id$
*
* Written by Scott Renfro <scott@renfro.org> based on
* editcap by Richard Sharpe and Guy Harris
* Definitions for menu routines with toolkit-independent APIs but
* toolkit-dependent implementations.
*
- * $Id: merge.h,v 1.4 2004/06/29 20:59:23 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* Combine two dump files, either by appending or by merging by timestamp
*
- * $Id: mergecap.c,v 1.26 2004/07/13 05:58:15 guy Exp $
+ * $Id$
*
* Written by Scott Renfro <scott@renfro.org> based on
* editcap by Richard Sharpe and Guy Harris
* A small program to generate the ASCII form of a capture with TCP
* segments of a reasonable nature. The payload is all zeros.
*
- * $Id: mkcap.c,v 1.2 2003/10/05 14:58:11 sharpe Exp $
+ * $Id$
*
* By Ronnie Sahlberg and Richard Sharpe. From a program initially
* written by Ronnie.
for a badly-formatted HTML version of the same PDF.
-$Id: ncp2222.py,v 1.65 2004/06/15 09:14:14 guy Exp $
+$Id$
Portions Copyright (c) 2000-2002 by Gilbert Ramirez <gram@alumni.rice.edu>.
* Definitions of OSI NLPIDs (Network Layer Protocol IDs)
* Laurent Deniel <laurent.deniel@free.fr>
*
- * $Id: nlpid.h,v 1.14 2003/09/03 05:39:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* oui.h
* Definitions of OUIs
*
- * $Id: oui.h,v 1.13 2003/08/28 00:11:31 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
#
-# $Id: Makefile.nmake,v 1.42 2004/05/23 22:21:30 guy Exp $
+# $Id$
#
# NSIS is a free packager/installer/uninstaller program for Win32.
# It was originally written for the Winamp package, but various
* Routines for Mobile IP dissection
* Copyright 2000, Stefan Raab <sraab@cisco.com>
*
- * $Id: packet-3g-a11.c,v 1.9 2004/05/12 09:29:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-aarp.c
* Routines for Appletalk ARP packet disassembly
*
- * $Id: packet-aarp.c,v 1.37 2002/08/28 21:00:06 jmayer Exp $
+ * $Id$
*
* Simon Wilkinson <sxw@dcs.ed.ac.uk>
*
* Copyright 2003, Brad Hards <bradh@frogmouth.net>
* Heavily based in packet-imap.c, Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-acap.c,v 1.2 2003/06/11 20:04:13 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Routine to dissect OSI ACSE Protocol packets
*
-* $Id: packet-acse.c,v 1.5 2004/04/30 06:24:35 ulfl Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
*
* Routine to dissect OSI ISO/IEC 10035-1 ACSE Protocol packets
*
-* $Id: packet-acse.h,v 1.2 2004/01/24 01:30:20 jmayer Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
* Routines for afp packet dissection
* Copyright 2002, Didier Gautheron <dgautheron@magic.fr>
*
- * $Id: packet-afp.c,v 1.36 2004/02/25 23:15:23 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-afp.h
* Definitions for packet disassembly structures and routines
*
- * $Id: packet-afp.h,v 1.5 2002/10/17 22:38:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions based on information/specs retrieved from the OpenAFS sources at
* www.openafs.org, Copyright IBM.
*
- * $Id: packet-afs-defs.h,v 1.14 2004/05/11 14:21:48 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Portions based on information/specs retrieved from the OpenAFS sources at
* www.openafs.org, Copyright IBM.
*
- * $Id: packet-afs-macros.h,v 1.24 2004/05/11 14:21:48 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions based on information/specs retrieved from the OpenAFS sources at
* www.openafs.org, Copyright IBM.
*
- * $Id: packet-afs-register-info.h,v 1.20 2004/05/11 14:21:48 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions based on information/specs retrieved from the OpenAFS sources at
* www.openafs.org, Copyright IBM.
*
- * $Id: packet-afs.c,v 1.57 2004/05/11 14:21:48 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-afs.h
* Definitions for packet disassembly structures and routines
*
- * $Id: packet-afs.h,v 1.8 2004/05/11 14:21:48 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM (OSCAR) dissection, Administration Service
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-admin.c,v 1.3 2004/04/26 18:21:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM (OSCAR) dissection, SNAC Advertisements
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-adverts.c,v 1.4 2004/04/26 18:21:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM (OSCAR) dissection, SNAC BOS
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-bos.c,v 1.4 2004/05/05 09:30:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Buddylist
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-buddylist.c,v 1.4 2004/06/16 07:51:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
* Copyright 2000, Ralf Hoelzer <ralf@well.com>
*
- * $Id: packet-aim-chat.c,v 1.5 2004/06/16 07:51:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-chatnav.c,v 1.4 2004/04/20 04:48:31 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Directory
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-directory.c,v 1.4 2004/04/26 18:21:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Family Generic
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-generic.c,v 1.3 2004/04/26 18:21:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC ICQ
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-icq.c,v 1.5 2004/04/26 18:21:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Invitation
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-invitation.c,v 1.4 2004/04/26 18:21:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
* Copyright 2000, Ralf Hoelzer <ralf@well.com>
*
- * $Id: packet-aim-location.c,v 1.4 2004/04/26 18:21:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000, Ralf Hoelzer <ralf@well.com>
* Copyright 2004, Devin Heitmueller <dheitmueller@netilla.com>
*
- * $Id: packet-aim-messaging.c,v 1.11 2004/06/16 07:51:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-oft.c,v 1.5 2004/04/20 05:32:46 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-popup.c,v 1.4 2004/04/26 18:21:10 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
* Copyright 2000, Ralf Hoelzer <ralf@well.com>
*
- * $Id: packet-aim-signon.c,v 1.4 2004/06/16 07:51:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
* Copyright 2000, Ralf Hoelzer <ralf@well.com>
*
- * $Id: packet-aim-ssi.c,v 1.3 2004/04/26 18:21:10 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Stats
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-stats.c,v 1.3 2004/03/24 06:36:32 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Translate
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-translate.c,v 1.5 2004/04/26 18:21:10 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Userlookup
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-userlookup.c,v 1.3 2004/04/26 18:21:10 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
* Copyright 2004, Devin Heitmueller <dheitmueller@netilla.com>
*
- * $Id: packet-aim.c,v 1.44 2004/07/09 23:17:02 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-tcp.h
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim.h,v 1.6 2004/06/03 04:19:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AJP13 dissection
* Copyright 2002, Christopher K. St. John <cks@distributopia.com>
*
- * $Id: packet-ajp13.c,v 1.10 2003/03/26 21:47:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * $Id: packet-alcap.c,v 1.5 2003/12/08 23:40:11 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ans.c
* Routines for Intel ANS probe dissection
*
- * $Id: packet-ans.c,v 1.1 2003/03/23 19:32:19 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Short Message Service
* 3GPP2 C.S0015-0 TIA/EIA-637-A
*
- * $Id: packet-ansi_637.c,v 1.5 2003/12/09 00:52:02 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * $Id: packet-ansi_683.c,v 1.4 2003/12/08 23:40:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2004, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * $Id: packet-ansi_801.c,v 1.1 2004/03/27 11:32:27 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* 2000 Access Network Interfaces
* 3GPP2 A.S0001-1 TIA/EIA-2001
*
- * $Id: packet-ansi_a.c,v 1.17 2004/05/24 02:25:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ansi_a.h
*
- * $Id: packet-ansi_a.h,v 1.4 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
* UIM
* 3GPP2 N.S0003
*
- * $Id: packet-ansi_map.c,v 1.15 2004/04/21 05:53:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ansi_map.h
*
- * $Id: packet-ansi_map.h,v 1.3 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
* Routines for AODV dissection
* Copyright 2000, Erik Nordström <erik.nordstrom@it.uu.se>
*
- * $Id: packet-aodv.c,v 1.10 2003/09/13 00:57:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ap1394.c
* Routines for Apple IP-over-IEEE 1394 packet disassembly
*
- * $Id: packet-ap1394.c,v 1.1 2004/03/23 01:02:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ap1394.h
*
- * $Id: packet-ap1394.h,v 1.1 2004/03/23 01:02:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for arcnet dissection
* Copyright 2001-2002, Peter Fales <ethereal@fales-lorenz.net>
*
- * $Id: packet-arcnet.c,v 1.11 2003/12/19 19:09:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-arcnet.h
*
- * $Id: packet-arcnet.h,v 1.2 2003/01/23 09:04:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-arp.c
* Routines for ARP packet disassembly (RFC 826)
*
- * $Id: packet-arp.c,v 1.60 2004/06/17 20:04:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Definitions of routines for ARP packet disassembly that are used
* elsewhere
*
- * $Id: packet-arp.h,v 1.6 2002/08/28 21:00:07 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
*
* Copyright 2004, Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-asap.c,v 1.12 2004/07/03 21:37:15 tuexen Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ascend.c
* Routines for decoding Lucent/Ascend packet traces
*
- * $Id: packet-ascend.c,v 1.32 2002/08/28 21:00:07 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Duncan Laurie <duncan@sun.com>
*
- * $Id: packet-asf.c,v 1.2 2003/06/04 08:51:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for AppleTalk packet disassembly: LLAP, DDP, NBP, ATP, ASP,
* RTMP.
*
- * $Id: packet-atalk.c,v 1.96 2004/02/25 09:31:05 guy Exp $
+ * $Id$
*
* Simon Wilkinson <sxw@dcs.ed.ac.uk>
*
/* packet-atalk.h
* Definitions for Appletalk packet disassembly (DDP, currently).
*
- * $Id: packet-atalk.h,v 1.9 2002/08/28 21:00:07 jmayer Exp $
+ * $Id$
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
/* packet-atm.c
* Routines for ATM packet disassembly
*
- * $Id: packet-atm.c,v 1.66 2004/06/16 23:36:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-atm.h
*
- * $Id: packet-atm.h,v 1.9 2002/08/28 21:00:07 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Heikki Vatiainen <hessu@cs.tut.fi>
*
- * $Id: packet-auto_rp.c,v 1.23 2003/01/31 03:17:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for BACnet (APDU) dissection
* Copyright 2001, Hartmut Mueller <hartmut@abmlinux.org>, FH Dortmund
*
- * $Id: packet-bacapp.c,v 1.13 2002/08/28 21:00:07 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for BACnet (NPDU) dissection
* Copyright 2001, Hartmut Mueller <hartmut@abmlinux.org>, FH Dortmund
*
- * $Id: packet-bacnet.c,v 1.18 2004/05/12 19:55:14 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-beep.c
* Routines for BEEP packet disassembly
*
- * $Id: packet-beep.c,v 1.14 2003/12/23 21:18:57 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Richard Sharpe <rsharpe@ns.aus.com>
* Modified 2001 Darren New <dnew@invisible.net> for BEEP.
* Helpers for ASN.1/BER dissection
* Ronnie Sahlberg (C) 2004
*
- * $Id: packet-ber.c,v 1.13 2004/06/25 09:24:17 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Helpers for ASN.1/BER dissection
* Ronnie Sahlberg (C) 2004
*
- * $Id: packet-ber.h,v 1.8 2004/06/05 09:59:45 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2003, Hannes Gredler <hannes@juniper.net>
*
- * $Id: packet-bfd.c,v 1.1 2003/11/23 22:00:48 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for BGP packet dissection.
* Copyright 1999, Jun-ichiro itojun Hagino <itojun@itojun.org>
*
- * $Id: packet-bgp.c,v 1.88 2004/05/24 02:25:17 guy Exp $
+ * $Id$
*
* Supports:
* RFC1771 A Border Gateway Protocol 4 (BGP-4)
/* packet-bgp.c
* Definitions for BGP packet disassembly structures and routine
*
- * $Id: packet-bgp.h,v 1.25 2003/05/19 20:36:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Wellfleet BOFL dissection
* Author: Endoh Akira (endoh@netmarks.co.jp)
*
- * $Id: packet-bofl.c,v 1.3 2003/03/01 09:37:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
* Copyright 1998, Gilbert Ramirez <gram@alumni.rice.edu>
* Copyright 2004, Thomas Anders <thomas.anders [AT] blue-cable.de>
*
- * $Id: packet-bootp.c,v 1.79 2004/05/24 16:38:29 guy Exp $
+ * $Id$
*
* The information used comes from:
* RFC 951: Bootstrap Protocol
/* packet-bootparams.c
* Routines for bootparams dissection
*
- * $Id: packet-bootparams.c,v 1.24 2002/11/01 00:48:38 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-bootparams.h */
-/* $Id: packet-bootparams.h,v 1.1 1999/11/10 17:23:53 nneul Exp $ */
+/* $Id$ */
#ifndef PACKET_BOOTPARAMS_H
#define PACKET_BOOTPARAMS_H
/* packet-bpdu.c
* Routines for BPDU (Spanning Tree Protocol) disassembly
*
- * $Id: packet-bpdu.c,v 1.51 2004/04/13 04:04:55 guy Exp $
+ * $Id$
*
* Copyright 1999 Christophe Tronche <ch.tronche@computer.org>
*
* Routines for decoding MDS Port Analyzer Adapter (FC in Eth) Header
* Copyright 2001, Dinesh G Dutt <ddutt@andiamo.com>
*
- * $Id: packet-brdwlk.c,v 1.6 2003/10/30 03:15:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * $Id: packet-bssap.c,v 1.10 2004/05/24 02:25:18 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * $Id: packet-bssap.h,v 1.1 2003/10/22 20:59:02 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for BSSGP (BSS GPRS Protocol ETSI GSM 08.18 version 6.7.1 TS 101 343 ) dissection
* Copyright 2000, Josef Korelus <jkor@quick.cz>
*
- * $Id: packet-bssgp.c,v 1.9 2004/04/13 04:21:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for BACnet/IP (BVLL, BVLC) dissection
* Copyright 2001, Hartmut Mueller <hartmut@abmlinux.org>, FH Dortmund
*
- * $Id: packet-bvlc.c,v 1.14 2004/01/27 03:49:35 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Dissector for the CAST Client Control Protocol
* (The "D-Channel"-Protocol for Cisco Systems' IP-Phones)
*
- * $Id: packet-cast.c,v 1.2 2004/02/20 22:34:59 guy Exp $
+ * $Id$
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* Routines for CCSDS dissection
* Copyright 2000, Scott Hovis scott.hovis@ums.msfc.nasa.gov
*
- * $Id: packet-ccsds.c,v 1.3 2003/12/05 22:33:11 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the disassembly of the "Cisco Discovery Protocol"
* (c) Copyright Hannes R. Boehm <hannes@boehm.org>
*
- * $Id: packet-cdp.c,v 1.55 2004/03/23 18:06:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-cgmp.c
* Routines for the disassembly of the Cisco Group Management Protocol
*
- * $Id: packet-cgmp.c,v 1.17 2002/08/28 21:00:08 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-chdlc.c
* Routines for Cisco HDLC packet disassembly
*
- * $Id: packet-chdlc.c,v 1.22 2004/05/02 21:35:42 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-chdlc.h
*
- * $Id: packet-chdlc.h,v 1.5 2002/08/28 21:00:08 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-cisco-oui.c
* Register an LLC dissector table for Cisco's OUI 00:00:0c
*
- * $Id: packet-cisco-oui.c,v 1.4 2004/04/13 04:04:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-clearcase.c
* Routines for ClearCase NFS dissection
*
- * $Id: packet-clearcase.c,v 1.1 2002/11/15 22:45:52 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-clearcase.h
*
- * $Id: packet-clearcase.h,v 1.1 2002/11/15 22:45:52 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-clip.c
* Routines for clip packet disassembly
*
- * $Id: packet-clip.c,v 1.21 2002/08/28 21:00:08 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-clip.h
*
- * $Id: packet-clip.h,v 1.7 2002/08/28 21:00:08 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-clnp.c
* Routines for ISO/OSI network and transport protocol packet disassembly
*
- * $Id: packet-clnp.c,v 1.86 2004/06/20 01:05:07 guy Exp $
+ * $Id$
* Laurent Deniel <laurent.deniel@free.fr>
* Ralf Schneider <Ralf.Schneider@t-online.de>
*
*
* Implemented in ethereal at April 7-8, 2004
*
- * $Id: packet-cops.c,v 1.49 2004/07/09 23:17:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-cosine.c
* Routines for decoding CoSine IPNOS L2 debug output
*
- * $Id: packet-cosine.c,v 1.4 2002/08/28 21:00:08 jmayer Exp $
+ * $Id$
*
* Motonori Shindo <mshindo@mshindo.net>
*
*
* Copyright 2003, Dave Sclarsky <dave_sclarsky[AT]cnt.com>
*
- * $Id: packet-cpfi.c,v 1.7 2004/06/17 07:10:33 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the Check Point High-Availability Protocol (CPHAP)
* Copyright 2002, Yaniv Kaul <ykaul-at-netvision.net.il>
*
- * $Id: packet-cpha.c,v 1.9 2003/12/18 00:25:24 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Charles Levert <charles@comm.polymtl.ca>
* Copyright 2001 Charles Levert
*
-* $Id: packet-cups.c,v 1.12 2002/08/28 21:00:08 jmayer Exp $
+* $Id$
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* Routines for raw data (default case)
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-data.c,v 1.34 2004/01/03 18:40:07 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-data.h
*
- * $Id: packet-data.h,v 1.2 2002/08/28 21:00:08 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 1999, Nathan Neulinger <nneul@umr.edu>
*
- * $Id: packet-dccp.c,v 1.11 2004/03/11 03:24:13 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 1999, Nathan Neulinger <nneul@umr.edu>
*
- * $Id: packet-dccp.h,v 1.3 2002/08/28 21:00:08 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/fsint/afs4int.idl
*
- * $Id: packet-dcerpc-afs4int.c,v 1.8 2004/03/09 09:24:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \pipe\atsvc packet disassembly
* Copyright 2003 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-atsvc.c,v 1.5 2004/01/19 20:10:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \pipe\atsvc packet disassembly
* Copyright 2003 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-atsvc.h,v 1.1 2003/05/28 22:43:57 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/bosserver/bbos_ncs_interface.idl
*
- * $Id: packet-dcerpc-bossvr.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC Browser packet disassembly
* Copyright 2001, Ronnie Sahlberg
*
- * $Id: packet-dcerpc-browser.c,v 1.14 2004/01/19 20:10:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC Browser packet disassembly
* Copyright 2002, Ronnie Sahlberg
*
- * $Id: packet-dcerpc-browser.h,v 1.3 2003/10/02 21:48:35 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz bubasics/budb.idl
*
- * $Id: packet-dcerpc-budb.c,v 1.3 2004/06/29 08:20:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz bubasics/butc.idl
*
- * $Id: packet-dcerpc-butc.c,v 1.4 2004/02/20 22:35:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/directory.tar.gz directory/cds/stubs/cds_clerkserver.idl
*
- * $Id: packet-dcerpc-cds_clerkserver.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/directory.tar.gz directory/cds/stubs/cds_solicit.idl
*
- * $Id: packet-dcerpc-cds_solicit.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dcerpc conv dissection
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc-conv.c,v 1.10 2004/04/23 16:46:54 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/directory.tar.gz directory/cds/stubs/cprpc_server.idl
*
- * $Id: packet-dcerpc-cprpc_server.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
*
- * $Id: packet-dcerpc-dce122.c,v 1.4 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
* This information is based off the released idl files from opengroup.
*
- * $Id: packet-dcerpc-dce122.h,v 1.3 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-dcerpc-dcom.h
*
- * $Id: packet-dcerpc-dcom.h,v 1.2 2003/11/09 19:53:11 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \\PIPE\\netdfs packet disassembly
* Copyright 2001, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-dfs.c,v 1.8 2003/10/02 21:45:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\netdfs packet disassembly
* Copyright 2001, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-dfs.h,v 1.5 2003/10/02 21:45:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\DNSSERVER packet disassembly
* Copyright 2001, 2002 Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-dnsserver.c,v 1.4 2003/10/02 21:37:24 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\DNSSERVER packet disassembly
* Copyright 2002, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-dnsserver.h,v 1.2 2003/10/02 21:37:24 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the drsuapi (Directory Replication Service) MSRPC interface
* Copyright 2003 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-drsuapi.c,v 1.1 2003/09/20 08:56:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the drsuapi (Directory Replication Service) MSRPC interface
* Copyright 2003 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-drsuapi.h,v 1.1 2003/09/20 08:56:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/time.tar.gz time/service/dtsprovider.idl
*
- * $Id: packet-dcerpc-dtsprovider.c,v 1.7 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/time.tar.gz time/service/dtsstime_req.idl
*
- * $Id: packet-dcerpc-dtsstime_req.c,v 1.6 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-/* packet-dcerpc-efs.c\r
- * Routines for the efsrpc MSRPC interface\r
- * Copyright 2004 Ronnie Sahlberg, Jean-Baptiste Marchand\r
- *\r
- * $Id: packet-dcerpc-efs.c,v 1.2 2004/05/19 04:52:31 tpot Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-\r
-#ifdef HAVE_CONFIG_H\r
-#include "config.h"\r
-#endif\r
-\r
-#include <glib.h>\r
-#include <epan/packet.h>\r
-#include "packet-dcerpc.h"\r
-#include "packet-dcerpc-nt.h"\r
-#include "packet-dcerpc-efs.h"\r
-#include "smb.h"\r
-\r
-\r
-static int proto_dcerpc_efs = -1;\r
-static int hf_efsrpc_opnum = -1;\r
-static int hf_efsrpc_rc = -1;\r
-static int hf_efsrpc_filename = -1;\r
-static int hf_efsrpc_flags = -1;\r
-static int hf_efsrpc_hnd = -1;\r
-static int hf_efsrpc_reserved = -1;\r
-static int hf_efsrpc_num_entries = -1;\r
-static int hf_efsrpc_data_size = -1;\r
-static int hf_efsrpc_cert_dn = -1;\r
-\r
-static gint ett_dcerpc_efs = -1;\r
-static gint ett_dcerpc_efs_cert_hash = -1;\r
-\r
-\r
-/* \r
-IDL [ uuid(c681d488-d850-11d0-8c52-00c04fd90f7e),\r
-IDL version(1.0),\r
-IDL implicit_handle(handle_t rpc_binding)\r
-IDL ] interface efsrpc\r
-*/\r
-\r
-\r
-static e_uuid_t uuid_dcerpc_efs = {\r
- 0xc681d488, 0xd850, 0x11d0,\r
- { 0x8c, 0x52, 0x00, 0xc0, 0x4f, 0xd9, 0x0f, 0x7e }\r
-};\r
-\r
-static guint16 ver_dcerpc_efs = 1; \r
-\r
-\r
-/*\r
-IDL long EfsRpcOpenFileRaw(\r
-IDL [out] [context_handle] void *pvContext,\r
-IDL [in] [string] wchar_t FileName,\r
-IDL [in] long Flags\r
-IDL );\r
-*/\r
-\r
-static int\r
-efsrpc_dissect_open_file_raw_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,\r
- sizeof(guint16),\r
- hf_efsrpc_filename, TRUE, NULL);\r
-\r
- offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_flags, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-static int\r
-efsrpc_dissect_open_file_raw_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
- offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_hnd, NULL, NULL, TRUE, FALSE);\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-}\r
-\r
-\r
-\r
-/*\r
-IDL long EfsRpcReadFileRaw(\r
-IDL [in] [context_handle] void *pvContext,\r
-IDL [out] ??? element_5\r
-IDL );\r
-*/\r
-\r
-static int\r
-efsrpc_dissect_read_file_raw_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_hnd, NULL, NULL, FALSE, FALSE);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-/*\r
-IDL long EfsRpcWriteFileRaw(\r
-IDL [in] [context_handle] void *pvContext,\r
-IDL [in] ??? element_7\r
-IDL );\r
-*/\r
-\r
-\r
-static int\r
-efsrpc_dissect_write_file_raw_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_hnd, NULL, NULL, FALSE, FALSE);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_write_file_raw_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-/*\r
-IDL\r
-IDL void EfsRpcCloseRaw(\r
-IDL [in,out] [context_handle] void *pvContext,\r
-IDL );\r
-*/\r
-\r
-\r
-static int\r
-efsrpc_dissect_close_file_raw_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_hnd, NULL, NULL, FALSE, TRUE);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_close_file_raw_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_hnd, NULL, NULL, FALSE, FALSE);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-\r
-/*\r
-IDL long EfsRpcEncryptFileSrv(\r
-IDL [in] [string] wchar_t Filename\r
-IDL );\r
- */\r
-\r
-static int\r
-efsrpc_dissect_encrypt_file_srv_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,\r
- sizeof(guint16),\r
- hf_efsrpc_filename, TRUE, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_encrypt_file_srv_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-/*\r
-IDL long EfsRpcDecryptFileSrv(\r
-IDL [in] [string] wchar_t FileName, \r
-IDL [in] long Reserved\r
-IDL );\r
-*/\r
-\r
-\r
-static int\r
-efsrpc_dissect_decrypt_file_srv_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,\r
- sizeof(guint16),\r
- hf_efsrpc_filename, TRUE, NULL);\r
-\r
- offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_reserved, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_decrypt_file_srv_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-/*\r
-IDL typedef struct {\r
-IDL long cbData;\r
-IDL [size_is(cbData)] void *pbData;\r
-IDL } EFS_HASH_BLOB;\r
-*/\r
-\r
-static int\r
-efsrpc_dissect_EFS_HASH_BLOB_data(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree,\r
- guint8 *drep)\r
-{\r
- guint32 size;\r
- dcerpc_info *di = (dcerpc_info *)pinfo->private_data;\r
-\r
- if(di->conformant_run){\r
- return offset; /* cant modify offset while performing conformant run */\r
- }\r
-\r
- offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_data_size, &size);\r
-\r
- /* XXX insert some sort of proto_tree_add_item here and show hex data\r
- of the blob */\r
- offset += size;\r
- return offset;\r
-}\r
-\r
-static int\r
-efsrpc_dissect_EFS_HASH_BLOB(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree,\r
- guint8 *drep)\r
-{\r
- guint32 size;\r
-\r
- offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_data_size, &size);\r
-\r
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_EFS_HASH_BLOB_data, NDR_POINTER_UNIQUE,\r
- "HASH_BLOB", -1);\r
-\r
- return offset;\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_efs_SID_ptr(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree,\r
- guint8 *drep)\r
-{\r
- offset = dissect_ndr_nt_SID(tvb, offset, pinfo, tree, drep);\r
-\r
- return offset;\r
-}\r
-\r
-\r
-/*\r
-IDL typedef struct {\r
-IDL long cbTotalLength;\r
-IDL SID *pUserSid;\r
-IDL EFS_HASH_BLOB *pHash;\r
-IDL [string] wchar_t lpDisplayInformation;\r
-IDL } ENCRYPTION_CERTIFICATE_HASH;\r
-*/\r
-\r
-static int\r
-efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *parent_tree,\r
- guint8 *drep)\r
-{\r
- proto_item *item = NULL;\r
- proto_tree *tree = NULL;\r
-\r
- if (parent_tree) {\r
- item = proto_tree_add_text(parent_tree, tvb, offset, -1, "ENCRYPTION_CERTIFICATE_HASH");\r
- tree = proto_item_add_subtree(item, ett_dcerpc_efs_cert_hash);\r
- }\r
-\r
- offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_data_size, NULL);\r
-\r
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_efs_SID_ptr, NDR_POINTER_UNIQUE,\r
- "SID", -1);\r
-\r
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_EFS_HASH_BLOB, NDR_POINTER_UNIQUE,\r
- "EFS_HASH_BLOB", -1);\r
-\r
- offset = dissect_ndr_pointer_cb(\r
- tvb, offset, pinfo, tree, drep,\r
- dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,\r
- "Certificate DN", hf_efsrpc_cert_dn, cb_wstr_postprocess,\r
- GINT_TO_POINTER(CB_STR_COL_INFO | 1));\r
-\r
- return offset;\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_ptr(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree,\r
- guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH, NDR_POINTER_UNIQUE,\r
- "ENCRYPTION_CERTIFICATE_HASH", -1);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_array(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree,\r
- guint8 *drep)\r
-{\r
- offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_ptr);\r
-\r
- return offset;\r
-}\r
-\r
-/*\r
-IDL typedef struct {\r
-IDL long nCert_Hash;\r
-IDL [size_is(nCert_Hash)] [unique] ENCRYPTION_CERTIFICATE_HASH *pUsers;\r
-IDL } ENCRYPTION_CERTIFICATE_HASH_LIST;\r
-*/\r
-\r
-static int \r
-efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_LIST(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,\r
- hf_efsrpc_num_entries, NULL);\r
-\r
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_array, NDR_POINTER_UNIQUE,\r
- "ENCRYPTION_CERTIFICATE_HASH array:", -1);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-\r
-/*\r
-IDL long EfsRpcQueryUsersOnFile(\r
-IDL [in] [string] wchar_t FileName,\r
-IDL [out] [ref] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers\r
-IDL );\r
-*/\r
-\r
-\r
-static int\r
-efsrpc_dissect_query_users_on_file_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,\r
- sizeof(guint16),\r
- hf_efsrpc_filename, TRUE, NULL);\r
-\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_query_users_on_file_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_LIST, NDR_POINTER_UNIQUE,\r
- "ENCRYPTION_CERTIFICATE_HASH_LIST", -1);\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-/*\r
-IDL long EfsRpcQueryRecoveryAgents(\r
-IDL [in] [string] wchar_t FileName,\r
-IDL [out] [ref] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents\r
-IDL );\r
-*/\r
-\r
-static int\r
-efsrpc_dissect_query_recovery_agents_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,\r
- sizeof(guint16),\r
- hf_efsrpc_filename, TRUE, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_query_recovery_agents_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,\r
- efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_LIST, NDR_POINTER_UNIQUE,\r
- "ENCRYPTION_CERTIFICATE_HASH_LIST", -1);\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-\r
-\r
-}\r
-\r
-\r
-\r
-/*\r
-IDL long EfsRpcRemoveUsersFromFile(\r
-IDL [in] [string] wchar_t FileName,\r
-IDL [in] ENCRYPTION_CERTIFICATE_LIST Hashes\r
-IDL );\r
-*/\r
-\r
-static int\r
-efsrpc_dissect_remove_users_from_file_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,\r
- sizeof(guint16),\r
- hf_efsrpc_filename, TRUE, NULL);\r
-#if 0\r
- offset = efsrpc_dissect_ENCRYPTION_CERTIFICATE_LIST(tvb, offset,\r
- pinfo, tree, drep);\r
-#endif\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_remove_users_from_file_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-/*\r
-IDL long EfsRpcAddUsersToFile(\r
-IDL [in] [string] wchar_t FileName,\r
-IDL [in] ENCRYPTION_CERTIFICATE_LIST Hashes\r
-IDL );\r
-*/\r
-\r
-static int\r
-efsrpc_dissect_add_users_from_file_rqst(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,\r
- sizeof(guint16),\r
- hf_efsrpc_filename, TRUE, NULL);\r
-#if 0\r
- offset = efsrpc_dissect_ENCRYPTION_CERTIFICATE_LIST(tvb, offset,\r
- pinfo, tree, drep);\r
-#endif\r
- return offset;\r
-\r
-}\r
-\r
-\r
-static int\r
-efsrpc_dissect_add_users_from_file_reply(tvbuff_t *tvb, int offset,\r
- packet_info *pinfo, proto_tree *tree, guint8 *drep)\r
-{\r
-\r
- offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, \r
- hf_efsrpc_rc, NULL);\r
-\r
- return offset;\r
-\r
-}\r
-\r
-\r
-/*\r
-IDL typedef struct {\r
-IDL long dwCertEncodingType;\r
-IDL long cbData;\r
-IDL [size_is(cbData)] [unique] byte *pbData\r
-IDL } EFS_CERTIFICATE_BLOB;\r
-*/\r
-\r
-/*\r
-IDL typedef struct {\r
-IDL long TotalLength;\r
-IDL [unique] SID *pUserSid;\r
-IDL [unique] EFS_CERTIFICATE_BLOB *pCertBlob;\r
-IDL } ENCRYPTION_CERTIFICATE;\r
-*/\r
-\r
-/*\r
-IDL long EfsRpcSetFileEncryptionKey(\r
-IDL [in] [unique] ENCRYPTION_CERTIFICATE *pEncryptionCertificate\r
-IDL );\r
-*/\r
-\r
-static dcerpc_sub_dissector dcerpc_efs_dissectors[] = {\r
- { EFS_RPC_OPEN_FILE_RAW , "EfsRpcOpenFileRaw",\r
- efsrpc_dissect_open_file_raw_rqst,\r
- efsrpc_dissect_open_file_raw_reply },\r
- { EFS_RPC_READ_FILE_RAW, "EfsRpcReadFileRaw",\r
- efsrpc_dissect_read_file_raw_rqst,\r
- NULL },\r
- { EFS_RPC_WRITE_FILE_RAW, "EfsRpcWriteFileRaw",\r
- efsrpc_dissect_write_file_raw_rqst,\r
- efsrpc_dissect_write_file_raw_reply },\r
- { EFS_RPC_CLOSE_RAW, "EfsRpcCloseRaw",\r
- efsrpc_dissect_close_file_raw_rqst,\r
- efsrpc_dissect_close_file_raw_reply },\r
- { EFS_RPC_ENCRYPT_FILE_SRV, "EfsRpcEncryptFileSrv",\r
- efsrpc_dissect_encrypt_file_srv_rqst, \r
- efsrpc_dissect_encrypt_file_srv_reply },\r
- { EFS_RPC_DECRYPT_FILE_SRV, "EfsRpcDecryptFileSrv",\r
- efsrpc_dissect_decrypt_file_srv_rqst, \r
- efsrpc_dissect_decrypt_file_srv_reply },\r
- { EFS_RPC_QUERY_USERS_ON_FILE, "EfsRpcQueryUsersOnFile",\r
- efsrpc_dissect_query_users_on_file_rqst,\r
- efsrpc_dissect_query_users_on_file_reply },\r
- { EFS_RPC_QUERY_RECOVERY_AGENTS, "EfsRpcQueryRecoveryAgents",\r
- efsrpc_dissect_query_recovery_agents_rqst,\r
- efsrpc_dissect_query_recovery_agents_reply },\r
- { EFS_RPC_REMOVE_USERS_FROM_FILE, "EfsRpcRemoveUsersFromFile",\r
- efsrpc_dissect_remove_users_from_file_rqst,\r
- efsrpc_dissect_remove_users_from_file_reply },\r
- { EFS_RPC_ADD_USERS_TO_FILE, "EfsRpcAddUsersToFile",\r
- efsrpc_dissect_add_users_from_file_rqst,\r
- efsrpc_dissect_add_users_from_file_reply },\r
- { EFS_RPC_SET_FILE_ENCRYPTION_KEY, "EfsRpcSetFileEncryptionKey"\r
- , NULL, NULL },\r
- { EFS_RPC_NOT_SUPPORTED, "EfsRpcNotSupported"\r
- , NULL, NULL },\r
- { EFS_RPC_FILE_KEY_INFO, "EfsRpcFileKeyInfo"\r
- , NULL, NULL },\r
- { EFS_RPC_DUPLICATE_ENCRYPTION_INFO_FILE,\r
- "EfsRpcDuplicateEncryptionInfoFile", NULL, NULL },\r
- { 0, NULL, NULL, NULL }\r
-};\r
-\r
-void\r
-proto_register_dcerpc_efs(void)\r
-{\r
-static hf_register_info hf[] = {\r
- { &hf_efsrpc_opnum, { \r
- "Operation", "efsrpc.opnum", FT_UINT16, BASE_DEC,\r
- NULL, 0x0, "", HFILL }},\r
- { &hf_efsrpc_rc, {\r
- "Return code", "efsrpc.rc", FT_UINT32, BASE_HEX,\r
- VALS(NT_errors), 0x0, "EFSRPC return code", HFILL }},\r
- { &hf_efsrpc_filename,\r
- { "Filename", "efsrpc.filename", FT_STRING, BASE_NONE,\r
- NULL, 0x0, "File name", HFILL}},\r
-\r
- { &hf_efsrpc_flags, {\r
- "Flags", "efsrpc.flags", FT_UINT32, BASE_HEX,\r
- NULL, 0x0, "EFSRPC Flags", HFILL }},\r
-\r
- { &hf_efsrpc_hnd, { \r
- "Context Handle", "efsrpc.hnd", FT_BYTES,\r
- BASE_NONE, NULL, 0x0, "Context Handle", HFILL}},\r
-\r
- { &hf_efsrpc_reserved, {\r
- "Reserved value", "efsrpc.reserved", FT_UINT32, BASE_HEX,\r
- NULL, 0x0, "Reserved value", HFILL }},\r
-\r
- { &hf_efsrpc_num_entries,\r
- { "Number of entries", "efsrpc.num_entries", FT_UINT32,\r
- BASE_DEC, NULL, 0x0, "Number of Entries", HFILL}},\r
-\r
- { &hf_efsrpc_data_size,\r
- { "Size of data structure", "efsrpc.data_size", FT_UINT32,\r
- BASE_DEC, NULL, 0x0, "Size of data structure", HFILL}},\r
-\r
- { &hf_efsrpc_cert_dn,\r
- { "Certificate DN", "efsrpc.cert_dn", FT_STRING, BASE_NONE,\r
- NULL, 0x0, "Distinguished Name of EFS certificate", HFILL}},\r
-\r
-\r
- };\r
-\r
- static gint *ett[] = {\r
- &ett_dcerpc_efs,\r
- &ett_dcerpc_efs_cert_hash\r
- };\r
-\r
- proto_dcerpc_efs = proto_register_protocol(\r
- "Microsoft Encrypted File System Service", "EFSRPC", "efsrpc");\r
-\r
- proto_register_field_array(proto_dcerpc_efs, hf,\r
- array_length(hf));\r
-\r
- proto_register_subtree_array(ett, array_length(ett));\r
-}\r
-\r
-void\r
-proto_reg_handoff_dcerpc_efs(void)\r
-{\r
- /* Register protocol as dcerpc */\r
-\r
- dcerpc_init_uuid(proto_dcerpc_efs, ett_dcerpc_efs,\r
- &uuid_dcerpc_efs, ver_dcerpc_efs,\r
- dcerpc_efs_dissectors, hf_efsrpc_opnum);\r
-}\r
+/* packet-dcerpc-efs.c
+ * Routines for the efsrpc MSRPC interface
+ * Copyright 2004 Ronnie Sahlberg, Jean-Baptiste Marchand
+ *
+ * $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 <glib.h>
+#include <epan/packet.h>
+#include "packet-dcerpc.h"
+#include "packet-dcerpc-nt.h"
+#include "packet-dcerpc-efs.h"
+#include "smb.h"
+
+
+static int proto_dcerpc_efs = -1;
+static int hf_efsrpc_opnum = -1;
+static int hf_efsrpc_rc = -1;
+static int hf_efsrpc_filename = -1;
+static int hf_efsrpc_flags = -1;
+static int hf_efsrpc_hnd = -1;
+static int hf_efsrpc_reserved = -1;
+static int hf_efsrpc_num_entries = -1;
+static int hf_efsrpc_data_size = -1;
+static int hf_efsrpc_cert_dn = -1;
+
+static gint ett_dcerpc_efs = -1;
+static gint ett_dcerpc_efs_cert_hash = -1;
+
+
+/*
+IDL [ uuid(c681d488-d850-11d0-8c52-00c04fd90f7e),
+IDL version(1.0),
+IDL implicit_handle(handle_t rpc_binding)
+IDL ] interface efsrpc
+*/
+
+
+static e_uuid_t uuid_dcerpc_efs = {
+ 0xc681d488, 0xd850, 0x11d0,
+ { 0x8c, 0x52, 0x00, 0xc0, 0x4f, 0xd9, 0x0f, 0x7e }
+};
+
+static guint16 ver_dcerpc_efs = 1;
+
+
+/*
+IDL long EfsRpcOpenFileRaw(
+IDL [out] [context_handle] void *pvContext,
+IDL [in] [string] wchar_t FileName,
+IDL [in] long Flags
+IDL );
+*/
+
+static int
+efsrpc_dissect_open_file_raw_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
+ sizeof(guint16),
+ hf_efsrpc_filename, TRUE, NULL);
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_flags, NULL);
+
+ return offset;
+
+}
+
+static int
+efsrpc_dissect_open_file_raw_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_hnd, NULL, NULL, TRUE, FALSE);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+}
+
+
+
+/*
+IDL long EfsRpcReadFileRaw(
+IDL [in] [context_handle] void *pvContext,
+IDL [out] ??? element_5
+IDL );
+*/
+
+static int
+efsrpc_dissect_read_file_raw_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_hnd, NULL, NULL, FALSE, FALSE);
+
+ return offset;
+
+}
+
+
+/*
+IDL long EfsRpcWriteFileRaw(
+IDL [in] [context_handle] void *pvContext,
+IDL [in] ??? element_7
+IDL );
+*/
+
+
+static int
+efsrpc_dissect_write_file_raw_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_hnd, NULL, NULL, FALSE, FALSE);
+
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_write_file_raw_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+
+}
+
+
+/*
+IDL
+IDL void EfsRpcCloseRaw(
+IDL [in,out] [context_handle] void *pvContext,
+IDL );
+*/
+
+
+static int
+efsrpc_dissect_close_file_raw_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_hnd, NULL, NULL, FALSE, TRUE);
+
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_close_file_raw_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_hnd, NULL, NULL, FALSE, FALSE);
+
+ return offset;
+
+}
+
+
+
+/*
+IDL long EfsRpcEncryptFileSrv(
+IDL [in] [string] wchar_t Filename
+IDL );
+ */
+
+static int
+efsrpc_dissect_encrypt_file_srv_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
+ sizeof(guint16),
+ hf_efsrpc_filename, TRUE, NULL);
+
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_encrypt_file_srv_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+
+}
+
+
+/*
+IDL long EfsRpcDecryptFileSrv(
+IDL [in] [string] wchar_t FileName,
+IDL [in] long Reserved
+IDL );
+*/
+
+
+static int
+efsrpc_dissect_decrypt_file_srv_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
+ sizeof(guint16),
+ hf_efsrpc_filename, TRUE, NULL);
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_reserved, NULL);
+
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_decrypt_file_srv_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+
+}
+
+
+/*
+IDL typedef struct {
+IDL long cbData;
+IDL [size_is(cbData)] void *pbData;
+IDL } EFS_HASH_BLOB;
+*/
+
+static int
+efsrpc_dissect_EFS_HASH_BLOB_data(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ guint32 size;
+ dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
+
+ if(di->conformant_run){
+ return offset; /* cant modify offset while performing conformant run */
+ }
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_data_size, &size);
+
+ /* XXX insert some sort of proto_tree_add_item here and show hex data
+ of the blob */
+ offset += size;
+ return offset;
+}
+
+static int
+efsrpc_dissect_EFS_HASH_BLOB(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ guint32 size;
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_data_size, &size);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_EFS_HASH_BLOB_data, NDR_POINTER_UNIQUE,
+ "HASH_BLOB", -1);
+
+ return offset;
+}
+
+
+static int
+efsrpc_dissect_efs_SID_ptr(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ offset = dissect_ndr_nt_SID(tvb, offset, pinfo, tree, drep);
+
+ return offset;
+}
+
+
+/*
+IDL typedef struct {
+IDL long cbTotalLength;
+IDL SID *pUserSid;
+IDL EFS_HASH_BLOB *pHash;
+IDL [string] wchar_t lpDisplayInformation;
+IDL } ENCRYPTION_CERTIFICATE_HASH;
+*/
+
+static int
+efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *parent_tree,
+ guint8 *drep)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ if (parent_tree) {
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1, "ENCRYPTION_CERTIFICATE_HASH");
+ tree = proto_item_add_subtree(item, ett_dcerpc_efs_cert_hash);
+ }
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_data_size, NULL);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_efs_SID_ptr, NDR_POINTER_UNIQUE,
+ "SID", -1);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_EFS_HASH_BLOB, NDR_POINTER_UNIQUE,
+ "EFS_HASH_BLOB", -1);
+
+ offset = dissect_ndr_pointer_cb(
+ tvb, offset, pinfo, tree, drep,
+ dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
+ "Certificate DN", hf_efsrpc_cert_dn, cb_wstr_postprocess,
+ GINT_TO_POINTER(CB_STR_COL_INFO | 1));
+
+ return offset;
+}
+
+
+static int
+efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_ptr(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH, NDR_POINTER_UNIQUE,
+ "ENCRYPTION_CERTIFICATE_HASH", -1);
+
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_array(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_ptr);
+
+ return offset;
+}
+
+/*
+IDL typedef struct {
+IDL long nCert_Hash;
+IDL [size_is(nCert_Hash)] [unique] ENCRYPTION_CERTIFICATE_HASH *pUsers;
+IDL } ENCRYPTION_CERTIFICATE_HASH_LIST;
+*/
+
+static int
+efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_LIST(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_num_entries, NULL);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_array, NDR_POINTER_UNIQUE,
+ "ENCRYPTION_CERTIFICATE_HASH array:", -1);
+
+ return offset;
+
+}
+
+
+
+/*
+IDL long EfsRpcQueryUsersOnFile(
+IDL [in] [string] wchar_t FileName,
+IDL [out] [ref] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers
+IDL );
+*/
+
+
+static int
+efsrpc_dissect_query_users_on_file_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
+ sizeof(guint16),
+ hf_efsrpc_filename, TRUE, NULL);
+
+
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_query_users_on_file_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_LIST, NDR_POINTER_UNIQUE,
+ "ENCRYPTION_CERTIFICATE_HASH_LIST", -1);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+
+}
+
+/*
+IDL long EfsRpcQueryRecoveryAgents(
+IDL [in] [string] wchar_t FileName,
+IDL [out] [ref] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents
+IDL );
+*/
+
+static int
+efsrpc_dissect_query_recovery_agents_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
+ sizeof(guint16),
+ hf_efsrpc_filename, TRUE, NULL);
+
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_query_recovery_agents_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ efsrpc_dissect_ENCRYPTION_CERTIFICATE_HASH_LIST, NDR_POINTER_UNIQUE,
+ "ENCRYPTION_CERTIFICATE_HASH_LIST", -1);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+
+
+}
+
+
+
+/*
+IDL long EfsRpcRemoveUsersFromFile(
+IDL [in] [string] wchar_t FileName,
+IDL [in] ENCRYPTION_CERTIFICATE_LIST Hashes
+IDL );
+*/
+
+static int
+efsrpc_dissect_remove_users_from_file_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
+ sizeof(guint16),
+ hf_efsrpc_filename, TRUE, NULL);
+#if 0
+ offset = efsrpc_dissect_ENCRYPTION_CERTIFICATE_LIST(tvb, offset,
+ pinfo, tree, drep);
+#endif
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_remove_users_from_file_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+
+}
+
+/*
+IDL long EfsRpcAddUsersToFile(
+IDL [in] [string] wchar_t FileName,
+IDL [in] ENCRYPTION_CERTIFICATE_LIST Hashes
+IDL );
+*/
+
+static int
+efsrpc_dissect_add_users_from_file_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep,
+ sizeof(guint16),
+ hf_efsrpc_filename, TRUE, NULL);
+#if 0
+ offset = efsrpc_dissect_ENCRYPTION_CERTIFICATE_LIST(tvb, offset,
+ pinfo, tree, drep);
+#endif
+ return offset;
+
+}
+
+
+static int
+efsrpc_dissect_add_users_from_file_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree, guint8 *drep)
+{
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_efsrpc_rc, NULL);
+
+ return offset;
+
+}
+
+
+/*
+IDL typedef struct {
+IDL long dwCertEncodingType;
+IDL long cbData;
+IDL [size_is(cbData)] [unique] byte *pbData
+IDL } EFS_CERTIFICATE_BLOB;
+*/
+
+/*
+IDL typedef struct {
+IDL long TotalLength;
+IDL [unique] SID *pUserSid;
+IDL [unique] EFS_CERTIFICATE_BLOB *pCertBlob;
+IDL } ENCRYPTION_CERTIFICATE;
+*/
+
+/*
+IDL long EfsRpcSetFileEncryptionKey(
+IDL [in] [unique] ENCRYPTION_CERTIFICATE *pEncryptionCertificate
+IDL );
+*/
+
+static dcerpc_sub_dissector dcerpc_efs_dissectors[] = {
+ { EFS_RPC_OPEN_FILE_RAW , "EfsRpcOpenFileRaw",
+ efsrpc_dissect_open_file_raw_rqst,
+ efsrpc_dissect_open_file_raw_reply },
+ { EFS_RPC_READ_FILE_RAW, "EfsRpcReadFileRaw",
+ efsrpc_dissect_read_file_raw_rqst,
+ NULL },
+ { EFS_RPC_WRITE_FILE_RAW, "EfsRpcWriteFileRaw",
+ efsrpc_dissect_write_file_raw_rqst,
+ efsrpc_dissect_write_file_raw_reply },
+ { EFS_RPC_CLOSE_RAW, "EfsRpcCloseRaw",
+ efsrpc_dissect_close_file_raw_rqst,
+ efsrpc_dissect_close_file_raw_reply },
+ { EFS_RPC_ENCRYPT_FILE_SRV, "EfsRpcEncryptFileSrv",
+ efsrpc_dissect_encrypt_file_srv_rqst,
+ efsrpc_dissect_encrypt_file_srv_reply },
+ { EFS_RPC_DECRYPT_FILE_SRV, "EfsRpcDecryptFileSrv",
+ efsrpc_dissect_decrypt_file_srv_rqst,
+ efsrpc_dissect_decrypt_file_srv_reply },
+ { EFS_RPC_QUERY_USERS_ON_FILE, "EfsRpcQueryUsersOnFile",
+ efsrpc_dissect_query_users_on_file_rqst,
+ efsrpc_dissect_query_users_on_file_reply },
+ { EFS_RPC_QUERY_RECOVERY_AGENTS, "EfsRpcQueryRecoveryAgents",
+ efsrpc_dissect_query_recovery_agents_rqst,
+ efsrpc_dissect_query_recovery_agents_reply },
+ { EFS_RPC_REMOVE_USERS_FROM_FILE, "EfsRpcRemoveUsersFromFile",
+ efsrpc_dissect_remove_users_from_file_rqst,
+ efsrpc_dissect_remove_users_from_file_reply },
+ { EFS_RPC_ADD_USERS_TO_FILE, "EfsRpcAddUsersToFile",
+ efsrpc_dissect_add_users_from_file_rqst,
+ efsrpc_dissect_add_users_from_file_reply },
+ { EFS_RPC_SET_FILE_ENCRYPTION_KEY, "EfsRpcSetFileEncryptionKey"
+ , NULL, NULL },
+ { EFS_RPC_NOT_SUPPORTED, "EfsRpcNotSupported"
+ , NULL, NULL },
+ { EFS_RPC_FILE_KEY_INFO, "EfsRpcFileKeyInfo"
+ , NULL, NULL },
+ { EFS_RPC_DUPLICATE_ENCRYPTION_INFO_FILE,
+ "EfsRpcDuplicateEncryptionInfoFile", NULL, NULL },
+ { 0, NULL, NULL, NULL }
+};
+
+void
+proto_register_dcerpc_efs(void)
+{
+static hf_register_info hf[] = {
+ { &hf_efsrpc_opnum, {
+ "Operation", "efsrpc.opnum", FT_UINT16, BASE_DEC,
+ NULL, 0x0, "", HFILL }},
+ { &hf_efsrpc_rc, {
+ "Return code", "efsrpc.rc", FT_UINT32, BASE_HEX,
+ VALS(NT_errors), 0x0, "EFSRPC return code", HFILL }},
+ { &hf_efsrpc_filename,
+ { "Filename", "efsrpc.filename", FT_STRING, BASE_NONE,
+ NULL, 0x0, "File name", HFILL}},
+
+ { &hf_efsrpc_flags, {
+ "Flags", "efsrpc.flags", FT_UINT32, BASE_HEX,
+ NULL, 0x0, "EFSRPC Flags", HFILL }},
+
+ { &hf_efsrpc_hnd, {
+ "Context Handle", "efsrpc.hnd", FT_BYTES,
+ BASE_NONE, NULL, 0x0, "Context Handle", HFILL}},
+
+ { &hf_efsrpc_reserved, {
+ "Reserved value", "efsrpc.reserved", FT_UINT32, BASE_HEX,
+ NULL, 0x0, "Reserved value", HFILL }},
+
+ { &hf_efsrpc_num_entries,
+ { "Number of entries", "efsrpc.num_entries", FT_UINT32,
+ BASE_DEC, NULL, 0x0, "Number of Entries", HFILL}},
+
+ { &hf_efsrpc_data_size,
+ { "Size of data structure", "efsrpc.data_size", FT_UINT32,
+ BASE_DEC, NULL, 0x0, "Size of data structure", HFILL}},
+
+ { &hf_efsrpc_cert_dn,
+ { "Certificate DN", "efsrpc.cert_dn", FT_STRING, BASE_NONE,
+ NULL, 0x0, "Distinguished Name of EFS certificate", HFILL}},
+
+
+ };
+
+ static gint *ett[] = {
+ &ett_dcerpc_efs,
+ &ett_dcerpc_efs_cert_hash
+ };
+
+ proto_dcerpc_efs = proto_register_protocol(
+ "Microsoft Encrypted File System Service", "EFSRPC", "efsrpc");
+
+ proto_register_field_array(proto_dcerpc_efs, hf,
+ array_length(hf));
+
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+void
+proto_reg_handoff_dcerpc_efs(void)
+{
+ /* Register protocol as dcerpc */
+
+ dcerpc_init_uuid(proto_dcerpc_efs, ett_dcerpc_efs,
+ &uuid_dcerpc_efs, ver_dcerpc_efs,
+ dcerpc_efs_dissectors, hf_efsrpc_opnum);
+}
-/* packet-dcerpc-efs.h\r
- * Routines for the efsrpc MSRPC interface\r
- * Copyright 2004 Ronnie Sahlberg, Jean-Baptiste Marchand \r
- *\r
- * $Id: packet-dcerpc-efs.h,v 1.1 2004/04/29 22:40:21 sahlberg Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#ifndef __PACKET_DCERPC_EFS_H\r
-#define __PACKET_DCERPC_EFS_H\r
-\r
-/* MSRPC functions available in the efsrpc interface */\r
-\r
-#define EFS_RPC_OPEN_FILE_RAW 0x00\r
-#define EFS_RPC_READ_FILE_RAW 0x01\r
-#define EFS_RPC_WRITE_FILE_RAW 0x02\r
-#define EFS_RPC_CLOSE_RAW 0x03\r
-#define EFS_RPC_ENCRYPT_FILE_SRV 0x04\r
-#define EFS_RPC_DECRYPT_FILE_SRV 0x05\r
-#define EFS_RPC_QUERY_USERS_ON_FILE 0x06\r
-#define EFS_RPC_QUERY_RECOVERY_AGENTS 0x07\r
-#define EFS_RPC_REMOVE_USERS_FROM_FILE 0x08\r
-#define EFS_RPC_ADD_USERS_TO_FILE 0x09\r
-#define EFS_RPC_SET_FILE_ENCRYPTION_KEY 0x0a\r
-#define EFS_RPC_NOT_SUPPORTED 0x0b\r
-#define EFS_RPC_FILE_KEY_INFO 0x0c\r
-#define EFS_RPC_DUPLICATE_ENCRYPTION_INFO_FILE 0x0d\r
-\r
-#endif /* packet-dcerpc-efs.h */\r
+/* packet-dcerpc-efs.h
+ * Routines for the efsrpc MSRPC interface
+ * Copyright 2004 Ronnie Sahlberg, Jean-Baptiste Marchand
+ *
+ * $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 __PACKET_DCERPC_EFS_H
+#define __PACKET_DCERPC_EFS_H
+
+/* MSRPC functions available in the efsrpc interface */
+
+#define EFS_RPC_OPEN_FILE_RAW 0x00
+#define EFS_RPC_READ_FILE_RAW 0x01
+#define EFS_RPC_WRITE_FILE_RAW 0x02
+#define EFS_RPC_CLOSE_RAW 0x03
+#define EFS_RPC_ENCRYPT_FILE_SRV 0x04
+#define EFS_RPC_DECRYPT_FILE_SRV 0x05
+#define EFS_RPC_QUERY_USERS_ON_FILE 0x06
+#define EFS_RPC_QUERY_RECOVERY_AGENTS 0x07
+#define EFS_RPC_REMOVE_USERS_FROM_FILE 0x08
+#define EFS_RPC_ADD_USERS_TO_FILE 0x09
+#define EFS_RPC_SET_FILE_ENCRYPTION_KEY 0x0a
+#define EFS_RPC_NOT_SUPPORTED 0x0b
+#define EFS_RPC_FILE_KEY_INFO 0x0c
+#define EFS_RPC_DUPLICATE_ENCRYPTION_INFO_FILE 0x0d
+
+#endif /* packet-dcerpc-efs.h */
* Routines for dcerpc endpoint mapper dissection
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc-epm.c,v 1.25 2004/01/19 20:10:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dcerpc endpoint mapper dissection
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc-epm4.c,v 1.2 2004/01/19 20:10:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \pipe\eventlog packet disassembly
* Copyright 2004 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-eventlog.c,v 1.1 2004/07/13 05:29:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \pipe\eventlog packet disassembly
* Copyright 2004 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-eventlog.h,v 1.1 2004/07/13 05:29:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/flserver/fldb_proc.idl
*
- * $Id: packet-dcerpc-fldb.c,v 1.8 2004/03/09 09:24:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the frs API (File Replication Service) MSRPC interface
* Copyright 2004 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-frsapi.c,v 1.1 2004/07/10 07:16:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the frs API (File Replication Service) MSRPC interface
* Copyright 2004 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-frsapi.h,v 1.1 2004/07/10 07:16:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the frs (File Replication Service) MSRPC interface
* Copyright 2004 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-frsrpc.c,v 1.1 2004/07/10 07:16:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the frs (File Replication Service) MSRPC interface
* Copyright 2004 Jean-Baptiste Marchand <jbm@hsc.fr>
*
- * $Id: packet-dcerpc-frsrpc.h,v 1.1 2004/07/10 07:16:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tgz file/ftserver/ftserver_proc.idl
*
- * $Id: packet-dcerpc-ftserver.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz icl_rpc.idl
*
- * $Id: packet-dcerpc-icl_rpc.c,v 1.2 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001-2003 Tim Potter <tpot@samba.org>
* as per a suggestion by Jim McDonough
*
- * $Id: packet-dcerpc-initshutdown.c,v 1.2 2004/01/19 20:10:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001-2003 Tim Potter <tpot@samba.org>
* as per a suggestion by Jim McDonough
*
- * $Id: packet-dcerpc-initshutdown.h,v 1.1 2003/10/27 23:31:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/krb5rpc.idl
*
- * $Id: packet-dcerpc-krb5rpc.c,v 1.9 2004/06/04 01:56:25 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/admin.tar.gz ./admin/dced/idl/llb.idl
*
- * $Id: packet-dcerpc-llb.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2002-2003, Tim Potter <tpot@samba.org>
* Copyright 2002, Jim McDonough <jmcd@samba.org>
*
- * $Id: packet-dcerpc-lsa-ds.c,v 1.14 2004/05/03 19:03:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001,2003 Tim Potter <tpot@samba.org>
* 2002 Added LSA command dissectors Ronnie Sahlberg
*
- * $Id: packet-dcerpc-lsa.c,v 1.97 2004/06/28 05:35:06 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\lsarpc packet disassembly
* Copyright 2001, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-lsa.h,v 1.13 2004/01/19 20:10:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for MS Exchange MAPI
* Copyright 2002, Ronnie Sahlberg
*
- * $Id: packet-dcerpc-mapi.c,v 1.27 2004/02/25 09:31:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for MS Exchange MAPI dissection
* Copyright 2002, Ronnie Sahlberg
*
- * $Id: packet-dcerpc-mapi.h,v 1.4 2003/10/24 00:42:16 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\msgsvc packet disassembly
* Copyright 2003 Ronnie Sahlberg
*
- * $Id: packet-dcerpc-messenger.c,v 1.6 2004/01/19 20:10:34 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dcerpc mgmt dissection
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc-mgmt.c,v 1.7 2003/08/04 02:49:02 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC NDR dissection
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc-ndr.c,v 1.15 2004/01/19 20:10:34 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001,2003 Tim Potter <tpot@samba.org>
* 2002 structure and command dissectors by Ronnie Sahlberg
*
- * $Id: packet-dcerpc-netlogon.c,v 1.106 2004/05/19 04:52:31 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\NETLOGON packet disassembly
* Copyright 2001,2003 Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-netlogon.h,v 1.17 2004/03/05 23:12:10 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dcerpc nspi dissection
* Copyright 2001, Todd Sabin <tsabin@optonline.net>
*
- * $Id: packet-dcerpc-nspi.c,v 1.4 2002/08/02 23:35:48 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC over SMB packet disassembly
* Copyright 2001-2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-nt.c,v 1.80 2004/05/19 04:52:31 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC over SMB packet disassembly
* Copyright 2001-2003 Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-nt.h,v 1.50 2004/05/19 04:52:31 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCOM OXID Resolver
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc-oxid.c,v 1.11 2004/01/19 20:10:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz ../security/idl/rdaclif.idl
*
- * $Id: packet-dcerpc-rdaclif.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\winreg packet disassembly
* Copyright 2001-2003 Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-reg.c,v 1.24 2004/01/19 20:10:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\winreg packet disassembly
* Copyright 2001, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-reg.h,v 1.8 2003/09/28 11:35:20 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCOM Remote Activation
* Copyright 2001, Todd Sabin <tas@webspan.net>
*
- * $Id: packet-dcerpc-remact.c,v 1.8 2003/08/04 02:49:02 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tgz file/fsint/rep_proc.idl
*
- * $Id: packet-dcerpc-rep_proc.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/roverride.idl
*
- * $Id: packet-dcerpc-roverride.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rpriv.idl
*
- * $Id: packet-dcerpc-rpriv.c,v 1.11 2004/06/29 08:20:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_acct.idl
*
- * $Id: packet-dcerpc-rs_acct.c,v 1.9 2004/06/29 08:20:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_attr.idl
*
- * $Id: packet-dcerpc-rs_attr.c,v 1.5 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_attr_schema.idl
*
- * $Id: packet-dcerpc-rs_attr_schema.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_bind.idl
*
- * $Id: packet-dcerpc-rs_bind.c,v 1.3 2004/01/27 04:15:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_misc.idl
*
- * $Id: packet-dcerpc-rs_misc.c,v 1.9 2004/06/29 08:20:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_pgo.idl
*
- * $Id: packet-dcerpc-rs_pgo.c,v 1.12 2004/03/09 09:24:41 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz rs_plcy.idl
*
- * $Id: packet-dcerpc-rs_plcy.c,v 1.2 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz bubasics/rs_prop_acct.idl
*
- * $Id: packet-dcerpc-rs_prop_acct.c,v 1.2 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_acl.idl
*
- * $Id: packet-dcerpc-rs_prop_acl.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_attr.idl
*
- * $Id: packet-dcerpc-rs_prop_attr.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_pgo.idl
*
- * $Id: packet-dcerpc-rs_prop_pgo.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_prop_plcy.idl
*
- * $Id: packet-dcerpc-rs_prop_plcy.c,v 1.3 2004/03/25 08:01:14 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_pwd_mgmt.idl
*
- * $Id: packet-dcerpc-rs_pwd_mgmt.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_repadm.idl
*
- * $Id: packet-dcerpc-rs_repadm.c,v 1.8 2004/06/29 08:20:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_repadm.idl
*
- * $Id: packet-dcerpc-rs_replist.c,v 1.5 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_repmgr.idl
*
- * $Id: packet-dcerpc-rs_repmgr.c,v 1.1 2004/02/10 23:38:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rs_unix.idl
*
- * $Id: packet-dcerpc-rs_unix.c,v 1.6 2004/06/29 08:20:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rsec_login.idl
*
- * $Id: packet-dcerpc-rsec_login.c,v 1.5 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001,2003 Tim Potter <tpot@samba.org>
* 2002 Added all command dissectors Ronnie Sahlberg
*
- * $Id: packet-dcerpc-samr.c,v 1.111 2004/06/28 05:54:35 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\samr packet disassembly
* Copyright 2001, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-samr.h,v 1.12 2003/09/29 00:01:27 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/security.tar.gz security/idl/rsecidmap.idl
*
- * $Id: packet-dcerpc-secidmap.c,v 1.6 2004/06/29 08:20:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\spoolss packet disassembly
* Copyright 2001-2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-spoolss.c,v 1.108 2004/03/30 07:39:04 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\spoolss packet disassembly
* Copyright 2001, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-spoolss.h,v 1.18 2003/02/14 06:21:30 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* 2002, some share information levels implemented based on samba
* sources.
*
- * $Id: packet-dcerpc-srvsvc.c,v 1.65 2004/06/28 05:17:13 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Rewrote entire file with a complete and correct list of all
* function names. Ronnie Sahlberg
*
- * $Id: packet-dcerpc-srvsvc.h,v 1.7 2003/09/27 23:34:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Tim Potter <tpot@samba.org>
* Copyright 2003, Ronnie Sahlberg, added function dissectors
*
- * $Id: packet-dcerpc-svcctl.c,v 1.15 2004/03/30 07:39:05 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB \PIPE\svcctl packet disassembly
* Copyright 2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-svcctl.h,v 1.6 2003/10/02 21:40:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC TAPI packet disassembly
* Copyright 2002, Ronnie Sahlberg
*
- * $Id: packet-dcerpc-tapi.c,v 1.9 2004/01/19 20:10:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC TAPI packet disassembly
* Copyright 2002, Ronnie Sahlberg
*
- * $Id: packet-dcerpc-tapi.h,v 1.3 2003/10/22 01:55:04 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/fsint/tkn4int.idl
*
- * $Id: packet-dcerpc-tkn4int.c,v 1.5 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DCERPC Distributed Link tracking Server packet disassembly
* Copyright 2003, Ronnie Sahlberg
*
- * $Id: packet-dcerpc-trksvr.c,v 1.1 2003/12/16 05:07:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/ncsubik/ubikdisk_proc.idl
*
- * $Id: packet-dcerpc-ubikdisk.c,v 1.5 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/ncsubik/ubikvote_proc.idl
*
- * $Id: packet-dcerpc-ubikvote.c,v 1.5 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This information is based off the released idl files from opengroup.
* ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/update/update.idl
*
- * $Id: packet-dcerpc-update.c,v 1.5 2004/01/27 04:15:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Tim Potter <tpot@samba.org>
* Copyright 2003, Richard Sharpe <rsharpe@richardsharpe.com>
*
- * $Id: packet-dcerpc-wkssvc.c,v 1.33 2004/06/28 05:22:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Tim Potter <tpot@samba.org>
* Copyright 2002, Richard Sharpe <rsharpe@richardsharpe.org>
*
- * $Id: packet-dcerpc-wkssvc.h,v 1.8 2003/09/27 23:43:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Todd Sabin <tas@webspan.net>
* Copyright 2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc.c,v 1.180 2004/06/24 07:43:24 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Todd Sabin <tas@webspan.net>
* Copyright 2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc.h,v 1.43 2004/06/09 09:24:07 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* DICOM packets correctly.
* This should probably be documented somewhere besides here.)
*
- * $Id: packet-dcm.c,v 1.4 2004/07/09 23:17:04 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* see http://ddt.sourceforge.net/
* Olivier Abad <oabad@noos.fr>
*
- * $Id: packet-ddtp.c,v 1.24 2003/01/19 21:43:18 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* see http://ddt.sourceforge.net/
* Olivier Abad <oabad@noos.fr>
*
- * $Id: packet-ddtp.h,v 1.5 2002/09/01 14:30:30 oabad Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-dec-bpdu.c
* Routines for DEC BPDU (DEC Spanning Tree Protocol) disassembly
*
- * $Id: packet-dec-bpdu.c,v 1.15 2002/08/28 21:00:12 jmayer Exp $
+ * $Id$
*
* Copyright 2001 Paul Ionescu <paul@acorp.ro>
*
* SHIRASAKI Yasuhiro <yasuhiro@gnome.gr.jp>
* Tony Lindstrom <tony.lindstrom@ericsson.com>
*
- * $Id: packet-dhcpv6.c,v 1.11 2004/02/25 09:31:05 guy Exp $
+ * $Id$
*
* The information used comes from:
* RFC3315.txt
* AVPs. If libxml is in the LD_LIBRARY_PATH, and dictionary.xml exists,
* then it will not be used.
*
- * $Id: packet-diameter-defs.h,v 1.12 2004/04/02 05:07:42 guy Exp $
+ * $Id$
* Generated: Fri Feb 23 13:04:15 2001
* References:
* http://www.ietf.org/rfc/rfc3588.txt
/* packet-diameter.c
* Routines for Diameter packet disassembly
*
- * $Id: packet-diameter.c,v 1.68 2004/04/25 10:40:42 etxrab Exp $
+ * $Id$
*
* Copyright (c) 2001 by David Frascone <dave@frascone.com>
*
* Routines for the common part of Diffserv MPLS signaling protocols
* Author: Endoh Akira (endoh@netmarks.co.jp)
*
- * $Id: packet-diffserv-mpls-common.c,v 1.2 2003/10/13 20:53:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the common part of Diffserv MPLS signaling protocols
* Author: Endoh Akira (endoh@netmarks.co.jp)
*
- * $Id: packet-diffserv-mpls-common.h,v 1.2 2003/10/13 20:53:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Brad Hards <bradh@frogmouth.net>
* Copyright 2003, Ronnie Sahlberg, added TCP desegmentation.
*
- * $Id: packet-distcc.c,v 1.5 2004/01/25 15:56:04 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DLSw packet dissection (Data Link Switching)
* Copyright 2001, Paul Ionescu <paul@acorp.ro>
*
- * $Id: packet-dlsw.c,v 1.7 2002/08/28 21:00:12 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for DNP dissection
* Copyright 2003, Graham Bloice <graham.bloice@trihedral.com>
*
- * $Id: packet-dnp.c,v 1.1 2004/06/04 00:12:12 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-dns.c
* Routines for DNS packet disassembly
*
- * $Id: packet-dns.c,v 1.120 2004/01/23 19:16:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Definitions for packet disassembly structures and routines used both by
* DNS and NBNS.
*
- * $Id: packet-dns.h,v 1.13 2002/08/28 21:00:12 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dsi packet dissection
* Copyright 2001, Randy McEoin <rmceoin@pe.com>
*
- * $Id: packet-dsi.c,v 1.30 2004/02/25 09:31:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-dvmrp.c 2001 Ronnie Sahlberg <See AUTHORS for email>
* Routines for IGMP/DVMRP packet disassembly
*
- * $Id: packet-dvmrp.c,v 1.14 2003/11/16 23:17:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-dvmrp.h 2001 Ronnie Sahlberg <See AUTHORS for email>
* Declarations of routines for IGMP/DVMRP packet disassembly
*
- * $Id: packet-dvmrp.h,v 1.3 2002/08/28 21:00:12 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* to many dissectors.
* Copyright 2004, Anders Broman <anders.broman@ericsson.com>
*
- * $Id: packet-e164.c,v 1.2 2004/03/19 10:24:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* E164 tables
* Copyright 2004, Anders Broman <anders.broman@ericsson.com>
*
- * $Id: packet-e164.h,v 1.1 2004/03/05 10:29:35 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for EAP Extensible Authentication Protocol dissection
* RFC 2284, RFC 3748
*
- * $Id: packet-eap.c,v 1.37 2004/07/04 10:26:01 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* (From IEEE Draft P802.1X/D11; is there a later draft, or a
* final standard? If so, check it.)
*
- * $Id: packet-eapol.c,v 1.19 2004/04/07 06:04:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Laurent Deniel <laurent.deniel@free.fr>
*
- * $Id: packet-echo.c,v 1.1 2003/06/25 13:42:18 deniel Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/edonkey-protocol.txt
* http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/overnet-protocol.txt
*
- * $Id: packet-edonkey.c,v 1.1 2003/07/16 21:13:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/edonkey-protocol.txt
* http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/overnet-protocol.txt
*
- * $Id: packet-edonkey.h,v 1.1 2003/07/16 21:13:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for EIGRP dissection
* Copyright 2000, Paul Ionescu <paul@acorp.ro>
*
- * $Id: packet-eigrp.c,v 1.27 2004/03/06 03:25:09 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
* Copyright (c) 2003 Markus Friedl. All rights reserved.
*
- * $Id: packet-enc.c,v 1.2 2003/03/08 09:11:51 guy Exp $
+ * $Id$
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* Magnus Hansson <mah@hms.se>
* Joakim Wiberg <jow@hms.se>
*
- * $Id: packet-enip.c,v 1.11 2004/06/02 06:30:15 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2004, Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-enrp.c,v 1.2 2004/07/09 19:50:00 tuexen Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for ISO/OSI End System to Intermediate System
* Routing Exchange Protocol ISO 9542.
*
- * $Id: packet-esis.c,v 1.31 2003/12/21 05:51:33 jmayer Exp $
+ * $Id$
* Ralf Schneider <Ralf.Schneider@t-online.de>
*
* Ethereal - Network traffic analyzer
/* packet-esis.h
* Defines and such for ESIS protocol decode.
*
- * $Id: packet-esis.h,v 1.4 2002/08/28 21:00:13 jmayer Exp $
+ * $Id$
* Ralf Schneider <Ralf.Schneider@t-online.de>
*
* Ethereal - Network traffic analyzer
/* packet-eth.c
* Routines for ethernet packet disassembly
*
- * $Id: packet-eth.c,v 1.90 2004/06/26 09:48:11 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-eth.h
*
- * $Id: packet-eth.h,v 1.13 2003/10/01 07:11:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: packet-etherip.c,v 1.2 2003/10/02 22:44:19 guy Exp $
+ * $Id$
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
/* ethertype.c
* Routines for calling the right protocol for the ethertype.
*
- * $Id: packet-ethertype.c,v 1.46 2004/04/07 06:04:22 guy Exp $
+ * $Id$
*
* Gilbert Ramirez <gram@alumni.rice.edu>
*
* Copyright 2003 Ronnie Sahlberg, exchange first/last matching and
* tap listener and misc updates
*
- * $Id: packet-fc.c,v 1.18 2004/02/19 00:29:15 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Basic Fibre Channel Header definitions
* Copyright 2002 Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-fc.h,v 1.6 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Fibre Channel Basic Link Services header
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fcbls.h,v 1.2 2003/07/09 06:24:32 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FC Common Transport Protocol (used by GS3 services)
* Copyright 2001, Dinesh G Dutt <ddutt@andiamo.com>
*
- * $Id: packet-fcct.c,v 1.2 2003/06/30 21:50:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-fcct.h
*
- * $Id: packet-fcct.h,v 1.3 2003/06/30 21:50:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FC distributed Name Server (dNS)
* Copyright 2001, Dinesh G Dutt <ddutt@andiamo.com>
*
- * $Id: packet-fcdns.c,v 1.2 2003/10/06 20:46:50 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-fcdns.h
*
- * $Id: packet-fcdns.h,v 1.2 2003/03/06 21:55:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FC Extended Link Services
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fcels.c,v 1.6 2003/11/07 08:50:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Fibre Channel Extended Link Services Definitions (ddutt@cisco.com)
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fcels.h,v 1.3 2003/11/07 08:50:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FC Fabric Configuration Server
* Copyright 2001, Dinesh G Dutt <ddutt@andiamo.com>
*
- * $Id: packet-fcfcs.c,v 1.2 2004/02/29 09:02:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-fcfcs.h
*
- * $Id: packet-fcfcs.h,v 1.2 2003/03/06 21:55:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FC Fabric Zone Server
* Copyright 2001, Dinesh G Dutt <ddutt@andiamo.com>
*
- * $Id: packet-fcfzs.c,v 1.2 2003/12/02 06:06:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-fcfzs.h
*
- * $Id: packet-fcfzs.h,v 1.2 2003/03/06 21:55:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FCIP dissection
* Copyright 2001, Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-fcip.c,v 1.12 2004/02/19 00:29:15 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FC Link Control Frames
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fclctl.c,v 1.2 2003/06/30 21:50:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Fibre Channel Link Control definitions
* Copyright 2001 Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-fclctl.h,v 1.2 2003/06/30 21:50:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Fibre Channel Protocol for SCSI (FCP)
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fcp.c,v 1.2 2003/01/31 03:17:46 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Fibre Channel SCSI (FCP) Protocol definitions
* Copyright 2001 Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-fcp.h,v 1.1 2002/12/08 02:32:17 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This decoder is for FC-SB3 version 1.4
* Copyright 2003, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fcsb3.c,v 1.3 2003/12/18 00:28:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This decoder is for FC-SB3 version 1.4
* Copyright 2003 Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-fcsb3.h,v 1.1 2003/10/30 02:06:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This decoder is for FC-SP version 1.1
* Copyright 2003, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fcsp.c,v 1.2 2003/11/07 08:47:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This decoder is for FC-SP version 1.1
* Copyright 2003 Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-fcsp.h,v 1.2 2004/02/20 22:38:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for FC Inter-switch link services
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-fcswils.c,v 1.8 2003/12/04 05:40:17 gram Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Fibre Channel Switch InterLink Services Definitions
* Copyright 2001 Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-fcswils.h,v 1.3 2003/10/30 02:06:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Laurent Deniel <laurent.deniel@free.fr>
*
- * $Id: packet-fddi.c,v 1.62 2003/08/29 10:59:09 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-fddi.h
*
- * $Id: packet-fddi.h,v 1.8 2003/08/29 10:59:10 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Financial Information eXchange (FIX) Protocol dissection
* Copyright 2000, PC Drew <drewpc@ibsncentral.com>
*
- * $Id: packet-fix.c,v 1.6 2003/06/12 08:33:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2001, Paul Ionescu <paul@acorp.ro>
*
- * $Id: packet-fr.c,v 1.49 2004/07/01 08:35:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Top-most dissector. Decides dissector based on Wiretap Encapsulation Type.
*
- * $Id: packet-frame.c,v 1.43 2004/01/03 18:40:07 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Top-most dissector. Decides dissector based on Wiretap Encapsulation Type.
*
- * $Id: packet-frame.h,v 1.7 2003/12/06 06:09:10 gram Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Routine to dissect OSI ISO 8571 FTAM Protocol packets
*
-* $Id: packet-ftam.c,v 1.2 2004/04/20 04:17:52 guy Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
*
* Routine to dissect OSI ISO 8571 FTAM Protocol packets
*
-* $Id: packet-ftam.h,v 1.1 2004/03/23 19:51:06 guy Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
* Copyright 2001, Juan Toledo <toledo@users.sourceforge.net> (Passive FTP)
*
- * $Id: packet-ftp.c,v 1.54 2003/10/08 11:33:19 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Ethernet header disassembly of FW1 "monitor" files
* Copyright 2002,2003, Alfred Koebler <ako@icon.de>
*
- * $Id: packet-fw1.c,v 1.11 2004/01/06 22:05:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Alfred Koebler <ako@icon.de>
*
* See http://www.giftproject.org/
*
- * $Id: packet-gift.c,v 1.2 2004/07/01 06:30:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Frank Singleton <frank.singleton@ericsson.com>
* Trevor Shepherd <eustrsd@am1.ericsson.se>
*
- * $Id: packet-giop.c,v 1.77 2004/07/09 23:17:04 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Based on CORBAv2.4.2 Chapter 15 GIOP Description.
*
- * $Id: packet-giop.h,v 1.12 2003/12/21 03:44:00 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Based on the code from packet-gvrp.c (GVRP) from
* Kevin Shi <techishi@ms22.hinet.net> Copyright 2000
*
- * $Id: packet-gmrp.c,v 1.10 2002/08/28 21:00:13 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for gnutella dissection
* Copyright 2001, B. Johannessen <bob@havoq.com>
*
- * $Id: packet-gnutella.c,v 1.15 2002/08/28 21:00:13 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations for gnutella dissection
* Copyright 2001, B. Johannessen <bob@havoq.com>
*
- * $Id: packet-gnutella.h,v 1.2 2002/08/28 21:00:13 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Logical Link Control GPRS dissection ETSI 4.64
* Copyright 2000, Josef Korelus <jkor@quick.cz>
*
- * $Id: packet-gprs-llc.c,v 1.5 2004/05/04 09:03:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* dissection
* Copyright 2003, Josef Korelus <jkor@quick.cz>
*
- * $Id: packet-gprs-ns.c,v 1.8 2004/02/18 10:11:51 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the Generic Routing Encapsulation (GRE) protocol
* Brad Robel-Forrest <brad.robel-forrest@watchguard.com>
*
- * $Id: packet-gre.c,v 1.56 2004/05/15 19:54:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Formats and coding
* (3GPP TS 24.080 version 4.3.0 Release 4)
*
- * $Id: packet-gsm_a.c,v 1.13 2004/04/21 05:53:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-gsm_a.h
*
- * $Id: packet-gsm_a.h,v 1.2 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
* Changed to run on new version of TCAP, many changes for
* EOC matching, and parameter separation. (2003)
*
- * $Id: packet-gsm_map.c,v 1.11 2004/04/21 05:53:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-gsm_map.h
*
- * $Id: packet-gsm_map.h,v 1.3 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Copyright 2004, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
* Technical realization of Short Message Service (SMS)
* (3GPP TS 23.040 version 5.4.0 Release 5)
*
- * $Id: packet-gsm_sms.c,v 1.12 2004/04/21 05:53:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-gsm_sms.h
*
- * $Id: packet-gsm_sms.h,v 1.1 2004/03/27 11:32:29 guy Exp $
+ * $Id$
*
* Copyright 2004, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
/* packet-gsm_sms_ud.c
* Routines for GSM SMS TP-UD (GSM 03.40) dissection
*
- * $Id: packet-gsm_sms_ud.c,v 1.5 2004/01/29 21:19:10 obiot Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
* Michael Lum <mlum [AT] telostech.com>,
* Created (2004).
*
- * $Id: packet-gsm_ss.c,v 1.3 2004/04/21 05:53:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-gsm_ss.h
*
- * $Id: packet-gsm_ss.h,v 1.3 2004/04/21 05:53:56 guy Exp $
+ * $Id$
*
* Copyright 2004, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
* Copyright 2002, Richard Sharpe <rsharpe@samba.org> Added a few
* bits and pieces ...
*
- * $Id: packet-gssapi.c,v 1.29 2004/01/19 20:10:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Dissector for GSS-API tokens as described in rfc2078, section 3.1
* Copyright 2002, Tim Potter <tpot@samba.org>
*
- * $Id: packet-gssapi.h,v 1.9 2003/11/16 23:17:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Michal Melerowicz <michal.melerowicz@nokia.com>
* Nicolas Balkota <balkota@mac.com>
*
- * $Id: packet-gtp.c,v 1.74 2004/03/30 18:14:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Michal Melerowicz <michal.melerowicz@nokia.com>
* Nicolas Balkota <balkota@mac.com>
*
- * $Id: packet-gtp.h,v 1.2 2002/08/28 21:00:14 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for GVRP (GARP VLAN Registration Protocol) dissection
* Copyright 2000, Kevin Shi <techishi@ms22.hinet.net>
*
- * $Id: packet-gvrp.c,v 1.14 2002/08/28 21:00:14 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Sinec H1 packet disassembly
* Gerrit Gehnen <G.Gehnen@atrie.de>
*
- * $Id: packet-h1.c,v 1.25 2002/08/28 21:00:14 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Maintained by Andreas Sikkema (h323@ramdyne.nl)
*
- * $Id: packet-h225.c,v 1.47 2004/06/24 21:50:03 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for H.225 packet dissection
* 2003 Tomas Kukosa
*
- * $Id: packet-h225.h,v 1.8 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for H.235 packet dissection
* 2004 Tomas Kukosa
*
- * $Id: packet-h235.c,v 1.6 2004/06/24 21:50:04 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for H.235 packet dissection
* 2004 Tomas Kukosa
*
- * $Id: packet-h235.h,v 1.6 2004/06/24 21:50:04 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Maintained by Andreas Sikkema (h323@ramdyne.nl)
*
- * $Id: packet-h245.c,v 1.48 2004/06/15 18:26:08 etxrab Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for H.245 packet dissection
* 2003 Ronnie Sahlberg
*
- * $Id: packet-h245.h,v 1.5 2003/09/26 22:20:07 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Routines for ITU-T Recommendation H.261 dissection
*
- * $Id: packet-h261.c,v 1.20 2004/02/14 22:48:52 guy Exp $
+ * $Id$
*
* Copyright 2000, Philips Electronics N.V.
* Andreas Sikkema <h323@ramdyne.nl>
* Copyright 2003 Niklas Ögren <niklas.ogren@7l.se>
* Seven Levels Consultants AB
*
- * $Id: packet-h263.c,v 1.5 2004/06/25 06:31:46 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copied from packet-h225.c and packet-h245.c
*
- * $Id: packet-h450.c,v 1.10 2004/06/24 06:01:47 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for hclnfsd (Hummingbird NFS Daemon) dissection
* Copyright 2001, Mike Frisch <frisch@hummingbird.com>
*
- * $Id: packet-hclnfsd.c,v 1.20 2003/08/17 21:34:21 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-hclnfsd.h
*
- * $Id: packet-hclnfsd.h,v 1.2 2002/08/28 21:00:16 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for HP extended IEEE 802.2 LLC layer
* Jochen Friedrich <jochen@scram.de>
*
- * $Id: packet-hpext.c,v 1.1 2003/03/02 21:52:16 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for HP extended IEEE 802.2 LLC layer
* Jochen Friedrich <jochen@scram.de>
*
- * $Id: packet-hpext.h,v 1.1 2003/03/02 21:52:16 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Heikki Vatiainen <hessu@cs.tut.fi>
*
- * $Id: packet-hsrp.c,v 1.24 2002/08/28 21:00:16 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2002, Tim Potter <tpot@samba.org>
* Copyright 1999, Andrew Tridgell <tridge@samba.org>
*
- * $Id: packet-http.c,v 1.111 2004/07/09 23:37:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-http.h
*
- * $Id: packet-http.h,v 1.9 2003/09/02 23:09:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ip.c
* Routines for dissassembly of the Hyper SCSI protocol.
*
- * $Id: packet-hyperscsi.c,v 1.4 2002/12/03 01:09:00 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for IAPP dissection
* Copyright 2002, Alfred Arnold <aarnold@elsa.de>
*
- * $Id: packet-iapp.c,v 1.6 2002/08/28 21:00:16 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* IAX2 is a VoIP protocol for the open source PBX Asterisk. Please see
* http://www.asterisk.org for more information.
*
- * $Id: packet-iax2.c,v 1.8 2004/06/30 18:47:27 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Mark Spencer <markster@linux-support.net>
*
- * $Id: packet-iax2.h,v 1.3 2004/06/25 06:31:46 sahlberg Exp $
+ * $Id$
*
* This program is free software, distributed under the terms of
* the GNU General Public License
* Erik Kunze <kunze@philosys.de>
* Uwe Girlich <Uwe.Girlich@philosys.de>
*
- * $Id: packet-ib.c,v 1.2 2003/01/20 08:03:16 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Srishylam Simharajan simha@netapp.com
*
- * $Id: packet-icap.c,v 1.13 2004/07/09 23:37:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-icmpv6.c
* Routines for ICMPv6 packet disassembly
*
- * $Id: packet-icmpv6.c,v 1.78 2004/04/22 08:22:07 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* By Peter Torvals
* Copyright 1999 Peter Torvals
*
- * $Id: packet-icp.c,v 1.23 2002/08/28 21:00:17 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-icq.c
* Routines for ICQ packet disassembly
*
- * $Id: packet-icq.c,v 1.48 2002/08/28 21:00:17 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000, Axis Communications AB
* Inquiries/bugreports should be sent to Johan.Jorgensen@axis.com
*
- * $Id: packet-ieee80211.c,v 1.116 2004/07/09 04:54:08 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000, Axis Communications AB
* Inquiries/bugreports should be sent to Johan.Jorgensen@axis.com
*
- * $Id: packet-ieee80211.h,v 1.8 2003/09/23 02:35:59 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ieee8023.c
* Routine for dissecting 802.3 (as opposed to D/I/X Ethernet) packets.
*
- * $Id: packet-ieee8023.c,v 1.9 2004/02/21 05:12:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declaration of routine for dissecting 802.3 (as opposed to D/I/X Ethernet)
* packets.
*
- * $Id: packet-ieee8023.h,v 1.3 2003/10/01 07:11:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for IGMP/IGAP packet disassembly
* 2003, Endoh Akria (see AUTHORS for email)
*
- * $Id: packet-igap.c,v 1.2 2004/03/06 01:54:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations of routines for IGMP/IGAP packet disassembly
* 2003, Endoh Akira <See AUTHORS for email>
*
- * $Id: packet-igap.h,v 1.1 2003/12/10 19:21:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-igmp.c 2001 Ronnie Sahlberg <See AUTHORS for email>
* Routines for IGMP packet disassembly
*
- * $Id: packet-igmp.c,v 1.25 2003/12/10 19:21:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-igmp.h 2001 Ronnie Sahlberg <See AUTHORS for email>
* Declarations of routines for IGMP packet disassembly
*
- * $Id: packet-igmp.h,v 1.2 2002/08/28 21:00:17 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for IGRP dissection
* Copyright 2000, Paul Ionescu <paul@acorp.ro>
*
- * $Id: packet-igrp.c,v 1.14 2003/12/21 05:51:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for image/gif media dissection
* Copyright 2003, 2004, Olivier Biot.
*
- * $Id: packet-image-gif.c,v 1.4 2004/03/08 22:03:58 obiot Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
* Routines for JFIF image/jpeg media dissection
* Copyright 2004, Olivier Biot.
*
- * $Id: packet-image-jfif.c,v 1.5 2004/05/31 01:24:03 obiot Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
* Routines for imap packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-imap.c,v 1.23 2003/06/11 20:03:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ip.c
* Routines for IP and miscellaneous IP protocol packet disassembly
*
- * $Id: packet-ip.c,v 1.203 2004/04/19 23:36:46 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ip.h
* Definitions for IP packet disassembly structures and routines
*
- * $Id: packet-ip.h,v 1.29 2003/08/23 09:09:33 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Using IPDC spec 0.20.2
*
- * $Id: packet-ipdc.c,v 1.5 2004/04/09 08:39:00 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Using IPDC spec 0.20.2
*
- * $Id: packet-ipdc.h,v 1.6 2004/04/22 20:31:01 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* See RFC 2625.
* Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
*
- * $Id: packet-ipfc.c,v 1.6 2003/01/21 05:21:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ipfc.h
*
- * $Id: packet-ipfc.h,v 1.1 2002/12/08 22:35:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Duncan Laurie <duncan@sun.com>
*
- * $Id: packet-ipmi.c,v 1.5 2004/04/07 06:18:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-ipp.c,v 1.34 2003/01/28 22:02:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: packet-ipsec-udp.c,v 1.4 2003/10/02 22:44:19 guy Exp $
+ * $Id$
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
/* packet-ipsec.c
* Routines for IPsec/IPComp packet disassembly
*
- * $Id: packet-ipsec.c,v 1.44 2003/08/16 00:11:07 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ipsec.h
*
- * $Id: packet-ipsec.h,v 1.7 2002/08/28 21:00:17 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-ipv6.c
* Routines for IPv6 packet disassembly
*
- * $Id: packet-ipv6.c,v 1.102 2004/03/23 01:58:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ipv6.h
* Definitions for IPv6 packet disassembly
*
- * $Id: packet-ipv6.h,v 1.33 2004/04/22 08:22:07 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ipvs-syncd.c 2001 Ronnie Sahlberg <See AUTHORS for email>
* Routines for IGMP packet disassembly
*
- * $Id: packet-ipvs-syncd.c,v 1.1 2004/03/21 17:13:01 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions Copyright (c) 2000-2002 by Gilbert Ramirez.
* Portions Copyright (c) Novell, Inc. 2002-2003
*
- * $Id: packet-ipx.c,v 1.138 2003/12/29 19:04:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions Copyright (c) by Gilbert Ramirez 2000-2002
* Portions Copyright (c) Novell, Inc. 2002-2003
*
- * $Id: packet-ipx.h,v 1.28 2003/08/24 05:17:51 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ipxwan.c
* Routines for NetWare IPX WAN Protocol
*
- * $Id: packet-ipxwan.c,v 1.1 2003/04/06 02:32:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-irc.c
* Routines for IRC packet dissection
*
- * $Id: packet-irc.c,v 1.21 2002/08/28 21:00:18 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* for ISAKMP (RFC 2407)
* Brad Robel-Forrest <brad.robel-forrest@watchguard.com>
*
- * $Id: packet-isakmp.c,v 1.79 2004/06/15 18:47:24 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Eurologic and Mark Burton <markb@ordern.com>
* 2004 Request/Response matching and Service Response Time: ronnie sahlberg
*
- * $Id: packet-iscsi.c,v 1.50 2004/05/24 02:25:18 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-isdn.c
* Routines for ISDN packet disassembly
*
- * $Id: packet-isdn.c,v 1.5 2003/12/21 12:07:09 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-isis-clv.c
* Common CLV decode routines.
*
- * $Id: packet-isis-clv.c,v 1.29 2003/12/08 20:40:32 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis-clv.h
* Declares for common clv decoding functions.
*
- * $Id: packet-isis-clv.h,v 1.10 2003/12/08 20:40:32 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis-hello.c
* Routines for decoding isis hello packets and their CLVs
*
- * $Id: packet-isis-hello.c,v 1.34 2003/12/08 20:40:32 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis-hello.h
* Declares for hello handling inside isis.
*
- * $Id: packet-isis-hello.h,v 1.11 2003/12/08 20:40:33 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis-lsp.c
* Routines for decoding isis lsp packets and their CLVs
*
- * $Id: packet-isis-lsp.c,v 1.46 2003/12/08 20:40:33 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis-lsp.h
* Defines and such for LSP and their CLV decodes
*
- * $Id: packet-isis-lsp.h,v 1.19 2003/12/08 20:40:33 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis-snp.c
* Routines for decoding isis complete & partial SNP and their payload
*
- * $Id: packet-isis-snp.c,v 1.23 2003/12/08 20:40:33 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis-snp.h
* Defines and such for CSNP, PSNP, and their payloads
*
- * $Id: packet-isis-snp.h,v 1.8 2003/12/08 20:40:33 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
* Routines for ISO/OSI network and transport protocol packet disassembly, core
* bits.
*
- * $Id: packet-isis.c,v 1.35 2003/03/31 08:09:28 guy Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isis.h
* Defines and such for core isis protcol decode.
*
- * $Id: packet-isis.h,v 1.9 2002/08/28 21:00:18 jmayer Exp $
+ * $Id$
* Stuart Stanley <stuarts@mxmail.net>
*
* Ethereal - Network traffic analyzer
/* packet-isl.c
* Routines for Cisco ISL Ethernet header disassembly
*
- * $Id: packet-isl.c,v 1.33 2003/08/08 17:57:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-isl.h
*
- * $Id: packet-isl.h,v 1.6 2002/08/28 21:00:19 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Enterasys Networks Home: http://www.enterasys.com/
* Copyright 2003, Joshua Craig Douglas <jdouglas@enterasys.com>
*
- * $Id: packet-ismp.c,v 1.4 2004/02/18 10:11:51 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Elipsan, Gareth Bushell <gbushell@elipsan.com>
* (c) 2004 Ronnie Sahlberg updates
*
- * $Id: packet-isns.c,v 1.9 2004/07/06 19:01:31 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Modified 2004-01-10 by Anders Broman to add abillity to dissect
* Content type application/ISUP RFC 3204 used in SIP-T
*
- * $Id: packet-isup.c,v 1.63 2004/07/04 03:48:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-isup.h
*
- * $Id: packet-isup.h,v 1.3 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
*
* Copyright 2002, Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-iua.c,v 1.22 2003/12/21 05:51:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Heavily based in packet-acap.c, which in turn is heavily based on
* packet-imap.c, Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-jabber.c,v 1.1 2003/07/07 22:48:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-kadm5.c
* Routines for kadm5 dissection
*
- * $Id: packet-kadm5.c,v 1.1 2003/04/25 21:09:35 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Some structures from RFC2630
*
- * $Id: packet-kerberos.c,v 1.71 2004/06/15 09:50:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-kerberos.h
*
- * $Id: packet-kerberos.h,v 1.8 2004/06/04 01:56:25 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-klm.c 2001 Ronnie Sahlberg <See AUTHORS for email>
* Routines for klm dissection
*
- * $Id: packet-klm.c,v 1.13 2003/08/17 21:34:22 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-klm.h 2001 Ronnie Sahlberg <See AUTHORS for email>
*
- * $Id: packet-klm.h,v 1.4 2002/08/28 21:00:19 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* See RFC 3244
*
- * $Id: packet-kpasswd.c,v 1.3 2004/06/04 01:56:25 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Laurent Cazalet <laurent.cazalet@mailclub.net>
* Thomas Parvais <thomas.parvais@advalvas.be>
*
- * $Id: packet-l2tp.c,v 1.39 2004/02/28 22:56:35 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for lapb frame disassembly
* Olivier Abad <oabad@noos.fr>
*
- * $Id: packet-lapb.c,v 1.42 2004/01/18 08:32:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Richard Sharpe <rsharpe@ns.aus.com> based on the lapb module by
* Olivier Abad <oabad@noos.fr>
*
- * $Id: packet-lapbether.c,v 1.12 2002/09/01 14:30:30 oabad Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for LAPD frame disassembly
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-lapd.c,v 1.38 2004/01/26 20:48:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for laplink dissection
* Copyright 2003, Brad Hards <bradh@frogmouth.net>
*
- * $Id: packet-laplink.c,v 1.4 2003/10/20 23:05:41 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* See RFC 1777 (LDAP v2), RFC 2251 (LDAP v3), and RFC 2222 (SASL).
*
- * $Id: packet-ldap.c,v 1.74 2004/04/20 08:33:15 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ldap.h
*
- * $Id: packet-ldap.h,v 1.7 2003/11/05 09:04:16 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-ldp.c
* Routines for LDP (RFC 3036) packet disassembly
*
- * $Id: packet-ldp.c,v 1.53 2004/05/13 20:20:33 gerald Exp $
+ * $Id$
*
* Copyright (c) November 2000 by Richard Sharpe <rsharpe@ns.aus.com>
*
* Declarations of exported routines from LDP dissector
* Copyright 2004, Carlos Pignataro <cpignata@cisco.com>
*
- * $Id: packet-ldp.h,v 1.1 2004/05/13 20:20:34 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for IEEE 802.2 LLC layer
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-llc.c,v 1.118 2004/01/18 08:32:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-llc.h
*
- * $Id: packet-llc.h,v 1.11 2003/09/03 06:27:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Frame Relay Local Management Interface (LMI) disassembly
* Copyright 2001, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-lmi.c,v 1.15 2003/10/17 23:44:06 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (c) Copyright Ashok Narayanan <ashokn@cisco.com>
*
- * $Id: packet-lmp.c,v 1.22 2004/07/02 08:38:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for LPR and LPRng packet disassembly
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-lpd.c,v 1.37 2002/08/28 21:00:20 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for LWAPP encapsulated packet disassembly
* draft-calhoun-seamoby-lwapp-N (the current draft is 3)
*
- * $Id: packet-lwapp.c,v 1.5 2003/12/16 19:58:45 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by David Frascone <dave@frascone.com>
*
* Copyright 2001, 2002, Jeff Morriss <jeff.morriss[AT]ulticom.com>,
* updated by Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-m2pa.c,v 1.24 2004/05/24 02:25:18 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2001, Heinz Prantner <heinz.prantner[AT]radisys.com>
*
- * $Id: packet-m2tp.c,v 1.9 2003/12/21 05:51:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2002, Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-m2ua.c,v 1.15 2004/05/24 02:25:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2000, 2001, 2002, 2003, 2004 Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-m3ua.c,v 1.41 2004/06/27 17:16:25 tuexen Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* for information on Modbus/TCP.
*
- * $Id: packet-mbtcp.c,v 1.14 2003/05/08 00:42:28 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dissection of Cisco MDS Switch Internal Header
* Copyright 2001, Dinesh G Dutt <ddutt@andiamo.com>
*
- * $Id: packet-mdshdr.c,v 1.9 2004/02/24 17:49:06 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (C) Olivier Biot, 2004
*
- * $Id: packet-media.c,v 1.2 2004/04/30 21:33:15 guy Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
* Routines for Mobile IP dissection
* Copyright 2000, Stefan Raab <sraab@cisco.com>
*
- * $Id: packet-mip.c,v 1.35 2003/12/21 05:51:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-mip6.c
*
- * $Id: packet-mip6.c,v 1.7 2004/03/30 17:52:15 guy Exp $
+ * $Id$
*
* Routines for Mobile IPv6 dissection (draft-ietf-mobileip-ipv6-20.txt)
* Copyright 2003 Oy L M Ericsson Ab <teemu.rinta-aho@ericsson.fi>
/* packet-mip6.h
*
- * $Id: packet-mip6.h,v 1.4 2003/12/16 19:31:40 guy Exp $
+ * $Id$
*
* Definitions for Mobile IPv6 dissection (draft-ietf-mobileip-ipv6-20.txt)
* Copyright 2003 Oy L M Ericsson Ab <teemu.rinta-aho@ericsson.fi>
* Copyright 2001, Tom Uijldert <tom.uijldert@cmg.nl>
* Copyright 2004, Olivier Biot
*
- * $Id: packet-mmse.c,v 1.35 2004/05/05 03:05:52 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-mount.c
* Routines for mount dissection
*
- * $Id: packet-mount.c,v 1.40 2003/09/28 01:52:57 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-mount.h */
-/* $Id: packet-mount.h,v 1.4 2002/11/13 21:45:56 guy Exp $ */
+/* $Id$ */
#ifndef PACKET_MOUNT_H
#define PACKET_MOUNT_H
*
* Routines for RFC 2250 MPEG-1 dissection
*
- * $Id: packet-mpeg1.c,v 1.10 2003/08/23 06:36:46 guy Exp $
+ * $Id$
*
* Copyright 2001,
* Francisco Javier Cabello Torres, <fjcabello@vtools.es>
* Routines for Multiprotocol Label Switching Echo dissection
* Copyright 2004, Carlos Pignataro <cpignata@cisco.com>
*
- * $Id: packet-mpls-echo.c,v 1.1 2004/05/13 20:20:34 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (c) Copyright Ashok Narayanan <ashokn@cisco.com>
*
- * $Id: packet-mpls.c,v 1.31 2004/05/15 19:54:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* metatech <metatech@flashmail.com>
*
- * $Id: packet-mq-pcf.c,v 1.1 2004/05/01 21:18:09 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* metatech <metatech@flashmail.com>
*
- * $Id: packet-mq.c,v 1.6 2004/05/11 11:27:20 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-mq.h
*
- * $Id: packet-mq.h,v 1.1 2004/05/01 21:18:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-mrdisc.c 2001 Ronnie Sahlberg <See AUTHORS for email>
* Routines for IGMP/MRDISC packet disassembly
*
- * $Id: packet-mrdisc.c,v 1.10 2003/11/16 23:17:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-mrdisc.h 2001 Ronnie Sahlberg <See AUTHORS for email>
* Declarations of routines for IGMP/MRDISC packet disassembly
*
- * $Id: packet-mrdisc.h,v 1.3 2002/08/28 21:00:22 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2001, Heikki Vatiainen <hessu@cs.tut.fi>
*
- * $Id: packet-msdp.c,v 1.8 2003/01/20 06:24:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for MSN Messenger Service packet dissection
* Copyright 2003, Chris Waters <chris@waters.co.nz>
*
- * $Id: packet-msn-messenger.c,v 1.4 2004/02/19 20:27:43 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-msnip.c 2001 Ronnie Sahlberg <See AUTHORS for email>
* Routines for IGMP/MSNIP packet disassembly
*
- * $Id: packet-msnip.c,v 1.9 2003/11/16 23:17:20 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-msnip.h 2001 Ronnie Sahlberg <See AUTHORS for email>
* Declarations of routines for IGMP/MSNIP packet disassembly
*
- * $Id: packet-msnip.h,v 1.3 2002/08/28 21:00:22 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Microsoft Proxy packet dissection
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-msproxy.c,v 1.38 2004/01/22 20:43:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2001, Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-mtp2.c,v 1.10 2003/12/21 05:51:33 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2001, Michael Tuexen <tuexen [AT] fh-muenster.de>
* Updated for ANSI and Chinese ITU support by Jeff Morriss <jeff.morriss[AT]ulticom.com>
*
- * $Id: packet-mtp3.c,v 1.31 2004/07/03 12:58:41 tuexen Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-mtp3.h
*
- * $Id: packet-mtp3.h,v 1.8 2004/07/01 09:35:32 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2003, Jeff Morriss <jeff.morriss[AT]ulticom.com>
*
- * $Id: packet-mtp3mg.c,v 1.12 2004/02/02 17:57:20 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2004, Anders Broman.
* Copyright 2004, Olivier Biot.
*
- * $Id: packet-multipart.c,v 1.9 2004/04/30 17:07:21 obiot Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
*
* Huagang XIE <huagang@intruvert.com>
*
- * $Id: packet-mysql.c,v 1.5 2003/04/03 23:51:31 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for NetBIOS over IPX packet disassembly
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-nbipx.c,v 1.48 2002/08/28 21:00:22 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* to when it had only NBNS)
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-nbns.c,v 1.83 2004/02/24 09:40:38 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions Copyright (c) Gilbert Ramirez 2000-2002
* Portions Copyright (c) Novell, Inc. 2000-2003
*
- * $Id: packet-ncp-int.h,v 1.18 2004/06/15 09:23:59 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Greg Morris <gmorris@novell.com>
* Copyright (c) Novell, Inc. 2002-2004
*
- * $Id: packet-ncp-nmas.c,v 1.1 2004/02/29 08:01:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Greg Morris <gmorris@novell.com>
* Copyright (c) Novell, Inc. 2002-2004
*
- * $Id: packet-ncp-nmas.h,v 1.1 2004/02/29 08:01:22 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions Copyright (c) by James Coe 2000-2002
* Portions Copyright (c) Novell, Inc. 2000-2003
*
- * $Id: packet-ncp.c,v 1.78 2004/06/15 09:30:54 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Portions Copyright (c) Gilbert Ramirez 2000-2002
* Portions Copyright (c) Novell, Inc. 2000-2003
*
- * $Id: packet-ncp2222.inc,v 1.71 2004/06/15 09:23:59 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for NDMP dissection
* 2001 Ronnie Sahlberg (see AUTHORS for email)
*
- * $Id: packet-ndmp.c,v 1.28 2004/05/24 02:25:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Greg Morris <gmorris@novell.com>
* Copyright (c) Novell, Inc. 2002-2003
*
- * $Id: packet-ndps.c,v 1.25 2003/10/17 22:59:18 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright (c) Novell, Inc. 2002-2003
*
- * $Id: packet-ndps.h,v 1.5 2003/04/21 23:06:39 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* derived from the packet-nbns.c
*
- * $Id: packet-netbios.c,v 1.57 2003/04/20 11:36:14 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* derived from the packet-nbns.c
*
- * $Id: packet-netbios.h,v 1.15 2002/08/28 21:00:23 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
** http://www.cisco.com/univercd/cc/td/doc/cisintwk/intsolns/netflsol/nfwhite.htm
**
** $Yahoo: //depot/fumerola/packet-netflow/packet-netflow.c#14 $
- ** $Id: packet-netflow.c,v 1.13 2004/06/01 18:43:30 guy Exp $
+ ** $Id$
*/
#ifdef HAVE_CONFIG_H
* Copyright 1999, Uwe Girlich <Uwe.Girlich@philosys.de>
* Copyright 2000-2004, Mike Frisch <frisch@hummingbird.com> (NFSv4 decoding)
*
- * $Id: packet-nfs.c,v 1.98 2004/06/03 04:13:24 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-nfs.h (c) 1999 Uwe Girlich */
-/* $Id: packet-nfs.h,v 1.18 2004/06/02 06:50:28 guy Exp $ */
+/* $Id$ */
#ifndef __PACKET_NFS_H__
#define __PACKET_NFS_H__
*
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-nfsacl.c,v 1.11 2003/10/06 20:46:51 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Ronnie Sahlberg
*
- * $Id: packet-nfsauth.c,v 1.4 2002/11/01 00:48:38 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-nisplus.c
* 2001 Ronnie Sahlberg <See AUTHORS for email>
*
- * $Id: packet-nisplus.c,v 1.15 2002/11/01 00:48:38 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-nisplus.h
* 2001 Ronnie Sahlberg <See AUTHORS for email>
*
- * $Id: packet-nisplus.h,v 1.4 2002/08/28 21:00:24 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-nlm.c
* Routines for nlm dissection
*
- * $Id: packet-nlm.c,v 1.36 2004/02/25 09:31:06 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-nlm.h (c) 1999 Uwe Girlich */
-/* $Id: packet-nlm.h,v 1.2 2000/08/02 11:32:31 girlich Exp $ */
+/* $Id$ */
#ifndef __PACKET_NLM_H__
#define __PACKET_NLM_H__
/* packet-nlsp.c
* Routines for NetWare Link Services Protocol
*
- * $Id: packet-nlsp.c,v 1.7 2003/10/06 08:35:30 guy Exp $
+ * $Id$
*
* Based on ISIS dissector by Stuart Stanley <stuarts@mxmail.net>
*
* Routines for nntp packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-nntp.c,v 1.27 2002/08/28 21:00:24 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-nt-oui.c
* Register an LLC dissector table for Nortel's OUI 00:00:0c
*
- * $Id: packet-nt-oui.c,v 1.1 2003/09/03 06:38:15 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the disassembly of the "Nortel Networks / SynOptics Network Management Protocol"
* (c) Copyright Giles Scott <giles.scott1 [AT] btinternet.com>
*
-* $Id: packet-nt-sonmp.c,v 1.5 2004/02/23 16:33:14 jmayer Exp $
+* $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Transparent Proxy Cache Protocol packet disassembly
* (c) Copyright Giles Scott <giles.scott1 [AT] btinternet.com>
*
-* $Id: packet-nt-tpcp.c,v 1.3 2004/02/23 16:33:14 jmayer Exp $
+* $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Devin Heitmueller <dheitmueller@netilla.com>
* Copyright 2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-ntlmssp.c,v 1.48 2004/05/04 08:30:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for NTP packet dissection
* Copyright 1999, Nathan Neulinger <nneul@umr.edu>
*
- * $Id: packet-ntp.c,v 1.41 2004/05/13 20:20:34 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ntp.h
* Definitions for packet disassembly structures and routines
*
- * $Id: packet-ntp.h,v 1.9 2004/05/13 20:20:34 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-null.c
* Routines for null packet disassembly
*
- * $Id: packet-null.c,v 1.63 2003/12/17 23:35:29 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-null.h
*
- * $Id: packet-null.h,v 1.7 2002/08/28 21:00:24 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* http://www.ietf.org/rfc/rfc3626.txt
*
- * $Id: packet-olsr.c,v 1.4 2004/01/18 16:48:24 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* ISO 10589 ISIS (Intradomain Routing Information Exchange Protocol)
* ISO 9542 ESIS (End System To Intermediate System Routing Exchange Protocol)
*
- * $Id: packet-osi-options.c,v 1.16 2003/12/13 02:30:18 guy Exp $
+ * $Id$
* Ralf Schneider <Ralf.Schneider@t-online.de>
*
* Ethereal - Network traffic analyzer
/* packet-osi-options.h
* Defines for OSI options part decode
*
- * $Id: packet-osi-options.h,v 1.6 2002/08/28 21:00:24 jmayer Exp $
+ * $Id$
* Ralf Schneider <Ralf.Schneider@t-online.de>
*
* Ethereal - Network traffic analyzer
* Routines for ISO/OSI network and transport protocol packet disassembly
* Main entrance point and common functions
*
- * $Id: packet-osi.c,v 1.63 2003/09/20 03:31:25 guy Exp $
+ * $Id$
* Laurent Deniel <laurent.deniel@free.fr>
* Ralf Schneider <Ralf.Schneider@t-online.de>
*
/* packet-osi.h
*
- * $Id: packet-osi.h,v 1.14 2003/05/15 06:35:02 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for OSPF packet disassembly
* (c) Copyright Hannes R. Boehm <hannes@boehm.org>
*
- * $Id: packet-ospf.c,v 1.81 2004/06/19 09:48:49 guy Exp $
+ * $Id$
*
* At this time, this module is able to analyze OSPF
* packets as specified in RFC2328. MOSPF (RFC1584) and other
/* packet-pcnfsd.c
* Routines for PCNFSD dissection
*
- * $Id: packet-pcnfsd.c,v 1.12 2002/11/01 00:48:38 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-pcnfsd.h
*
- * $Id: packet-pcnfsd.h,v 1.2 2002/08/28 21:00:25 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for dissection of ASN.1 Aligned PER
* 2003 Ronnie Sahlberg
*
- * $Id: packet-per.c,v 1.29 2004/06/24 21:50:04 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dissection of ASN.1 Aligned PER
* 2003 Ronnie Sahlberg
*
- * $Id: packet-per.h,v 1.15 2004/05/17 20:03:36 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-pflog.c
* Routines for pflog (OpenBSD Firewall Logging) packet disassembly
*
- * $Id: packet-pflog.c,v 1.9 2003/05/16 00:30:54 guy Exp $
+ * $Id$
*
* Copyright 2001 Mike Frantzen
* All rights reserved.
/* packet-pflog.h
*
- * $Id: packet-pflog.h,v 1.5 2003/05/15 07:14:45 guy Exp $
+ * $Id$
*
* Copyright 2001 Mike Frantzen
* All rights reserved.
/* packet-pgm.c
* Routines for PGM packet disassembly, RFC 3208
*
- * $Id: packet-pgm.c,v 1.24 2004/03/09 20:23:20 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Talarian Corp
*
* Routines for PIM disassembly
* (c) Copyright Jun-ichiro itojun Hagino <itojun@itojun.org>
*
- * $Id: packet-pim.c,v 1.48 2004/07/06 19:44:56 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-pim.h
* Declarations of routines for IGMP/PIMv1 packet disassembly
*
- * $Id: packet-pim.h,v 1.4 2002/08/28 21:00:25 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Ronnie Sahlberg 2004
* Thomas Anders 2004
*
- * $Id: packet-pktc.c,v 1.9 2004/06/19 04:10:33 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Ronnie Sahlberg 2004
* See the spec: PKT-SP-SEC-I10-040113.pdf
*
- * $Id: packet-pktc.h,v 1.1 2004/05/18 08:22:26 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for pop packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-pop.c,v 1.34 2003/06/11 20:03:09 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-portmap.c
* Routines for portmap dissection
*
- * $Id: packet-portmap.c,v 1.42 2004/01/09 00:56:04 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-portmap.h
*
- * $Id: packet-portmap.h,v 1.5 2002/08/28 21:00:25 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
*
* Copyright 2004, Edwin Calo <calo@fusemail.com>
*
- * $Id: packet-postgresql.c,v 1.7 2004/03/02 01:39:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for ppp packet disassembly
* RFC 1661, RFC 1662
*
- * $Id: packet-ppp.c,v 1.120 2004/06/26 09:48:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ppp.h
*
- * $Id: packet-ppp.h,v 1.14 2003/08/26 05:52:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-pppoe.c
* Routines for PPP Over Ethernet (PPPoE) packet disassembly (RFC2516)
*
- * $Id: packet-pppoe.c,v 1.25 2002/10/21 18:17:41 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for the Point-to-Point Tunnelling Protocol (PPTP) (RFC 2637)
* Brad Robel-Forrest <brad.robel-forrest@watchguard.com>
*
- * $Id: packet-pptp.c,v 1.29 2003/08/12 02:05:41 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Routine to dissect ISO 8823 OSI Presentation Protocol packets
*
-* $Id: packet-pres.c,v 1.5 2004/04/30 06:24:35 ulfl Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
*
* Routine to dissect ISO 8823 OSI Presentation Protocol packets
*
-* $Id: packet-pres.h,v 1.2 2004/03/23 19:37:23 guy Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
*
* By Tim Newsham
*
- * $Id: packet-prism.c,v 1.15 2004/07/07 04:17:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* By Tim Newsham
*
- * $Id: packet-prism.h,v 1.3 2002/08/28 21:00:25 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Q.2931 frame disassembly
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-q2931.c,v 1.31 2003/07/08 07:55:10 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Q.931 frame disassembly
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-q931.c,v 1.76 2004/04/17 04:43:58 guy Exp $
+ * $Id$
*
* Modified by Andreas Sikkema for possible use with H.323
*
* disassembly
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-q931.h,v 1.11 2004/03/18 09:00:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Q.933 frame disassembly
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-q933.c,v 1.7 2004/03/06 10:46:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for QLLC protocol - Qualified? LLC
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-qllc.c,v 1.8 2003/01/06 02:24:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Uwe Girlich <uwe@planetquake.com>
* http://www.idsoftware.com/q1source/q1source.zip
*
- * $Id: packet-quake.c,v 1.30 2003/06/12 08:33:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* http://www.dgs.monash.edu.au/~timf/bottim/
* http://www.opt-sci.Arizona.EDU/Pandora/default.asp
*
- * $Id: packet-quake2.c,v 1.17 2004/02/25 23:11:16 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Uwe Girlich <uwe@planetquake.com>
*
- * $Id: packet-quake3.c,v 1.17 2003/09/21 20:06:00 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Uwe Girlich <uwe@planetquake.com>
* http://www.idsoftware.com/q1source/q1source.zip
*
- * $Id: packet-quakeworld.c,v 1.19 2003/09/21 20:06:01 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* packet-radiotap.c
* Decode packets with a Radiotap header
*
- * $Id: packet-radiotap.c,v 1.5 2004/07/06 19:22:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* packet-radiotap.h
* Declarations for packet-radiotap.c
*
- * $Id: packet-radiotap.h,v 1.1 2004/01/31 04:40:09 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* RFC 2865, RFC 2866, RFC 2867, RFC 2868, RFC 2869
*
- * $Id: packet-radius.c,v 1.105 2004/07/09 23:17:04 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Based on 3GPP TS 25.413 V3.4.0
* Copyright 2001, Martin Held <Martin.Held@icn.siemens.de>
*
- * $Id: packet-ranap.c,v 1.23 2004/05/01 17:02:09 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-raw.c
* Routines for raw packet disassembly
*
- * $Id: packet-raw.c,v 1.36 2003/08/26 05:52:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-raw.h
*
- * $Id: packet-raw.h,v 1.7 2002/08/28 21:00:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* RFC2082 ( Keyed Message Digest Algorithm )
* Emanuele Caratti <wiz@iol.it>
*
- * $Id: packet-rip.c,v 1.35 2004/07/05 10:15:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* (c) Copyright Jun-ichiro itojun Hagino <itojun@itojun.org>
* derived from packet-rip.c
*
- * $Id: packet-ripng.c,v 1.27 2002/08/28 21:00:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* RIPng definition
* (c) Copyright Jun-ichiro itojun Hagino <itojun@itojun.org>
*
- * $Id: packet-ripng.h,v 1.6 2002/08/28 21:00:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for unix rlogin packet dissection
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-rlogin.c,v 1.28 2002/08/28 21:00:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Duncan Laurie <duncan@sun.com>
*
- * $Id: packet-rmcp.c,v 1.2 2003/06/04 08:51:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for java rmiregistry dissection
* Copyright 2002, Michael Stiller <ms@2scale.net>
*
- * $Id: packet-rmi.c,v 1.9 2003/05/26 21:44:28 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* header file for java rmiregistry dissection
* Copyright 2002, Michael Stiller <ms@2scale.net>
*
- * $Id: packet-rmi.h,v 1.5 2003/12/21 03:58:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for HP remote management protocol
* Gilbert Ramirez <jochen@scram.de>
*
- * $Id: packet-rmp.c,v 1.2 2003/03/03 14:08:39 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for rpc dissection
* Copyright 1999, Uwe Girlich <Uwe.Girlich@philosys.de>
*
- * $Id: packet-rpc.c,v 1.144 2004/04/29 11:58:00 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-rpc.h
*
- * $Id: packet-rpc.h,v 1.45 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* (c) 1999 Uwe Girlich
*
* Routines for RPL
* Jochen Friedrich <jochen@scram.de>
*
- * $Id: packet-rpl.c,v 1.6 2004/02/21 08:21:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for rquota dissection
* Copyright 2001, Mike Frisch <frisch@hummingbird.com>
*
- * $Id: packet-rquota.c,v 1.11 2002/11/01 00:48:38 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-rquota.h
*
- * $Id: packet-rquota.h,v 1.3 2002/08/28 21:00:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Robert Tsai <rtsai@netapp.com>
* Liberally copied from packet-http.c, by Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-rsh.c,v 1.20 2002/08/28 21:00:29 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-rstat.c,v 1.5 2004/01/06 00:08:55 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (c) Copyright Ashok Narayanan <ashokn@cisco.com>
*
- * $Id: packet-rsvp.c,v 1.91 2004/06/19 09:48:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-rsvp.h
* Declarations of variables exported by "packet-rsvp.c"
*
- * $Id: packet-rsvp.h,v 1.11 2004/06/19 09:48:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* [ very rough, but mininally functional ]
* Copyright 2003, Brad Hards <bradh@frogmouth.net>
*
- * $Id: packet-rsync.c,v 1.7 2004/01/17 12:51:00 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-rtcp.c
*
- * $Id: packet-rtcp.c,v 1.46 2004/06/30 21:08:58 etxrab Exp $
+ * $Id$
*
* Routines for RTCP dissection
* RTCP = Real-time Transport Control Protocol
/* packet-rtcp.h
*
- * $Id: packet-rtcp.h,v 1.9 2004/06/15 18:26:08 etxrab Exp $
+ * $Id$
*
* Routines for RTCP dissection
* RTCP = Real-time Transport Control Protocol
* Routines for RFC 2833 RTP Events dissection
* Copyright 2003, Kevin A. Noll <knoll[AT]poss.com>
*
- * $Id: packet-rtp-events.c,v 1.4 2004/05/01 14:22:00 etxrab Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Defines for RFC 2833 RTP Events dissection
* Copyright 2003, Kevin A. Noll <knoll[AT]poss.com>
*
- * $Id: packet-rtp-events.h,v 1.1 2003/09/19 04:16:23 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000, Philips Electronics N.V.
* Written by Andreas Sikkema <h323@ramdyne.nl>
*
- * $Id: packet-rtp.c,v 1.52 2004/07/01 06:59:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for RTP dissection
* RTP = Real time Transport Protocol
*
- * $Id: packet-rtp.h,v 1.12 2004/06/15 18:26:08 etxrab Exp $
+ * $Id$
*
* Copyright 2000, Philips Electronics N.V.
* Written by Andreas Sikkema <andreas.sikkema@philips.com>
* version: 2004/04/15 9:40:45
* dedication to Kj :]
*
- * $Id: packet-rtps.c,v 1.9 2004/04/19 22:41:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: packet-rtps.h,v 1.3 2004/04/22 20:29:46 jmayer Exp $
+ * $Id$
*
* AUTHOR: Petr Smolik petr.smolik@wo.cz
*
* Jason Lango <jal@netapp.com>
* Liberally copied from packet-http.c, by Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-rtsp.c,v 1.67 2004/07/09 23:37:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-rwall.c
*
- * $Id: packet-rwall.c,v 1.9 2002/11/01 00:48:38 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-rwall.h
*
- * $Id: packet-rwall.h,v 1.3 2002/08/28 21:00:30 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Based on routines from tcpdump patches by
* Ken Hornstein <kenh@cmf.nrl.navy.mil>
*
- * $Id: packet-rx.c,v 1.39 2003/09/21 20:06:01 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-rx.h
* Definitions for packet disassembly structures and routines
*
- * $Id: packet-rx.h,v 1.9 2002/02/05 21:02:36 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-sadmind.c,v 1.4 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Heikki Vatiainen <hessu@cs.tut.fi>
*
- * $Id: packet-sap.c,v 1.31 2002/12/02 23:43:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2002, Jeff Morriss <jeff.morriss[AT]ulticom.com>
*
- * $Id: packet-sccp.c,v 1.20 2004/01/08 20:19:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2002, Jeff Morriss <jeff.morriss[AT]ulticom.com>
*
- * $Id: packet-sccpmg.c,v 1.8 2003/09/06 00:04:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for decoding SCSI CDBs and responses
* Author: Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-scsi.c,v 1.39 2004/06/11 08:33:58 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-scsi.h
* Author: Dinesh G Dutt (ddutt@cisco.com)
*
- * $Id: packet-scsi.h,v 1.7 2003/03/08 08:02:20 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* * bundling errors
* * value errors
*
- * $Id: packet-sctp.c,v 1.72 2004/05/24 02:25:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Defintion of SCTP specific structures used b tap listeners.
*
- * $Id: packet-sctp.h,v 1.1 2004/03/23 17:27:29 tuexen Exp $
+ * $Id$
* Copyright 2004 Michael Tuexen <tuexen [AT] fh-muenster.de>
* Ethereal - Network traffic analyzer
/* packet-sdlc.c
* Routines for SDLC frame disassembly
*
- * $Id: packet-sdlc.c,v 1.4 2004/01/18 08:32:46 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Jason Lango <jal@netapp.com>
* Liberally copied from packet-http.c, by Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-sdp.c,v 1.47 2004/06/15 18:26:08 etxrab Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* See: http://project.honeynet.org/tools/sebek/ for more details
*
- * $Id: packet-sebek.c,v 1.1 2003/11/19 22:13:29 nneul Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Routine to dissect ISO 8327-1 OSI Session Protocol packets
*
-* $Id: packet-ses.c,v 1.8 2004/01/13 01:55:36 guy Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
*
* Routine to dissect ISO 8327-1 OSI Session Protocol packets
*
-* $Id: packet-ses.h,v 1.3 2004/01/09 23:18:17 guy Exp $
+* $Id$
*
* Yuriy Sidelnikov <YSidelnikov@hotmail.com>
*
* Routines for sFlow dissection
* Copyright 2003, Jeff Rizzo <riz@boogers.sf.ca.us>
*
- * $Id: packet-sflow.c,v 1.2 2003/06/14 23:50:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Signaling Compression (SigComp) dissection.
* Copyright 2004, Anders Broman <anders.broman@ericsson.com>
*
- * $Id: packet-sigcomp.c,v 1.3 2004/06/29 20:40:12 etxrab Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000, Heikki Vatiainen <hessu@cs.tut.fi>
* Copyright 2001, Jean-Francois Mule <jfm@cablelabs.com>
*
- * $Id: packet-sip.c,v 1.69 2004/06/16 18:20:49 etxrab Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-sip.h
*
- * $Id: packet-sip.h,v 1.3 2004/06/16 18:20:49 etxrab Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Martin Mathieson
* Based on packet-sdp.c
*
- * $Id: packet-sipfrag.c,v 1.1 2004/02/03 18:57:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* This file is based on packet-aim.c, which is
* Copyright 2000, Ralf Hoelzer <ralf@well.com>
*
- * $Id: packet-skinny.c,v 1.24 2004/02/20 23:09:51 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Adds support for the data packet protocol for the SliMP3
* See www.slimdevices.com for details.
*
- * $Id: packet-slimp3.c,v 1.10 2003/02/27 05:54:31 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-sll.c
* Routines for disassembly of packets from Linux "cooked mode" captures
*
- * $Id: packet-sll.c,v 1.21 2003/12/22 20:26:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-sll.h
*
- * $Id: packet-sll.h,v 1.4 2002/08/28 21:00:31 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-slowprotocols.c
* Routines for EtherType (0x8809) Slow Protocols disassembly.
*
- * $Id: packet-slowprotocols.c,v 1.4 2002/08/28 21:00:31 jmayer Exp $
+ * $Id$
*
* Copyright 2002 Steve Housley <steve_housley@3com.com>
*
* http://cvs.sourceforge.net/viewcvs.py/soleseek/SoleSeek/doc/protocol.html?rev=HEAD
* Updated for SoulSeek client version 151
*
- * $Id: packet-slsk.c,v 1.4 2004/05/05 17:28:12 obiot Exp $
+ * $Id$
*
*
* Ethereal - Network traffic analyzer
* Routines for SMB Browser packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-smb-browse.c,v 1.36 2004/01/19 20:10:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declaration of routines for SMB Browser packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-smb-browse.h,v 1.8 2004/01/19 20:10:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Common routines for smb packet dissection
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-smb-common.c,v 1.20 2004/04/03 03:50:44 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-smb-common.h,v 1.27 2004/03/30 07:39:05 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB net logon packet dissection
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-smb-logon.c,v 1.36 2003/11/19 03:53:32 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SMB mailslot packet dissection
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-smb-mailslot.c,v 1.36 2004/03/30 19:37:31 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declaration of routines for SMB mailslot packet dissection
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-smb-mailslot.h,v 1.7 2002/08/28 21:00:31 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* significant rewrite to tvbuffify the dissector, Ronnie Sahlberg and
* Guy Harris 2001
*
- * $Id: packet-smb-pipe.c,v 1.101 2004/06/09 09:24:07 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations of routines for SMB named pipe packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-smb-pipe.h,v 1.11 2002/08/28 21:00:31 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for snooping SID to name mappings
* Copyright 2003, Ronnie Sahlberg
*
- * $Id: packet-smb-sidsnooping.c,v 1.13 2004/06/04 00:15:55 tpot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for snooping SID to name mappings
* Copyright 2003, Ronnie Sahlberg
*
- * $Id: packet-smb-sidsnooping.h,v 1.3 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
* 2001 Rewrite by Ronnie Sahlberg and Guy Harris
*
- * $Id: packet-smb.c,v 1.391 2004/05/29 06:55:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Dissection of multiple SMPP PDUs within one packet
* provided by Chris Wilson.
*
- * $Id: packet-smpp.c,v 1.29 2004/03/08 22:03:59 obiot Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
/* packet-smtp.c
* Routines for SMTP packet disassembly
*
- * $Id: packet-smtp.c,v 1.37 2004/05/16 18:50:40 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Richard Sharpe <rsharpe@ns.aus.com>
*
* Gilbert Ramirez <gram@alumni.rice.edu>
* Jochen Friedrich <jochen@scram.de>
*
- * $Id: packet-sna.c,v 1.51 2004/02/27 09:02:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-sna.h
* Definitions for SNA dissection.
*
- * $Id: packet-sna.h,v 1.6 2003/08/26 01:00:28 guy Exp $
+ * $Id$
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
/* packet-snaeth.c
* Routines for SNA-over-Ethernet (Ethernet type 80d5)
*
- * $Id: packet-snaeth.c,v 1.4 2002/08/28 21:00:34 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Subnetwork Dependent Convergence Protocol (SNDCP) dissection
* Copyright 2000, Christian Falckenberg <christian.falckenberg@nortelnetworks.com>
*
- * $Id: packet-sndcp.c,v 1.4 2004/05/04 09:12:26 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* See RFCs 2570-2576 for SNMPv3
*
- * $Id: packet-snmp.c,v 1.129 2004/07/09 23:17:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Exported routines for SNMP (simple network management protocol)
* D.Jorand (c) 1998
*
- * $Id: packet-snmp.h,v 1.9 2003/09/06 01:21:00 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for socks versions 4 &5 packet dissection
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-socks.c,v 1.59 2004/06/03 08:04:07 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2002, Richard Sharpe <rsharpe@ns.aus.com>
* Copyright 2003, Richard Sharpe <rsharpe@richardsharpe.com>
*
- * $Id: packet-spnego.c,v 1.56 2004/06/04 01:56:25 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-spray.c
* 2001 Ronnie Sahlberg <See AUTHORS for email>
*
- * $Id: packet-spray.c,v 1.12 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-spray.h
* 2001 Ronnie Sahlberg <See AUTHORS for email>
*
- * $Id: packet-spray.h,v 1.4 2002/08/28 21:00:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* In particular I have not had an opportunity to see how it
* responds to SRVLOC over TCP.
*
- * $Id: packet-srvloc.c,v 1.46 2004/02/28 22:56:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for SSCOP (Q.2110, Q.SAAL) frame disassembly
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-sscop.c,v 1.20 2002/08/28 21:00:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Huagang XIE <huagang@intruvert.com>
*
- * $Id: packet-ssh.c,v 1.8 2003/12/23 21:16:27 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for ssl dissection
* Copyright (c) 2000-2001, Scott Renfro <scott@renfro.org>
*
- * $Id: packet-ssl.c,v 1.30 2004/06/01 01:03:49 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for async NSM stat callback dissection
* 2001 Ronnie Sahlberg <See AUTHORS for email>
*
- * $Id: packet-stat-notify.c,v 1.13 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Async callback to notify NSM servers of changes in client status
* 2001 Ronnie Sahlberg <See AUTHORS for email>
*
- * $Id: packet-stat-notify.h,v 1.4 2002/08/28 21:00:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-stat.c
* Routines for stat dissection
*
- * $Id: packet-stat.c,v 1.19 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-stat.h
*
- * $Id: packet-stat.h,v 1.3 2002/08/28 21:00:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for Simple Traversal of UDP Through NAT dissection
* Copyright 2003, Shiang-Ming Huang <smhuang@pcs.csie.nctu.edu.tw>
*
- * $Id: packet-stun.c,v 1.4 2004/01/04 20:44:50 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2002, 2003 Michael Tuexen <tuexen [AT] fh-muenster.de>
*
- * $Id: packet-sua.c,v 1.21 2003/10/06 08:35:30 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for dissection of packets from the Axent Raptor firewall/
* Symantec Enterprise Firewall
*
- * $Id: packet-symantec.c,v 1.1 2004/03/11 09:18:32 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2000, Gerald Combs <gerald@ethereal.com>
*
- * $Id: packet-syslog.c,v 1.19 2002/08/28 21:00:35 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for T.38 packet dissection
* 2003 Hans Viens
*
- * $Id: packet-t38.c,v 1.7 2004/05/24 02:25:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Full Tacacs+ parsing with decryption by
* Emanuele Caratti <wiz@iol.it>
*
- * $Id: packet-tacacs.c,v 1.32 2003/12/19 19:03:13 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for cisco tacplus packet dissection
* Copyright 2000, Emanuele Caratti <wiz@iol.it>
*
- * $Id: packet-tacacs.h,v 1.6 2003/12/21 04:31:57 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (append your name here for newer version)
*
- * $Id: packet-tcap.c,v 1.11 2004/05/24 02:25:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-tcap.h
*
- * $Id: packet-tcap.h,v 1.3 2004/03/19 07:54:58 guy Exp $
+ * $Id$
*
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>,
* In association with Telos Technology Inc.
/* packet-tcp.c
* Routines for TCP packet disassembly
*
- * $Id: packet-tcp.c,v 1.235 2004/05/15 00:41:26 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-tcp.h
*
- * $Id: packet-tcp.h,v 1.21 2003/12/30 00:03:48 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000-2002, Brian Bruns <camber@ais.org>
* Copyright 2002, Steve Langasek <vorlon@netexpress.net>
*
- * $Id: packet-tds.c,v 1.28 2004/07/09 23:17:05 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Rolf Fiedler <rolf.fiedler@innoventif.com>
* based on code by Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-teimanagement.c,v 1.1 2004/01/26 20:48:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Telnet packet dissection; see RFC 854 and RFC 855
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-telnet.c,v 1.46 2004/06/04 01:56:25 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Ragi BEJJANI - 6WIND - <ragi.bejjani@6wind.com>
* Copyright 2003, Vincent JARDIN - 6WIND - <vincent.jardin@6wind.com>
*
- * $Id: packet-teredo.c,v 1.4 2003/12/29 00:19:00 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (C) Olivier Biot, 2004.
*
- * $Id: packet-text-media.c,v 1.9 2004/06/17 20:49:01 etxrab Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
* Craig Newell <CraigN@cheque.uq.edu.au>
* RFC2347 TFTP Option Extension
*
- * $Id: packet-tftp.c,v 1.41 2003/12/24 10:48:13 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-time.c,v 1.20 2004/05/12 19:23:08 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-tns.c
* Routines for Oracle TNS packet dissection
*
- * $Id: packet-tns.c,v 1.39 2003/02/05 08:06:40 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-tns.h
*
- * $Id: packet-tns.h,v 1.5 2002/08/28 21:00:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routine to dissect RFC 1006 TPKT packet containing OSI TP PDU
* Copyright 2001, Martin Thomas <Martin_A_Thomas@yahoo.com>
*
- * $Id: packet-tpkt.c,v 1.25 2004/02/14 22:48:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000, Philips Electronics N.V.
* Andreas Sikkema <andreas.sikkema@philips.com>
*
- * $Id: packet-tpkt.h,v 1.9 2002/08/28 21:00:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Token-Ring packet disassembly
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-tr.c,v 1.77 2003/08/23 09:09:33 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-tr.h
*
- * $Id: packet-tr.h,v 1.9 2003/08/23 09:09:33 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Token-Ring Media Access Control
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-trmac.c,v 1.39 2004/02/18 10:11:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Uwe Girlich <Uwe.Girlich@philosys.de>
*
- * $Id: packet-tsp.c,v 1.4 2003/06/11 20:41:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* metatech <metatech@flashmail.com>
*
- * $Id: packet-tuxedo.c,v 1.1 2004/04/20 05:07:23 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-tzsp.c
*
- * $Id: packet-tzsp.c,v 1.6 2004/01/29 10:58:28 guy Exp $
+ * $Id$
*
* Copyright 2002, Tazmen Technologies Inc
*
* Routines for Universal Computer Protocol dissection
* Copyright 2001, Tom Uijldert <tom.uijldert@cmg.nl>
*
- * $Id: packet-ucp.c,v 1.24 2004/03/23 01:29:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-udp.c
* Routines for UDP packet disassembly
*
- * $Id: packet-udp.c,v 1.112 2004/01/22 20:43:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-udp.h
*
- * $Id: packet-udp.h,v 1.9 2004/01/22 20:43:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for v120 frame disassembly
* Bert Driehuis <driehuis@playbeing.org>
*
- * $Id: packet-v120.c,v 1.33 2004/01/18 08:32:46 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-vines.c
* Routines for Banyan VINES protocol packet disassembly
*
- * $Id: packet-vines.c,v 1.63 2004/01/06 02:51:13 guy Exp $
+ * $Id$
*
* Don Lafontaine <lafont02@cn.ca>
*
/* packet-vines.h
* Definitions for packet disassembly structures and routines
*
- * $Id: packet-vines.h,v 1.17 2003/04/22 08:37:55 guy Exp $
+ * $Id$
*
* Don Lafontaine <lafont02@cn.ca>
*
/* packet-vj.c
* Routines for Van Jacobson header decompression.
*
- * $Id: packet-vj.c,v 1.18 2004/02/25 09:31:07 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-vlan.c
* Routines for VLAN 802.1Q ethernet header disassembly
*
- * $Id: packet-vlan.c,v 1.43 2003/10/01 07:11:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-vlan.h
*
- * $Id: packet-vlan.h,v 1.6 2002/08/28 21:00:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Heikki Vatiainen <hessu@cs.tut.fi>
*
- * $Id: packet-vrrp.c,v 1.28 2004/05/16 18:42:23 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-vtp.c
* Routines for the disassembly of Cisco's Virtual Trunking Protocol
*
- * $Id: packet-vtp.c,v 1.21 2002/08/28 21:00:36 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Utility routines for WAP dissectors
*
- * $Id: packet-wap.c,v 1.9 2004/01/13 20:59:37 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Declarations for WAP packet disassembly
*
- * $Id: packet-wap.h,v 1.9 2004/02/28 22:56:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for WAP Binary XML dissection
* Copyright 2003, 2004, Olivier Biot.
*
- * $Id: packet-wbxml.c,v 1.38 2004/06/27 22:21:28 obiot Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
* Routines for Web Cache Coordination Protocol dissection
* Jerry Talkington <jtalkington@users.sourceforge.net>
*
- * $Id: packet-wccp.c,v 1.34 2004/04/26 17:10:40 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-wccp.h
* Declarations for Cisco Web Cache Coordination Protocol
*
- * $Id: packet-wccp.h,v 1.4 2002/08/28 21:00:37 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Routines for Wellfleet Compression frame disassembly
* Copyright 2001, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet-wcp.c,v 1.31 2003/01/31 03:17:47 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Wellfleet HDLC packet disassembly
* Copied from the Cisco HDLC packet disassembly routines
*
- * $Id: packet-wfleet-hdlc.c,v 1.1 2002/12/20 07:56:07 sharpe Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for who protocol (see man rwhod)
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-who.c,v 1.26 2003/04/30 02:35:20 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* By Solomon Peachy
*
- * $Id: packet-wlancap.c,v 1.6 2004/07/06 19:22:45 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* packet-wlancap.h
* Declarations for packet-wlancap.c
*
- * $Id: packet-wlancap.h,v 1.1 2002/11/06 21:49:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Routines to dissect WSP component of WAP traffic.
*
- * $Id: packet-wsp.c,v 1.116 2004/06/27 22:21:28 obiot Exp $
+ * $Id$
*
* Refer to the AUTHORS file or the AUTHORS section in the man page
* for contacting the author(s) of this file.
*
* Declarations for disassembly of WSP component of WAP traffic.
*
- * $Id: packet-wsp.h,v 1.11 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Routines to dissect WTLS component of WAP traffic.
*
- * $Id: packet-wtls.c,v 1.24 2004/02/28 22:56:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Declarations for disassembly of WTLS component of WAP traffic.
*
- * $Id: packet-wtls.h,v 1.2 2002/08/28 21:00:37 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
*
* Routines to dissect WTP component of WAP traffic.
*
- * $Id: packet-wtp.c,v 1.63 2004/02/28 22:56:36 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Declarations for disassembly of WTP component of WAP traffic.
*
- * $Id: packet-wtp.h,v 1.4 2002/08/28 21:00:39 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-x11-keysym.h
*
- * $Id: packet-x11-keysym.h,v 1.6 2002/08/28 21:00:40 jmayer Exp $
+ * $Id$
*
* Put there so as to make packet-x11.c lighter. See packet-x11.c
*/
* Copyright holders: Digital, The Open Group
* (see below for their copyright statement)
*
- * $Id: packet-x11-keysymdef.h,v 1.3 2004/01/04 10:57:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2000, Christophe Tronche <ch.tronche@computer.org>
* Copyright 2003, Michael Shuldman
*
- * $Id: packet-x11.c,v 1.59 2004/06/23 21:43:02 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for X.25 packet disassembly
* Olivier Abad <oabad@noos.fr>
*
- * $Id: packet-x25.c,v 1.85 2003/10/07 18:19:59 oabad Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-x29.c
* Routines for X.29 packet dissection
*
- * $Id: packet-x29.c,v 1.1 2003/01/06 02:24:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for XDMCP message dissection
* Copyright 2002, Pasi Eronen <pasi.eronen@nixu.com>
*
- * $Id: packet-xdmcp.c,v 1.5 2004/02/25 09:31:07 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2000, Paul Ionescu <paul@acorp.ro>
*
- * $Id: packet-xot.c,v 1.12 2003/01/21 01:45:17 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* Copyright 2002 Randy McEoin <rmceoin@pe.com>
*
- * $Id: packet-xyplex.c,v 1.2 2002/08/28 21:00:40 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for yahoo messenger packet dissection
* Copyright 1999, Nathan Neulinger <nneul@umr.edu>
*
- * $Id: packet-yhoo.c,v 1.26 2003/03/01 00:09:00 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Wayne Parrott <wayne_p@pacific.net.au>
* Copied from packet-yhoo.c and updated
*
- * $Id: packet-ymsg.c,v 1.4 2004/04/02 07:28:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ypbind.c
* Routines for ypbind dissection
*
- * $Id: packet-ypbind.c,v 1.15 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ypbind.h
*
- * $Id: packet-ypbind.h,v 1.3 2002/08/28 21:00:40 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-yppasswd.c
* Routines for yppasswd dissection
*
- * $Id: packet-yppasswd.c,v 1.10 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-yppasswd.h
*
- * $Id: packet-yppasswd.h,v 1.4 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ypserv.c
* Routines for ypserv dissection
*
- * $Id: packet-ypserv.c,v 1.26 2002/10/24 20:59:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-ypserv.h
*
- * $Id: packet-ypserv.h,v 1.3 2002/08/28 21:00:40 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-ypxfr.c
* Routines for ypxfr dissection
*
- * $Id: packet-ypxfr.c,v 1.9 2002/11/01 00:48:39 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* packet-ypxfr.h
*
- * $Id: packet-ypxfr.h,v 1.3 2002/08/28 21:00:40 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
*
* Jochen Friedrich <jochen@scram.de>
*
- * $Id: packet-zebra.c,v 1.24 2003/07/09 05:42:23 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* pcap-util-int.h
* Definitions of routines internal to the libpcap/WinPcap utilities
*
- * $Id: pcap-util-int.h,v 1.1 2003/10/10 03:04:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* pcap-util-unix.c
* UN*X-specific utility routines for packet capture
*
- * $Id: pcap-util-unix.c,v 1.3 2004/06/12 07:47:13 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-/* pcap-util.c\r
- * Utility routines for packet capture\r
- *\r
- * $Id: pcap-util.c,v 1.24 2004/02/24 01:11:27 guy Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#ifdef HAVE_CONFIG_H\r
-# include "config.h"\r
-#endif\r
-\r
-#ifdef HAVE_LIBPCAP\r
-\r
-#include <pcap.h>\r
-\r
-#include <glib.h>\r
-\r
-#include <stdlib.h>\r
-#include <limits.h>\r
-#include <string.h>\r
-\r
-#ifdef HAVE_SYS_TYPES_H\r
-# include <sys/types.h>\r
-#endif\r
-\r
-#ifdef HAVE_SYS_SOCKET_H\r
-#include <sys/socket.h>\r
-#endif\r
-\r
-#include <wtap.h>\r
-#include <wtap-capture.h>\r
-\r
-#include "pcap-util.h"\r
-#include "pcap-util-int.h"\r
-\r
-#ifndef WIN32\r
-#include <netinet/in.h>\r
-#endif\r
-\r
-\r
-/*\r
- * Get the data-link type for a libpcap device.\r
- * This works around AIX 5.x's non-standard and incompatible-with-the-\r
- * rest-of-the-universe libpcap.\r
- */\r
-int\r
-get_pcap_linktype(pcap_t *pch, char *devname\r
-#ifndef _AIX\r
- _U_\r
-#endif\r
-)\r
-{\r
- int linktype;\r
-#ifdef _AIX\r
- char *ifacename;\r
-#endif\r
-\r
- linktype = pcap_datalink(pch);\r
-#ifdef _AIX\r
-\r
- /*\r
- * The libpcap that comes with AIX 5.x uses RFC 1573 ifType values\r
- * rather than DLT_ values for link-layer types; the ifType values\r
- * for LAN devices are:\r
- *\r
- * Ethernet 6\r
- * 802.3 7\r
- * Token Ring 9\r
- * FDDI 15\r
- *\r
- * and the ifType value for a loopback device is 24.\r
- *\r
- * The AIX names for LAN devices begin with:\r
- *\r
- * Ethernet en\r
- * 802.3 et\r
- * Token Ring tr\r
- * FDDI fi\r
- *\r
- * and the AIX names for loopback devices begin with "lo".\r
- *\r
- * (The difference between "Ethernet" and "802.3" is presumably\r
- * whether packets have an Ethernet header, with a packet type,\r
- * or an 802.3 header, with a packet length, followed by an 802.2\r
- * header and possibly a SNAP header.)\r
- *\r
- * If the device name matches "linktype" interpreted as an ifType\r
- * value, rather than as a DLT_ value, we will assume this is AIX's\r
- * non-standard, incompatible libpcap, rather than a standard libpcap,\r
- * and will map the link-layer type to the standard DLT_ value for\r
- * that link-layer type, as that's what the rest of Ethereal expects.\r
- *\r
- * (This means the capture files won't be readable by a tcpdump\r
- * linked with AIX's non-standard libpcap, but so it goes. They\r
- * *will* be readable by standard versions of tcpdump, Ethereal,\r
- * and so on.)\r
- *\r
- * XXX - if we conclude we're using AIX libpcap, should we also\r
- * set a flag to cause us to assume the time stamps are in\r
- * seconds-and-nanoseconds form, and to convert them to\r
- * seconds-and-microseconds form before processing them and\r
- * writing them out?\r
- */\r
-\r
- /*\r
- * Find the last component of the device name, which is the\r
- * interface name.\r
- */\r
- ifacename = strchr(devname, '/');\r
- if (ifacename == NULL)\r
- ifacename = devname;\r
-\r
- /* See if it matches any of the LAN device names. */\r
- if (strncmp(ifacename, "en", 2) == 0) {\r
- if (linktype == 6) {\r
- /*\r
- * That's the RFC 1573 value for Ethernet; map it\r
- * to DLT_EN10MB.\r
- */\r
- linktype = 1;\r
- }\r
- } else if (strncmp(ifacename, "et", 2) == 0) {\r
- if (linktype == 7) {\r
- /*\r
- * That's the RFC 1573 value for 802.3; map it to\r
- * DLT_EN10MB.\r
- * (libpcap, tcpdump, Ethereal, etc. don't care if\r
- * it's Ethernet or 802.3.)\r
- */\r
- linktype = 1;\r
- }\r
- } else if (strncmp(ifacename, "tr", 2) == 0) {\r
- if (linktype == 9) {\r
- /*\r
- * That's the RFC 1573 value for 802.5 (Token Ring);\r
- * map it to DLT_IEEE802, which is what's used for\r
- * Token Ring.\r
- */\r
- linktype = 6;\r
- }\r
- } else if (strncmp(ifacename, "fi", 2) == 0) {\r
- if (linktype == 15) {\r
- /*\r
- * That's the RFC 1573 value for FDDI; map it to\r
- * DLT_FDDI.\r
- */\r
- linktype = 10;\r
- }\r
- } else if (strncmp(ifacename, "lo", 2) == 0) {\r
- if (linktype == 24) {\r
- /*\r
- * That's the RFC 1573 value for "software loopback"\r
- * devices; map it to DLT_NULL, which is what's used\r
- * for loopback devices on BSD.\r
- */\r
- linktype = 0;\r
- }\r
- }\r
-#endif\r
-\r
- return linktype;\r
-}\r
-\r
-if_info_t *\r
-if_info_new(char *name, char *description)\r
-{\r
- if_info_t *if_info;\r
-\r
- if_info = g_malloc(sizeof (if_info_t));\r
- if_info->name = g_strdup(name);\r
- if (description == NULL)\r
- if_info->description = NULL;\r
- else\r
- if_info->description = g_strdup(description);\r
- if_info->ip_addr = NULL;\r
- if_info->loopback = FALSE;\r
- return if_info;\r
-}\r
-\r
-\r
-/* get all ip address information from the given interface */\r
-static void if_info_ip(if_info_t *if_info, pcap_if_t *d)\r
-{\r
- pcap_addr_t *a;\r
- guint32 *ip_addr;\r
-\r
- /* Loopback interface */\r
- if_info->loopback = (d->flags & PCAP_IF_LOOPBACK) ? TRUE : FALSE;\r
-\r
- /* All addresses */\r
- for(a=d->addresses;a;a=a->next) {\r
- switch(a->addr->sa_family)\r
- {\r
- /* IPv4 address */\r
- case AF_INET:\r
- if (a->addr) {\r
- struct sockaddr_in *ai = ((struct sockaddr_in *)(a->addr));\r
- ip_addr = g_malloc(sizeof(*ip_addr));\r
- *ip_addr = *((guint32 *)&(ai->sin_addr.s_addr));\r
- if_info->ip_addr = g_slist_append(if_info->ip_addr, ip_addr);\r
- }\r
- break;\r
- default:\r
- break;\r
- }\r
- }\r
-}\r
-\r
-\r
-#ifdef HAVE_PCAP_FINDALLDEVS\r
-GList *\r
-get_interface_list_findalldevs(int *err, char *err_str)\r
-{\r
- GList *il = NULL;\r
- pcap_if_t *alldevs, *dev;\r
- if_info_t *if_info;\r
-\r
- if (pcap_findalldevs(&alldevs, err_str) == -1) {\r
- *err = CANT_GET_INTERFACE_LIST;\r
- return NULL;\r
- }\r
-\r
- if (alldevs == NULL) {\r
- /*\r
- * No interfaces found.\r
- */\r
- *err = NO_INTERFACES_FOUND;\r
- return NULL;\r
- }\r
-\r
- for (dev = alldevs; dev != NULL; dev = dev->next) {\r
- if_info = if_info_new(dev->name, dev->description);\r
- il = g_list_append(il, if_info);\r
- if_info_ip(if_info, dev);\r
- }\r
- pcap_freealldevs(alldevs);\r
-\r
- return il;\r
-}\r
-#endif /* HAVE_PCAP_FINDALLDEVS */\r
-\r
-static void\r
-free_if_info_addr_cb(gpointer addr, gpointer user_data _U_)\r
-{\r
- g_free(addr);\r
-}\r
-\r
-static void\r
-free_if_cb(gpointer data, gpointer user_data _U_)\r
-{\r
- if_info_t *if_info = data;\r
-\r
- g_free(if_info->name);\r
- if (if_info->description != NULL)\r
- g_free(if_info->description);\r
-\r
- g_slist_foreach(if_info->ip_addr, free_if_info_addr_cb, NULL);\r
- g_slist_free(if_info->ip_addr);\r
-}\r
-\r
-void\r
-free_interface_list(GList *if_list)\r
-{\r
- g_list_foreach(if_list, free_if_cb, NULL);\r
- g_list_free(if_list);\r
-}\r
-\r
-/*\r
- * Get the data-link types available for a libpcap device.\r
- */\r
-static data_link_info_t *\r
-create_data_link_info(int dlt)\r
-{\r
- data_link_info_t *data_link_info;\r
-#ifdef HAVE_PCAP_DATALINK_VAL_TO_NAME\r
- const char *typename;\r
-#endif\r
- int wtap_encap;\r
-\r
- data_link_info = g_malloc(sizeof (data_link_info_t));\r
- data_link_info->dlt = dlt;\r
-#ifdef HAVE_PCAP_DATALINK_VAL_TO_NAME\r
- typename = pcap_datalink_val_to_name(dlt);\r
- if (typename != NULL)\r
- data_link_info->name = g_strdup(typename);\r
- else\r
-#endif\r
- data_link_info->name = g_strdup_printf("DLT %d", dlt);\r
- wtap_encap = wtap_pcap_encap_to_wtap_encap(dlt);\r
- if (wtap_encap == WTAP_ENCAP_UNKNOWN) {\r
- /*\r
- * We don't support this in Wiretap.\r
- * However, we should, so you can capture on it.\r
- * Put in an entry for it, with no description.\r
- */\r
- data_link_info->description = NULL;\r
- } else {\r
- /*\r
- * If this is null, that's a bug in\r
- * "wtap_pcap_encap_to_wtap_encap()" - it should always\r
- * return a valid encapsulation type - so we assume it's\r
- * not null.\r
- */\r
- data_link_info->description =\r
- g_strdup(wtap_encap_string(wtap_encap));\r
- }\r
- return data_link_info;\r
-}\r
-\r
-GList *\r
-get_pcap_linktype_list(char *devname, char *err_buf)\r
-{\r
- GList *linktype_list = NULL;\r
- pcap_t *pch;\r
- int deflt;\r
-#ifdef HAVE_PCAP_SET_DATALINK\r
- int *linktypes;\r
- int i, nlt;\r
-#endif\r
- data_link_info_t *data_link_info;\r
-\r
- pch = pcap_open_live(devname, MIN_PACKET_SIZE, 0, 0, err_buf);\r
- if (pch == NULL)\r
- return NULL;\r
- err_buf[0] = '\0'; /* an empty list doesn't mean an error */\r
- deflt = get_pcap_linktype(pch, devname);\r
-#ifdef HAVE_PCAP_LIST_DATALINKS\r
- nlt = pcap_list_datalinks(pch, &linktypes);\r
- if (nlt == 0 || linktypes == NULL)\r
- return NULL;\r
- for (i = 0; i < nlt; i++) {\r
- data_link_info = create_data_link_info(linktypes[i]);\r
-\r
- /*\r
- * XXX - for 802.11, make the most detailed 802.11\r
- * version the default, rather than the one the\r
- * device has as the default?\r
- */\r
- if (linktypes[i] == deflt)\r
- linktype_list = g_list_prepend(linktype_list,\r
- data_link_info);\r
- else\r
- linktype_list = g_list_append(linktype_list,\r
- data_link_info);\r
- }\r
- free(linktypes);\r
-#else\r
- data_link_info = create_data_link_info(deflt);\r
- linktype_list = g_list_append(linktype_list, data_link_info);\r
-#endif\r
-\r
- pcap_close(pch);\r
- return linktype_list;\r
-}\r
-\r
-static void\r
-free_linktype_cb(gpointer data, gpointer user_data _U_)\r
-{\r
- data_link_info_t *linktype_info = data;\r
-\r
- g_free(linktype_info->name);\r
- if (linktype_info->description != NULL)\r
- g_free(linktype_info->description);\r
-}\r
-\r
-void\r
-free_pcap_linktype_list(GList *linktype_list)\r
-{\r
- g_list_foreach(linktype_list, free_linktype_cb, NULL);\r
- g_list_free(linktype_list);\r
-}\r
-\r
-/* Set the data link type on a pcap. */\r
-const char *\r
-set_pcap_linktype(pcap_t *pch, char *devname\r
-#ifdef HAVE_PCAP_SET_DATALINK\r
- _U_\r
-#endif\r
- , int dlt)\r
-{\r
-#ifdef HAVE_PCAP_SET_DATALINK\r
- if (pcap_set_datalink(pch, dlt) == 0)\r
- return NULL; /* no error */\r
- return pcap_geterr(pch);\r
-#else\r
- /* Let them set it to the type it is; reject any other request. */\r
- if (get_pcap_linktype(pch, devname) == dlt)\r
- return NULL; /* no error */\r
- return "That DLT is not one of the DLTs supported by this device";\r
-#endif\r
-}\r
-\r
-#endif /* HAVE_LIBPCAP */\r
+/* pcap-util.c
+ * Utility routines for packet capture
+ *
+ * $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
+
+#ifdef HAVE_LIBPCAP
+
+#include <pcap.h>
+
+#include <glib.h>
+
+#include <stdlib.h>
+#include <limits.h>
+#include <string.h>
+
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#include <wtap.h>
+#include <wtap-capture.h>
+
+#include "pcap-util.h"
+#include "pcap-util-int.h"
+
+#ifndef WIN32
+#include <netinet/in.h>
+#endif
+
+
+/*
+ * Get the data-link type for a libpcap device.
+ * This works around AIX 5.x's non-standard and incompatible-with-the-
+ * rest-of-the-universe libpcap.
+ */
+int
+get_pcap_linktype(pcap_t *pch, char *devname
+#ifndef _AIX
+ _U_
+#endif
+)
+{
+ int linktype;
+#ifdef _AIX
+ char *ifacename;
+#endif
+
+ linktype = pcap_datalink(pch);
+#ifdef _AIX
+
+ /*
+ * The libpcap that comes with AIX 5.x uses RFC 1573 ifType values
+ * rather than DLT_ values for link-layer types; the ifType values
+ * for LAN devices are:
+ *
+ * Ethernet 6
+ * 802.3 7
+ * Token Ring 9
+ * FDDI 15
+ *
+ * and the ifType value for a loopback device is 24.
+ *
+ * The AIX names for LAN devices begin with:
+ *
+ * Ethernet en
+ * 802.3 et
+ * Token Ring tr
+ * FDDI fi
+ *
+ * and the AIX names for loopback devices begin with "lo".
+ *
+ * (The difference between "Ethernet" and "802.3" is presumably
+ * whether packets have an Ethernet header, with a packet type,
+ * or an 802.3 header, with a packet length, followed by an 802.2
+ * header and possibly a SNAP header.)
+ *
+ * If the device name matches "linktype" interpreted as an ifType
+ * value, rather than as a DLT_ value, we will assume this is AIX's
+ * non-standard, incompatible libpcap, rather than a standard libpcap,
+ * and will map the link-layer type to the standard DLT_ value for
+ * that link-layer type, as that's what the rest of Ethereal expects.
+ *
+ * (This means the capture files won't be readable by a tcpdump
+ * linked with AIX's non-standard libpcap, but so it goes. They
+ * *will* be readable by standard versions of tcpdump, Ethereal,
+ * and so on.)
+ *
+ * XXX - if we conclude we're using AIX libpcap, should we also
+ * set a flag to cause us to assume the time stamps are in
+ * seconds-and-nanoseconds form, and to convert them to
+ * seconds-and-microseconds form before processing them and
+ * writing them out?
+ */
+
+ /*
+ * Find the last component of the device name, which is the
+ * interface name.
+ */
+ ifacename = strchr(devname, '/');
+ if (ifacename == NULL)
+ ifacename = devname;
+
+ /* See if it matches any of the LAN device names. */
+ if (strncmp(ifacename, "en", 2) == 0) {
+ if (linktype == 6) {
+ /*
+ * That's the RFC 1573 value for Ethernet; map it
+ * to DLT_EN10MB.
+ */
+ linktype = 1;
+ }
+ } else if (strncmp(ifacename, "et", 2) == 0) {
+ if (linktype == 7) {
+ /*
+ * That's the RFC 1573 value for 802.3; map it to
+ * DLT_EN10MB.
+ * (libpcap, tcpdump, Ethereal, etc. don't care if
+ * it's Ethernet or 802.3.)
+ */
+ linktype = 1;
+ }
+ } else if (strncmp(ifacename, "tr", 2) == 0) {
+ if (linktype == 9) {
+ /*
+ * That's the RFC 1573 value for 802.5 (Token Ring);
+ * map it to DLT_IEEE802, which is what's used for
+ * Token Ring.
+ */
+ linktype = 6;
+ }
+ } else if (strncmp(ifacename, "fi", 2) == 0) {
+ if (linktype == 15) {
+ /*
+ * That's the RFC 1573 value for FDDI; map it to
+ * DLT_FDDI.
+ */
+ linktype = 10;
+ }
+ } else if (strncmp(ifacename, "lo", 2) == 0) {
+ if (linktype == 24) {
+ /*
+ * That's the RFC 1573 value for "software loopback"
+ * devices; map it to DLT_NULL, which is what's used
+ * for loopback devices on BSD.
+ */
+ linktype = 0;
+ }
+ }
+#endif
+
+ return linktype;
+}
+
+if_info_t *
+if_info_new(char *name, char *description)
+{
+ if_info_t *if_info;
+
+ if_info = g_malloc(sizeof (if_info_t));
+ if_info->name = g_strdup(name);
+ if (description == NULL)
+ if_info->description = NULL;
+ else
+ if_info->description = g_strdup(description);
+ if_info->ip_addr = NULL;
+ if_info->loopback = FALSE;
+ return if_info;
+}
+
+
+/* get all ip address information from the given interface */
+static void if_info_ip(if_info_t *if_info, pcap_if_t *d)
+{
+ pcap_addr_t *a;
+ guint32 *ip_addr;
+
+ /* Loopback interface */
+ if_info->loopback = (d->flags & PCAP_IF_LOOPBACK) ? TRUE : FALSE;
+
+ /* All addresses */
+ for(a=d->addresses;a;a=a->next) {
+ switch(a->addr->sa_family)
+ {
+ /* IPv4 address */
+ case AF_INET:
+ if (a->addr) {
+ struct sockaddr_in *ai = ((struct sockaddr_in *)(a->addr));
+ ip_addr = g_malloc(sizeof(*ip_addr));
+ *ip_addr = *((guint32 *)&(ai->sin_addr.s_addr));
+ if_info->ip_addr = g_slist_append(if_info->ip_addr, ip_addr);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+
+#ifdef HAVE_PCAP_FINDALLDEVS
+GList *
+get_interface_list_findalldevs(int *err, char *err_str)
+{
+ GList *il = NULL;
+ pcap_if_t *alldevs, *dev;
+ if_info_t *if_info;
+
+ if (pcap_findalldevs(&alldevs, err_str) == -1) {
+ *err = CANT_GET_INTERFACE_LIST;
+ return NULL;
+ }
+
+ if (alldevs == NULL) {
+ /*
+ * No interfaces found.
+ */
+ *err = NO_INTERFACES_FOUND;
+ return NULL;
+ }
+
+ for (dev = alldevs; dev != NULL; dev = dev->next) {
+ if_info = if_info_new(dev->name, dev->description);
+ il = g_list_append(il, if_info);
+ if_info_ip(if_info, dev);
+ }
+ pcap_freealldevs(alldevs);
+
+ return il;
+}
+#endif /* HAVE_PCAP_FINDALLDEVS */
+
+static void
+free_if_info_addr_cb(gpointer addr, gpointer user_data _U_)
+{
+ g_free(addr);
+}
+
+static void
+free_if_cb(gpointer data, gpointer user_data _U_)
+{
+ if_info_t *if_info = data;
+
+ g_free(if_info->name);
+ if (if_info->description != NULL)
+ g_free(if_info->description);
+
+ g_slist_foreach(if_info->ip_addr, free_if_info_addr_cb, NULL);
+ g_slist_free(if_info->ip_addr);
+}
+
+void
+free_interface_list(GList *if_list)
+{
+ g_list_foreach(if_list, free_if_cb, NULL);
+ g_list_free(if_list);
+}
+
+/*
+ * Get the data-link types available for a libpcap device.
+ */
+static data_link_info_t *
+create_data_link_info(int dlt)
+{
+ data_link_info_t *data_link_info;
+#ifdef HAVE_PCAP_DATALINK_VAL_TO_NAME
+ const char *typename;
+#endif
+ int wtap_encap;
+
+ data_link_info = g_malloc(sizeof (data_link_info_t));
+ data_link_info->dlt = dlt;
+#ifdef HAVE_PCAP_DATALINK_VAL_TO_NAME
+ typename = pcap_datalink_val_to_name(dlt);
+ if (typename != NULL)
+ data_link_info->name = g_strdup(typename);
+ else
+#endif
+ data_link_info->name = g_strdup_printf("DLT %d", dlt);
+ wtap_encap = wtap_pcap_encap_to_wtap_encap(dlt);
+ if (wtap_encap == WTAP_ENCAP_UNKNOWN) {
+ /*
+ * We don't support this in Wiretap.
+ * However, we should, so you can capture on it.
+ * Put in an entry for it, with no description.
+ */
+ data_link_info->description = NULL;
+ } else {
+ /*
+ * If this is null, that's a bug in
+ * "wtap_pcap_encap_to_wtap_encap()" - it should always
+ * return a valid encapsulation type - so we assume it's
+ * not null.
+ */
+ data_link_info->description =
+ g_strdup(wtap_encap_string(wtap_encap));
+ }
+ return data_link_info;
+}
+
+GList *
+get_pcap_linktype_list(char *devname, char *err_buf)
+{
+ GList *linktype_list = NULL;
+ pcap_t *pch;
+ int deflt;
+#ifdef HAVE_PCAP_SET_DATALINK
+ int *linktypes;
+ int i, nlt;
+#endif
+ data_link_info_t *data_link_info;
+
+ pch = pcap_open_live(devname, MIN_PACKET_SIZE, 0, 0, err_buf);
+ if (pch == NULL)
+ return NULL;
+ err_buf[0] = '\0'; /* an empty list doesn't mean an error */
+ deflt = get_pcap_linktype(pch, devname);
+#ifdef HAVE_PCAP_LIST_DATALINKS
+ nlt = pcap_list_datalinks(pch, &linktypes);
+ if (nlt == 0 || linktypes == NULL)
+ return NULL;
+ for (i = 0; i < nlt; i++) {
+ data_link_info = create_data_link_info(linktypes[i]);
+
+ /*
+ * XXX - for 802.11, make the most detailed 802.11
+ * version the default, rather than the one the
+ * device has as the default?
+ */
+ if (linktypes[i] == deflt)
+ linktype_list = g_list_prepend(linktype_list,
+ data_link_info);
+ else
+ linktype_list = g_list_append(linktype_list,
+ data_link_info);
+ }
+ free(linktypes);
+#else
+ data_link_info = create_data_link_info(deflt);
+ linktype_list = g_list_append(linktype_list, data_link_info);
+#endif
+
+ pcap_close(pch);
+ return linktype_list;
+}
+
+static void
+free_linktype_cb(gpointer data, gpointer user_data _U_)
+{
+ data_link_info_t *linktype_info = data;
+
+ g_free(linktype_info->name);
+ if (linktype_info->description != NULL)
+ g_free(linktype_info->description);
+}
+
+void
+free_pcap_linktype_list(GList *linktype_list)
+{
+ g_list_foreach(linktype_list, free_linktype_cb, NULL);
+ g_list_free(linktype_list);
+}
+
+/* Set the data link type on a pcap. */
+const char *
+set_pcap_linktype(pcap_t *pch, char *devname
+#ifdef HAVE_PCAP_SET_DATALINK
+ _U_
+#endif
+ , int dlt)
+{
+#ifdef HAVE_PCAP_SET_DATALINK
+ if (pcap_set_datalink(pch, dlt) == 0)
+ return NULL; /* no error */
+ return pcap_geterr(pch);
+#else
+ /* Let them set it to the type it is; reject any other request. */
+ if (get_pcap_linktype(pch, devname) == dlt)
+ return NULL; /* no error */
+ return "That DLT is not one of the DLTs supported by this device";
+#endif
+}
+
+#endif /* HAVE_LIBPCAP */
-/* pcap-util.h\r
- * Utility definitions for packet capture\r
- *\r
- * $Id: pcap-util.h,v 1.7 2004/06/12 07:47:13 guy Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#ifndef __PCAP_UTIL_H__\r
-#define __PCAP_UTIL_H__\r
-\r
-#ifdef HAVE_LIBPCAP\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif /* __cplusplus */\r
-\r
-/*\r
- * XXX - this is also the traditional default snapshot size in\r
- * tcpdump - but, if IPv6 is enabled, it defaults to 96, to get an\r
- * IPv6 header + TCP + 22 extra bytes.\r
- *\r
- * Some libpcap versions for particular capture devices might happen\r
- * to impose a minimum, but it's not always 68.\r
- */\r
-#define MIN_PACKET_SIZE 68 /* minimum amount of packet data we can read */\r
-\r
-#define MAX_WIN_IF_NAME_LEN 511\r
-\r
-/*\r
- * The list of interfaces returned by "get_interface_list()" is\r
- * a list of these structures.\r
- */\r
-typedef struct {\r
- char *name;\r
- char *description;\r
- GSList *ip_addr; /* containing guint32 values */\r
- gboolean loopback;\r
-} if_info_t;\r
-\r
-GList *get_interface_list(int *err, char *err_str);\r
-\r
-/* Error values from "get_interface_list()". */\r
-#define CANT_GET_INTERFACE_LIST 0 /* error getting list */\r
-#define NO_INTERFACES_FOUND 1 /* list is empty */\r
-\r
-void free_interface_list(GList *if_list);\r
-\r
-/*\r
- * Get an error message string for a CANT_GET_INTERFACE_LIST error from\r
- * "get_interface_list()".\r
- */\r
-gchar *cant_get_if_list_error_message(const char *err_str);\r
-\r
-/*\r
- * The list of data link types returned by "get_pcap_linktype_list()" is\r
- * a list of these structures.\r
- */\r
-typedef struct {\r
- int dlt;\r
- char *name;\r
- char *description;\r
-} data_link_info_t;\r
-\r
-int get_pcap_linktype(pcap_t *pch, char *devname);\r
-GList *get_pcap_linktype_list(char *devname, char *err_buf);\r
-void free_pcap_linktype_list(GList *linktype_list);\r
-const char *set_pcap_linktype(pcap_t *pch, char *devname, int dlt);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif /* __cplusplus */\r
-\r
-#endif /* HAVE_LIBPCAP */\r
-\r
-/*\r
- * Append to a GString an indication of the version of libpcap/WinPcap\r
- * with which we were compiled, if we were, or an indication that we\r
- * weren't compiled with libpcap/WinPcap, if we weren't.\r
- */\r
-extern void get_compiled_pcap_version(GString *str);\r
-\r
-/*\r
- * Append to a GString an indication of the version of libpcap/WinPcap\r
- * with which we're running, or an indication that we're not running\r
- * with libpcap/WinPcap, if we were compiled with libpcap/WinPcap,\r
- * or nothing, if we weren't compiled with libpcap/WinPcap.\r
- */\r
-extern void get_runtime_pcap_version(GString *str);\r
-\r
-#endif /* __PCAP_UTIL_H__ */\r
+/* pcap-util.h
+ * Utility definitions for packet capture
+ *
+ * $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 __PCAP_UTIL_H__
+#define __PCAP_UTIL_H__
+
+#ifdef HAVE_LIBPCAP
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/*
+ * XXX - this is also the traditional default snapshot size in
+ * tcpdump - but, if IPv6 is enabled, it defaults to 96, to get an
+ * IPv6 header + TCP + 22 extra bytes.
+ *
+ * Some libpcap versions for particular capture devices might happen
+ * to impose a minimum, but it's not always 68.
+ */
+#define MIN_PACKET_SIZE 68 /* minimum amount of packet data we can read */
+
+#define MAX_WIN_IF_NAME_LEN 511
+
+/*
+ * The list of interfaces returned by "get_interface_list()" is
+ * a list of these structures.
+ */
+typedef struct {
+ char *name;
+ char *description;
+ GSList *ip_addr; /* containing guint32 values */
+ gboolean loopback;
+} if_info_t;
+
+GList *get_interface_list(int *err, char *err_str);
+
+/* Error values from "get_interface_list()". */
+#define CANT_GET_INTERFACE_LIST 0 /* error getting list */
+#define NO_INTERFACES_FOUND 1 /* list is empty */
+
+void free_interface_list(GList *if_list);
+
+/*
+ * Get an error message string for a CANT_GET_INTERFACE_LIST error from
+ * "get_interface_list()".
+ */
+gchar *cant_get_if_list_error_message(const char *err_str);
+
+/*
+ * The list of data link types returned by "get_pcap_linktype_list()" is
+ * a list of these structures.
+ */
+typedef struct {
+ int dlt;
+ char *name;
+ char *description;
+} data_link_info_t;
+
+int get_pcap_linktype(pcap_t *pch, char *devname);
+GList *get_pcap_linktype_list(char *devname, char *err_buf);
+void free_pcap_linktype_list(GList *linktype_list);
+const char *set_pcap_linktype(pcap_t *pch, char *devname, int dlt);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* HAVE_LIBPCAP */
+
+/*
+ * Append to a GString an indication of the version of libpcap/WinPcap
+ * with which we were compiled, if we were, or an indication that we
+ * weren't compiled with libpcap/WinPcap, if we weren't.
+ */
+extern void get_compiled_pcap_version(GString *str);
+
+/*
+ * Append to a GString an indication of the version of libpcap/WinPcap
+ * with which we're running, or an indication that we're not running
+ * with libpcap/WinPcap, if we were compiled with libpcap/WinPcap,
+ * or nothing, if we weren't compiled with libpcap/WinPcap.
+ */
+extern void get_runtime_pcap_version(GString *str);
+
+#endif /* __PCAP_UTIL_H__ */
# Makefile.am
# Automake file for Ethereal
#
-# $Id: Makefile.am,v 1.30 2004/03/25 11:21:06 guy Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.34 2004/03/30 18:45:04 guy Exp $
+# $Id$
#
include ..\config.nmake
-$Id: ChangeLog,v 1.1 2003/10/14 01:18:11 guy Exp $
+$Id$
# Makefile.am
# Automake file for Ethereal/ACN
#
-# $Id: Makefile.am,v 1.4 2004/04/25 21:07:15 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.2 2003/11/06 09:05:10 guy Exp $
+# $Id$
#
include ..\..\config.nmake
/* packet-acn.c
* Routines for ACN packet disassembly
*
- * $Id: packet-acn.c,v 1.4 2003/11/06 09:32:46 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
*
-$Id: ChangeLog,v 1.3 2003/11/17 20:57:11 guy Exp $
+$Id$
Overview of changes in Art-Net Ethereal plugin:
# Makefile.am
# Automake file for Ethereal/ArtNET
#
-# $Id: Makefile.am,v 1.5 2004/04/25 21:07:16 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.5 2003/11/06 09:05:10 guy Exp $
+# $Id$
#
include ..\..\config.nmake
/* packet-artnet.c
* Routines for Art-Net packet disassembly
*
- * $Id: packet-artnet.c,v 1.7 2004/01/07 04:33:21 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
*
# Makefile.am
# Automake file for Ethereal/asn1
#
-# $Id: Makefile.am,v 1.6 2004/04/25 21:07:16 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.6 2004/02/18 20:45:53 gerald Exp $
+# $Id$
#
include ..\..\config.nmake
*
* Copyright (c) 2003 by Matthijs Melchior <matthijs.melchior@xs4all.nl>
*
- * $Id: packet-asn1.c,v 1.23 2004/05/24 02:25:21 guy Exp $
+ * $Id$
*
* A plugin for:
*
# Automake file for Cisco SS7 Session Management dissector
# Copyright 2004, Duncan Sargeant <dunc-ethereal@rcpt.to>
#
-# $Id: Makefile.am,v 1.3 2004/04/25 21:07:16 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.1 2004/03/25 11:21:06 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* Routines for Cisco Session Management Protocol dissection
* Copyright 2004, Duncan Sargeant <dunc-ethereal@rcpt.to>
*
- * $Id: packet-sm.c,v 1.5 2004/04/25 15:16:38 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
# Automake file for Ethereal/docsis subdissectors
#
-# $Id: Makefile.am,v 1.8 2004/04/25 21:07:17 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.8 2004/03/17 06:55:02 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* Routines for Baseline Privacy Key Management Attributes dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-bpkmattr.c,v 1.7 2003/12/13 03:18:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Baseline Privacy Key Management Request dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-bpkmreq.c,v 1.6 2003/12/13 03:18:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Baseline Privacy Key Management Response dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-bpkmrsp.c,v 1.6 2003/12/13 03:18:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for docsis dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-docsis.c,v 1.19 2004/03/17 06:55:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-docsis.h
*
- * $Id: packet-docsis.h,v 1.5 2004/03/17 06:55:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Addition Acknowledge dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dsaack.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Addition Request dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dsareq.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Addition Response dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dsarsp.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Change Acknowledge dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dscack.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Change Request dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dscreq.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Change Response dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dscrsp.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Delete Request dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dsdreq.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Dynamic Service Delete Response dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-dsdrsp.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Intial Ranging Request Message dissection
* Copyright 2003, Brian Wheeler <brian.wheeler[AT]arrisi.com>
*
- * $Id: packet-intrngreq.c,v 1.1 2004/03/17 06:55:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for docsis Mac Management Header dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-macmgmt.c,v 1.6 2004/03/17 06:55:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for MAP Message dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-map.c,v 1.7 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Registration Acknowledge Message dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-regack.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Registration Request dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-regreq.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Registration Response Message dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-regrsp.c,v 1.7 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Ranging Request Message dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-rngreq.c,v 1.7 2004/03/17 06:55:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Ranging Response Message dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-rngrsp.c,v 1.8 2004/01/07 05:13:29 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines to Dissect Appendix C TLV's
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-tlv.c,v 1.16 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Contains Definitions for Configuration types
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-tlv.h,v 1.4 2003/05/28 14:52:52 gerald Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Type 29 UCD - DOCSIS 2.0 only - Message dissection
* Copyright 2003, Brian Wheeler <brian.wheeler[AT]arrisi.com>
*
- * $Id: packet-type29ucd.c,v 1.1 2004/03/17 06:55:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Upstream Channel Change Request dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-uccreq.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Upstream Channel Change Response dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-uccrsp.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for UCD Message dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-ucd.c,v 1.8 2004/03/17 06:55:03 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for Vendor Specific Encodings dissection
* Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
*
- * $Id: packet-vendor.c,v 1.6 2003/12/13 03:18:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
-$Id: ChangeLog,v 1.1 2003/11/17 20:57:12 guy Exp $
+$Id$
Overview of changes in ENTTEC Ethereal plugin
# Makefile.am
# Automake file for Ethereal/ENTTEC
#
-# $Id: Makefile.am,v 1.3 2004/04/25 21:07:17 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.1 2003/11/17 20:57:13 guy Exp $
+# $Id$
#
include ..\..\config.nmake
/* packet-enttec.c
* Routines for ENTTEC packet disassembly
*
- * $Id: packet-enttec.c,v 1.1 2003/11/17 20:57:13 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
*
# Makefile.am
# Automake file for Ethereal/GIOP subdissectors
#
-# $Id: Makefile.am,v 1.7 2004/04/25 21:07:18 obiot Exp $
+# $Id$
#
# Copyright 2001, Ericsson Inc.
# Frank Singleton <frank.singleton@ericsson.com>
#
-# $Id: Makefile.nmake,v 1.9 2003/10/10 21:31:50 guy Exp $
+# $Id$
#
include ..\..\config.nmake
# By Steve Limkemann <stevelim@dgtech.com>
# Copyright 1998 Steve Limkemann
#
-# $Id: Makefile.am,v 1.14 2004/04/25 21:07:19 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.13 2003/11/06 09:05:12 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* By Steve Limkemann <stevelim@dgtech.com>
* Copyright 1998 Steve Limkemann
*
- * $Id: packet-gryphon.c,v 1.45 2004/01/24 02:07:05 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* packet-gryphon.c
* Definitions for Gryphon packet disassembly structures and routines
*
- * $Id: packet-gryphon.h,v 1.8 2003/10/03 23:22:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Steve Limkemann <stevelim@dgtech.com>
# Makefile.am
# Automake file for Ethereal/IrDA
#
-# $Id: Makefile.am,v 1.4 2004/06/30 07:34:52 guy Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.2 2004/06/30 07:34:52 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* By Jan Kiszka <jan.kiszka@web.de>
* Copyright 2003 Jan Kiszka
*
- * $Id: irda-appl.h,v 1.2 2004/06/30 07:34:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
* By Jan Kiszka <jan.kiszka@web.de>
* Copyright 2003 Jan Kiszka
*
- * $Id: packet-ircomm.c,v 1.3 2004/03/08 19:41:52 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
* Extended by Jan Kiszka <jan.kiszka@web.de>
* Copyright 2003 Jan Kiszka
*
- * $Id: packet-irda.c,v 1.8 2004/06/30 15:42:24 tuexen Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
# Automake file for Ethereal/lwres
#
-# $Id: Makefile.am,v 1.5 2004/04/25 21:07:22 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer / light waight resolver (part of Bind9)
# By Steve Oleg Terletsky <oleg.terletsky@comverse.com>
#
-# $Id: Makefile.nmake,v 1.4 2003/11/06 09:05:12 guy Exp $
+# $Id$
#
include ..\..\config.nmake
/* packet-lwres.c
* Routines for light weight reslover (lwres, part of BIND9) packet disassembly
*
- * $Id: packet-lwres.c,v 1.3 2003/09/05 07:44:47 jmayer Exp $
+ * $Id$
*
* Copyright (c) 2003 by Oleg Terletsky <oleg.terletsky@comverse.com>
*
# Makefile.am
# Automake file for Megaco Ethereal plugin
#
-# $Id: Makefile.am,v 1.4 2004/04/25 21:07:23 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.5 2003/11/06 09:05:13 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* Routines for megaco packet disassembly
* RFC 3015
*
-* $Id: packet-megaco.c,v 1.16 2004/04/23 03:20:58 guy Exp $
+* $Id$
*
* Christian Falckenberg, 2002/10/17
* Copyright (c) 2002 by Christian Falckenberg
# Makefile.am
# Automake file for Ethereal/MGCP
#
-# $Id: Makefile.am,v 1.10 2004/04/25 21:07:23 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.10 2004/05/09 10:03:41 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* PKT-SP-EC-MGCP-I09-040113, January 13, 2004, Cable Television
* Laboratories, Inc., http://www.PacketCable.com/
*
- * $Id: packet-mgcp.c,v 1.47 2004/05/31 19:31:14 etxrab Exp $
+ * $Id$
*
* Copyright (c) 2000 by Ed Warnicke <hagbard@physics.rutgers.edu>
* Copyright (c) 2004 by Thomas Anders <thomas.anders [AT] blue-cable.de>
* Routines for mgcp packet disassembly
* RFC 2705
*
- * $Id: packet-mgcp.h,v 1.2 2003/07/25 17:57:09 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Ed Warnicke <hagbard@physics.rutgers.edu>
*
# Makefile.am
# Automake file for Ethereal/Gryphon
#
-# $Id: Makefile.am,v 1.5 2004/04/25 21:07:23 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.5 2003/11/06 09:05:14 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* http://www.packetcable.com/downloads/specs/pkt-sp-esp-I01-991229.pdf
* Chapter 4 ( Call Content Connection Interface )
*
- * $Id: packet-pcli.c,v 1.8 2003/09/05 07:44:50 jmayer Exp $
+ * $Id$
*
* Copyright (c) 2000 by Ed Warnicke <hagbard@physics.rutgers.edu>
*
/* plugin_api.c
* Routines for Ethereal plugins.
*
- * $Id: plugin_api.c,v 1.53 2003/07/18 03:01:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
/* plugin_api.h
* Routines for Ethereal plugins.
*
- * $Id: plugin_api.h,v 1.63 2004/06/30 17:57:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
* Declarations of a list of "p_" names; included in various places
* to declare them as variables or as function members.
*
- * $Id: plugin_api_decls.h,v 1.16 2003/07/18 03:01:34 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
/* plugin_api_defs.h
* Define the variables that hold pointers to plugin API functions
*
- * $Id: plugin_api_defs.h,v 1.15 2002/08/28 20:38:58 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
/* plugin_api_list.c
* Used to generate various included files for plugin API
*
- * $Id: plugin_api_list.c,v 1.36 2004/06/30 08:21:58 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
#! /usr/bin/python
# -*- python -*-
#
-# $Id: plugin_gen.py,v 1.3 2003/08/23 07:34:31 guy Exp $
+# $Id$
#
# mmelchior@xs4all.nl
#
/* plugin_table.h
* Table of exported addresses for Ethereal plugins.
*
- * $Id: plugin_table.h,v 1.67 2003/07/18 03:01:35 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* Copyright 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
# Makefile.am
# Automake file for Ethereal/RDM
#
-# $Id: Makefile.am,v 1.3 2004/04/25 21:07:23 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.2 2003/11/18 19:18:45 ulfl Exp $
+# $Id$
#
include ..\..\config.nmake
/* packet-rdm.c
* Routines for RDM packet disassembly
*
- * $Id: packet-rdm.c,v 1.2 2003/11/17 22:26:57 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
*
# Automake file for Cisco SS7 Redundant Link Management dissector
# Copyright 2004, Duncan Sargeant <dunc-ethereal@rcpt.to>
#
-# $Id: Makefile.am,v 1.3 2004/04/25 21:07:23 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.1 2004/03/25 11:21:07 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* Routines for RLM dissection
* Copyright 2004, Duncan Sargeant <dunc-ethereal@rcpt.to>
*
- * $Id: packet-rlm.c,v 1.5 2004/04/25 15:16:38 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
# Automake file for Ethereal/RTNET
#
-# $Id: Makefile.am,v 1.5 2004/04/25 21:07:24 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.6 2003/11/06 09:05:14 guy Exp $
+# $Id$
#
include ..\..\config.nmake
/* packet-rtnet.c
* Routines for RTnet packet disassembly
*
- * $Id: packet-rtnet.c,v 1.7 2004/02/18 05:33:35 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
*
# Automake file for Cisco SS7 Reliable UDP dissector
# Copyright 2004, Duncan Sargeant <dunc-ethereal@rcpt.to>
#
-# $Id: Makefile.am,v 1.3 2004/04/25 21:07:24 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.1 2004/03/25 11:21:07 guy Exp $
+# $Id$
#
include ..\..\config.nmake
* Routines for Reliable UDP Protocol.
* Copyright 2004, Duncan Sargeant <dunc-ethereal@rcpt.to>
*
- * $Id: packet-rudp.c,v 1.8 2004/04/25 15:16:39 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
# Automake file for V5UA plugin
#
-# $Id: Makefile.am,v 1.4 2004/04/25 21:07:25 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.2 2003/12/17 07:02:12 guy Exp $
+# $Id$
#
include ..\..\config.nmake
/* ppptypes.h
* Defines PPP packet types.
*
- * $Id: ppptypes.h,v 1.14 2002/08/28 21:00:40 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Definitions for implementation of preference handling routines;
* used by "friends" of the preferences type.
*
- * $Id: prefs-int.h,v 1.12 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* prefs.c
* Routines for handling preferences
*
- * $Id: prefs.c,v 1.139 2004/06/29 17:10:52 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* prefs.h
* Definitions for preference handling routines
*
- * $Id: prefs.h,v 1.67 2004/06/29 17:10:52 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* print.c
* Routines for printing packet analysis trees.
*
- * $Id: print.c,v 1.84 2004/07/08 10:36:27 guy Exp $
+ * $Id$
*
* Gilbert Ramirez <gram@alumni.rice.edu>
*
/* print.h
* Definitions for printing packet analysis trees.
*
- * $Id: print.h,v 1.45 2004/07/08 10:36:27 guy Exp $
+ * $Id$
*
* Gilbert Ramirez <gram@alumni.rice.edu>
*
#
# Copyright 2000, Christophe Tronche <ch.tronche@computer.org>
#
-# $Id: process-x11-fields.pl,v 1.6 2004/03/27 11:33:40 guy Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
/* progress_dlg.h
* Definitions for progress dialog box routines
*
- * $Id: progress_dlg.h,v 1.7 2004/06/04 20:04:34 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* proto_hier_stats.c
* Routines for calculating statistics based on protocol.
*
- * $Id: proto_hier_stats.c,v 1.26 2004/03/17 21:48:15 deniel Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* proto_hier_stats.h
*
- * $Id: proto_hier_stats.h,v 1.5 2004/03/17 21:48:15 deniel Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ps.h
* Definitions for generating PostScript(R) packet output.
*
- * $Id: ps.h,v 1.7 2004/01/25 00:58:12 guy Exp $
+ * $Id$
*
* Gilbert Ramirez <gram@alumni.rice.edu>
*
* Proto Tree TVBuff cursor
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: ptvcursor.c,v 1.7 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
* Proto Tree TVBuff cursor
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: ptvcursor.h,v 1.7 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Creates random packet traces. Useful for debugging sniffers by testing
* assumptions about the veracity of the data found in the packet.
*
- * $Id: randpkt.c,v 1.19 2004/02/23 14:37:59 jmayer Exp $
+ * $Id$
*
* Copyright (C) 1999 by Gilbert Ramirez <gram@alumni.rice.edu>
*
/* range.c
* Packet range routines (save, print, ...)
*
- * $Id: range.c,v 1.9 2004/02/11 09:19:54 guy Exp $
+ * $Id$
*
* Dick Gooris <gooris@lucent.com>
* Ulf Lamping <ulf.lamping@web.de>
/* range.h
* Packet range routines (save, print, ...)
*
- * $Id: range.h,v 1.8 2004/01/09 18:10:40 ulfl Exp $
+ * $Id$
*
* Dick Gooris <gooris@lucent.com>
* Ulf Lamping <ulf.lamping@web.de>
/* rdps.c
*
- * $Id: rdps.c,v 1.8 2004/01/25 00:58:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* reassemble.c
* Routines for {fragment,segment} reassembly
*
- * $Id: reassemble.c,v 1.51 2004/06/25 06:16:35 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* reassemble.h
* Declarations of outines for {fragment,segment} reassembly
*
- * $Id: reassemble.h,v 1.22 2004/06/24 07:43:24 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* register.h
* Definitions for protocol registration
*
- * $Id: register.h,v 1.6 2004/05/03 18:51:50 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines handling protocols with a request/response line, headers,
* a blank line, and an optional body.
*
- * $Id: req_resp_hdrs.c,v 1.5 2004/05/04 06:53:47 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations of routines handling protocols with a request/response line,
* headers, a blank line, and an optional body.
*
- * $Id: req_resp_hdrs.h,v 1.1 2003/12/23 02:29:11 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* ringbuffer.c
* Routines for packet capture windows
*
- * $Id: ringbuffer.c,v 1.12 2004/06/30 06:58:57 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* capture.h
* Definitions for packet capture windows
*
- * $Id: ringbuffer.h,v 1.3 2003/06/22 16:06:03 deniel Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* rpc_defrag.h
* Declarations for RPC defragmentation
*
- * $Id: rpc_defrag.h,v 1.5 2003/04/21 08:13:18 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* rtp_pt.h
* Defines RTP payload types
*
- * $Id: rtp_pt.h,v 1.4 2004/06/01 23:08:00 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* sctpppids.h
* Declarations of SCTP payload protocol IDs.
*
- * $Id: sctpppids.h,v 1.2 2003/01/20 22:44:58 tuexen Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Definitions for alert box routines with toolkit-independent APIs but
* toolkit-dependent implementations.
*
- * $Id: simple_dialog.h,v 1.16 2004/07/13 07:15:42 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Defines for smb packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: smb.h,v 1.55 2004/05/09 10:03:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/*
- * $Id: snprintf-imp.h,v 1.4 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*/
/*
/*
- * $Id: snprintf.c,v 1.14 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*/
/*
/*
- * $Id: snprintf.h,v 1.9 2002/09/12 21:26:51 gram Exp $
+ * $Id$
*/
#ifndef __ETHEREAL_SNPRINTF_H__
/* statusbar.h
* Definitions for status bar UI routines
*
- * $Id: statusbar.h,v 1.2 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* strerror.c
*
- * $Id: strerror.c,v 1.2 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* strerror.h
*
- * $Id: strerror.h,v 1.3 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
/* strptime.h
*
- * $Id: strptime.h,v 1.2 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* summary.c
* Routines for capture file summary info
*
- * $Id: summary.c,v 1.23 2003/09/02 22:10:32 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* summary.h
* Definitions for capture file summary data
*
- * $Id: summary.h,v 1.8 2003/09/02 22:10:32 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* T.35 and H.221 tables
* 2003 Tomas Kukosa
*
- * $Id: t35.c,v 1.5 2004/06/15 09:43:19 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* T.35 and H.221 tables
* 2003 Tomas Kukosa
*
- * $Id: t35.h,v 1.2 2003/10/02 22:40:37 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * $Id: tap-ansi_astat.c,v 1.4 2004/05/09 10:03:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-bootpstat.c
* boop_stat 2003 Jean-Michel FAYARD
*
- * $Id: tap-bootpstat.c,v 1.1 2003/09/02 22:47:58 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-dcerpcstat.c
* dcerpcstat 2002 Ronnie Sahlberg
*
- * $Id: tap-dcerpcstat.c,v 1.10 2004/05/07 11:25:15 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 2003, Michael Lum <mlum [AT] telostech.com>
* In association with Telos Technology Inc.
*
- * $Id: tap-gsm_astat.c,v 1.2 2004/05/09 10:03:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* h225 message counter for ethereal
* Copyright 2003 Lars Roland
*
- * $Id: tap-h225counter.c,v 1.3 2004/05/09 10:03:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* h225 RAS Service Response Time statistics for ethereal
* Copyright 2003 Lars Roland
*
- * $Id: tap-h225rassrt.c,v 1.1 2003/11/16 23:11:18 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-httpstat.c
* tap-httpstat 2003 Jean-Michel FAYARD
*
- * $Id: tap-httpstat.c,v 1.3 2003/09/29 19:18:43 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-iostat.c
* iostat 2002 Ronnie Sahlberg
*
- * $Id: tap-iostat.c,v 1.9 2003/12/02 21:15:46 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-iousers.c
* iostat 2003 Ronnie Sahlberg
*
- * $Id: tap-iousers.c,v 1.15 2003/09/05 01:33:40 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-mgcpstat.c
* mgcpstat 2003 Lars Roland
*
- * $Id: tap-mgcpstat.c,v 1.6 2003/04/23 08:20:01 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-protocolinfo.c
* protohierstat 2002 Ronnie Sahlberg
*
- * $Id: tap-protocolinfo.c,v 1.4 2003/05/03 00:48:33 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-protohierstat.c
* protohierstat 2002 Ronnie Sahlberg
*
- * $Id: tap-protohierstat.c,v 1.6 2003/12/04 10:59:33 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-rpcprogs.c
* rpcstat 2002 Ronnie Sahlberg
*
- * $Id: tap-rpcprogs.c,v 1.6 2004/05/17 20:06:32 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-rpcstat.c
* rpcstat 2002 Ronnie Sahlberg
*
- * $Id: tap-rpcstat.c,v 1.12 2004/05/09 10:03:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap_sipstat.c
* sip message counter for ethereal
*
- * $Id: tap-sipstat.c,v 1.2 2004/05/01 21:34:24 guy Exp $
+ * $Id$
* Copied from gtk/sip_stat.c and tap-httpstat.c
*
* Ethereal - Network traffic analyzer
/* tap-smbsids.c
* smbstat 2003 Ronnie Sahlberg
*
- * $Id: tap-smbsids.c,v 1.2 2004/05/09 10:03:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-smbstat.c
* smbstat 2003 Ronnie Sahlberg
*
- * $Id: tap-smbstat.c,v 1.6 2004/05/09 10:03:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap-rpcstat.c
* wspstat 2003 Jean-Michel FAYARD
*
- * $Id: tap-wspstat.c,v 1.4 2004/05/09 10:03:38 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap.c
* packet tap interface 2002 Ronnie Sahlberg
*
- * $Id: tap.c,v 1.10 2004/05/31 09:53:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tap.h
* packet tap interface 2002 Ronnie Sahlberg
*
- * $Id: tap.h,v 1.10 2004/05/31 09:53:21 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Header file for display filter dialog used by gui taps
* Copyright 2003 Lars Roland
*
- * $Id: tap_dfilter_dlg.h,v 1.1 2003/12/19 23:39:53 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* tethereal.c
*
- * $Id: tethereal.c,v 1.247 2004/07/09 09:21:07 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (c) Copyright 2001 Ashok Narayanan <ashokn@cisco.com>
*
- * $Id: text2pcap-scanner.l,v 1.3 2001/11/24 09:46:28 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (c) Copyright 2001 Ashok Narayanan <ashokn@cisco.com>
*
- * $Id: text2pcap.c,v 1.30 2004/07/04 17:36:53 tuexen Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
*
* (c) Copyright 2001 Ashok Narayanan <ashokn@cisco.com>
*
- * $Id: text2pcap.h,v 1.3 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* routines for time statistics
* Copyrigth 2003 Lars Roland
*
- * $Id: timestats.c,v 1.2 2003/09/03 10:10:17 sahlberg Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines and definitions for time statistics
* Copyrigth 2003 Lars Roland
*
- * $Id: timestats.h,v 1.1 2003/04/16 07:24:04 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
# Makefile.am
# Automake file for Ethereal
#
-# $Id: Makefile.am,v 1.8 2004/06/04 03:25:35 gerald Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.5 2003/10/13 19:04:56 guy Exp $
+# $Id$
all: lemon
# ASN.1 to Ethereal dissector compiler
# 2004 Tomas Kukosa
#
-# $Id: asn2eth.py,v 1.12 2004/06/26 09:56:22 guy Exp $
+# $Id$
#
"""ASN.1 to Ethereal dissector compiler"""
# recursive diff, and unflattens it so that it can be
# applied correctly with "patch".
#
-# $Id: cvsdiff-fix.py,v 1.3 2003/06/11 14:48:27 gram Exp $
+# $Id$
#
# Copyright (C) 2001 by Gilbert Ramirez <gram@alumni.rice.edu>
#
"""
#
-# $Id: dfilter-test.py,v 1.4 2004/02/22 03:04:41 gram Exp $
+# $Id$
#
# Copyright (C) 2003 by Gilbert Ramirez <gram@alumni.rice.edu>
#
# Makefile.am
#
-# $Id: Makefile.am,v 1.3 2001/02/27 20:34:09 gram Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@zing.org>
## Makefile for building ethereal.exe with Microsoft C and nmake
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
-# $Id: Makefile.nmake,v 1.9 2003/10/10 21:31:53 guy Exp $
+# $Id$
include ..\..\config.nmake
-$Id: README,v 1.1 2001/02/01 20:21:25 gram Exp $
+$Id$
The Lemon Parser Generator's home page is:
-/* $Id: cppmagic.h,v 1.1 2001/02/27 20:34:09 gram Exp $ */
+/* $Id$ */
/**************************************** CPP definitions ***************/
** drh@acm.org
** http://www.hwaci.com/drh/
**
-** $Id: lemon.c,v 1.17 2004/01/25 09:49:50 jmayer Exp $
+** $Id$
*/
#include <stdio.h>
#include <stdarg.h>
-/* $Id: lemonflex-head.inc,v 1.1 2001/02/01 20:21:25 gram Exp $ */
+/* $Id$ */
/* This file is #include'd at the top of a Lex/Flex scanner
for use with the Lemon parser. You must have #define'd:
-/* $Id: lemonflex-tail.inc,v 1.2 2004/04/25 04:53:42 gram Exp $ */
+/* $Id$ */
/* This file is #include'd at the bottom of a Lex/Flex scanner
for use with the Lemon parser. You must have #define'd:
/* ui_util.h
* Definitions for UI utility routines
*
- * $Id: ui_util.h,v 1.16 2004/01/22 18:13:56 ulfl Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* util.c
* Utility routines
*
- * $Id: util.c,v 1.81 2004/06/25 07:00:54 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* util.h
* Utility definitions
*
- * $Id: util.h,v 1.32 2004/05/10 22:20:24 obiot Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* version_info.c
* Routines to report version information for stuff used by Ethereal
*
- * $Id: version_info.c,v 1.4 2004/05/22 04:15:01 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Declarations of outines to report version information for stuff used
* by Ethereal
*
- * $Id: version_info.h,v 1.1 2004/01/11 22:17:43 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
/* 5views.c
*
- * $Id: 5views.c,v 1.5 2004/03/03 22:24:50 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* 5views.h
*
- * $Id: 5views.h,v 1.2 2004/01/25 21:55:12 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
# Makefile.am
# Automake file for Wiretap
#
-# $Id: Makefile.am,v 1.52 2004/03/24 21:27:44 obiot Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
#
-# $Id: Makefile.nmake,v 1.40 2004/02/11 20:05:15 guy Exp $
+# $Id$
#
include ..\config.nmake
-$Id: README,v 1.30 2002/05/22 10:53:17 sahlberg Exp $
+$Id$
Wiretap is a library that is being developed as a future replacement for
libpcap, the current standard Unix library for packet capturing. Libpcap
-$Id: README.developer,v 1.2 2003/09/24 23:53:11 guy Exp $
+$Id$
This is a very quick and very dirty guide to adding support for new
capture file formats. If you see any errors or have any improvements,
dnl This file is part of the Autoconf packaging for Ethereal.
dnl Copyright (C) 1998-2000 by Gerald Combs.
dnl
-dnl $Id: acinclude.m4,v 1.19 2004/03/27 12:07:57 jmayer Exp $
+dnl $Id$
dnl
#
/* airopeek9.c
* Routines for opening EtherPeek and AiroPeek V9 files
*
- * $Id: airopeek9.c,v 1.12 2004/03/03 22:24:50 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* airopeek9.h
*
- * $Id: airopeek9.h,v 1.2 2004/01/25 21:55:12 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
%{
/* ascend-grammar.y
*
- * $Id: ascend-grammar.y,v 1.26 2004/01/25 21:55:12 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
* Definitions for routines common to multiple modules in the Lucent/Ascend
* capture file reading code code, but not used outside that code.
*
- * $Id: ascend-int.h,v 1.11 2004/01/25 21:55:12 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
%{
/* ascend-scanner.l
*
- * $Id: ascend-scanner.l,v 1.27 2004/01/06 20:05:39 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* ascend.c
*
- * $Id: ascend.c,v 1.33 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* ascend.h
*
- * $Id: ascend.h,v 1.10 2004/01/25 21:55:12 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* atm.c
*
- * $Id: atm.c,v 1.3 2002/08/28 20:30:44 jmayer Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* atm.h
*
- * $Id: atm.h,v 1.3 2002/08/28 20:30:44 jmayer Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* buffer.c
*
- * $Id: buffer.c,v 1.14 2002/08/28 20:30:44 jmayer Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* buffer.h
*
- * $Id: buffer.h,v 1.11 2002/08/28 20:30:44 jmayer Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
-/* $Id: config.h.win32,v 1.11 2003/11/07 23:27:13 guy Exp $ */
+/* $Id$ */
/* config.h.win32 Generated manually. :-) */
/* config.h. Generated automatically by configure. */
/* config.h.in. Generated automatically from configure.in by autoheader. */
-# $Id: configure.in,v 1.58 2004/06/01 00:15:38 jmayer Exp $
+# $Id$
#
AC_INIT(wtap.c)
/* cosine.c
*
- * $Id: cosine.c,v 1.10 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* CoSine IPNOS L2 debug output parsing
* Copyright (c) 2002 by Motonori Shindo <mshindo@mshindo.net>
/* cosine.h
*
- * $Id: cosine.h,v 1.3 2004/01/25 21:55:12 guy Exp $
+ * $Id$
*
* CoSine IPNOS L2 debug output parsing
* Copyright (c) 2002 by Motonori Shindo <mshindo@mshindo.net>
/* csids.c
*
- * $Id: csids.c,v 1.17 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Mike Hall <mlh@io.com>
* Copyright (c) 2000 by Cisco Systems
/* csids.h
*
- * $Id: csids.h,v 1.4 2004/01/25 21:55:13 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Mike Hall <mlh@io.com>
* Copyright (c) Cisco Systems
/* dbs-etherwatch.c
*
- * $Id: dbs-etherwatch.c,v 1.17 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 2001 by Marc Milgram <ethereal@mmilgram.NOSPAMmail.net>
/* dbs-etherwatch.h
*
- * $Id: dbs-etherwatch.h,v 1.5 2004/01/25 21:55:13 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
-* $Id: erf.c,v 1.7 2004/01/25 21:55:13 guy Exp $
+* $Id$
*/
/*
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
-* $Id: erf.h,v 1.2 2004/01/25 21:55:13 guy Exp $
+* $Id$
*/
#ifndef __W_ERF_H__
* and V7 files
* Copyright (c) 2001, Daniel Thompson <d.thompson@gmx.net>
*
- * $Id: etherpeek.c,v 1.29 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* etherpeek.h
*
- * $Id: etherpeek.h,v 1.4 2004/01/25 21:55:13 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* eyesdn.c
*
- * $Id: eyesdn.c,v 1.8 2004/04/02 07:40:37 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* eyesdn.h
*
- * $Id: eyesdn.h,v 1.1 2004/02/11 20:05:16 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* file_access.c
*
- * $Id: file_access.c,v 1.14 2004/06/30 06:58:59 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* file_wrappers.c
*
- * $Id: file_wrappers.c,v 1.12 2002/08/28 20:30:44 jmayer Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* file_wrappers.h
*
- * $Id: file_wrappers.h,v 1.10 2002/08/28 20:30:44 jmayer Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* hcidump.c
*
- * $Id: hcidump.c,v 1.4 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by Marcel Holtmann <marcel@holtmann.org>
*
/* hcidump.h
*
- * $Id: hcidump.h,v 1.2 2004/01/25 21:55:14 guy Exp $
+ * $Id$
*
* Copyright (c) 2003 by Marcel Holtmann <marcel@holtmann.org>
*
* i4b_trace.h - header file for trace data read device
* ----------------------------------------------------
*
- * $Id: i4b_trace.h,v 1.3 2002/08/28 20:30:44 jmayer Exp $
+ * $Id$
*
* last edit-date: [Sun Feb 14 10:39:26 1999]
*
/* i4btrace.c
*
- * $Id: i4btrace.c,v 1.25 2004/01/26 21:26:52 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1999 by Bert Driehuis <driehuis@playbeing.org>
/* i4btrace.h
*
- * $Id: i4btrace.h,v 1.4 2004/01/25 21:55:15 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1999 by Bert Driehuis <driehuis@playbeing.org>
/* iptrace.c
*
- * $Id: iptrace.c,v 1.50 2004/01/25 21:55:15 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* iptrace.h
*
- * $Id: iptrace.h,v 1.8 2004/01/25 21:55:15 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* lanalyzer.c
*
- * $Id: lanalyzer.c,v 1.48 2004/07/08 07:32:39 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* lanalyzer.h
*
- * $Id: lanalyzer.h,v 1.9 2004/01/25 21:55:15 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* libpcap.c
*
- * $Id: libpcap.c,v 1.120 2004/06/07 20:28:50 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* libpcap.h
*
- * $Id: libpcap.h,v 1.15 2004/01/25 21:55:15 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* netmon.c
*
- * $Id: netmon.c,v 1.69 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* netmon.h
*
- * $Id: netmon.h,v 1.12 2004/01/25 21:55:15 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* nettl.c
*
- * $Id: nettl.c,v 1.36 2004/04/02 08:27:26 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* nettl.h
*
- * $Id: nettl.h,v 1.12 2004/04/02 08:27:26 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/*
- * $Id: network_instruments.c,v 1.8 2004/02/09 00:05:35 guy Exp $
+ * $Id$
*/
/***************************************************************************
/*
- * $Id: network_instruments.h,v 1.5 2004/01/25 21:55:16 guy Exp $
+ * $Id$
*/
/***************************************************************************
/* netxray.c
*
- * $Id: netxray.c,v 1.90 2004/03/03 22:24:51 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* netxray.h
*
- * $Id: netxray.h,v 1.12 2004/01/25 21:55:16 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* ngsniffer.c
*
- * $Id: ngsniffer.c,v 1.113 2004/01/25 21:55:16 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* ngsniffer.h
*
- * $Id: ngsniffer.h,v 1.13 2004/01/25 21:55:16 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* pppdump.c
*
- * $Id: pppdump.c,v 1.25 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
*
/* pppdump.h
*
- * $Id: pppdump.h,v 1.4 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Copyright (c) 2000 by Gilbert Ramirez <gram@alumni.rice.edu>
*
/* radcom.c
*
- * $Id: radcom.c,v 1.46 2004/06/16 08:11:59 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* radcom.h
*
- * $Id: radcom.h,v 1.8 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* snoop.c
*
- * $Id: snoop.c,v 1.69 2004/03/03 22:24:52 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* snoop.h
*
- * $Id: snoop.h,v 1.13 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* toshiba.c
*
- * $Id: toshiba.c,v 1.29 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* toshiba.h
*
- * $Id: toshiba.h,v 1.6 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
* File read and write routines for Visual Networks cap files.
* Copyright (c) 2001, Tom Nisbet tnisbet@visualnetworks.com
*
- * $Id: visual.c,v 1.16 2004/03/03 22:24:52 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
*
* Based on the code that handles netmon files.
*
- * $Id: visual.h,v 1.6 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* vms.c
*
- * $Id: vms.c,v 1.23 2004/03/03 22:24:53 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 2001 by Marc Milgram <ethereal@mmilgram.NOSPAMmail.net>
/* vms.h
*
- * $Id: vms.h,v 1.3 2004/01/25 21:55:17 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 2001 by Marc Milgram <ethereal@mmilgram.NOSPAMmail.net>
/* wtap_capture.h
*
- * $Id: wtap-capture.h,v 1.3 2002/08/28 20:30:45 jmayer Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* wtap-int.h
*
- * $Id: wtap-int.h,v 1.45 2004/02/06 20:50:44 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
/* wtap.c
*
- * $Id: wtap.c,v 1.94 2004/06/07 20:28:51 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
-EXPORTS\r
-wtap_buf_ptr\r
-wtap_close\r
-wtap_dump\r
-wtap_dump_can_open\r
-wtap_dump_can_write_encap\r
-wtap_dump_close\r
-wtap_dump_fdopen\r
-wtap_dump_file\r
-wtap_dump_open\r
-wtap_encap_short_string\r
-wtap_encap_string\r
-wtap_fd\r
-wtap_file_encap\r
-wtap_file_type\r
-wtap_file_type_short_string\r
-wtap_file_type_string\r
-wtap_get_bytes_dumped\r
-wtap_set_bytes_dumped\r
-wtap_loop\r
-wtap_open_offline\r
-wtap_pcap_encap_to_wtap_encap\r
-wtap_phdr\r
-wtap_process_pcap_packet\r
-wtap_pseudoheader\r
-wtap_read\r
-wtap_seek_read\r
-wtap_sequential_close\r
-wtap_short_string_to_encap\r
-wtap_short_string_to_file_type\r
-wtap_snapshot_length\r
-wtap_strerror\r
+EXPORTS
+wtap_buf_ptr
+wtap_close
+wtap_dump
+wtap_dump_can_open
+wtap_dump_can_write_encap
+wtap_dump_close
+wtap_dump_fdopen
+wtap_dump_file
+wtap_dump_open
+wtap_encap_short_string
+wtap_encap_string
+wtap_fd
+wtap_file_encap
+wtap_file_type
+wtap_file_type_short_string
+wtap_file_type_string
+wtap_get_bytes_dumped
+wtap_set_bytes_dumped
+wtap_loop
+wtap_open_offline
+wtap_pcap_encap_to_wtap_encap
+wtap_phdr
+wtap_process_pcap_packet
+wtap_pseudoheader
+wtap_read
+wtap_seek_read
+wtap_sequential_close
+wtap_short_string_to_encap
+wtap_short_string_to_file_type
+wtap_snapshot_length
+wtap_strerror
/* wtap.h
*
- * $Id: wtap.h,v 1.155 2004/06/07 20:28:51 guy Exp $
+ * $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
#
# Well-known addresses.
#
-# $Id: wka.tmpl,v 1.4 2004/06/18 14:27:12 jmayer Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald [AT] ethereal.com>
#
# Copyright 2000, Christophe Tronche <ch.tronche@computer.org>
#
-# $Id: x11-fields,v 1.14 2004/04/17 03:38:09 guy Exp $
+# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
/* x264_prt_id.h
* Definitions of X.264/ISO 11570 transport protocol IDs
*
- * $Id: x264_prt_id.h,v 1.2 2002/08/28 21:00:41 jmayer Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Routines for use by various SDLC-derived protocols, such as HDLC
* and its derivatives LAPB, IEEE 802.2 LLC, etc..
*
- * $Id: xdlc.c,v 1.26 2004/03/04 07:51:47 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Define *DLC frame types, and routine to dissect the control field of
* a *DLC frame.
*
- * $Id: xdlc.h,v 1.20 2004/01/18 08:32:46 guy Exp $
+ * $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* exists so that the library can be loaded on systems that
* have it.
*
- * $Id: xmlstub.c,v 1.4 2004/04/25 10:38:24 etxrab Exp $
+ * $Id$
*
* Copyright (c) 2001 by David Frascone <dave@frascone.com>
*