Deleted Added
full compact
bpf.c (56057) bpf.c (58192)
1/*
2 * Copyright (c) 1990, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from the Stanford/CMU enet packet filter,
6 * (net/enet.c) distributed as part of 4.3BSD, and code contributed
7 * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
8 * Berkeley Laboratory.

--- 23 unchanged lines hidden (view full) ---

32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)bpf.c 8.2 (Berkeley) 3/28/94
39 *
1/*
2 * Copyright (c) 1990, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from the Stanford/CMU enet packet filter,
6 * (net/enet.c) distributed as part of 4.3BSD, and code contributed
7 * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
8 * Berkeley Laboratory.

--- 23 unchanged lines hidden (view full) ---

32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)bpf.c 8.2 (Berkeley) 3/28/94
39 *
40 * $FreeBSD: head/sys/net/bpf.c 56057 2000-01-15 19:46:12Z phk $
40 * $FreeBSD: head/sys/net/bpf.c 58192 2000-03-18 06:30:42Z rwatson $
41 */
42
43#include "bpf.h"
44
45#ifndef __GNUC__
46#define inline
47#else
48#define inline __inline

--- 305 unchanged lines hidden (view full) ---

354 if (d)
355 return (EBUSY);
356 make_dev(&bpf_cdevsw, minor(dev), 0, 0, 0600, "bpf%d", lminor(dev));
357 MALLOC(d, struct bpf_d *, sizeof(*d), M_BPF, M_WAITOK);
358 bzero(d, sizeof(*d));
359 dev->si_drv1 = d;
360 d->bd_bufsize = bpf_bufsize;
361 d->bd_sig = SIGIO;
41 */
42
43#include "bpf.h"
44
45#ifndef __GNUC__
46#define inline
47#else
48#define inline __inline

--- 305 unchanged lines hidden (view full) ---

354 if (d)
355 return (EBUSY);
356 make_dev(&bpf_cdevsw, minor(dev), 0, 0, 0600, "bpf%d", lminor(dev));
357 MALLOC(d, struct bpf_d *, sizeof(*d), M_BPF, M_WAITOK);
358 bzero(d, sizeof(*d));
359 dev->si_drv1 = d;
360 d->bd_bufsize = bpf_bufsize;
361 d->bd_sig = SIGIO;
362 d->bd_seesent = 1;
362
363 return (0);
364}
365
366/*
367 * Close the descriptor by detaching it from its interface,
368 * deallocating its buffers, and marking it free.
369 */

--- 258 unchanged lines hidden (view full) ---

628 * BIOCSETIF Set interface.
629 * BIOCSRTIMEOUT Set read timeout.
630 * BIOCGRTIMEOUT Get read timeout.
631 * BIOCGSTATS Get packet stats.
632 * BIOCIMMEDIATE Set immediate mode.
633 * BIOCVERSION Get filter language version.
634 * BIOCGHDRCMPLT Get "header already complete" flag
635 * BIOCSHDRCMPLT Set "header already complete" flag
363
364 return (0);
365}
366
367/*
368 * Close the descriptor by detaching it from its interface,
369 * deallocating its buffers, and marking it free.
370 */

--- 258 unchanged lines hidden (view full) ---

629 * BIOCSETIF Set interface.
630 * BIOCSRTIMEOUT Set read timeout.
631 * BIOCGRTIMEOUT Get read timeout.
632 * BIOCGSTATS Get packet stats.
633 * BIOCIMMEDIATE Set immediate mode.
634 * BIOCVERSION Get filter language version.
635 * BIOCGHDRCMPLT Get "header already complete" flag
636 * BIOCSHDRCMPLT Set "header already complete" flag
637 * BIOCGSEESENT Get "see packets sent" flag
638 * BIOCSSEESENT Set "see packets sent" flag
636 */
637/* ARGSUSED */
638static int
639bpfioctl(dev, cmd, addr, flags, p)
640 dev_t dev;
641 u_long cmd;
642 caddr_t addr;
643 int flags;

--- 199 unchanged lines hidden (view full) ---

843
844 /*
845 * Set "header already complete" flag
846 */
847 case BIOCSHDRCMPLT:
848 d->bd_hdrcmplt = *(u_int *)addr ? 1 : 0;
849 break;
850
639 */
640/* ARGSUSED */
641static int
642bpfioctl(dev, cmd, addr, flags, p)
643 dev_t dev;
644 u_long cmd;
645 caddr_t addr;
646 int flags;

--- 199 unchanged lines hidden (view full) ---

846
847 /*
848 * Set "header already complete" flag
849 */
850 case BIOCSHDRCMPLT:
851 d->bd_hdrcmplt = *(u_int *)addr ? 1 : 0;
852 break;
853
854 /*
855 * Get "see sent packets" flag
856 */
857 case BIOCGSEESENT:
858 *(u_int *)addr = d->bd_seesent;
859 break;
860
861 /*
862 * Set "see sent packets" flag
863 */
864 case BIOCSSEESENT:
865 d->bd_seesent = *(u_int *)addr;
866 break;
867
851 case FIONBIO: /* Non-blocking I/O */
852 break;
853
854 case FIOASYNC: /* Send signal on receive packets */
855 d->bd_async = *(int *)addr;
856 break;
857
858 case FIOSETOWN:

--- 239 unchanged lines hidden (view full) ---

1098 u_int pktlen, slen;
1099 struct mbuf *m0;
1100
1101 pktlen = 0;
1102 for (m0 = m; m0 != 0; m0 = m0->m_next)
1103 pktlen += m0->m_len;
1104
1105 for (d = bp->bif_dlist; d != 0; d = d->bd_next) {
868 case FIONBIO: /* Non-blocking I/O */
869 break;
870
871 case FIOASYNC: /* Send signal on receive packets */
872 d->bd_async = *(int *)addr;
873 break;
874
875 case FIOSETOWN:

--- 239 unchanged lines hidden (view full) ---

1115 u_int pktlen, slen;
1116 struct mbuf *m0;
1117
1118 pktlen = 0;
1119 for (m0 = m; m0 != 0; m0 = m0->m_next)
1120 pktlen += m0->m_len;
1121
1122 for (d = bp->bif_dlist; d != 0; d = d->bd_next) {
1123 if (!d->bd_seesent && (m->m_pkthdr.rcvif == NULL))
1124 continue;
1106 ++d->bd_rcount;
1107 slen = bpf_filter(d->bd_filter, (u_char *)m, pktlen, 0);
1108 if (slen != 0)
1109 catchpacket(d, (u_char *)m, pktlen, slen, bpf_mcopy);
1110 }
1111}
1112
1113/*

--- 210 unchanged lines hidden ---
1125 ++d->bd_rcount;
1126 slen = bpf_filter(d->bd_filter, (u_char *)m, pktlen, 0);
1127 if (slen != 0)
1128 catchpacket(d, (u_char *)m, pktlen, slen, bpf_mcopy);
1129 }
1130}
1131
1132/*

--- 210 unchanged lines hidden ---