wireshark/wiretap/lanalyzer.h
Guy Harris 2b8ebd389b "This file format can't be written to a pipe" and "this file format
can't be saved in compress form" are both equivalent to "this file file
format requires seeking when writing it".  Change the "can compress"
Boolean in the file format table to "writing requires seeking", give all
the entries the proper value, and do the checks for attempting to write
a file format to a pipe or write it in compressed format to common code.

This means we don't need to pass the "can't seek" flag to the dump open
routines.

svn path=/trunk/; revision=36575
2011-04-12 00:44:44 +00:00

177 lines
4.4 KiB
C

/* lanalyzer.h
*
* $Id$
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
*
* 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 __LANALYZER_H__
#define __LANALYZER_H__
/* Record type codes: */
#define RT_HeaderRegular 0x1001
#define RT_HeaderCyclic 0x1007
#define RT_RxChannelName 0x1006
#define RT_TxChannelName 0x100b
#define RT_FilterName 0x1032
#define RT_RxTemplateName 0x1035
#define RT_TxTemplateName 0x1036
#define RT_DisplayOptions 0x100a
#define RT_Summary 0x1002
#define RT_SubfileSummary 0x1003
#define RT_CyclicInformation 0x1009
#define RT_Index 0x1004
#define RT_PacketData 0x1005
#define LA_ProFileLimit (1024 * 1024 * 32)
typedef guint8 Eadr[6];
typedef guint16 TimeStamp[3]; /* 0.5 microseconds since start of trace */
/*
* These records have only 2-byte alignment for 4-byte quantities,
* so the structures aren't necessarily valid; they're kept as comments
* for reference purposes.
*/
/*
* typedef struct {
* guint8 day;
* guint8 mon;
* gint16 year;
* } Date;
*/
/*
* typedef struct {
* guint8 second;
* guint8 minute;
* guint8 hour;
* guint8 day;
* gint16 reserved;
* } Time;
*/
/*
* typedef struct {
* guint16 rx_channels;
* guint16 rx_errors;
* gint16 rx_frm_len;
* gint16 rx_frm_sln;
* TimeStamp rx_time;
* guint32 pktno;
* gint16 prvlen;
* gint16 offset;
* gint16 tx_errs;
* gint16 rx_filters;
* gint8 unused[2];
* gint16 hwcolls;
* gint16 hwcollschans;
* Packetdata ....;
* } LA_PacketRecord;
*/
#define LA_PacketRecordSize 32
/*
* typedef struct {
* Date datcre;
* Date datclo;
* Time timeopn;
* Time timeclo;
* Eadr statadr;
* gint16 mxseqno;
* gint16 slcoff;
* gint16 mxslc;
* gint32 totpktt;
* gint32 statrg;
* gint32 stptrg;
* gint32 mxpkta[36];
* gint16 board_type;
* gint16 board_version;
* gint8 reserved[18];
* } Summary;
*/
#define SummarySize (18+22+(4*36)+6+6+6+4+4)
/*
* typedef struct {
* gint16 rid;
* gint16 rlen;
* Summary s;
* } LA_SummaryRecord;
*/
#define LA_SummaryRecordSize (SummarySize + 4)
/*
* typedef struct {
* gint16 rid;
* gint16 rlen;
* gint16 seqno;
* gint32 totpktf;
* } LA_SubfileSummaryRecord;
*/
#define LA_SubfileSummaryRecordSize 10
#define LA_IndexSize 500
/*
* typedef struct {
* gint16 rid;
* gint16 rlen;
* gint16 idxsp; = LA_IndexSize
* gint16 idxct;
* gint8 idxgranu;
* gint8 idxvd;
* gint32 trcidx[LA_IndexSize + 2]; +2 undocumented but used by La 2.2
* } LA_IndexRecord;
*/
#define LA_IndexRecordSize (10 + 4 * (LA_IndexSize + 2))
/*
* typedef struct {
* gint16 rid;
* gint16 rlen;
* } LA_RecordHeader;
*/
#define LA_RecordHeaderSize 4
typedef struct {
gboolean init;
struct timeval start;
guint32 pkts;
int encap;
int lastlen;
} LA_TmpInfo;
int lanalyzer_open(wtap *wth, int *err, gchar **err_info);
gboolean lanalyzer_dump_open(wtap_dumper *wdh, int *err);
int lanalyzer_dump_can_write_encap(int encap);
#endif