154097Sarchie/* 254097Sarchie * ng_bpf.h 3139823Simp */ 4139823Simp 5139823Simp/*- 654097Sarchie * Copyright (c) 1996-1999 Whistle Communications, Inc. 754097Sarchie * All rights reserved. 854097Sarchie * 954097Sarchie * Subject to the following obligations and disclaimer of warranty, use and 1054097Sarchie * redistribution of this software, in source or object code forms, with or 1154097Sarchie * without modifications are expressly permitted by Whistle Communications; 1254097Sarchie * provided, however, that: 1354097Sarchie * 1. Any and all reproductions of the source or object code must include the 1454097Sarchie * copyright notice above and the following disclaimer of warranties; and 1554097Sarchie * 2. No rights are granted, in any manner or form, to use Whistle 1654097Sarchie * Communications, Inc. trademarks, including the mark "WHISTLE 1754097Sarchie * COMMUNICATIONS" on advertising, endorsements, or otherwise except as 1854097Sarchie * such appears in the above copyright notice or in the software. 1954097Sarchie * 2054097Sarchie * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND 2154097Sarchie * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO 2254097Sarchie * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, 2354097Sarchie * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF 2454097Sarchie * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. 2571821Sjulian * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY 2654097Sarchie * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS 2754097Sarchie * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE. 2854097Sarchie * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES 2954097Sarchie * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING 3054097Sarchie * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 3154097Sarchie * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR 3254097Sarchie * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY 3354097Sarchie * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3454097Sarchie * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 3554097Sarchie * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY 3654097Sarchie * OF SUCH DAMAGE. 3754097Sarchie * 3867506Sjulian * Author: Archie Cobbs <archie@freebsd.org> 3954097Sarchie * 4054097Sarchie * $FreeBSD$ 4154097Sarchie * $Whistle: ng_bpf.h,v 1.3 1999/12/03 20:30:23 archie Exp $ 4254097Sarchie */ 4354097Sarchie 44122481Sru#ifndef _NETGRAPH_NG_BPF_H_ 45122481Sru#define _NETGRAPH_NG_BPF_H_ 4654097Sarchie 4754097Sarchie/* Node type name and magic cookie */ 4854097Sarchie#define NG_BPF_NODE_TYPE "bpf" 4954097Sarchie#define NGM_BPF_COOKIE 944100792 5054097Sarchie 5154097Sarchie/* Program structure for one hook */ 5254097Sarchiestruct ng_bpf_hookprog { 53125028Sharti char thisHook[NG_HOOKSIZ]; /* name of hook */ 54125028Sharti char ifMatch[NG_HOOKSIZ]; /* match dest hook */ 55125028Sharti char ifNotMatch[NG_HOOKSIZ]; /* !match dest hook */ 56141751Sru int32_t bpf_prog_len; /* #insns in program */ 5797722Salfred struct bpf_insn bpf_prog[]; /* bpf program */ 5854097Sarchie}; 5954097Sarchie 6054214Sarchie#define NG_BPF_HOOKPROG_SIZE(numInsn) \ 6154214Sarchie (sizeof(struct ng_bpf_hookprog) + (numInsn) * sizeof(struct bpf_insn)) 6254097Sarchie 6354097Sarchie/* Keep this in sync with the above structure definition */ 6454097Sarchie#define NG_BPF_HOOKPROG_TYPE_INFO(bptype) { \ 6554097Sarchie { "thisHook", &ng_parse_hookbuf_type }, \ 6654097Sarchie { "ifMatch", &ng_parse_hookbuf_type }, \ 6754097Sarchie { "ifNotMatch", &ng_parse_hookbuf_type }, \ 6854097Sarchie { "bpf_prog_len", &ng_parse_int32_type }, \ 6954097Sarchie { "bpf_prog", (bptype) }, \ 7097685Sarchie { NULL } \ 7154097Sarchie} 7254097Sarchie 7354097Sarchie/* Statistics structure for one hook */ 7454097Sarchiestruct ng_bpf_hookstat { 7554097Sarchie u_int64_t recvFrames; 7654097Sarchie u_int64_t recvOctets; 7754097Sarchie u_int64_t recvMatchFrames; 7854097Sarchie u_int64_t recvMatchOctets; 7954097Sarchie u_int64_t xmitFrames; 8054097Sarchie u_int64_t xmitOctets; 8154097Sarchie}; 8254097Sarchie 8354097Sarchie/* Keep this in sync with the above structure definition */ 8454097Sarchie#define NG_BPF_HOOKSTAT_TYPE_INFO { \ 8564508Sarchie { "recvFrames", &ng_parse_uint64_type }, \ 8664508Sarchie { "recvOctets", &ng_parse_uint64_type }, \ 8764508Sarchie { "recvMatchFrames", &ng_parse_uint64_type }, \ 8864508Sarchie { "recvMatchOctets", &ng_parse_uint64_type }, \ 8964508Sarchie { "xmitFrames", &ng_parse_uint64_type }, \ 9064508Sarchie { "xmitOctets", &ng_parse_uint64_type }, \ 9197685Sarchie { NULL } \ 9254097Sarchie} 9354097Sarchie 9454097Sarchie/* Netgraph commands */ 9554097Sarchieenum { 9654097Sarchie NGM_BPF_SET_PROGRAM = 1, /* supply a struct ng_bpf_hookprog */ 9754097Sarchie NGM_BPF_GET_PROGRAM, /* returns a struct ng_bpf_hookprog */ 98125028Sharti NGM_BPF_GET_STATS, /* supply name as char[NG_HOOKSIZ] */ 99125028Sharti NGM_BPF_CLR_STATS, /* supply name as char[NG_HOOKSIZ] */ 100125028Sharti NGM_BPF_GETCLR_STATS, /* supply name as char[NG_HOOKSIZ] */ 10154097Sarchie}; 10254097Sarchie 103122481Sru#endif /* _NETGRAPH_NG_BPF_H_ */ 104