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