Subversion Repositories SvarDOS

Rev

Rev 616 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
207 mateuszvis 1
/*!\file net/bpfdesc.h
2
 * Berkeley Packet Filter definitions.
3
 */
4
 
5
/*      $NetBSD: bpfdesc.h,v 1.13 1997/10/09 18:58:12 christos Exp $    */
6
 
7
/*
8
 * Copyright (c) 1990, 1991, 1993
9
 *	The Regents of the University of California.  All rights reserved.
10
 *
11
 * This code is derived from the Stanford/CMU enet packet filter,
12
 * (net/enet.c) distributed as part of 4.3BSD, and code contributed
13
 * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
14
 * Berkeley Laboratory.
15
 *
16
 * Redistribution and use in source and binary forms, with or without
17
 * modification, are permitted provided that the following conditions
18
 * are met:
19
 * 1. Redistributions of source code must retain the above copyright
20
 *    notice, this list of conditions and the following disclaimer.
21
 * 2. Redistributions in binary form must reproduce the above copyright
22
 *    notice, this list of conditions and the following disclaimer in the
23
 *    documentation and/or other materials provided with the distribution.
24
 * 3. All advertising materials mentioning features or use of this software
25
 *    must display the following acknowledgement:
26
 *	This product includes software developed by the University of
27
 *	California, Berkeley and its contributors.
28
 * 4. Neither the name of the University nor the names of its contributors
29
 *    may be used to endorse or promote products derived from this software
30
 *    without specific prior written permission.
31
 *
32
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
33
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
34
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
35
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
36
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
40
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
41
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
42
 * SUCH DAMAGE.
43
 *
44
 *	@(#)bpfdesc.h	8.1 (Berkeley) 6/10/93
45
 *
46
 * @(#) Header: bpfdesc.h,v 1.14 96/06/16 22:28:07 leres Exp  (LBL)
47
 */
48
 
49
#ifndef __NET_BPF_DESC_H
50
#define __NET_BPF_DESC_H
51
 
52
/*
53
 * Descriptor associated with each open bpf file.
54
 */
55
struct bpf_d {
56
	struct bpf_d	*bd_next;	/* Linked list of descriptors */
57
	/*
58
	 * Buffer slots: two mbuf clusters buffer the incoming packets.
59
	 *   The model has three slots.  Sbuf is always occupied.
60
	 *   sbuf (store) - Receive interrupt puts packets here.
61
	 *   hbuf (hold) - When sbuf is full, put cluster here and
62
	 *                 wakeup read (replace sbuf with fbuf).
63
	 *   fbuf (free) - When read is done, put cluster here.
64
	 * On receiving, if sbuf is full and fbuf is 0, packet is dropped.
65
	 */
66
	caddr_t		bd_sbuf;	/* store slot */
67
	caddr_t		bd_hbuf;	/* hold slot */
68
	caddr_t		bd_fbuf;	/* free slot */
69
	int 		bd_slen;	/* current length of store buffer */
70
	int 		bd_hlen;	/* current length of hold buffer */
71
 
72
	int		bd_bufsize;	/* absolute length of buffers */
73
 
74
	struct bpf_if *	bd_bif;		/* interface descriptor */
75
	u_long		bd_rtout;	/* Read timeout in 'ticks' */
76
	struct bpf_insn *bd_filter; 	/* filter code */
77
	u_long		bd_rcount;	/* number of packets received */
78
	u_long		bd_dcount;	/* number of packets dropped */
79
 
80
	u_char		bd_promisc;	/* true if listening promiscuously */
81
	u_char		bd_state;	/* idle, waiting, or timed out */
82
	u_char		bd_immediate;	/* true to return on packet arrival */
83
	int		bd_async;	/* non-zero if packet reception should generate signal */
84
        int             bd_pgid;        /* process or group id for signal */
85
#if BSD < 199103
86
	u_char		bd_selcoll;	/* true if selects collide */
87
	int		bd_timedout;
88
	struct proc *	bd_selproc;	/* process that last selected us */
89
#else
90
	u_char		bd_pad;		/* explicit alignment */
91
	struct selinfo	bd_sel;		/* bsd select info */
92
#endif
93
};
94
 
95
/*
96
 * Descriptor associated with each attached hardware interface.
97
 */
98
struct bpf_if {
99
	struct bpf_if *bif_next;	/* list of all interfaces */
100
	struct bpf_d *bif_dlist;	/* descriptor list */
101
	struct bpf_if **bif_driverp;	/* pointer into softc */
102
	u_int bif_dlt;			/* link layer type */
103
	u_int bif_hdrlen;		/* length of header (with padding) */
104
	struct ifnet *bif_ifp;		/* correspoding interface */
105
};
106
 
107
#endif