Commit | Line | Data |
---|---|---|
14675b17 DG |
1 | /* |
2 | * Copyright (c) 1990 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
5 | * Redistribution and use in source and binary forms, with or without | |
6 | * modification, are permitted provided that: (1) source code distributions | |
7 | * retain the above copyright notice and this paragraph in its entirety, (2) | |
8 | * distributions including binary code include the above copyright notice and | |
9 | * this paragraph in its entirety in the documentation or other materials | |
10 | * provided with the distribution, and (3) all advertising materials mentioning | |
11 | * features or use of this software display the following acknowledgement: | |
12 | * ``This product includes software developed by the University of California, | |
13 | * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of | |
14 | * the University nor the names of its contributors may be used to endorse | |
15 | * or promote products derived from this software without specific prior | |
16 | * written permission. | |
17 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED | |
18 | * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF | |
19 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
20 | */ | |
21 | #ifndef lint | |
22 | static char rcsid[] = | |
23 | "@(#) $Header: bpf_dump.c,v 1.1 92/01/29 13:25:30 mccanne Exp $ (LBL)"; | |
24 | #endif | |
25 | ||
26 | #include <sys/types.h> | |
27 | #include <sys/time.h> | |
28 | #include <net/bpf.h> | |
29 | ||
30 | void | |
31 | bpf_dump(p, option) | |
32 | struct bpf_program *p; | |
33 | int option; | |
34 | { | |
35 | struct bpf_insn *insn; | |
36 | int i; | |
37 | int n = p->bf_len; | |
38 | ||
39 | insn = p->bf_insns; | |
40 | if (option > 2) { | |
41 | printf("%d\n", n); | |
42 | for (i = 0; i < n; ++insn, ++i) { | |
43 | printf("%lu %lu %lu %lu\n", insn->code, | |
44 | insn->jt, insn->jf, insn->k); | |
45 | } | |
46 | return ; | |
47 | } | |
48 | if (option > 1) { | |
49 | for (i = 0; i < n; ++insn, ++i) | |
50 | printf("{ 0x%x, %d, %d, 0x%08x },\n", | |
51 | insn->code, insn->jt, insn->jf, insn->k); | |
52 | return; | |
53 | } | |
54 | for (i = 0; i < n; ++insn, ++i) { | |
55 | #ifdef BDEBUG | |
56 | extern int bids[]; | |
57 | printf(bids[i] > 0 ? "[%02d]" : " -- ", bids[i] - 1); | |
58 | #endif | |
59 | puts(bpf_image(insn, i)); | |
60 | } | |
61 | } |