pcap-int.h revision 8ad0dd2a5c5f23cd210aedba72a43e48026e7436
18ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
28ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Copyright (c) 1994, 1995, 1996
38ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
48ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
58ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Redistribution and use in source and binary forms, with or without
68ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * modification, are permitted provided that the following conditions
78ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * are met:
88ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
98ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *    documentation and/or other materials provided with the distribution.
138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 3. All advertising materials mentioning features or use of this software
148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *    must display the following acknowledgement:
158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *	This product includes software developed by the Computer Systems
168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *	Engineering Group at Lawrence Berkeley Laboratory.
178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 4. Neither the name of the University nor of the Laboratory may be used
188ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *    to endorse or promote products derived from this software without
198ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *    specific prior written permission.
208ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
218ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
228ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
238ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
248ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
258ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
268ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
278ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
288ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
298ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
308ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
318ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * SUCH DAMAGE.
328ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
338ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * @(#) $Header: /data/cvs/ppp/include/pcap-int.h,v 1.1 2000/08/01 01:37:24 paulus Exp $ (LBL)
348ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
358ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
368ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef pcap_int_h
378ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define pcap_int_h
388ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
398ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#include <pcap.h>
408ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
418ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
428ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Savefile
438ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
448ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectstruct pcap_sf {
458ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	FILE *rfile;
468ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int swapped;
478ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int version_major;
488ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int version_minor;
498ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	u_char *base;
508ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project};
518ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
528ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectstruct pcap_md {
538ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	struct pcap_stat stat;
548ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	/*XXX*/
558ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int use_bpf;
568ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	u_long	TotPkts;	/* can't oflow for 79 hrs on ether */
578ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	u_long	TotAccepted;	/* count accepted by filter */
588ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	u_long	TotDrops;	/* count of dropped packets */
598ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	long	TotMissed;	/* missed by i/f during this run */
608ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	long	OrigMissed;	/* missed by i/f before this run */
618ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifdef linux
628ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int pad;
638ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int skip;
648ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	char *device;
658ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
668ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project};
678ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
688ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectstruct pcap {
698ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int fd;
708ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int snapshot;
718ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int linktype;
728ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int tzoff;		/* timezone offset */
738ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int offset;		/* offset for proper alignment */
748ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
758ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	struct pcap_sf sf;
768ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	struct pcap_md md;
778ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
788ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	/*
798ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	 * Read buffer.
808ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	 */
818ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int bufsize;
828ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	u_char *buffer;
838ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	u_char *bp;
848ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int cc;
858ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
868ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	/*
878ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	 * Place holder for pcap_next().
888ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	 */
898ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	u_char *pkt;
908ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
918ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
928ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	/*
938ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	 * Placeholder for filter code if bpf not in kernel.
948ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	 */
958ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	struct bpf_program fcode;
968ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
978ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	char errbuf[PCAP_ERRBUF_SIZE];
988ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project};
998ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1008ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint	yylex(void);
1018ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1028ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#ifndef min
1038ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define min(a, b) ((a) > (b) ? (b) : (a))
1048ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
1058ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1068ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* XXX should these be in pcap.h? */
1078ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint	pcap_offline_read(pcap_t *, int, pcap_handler, u_char *);
1088ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectint	pcap_read(pcap_t *, int cnt, pcap_handler, u_char *);
1098ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* Ultrix pads to make everything line up on a nice boundary */
1118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#if defined(ultrix) || defined(__alpha)
1128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define       PCAP_FDDIPAD 3
1138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
1148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* XXX */
1168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern	int pcap_fddipad;
1178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#endif
118