/*1* ng_bpf.h2*/34/*-5* Copyright (c) 1996-1999 Whistle Communications, Inc.6* All rights reserved.7*8* Subject to the following obligations and disclaimer of warranty, use and9* redistribution of this software, in source or object code forms, with or10* without modifications are expressly permitted by Whistle Communications;11* provided, however, that:12* 1. Any and all reproductions of the source or object code must include the13* copyright notice above and the following disclaimer of warranties; and14* 2. No rights are granted, in any manner or form, to use Whistle15* Communications, Inc. trademarks, including the mark "WHISTLE16* COMMUNICATIONS" on advertising, endorsements, or otherwise except as17* such appears in the above copyright notice or in the software.18*19* THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND20* TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO21* REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,22* INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF23* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.24* WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY25* REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS26* SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.27* IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES28* RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING29* WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,30* PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR31* SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY32* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT33* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF34* THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY35* OF SUCH DAMAGE.36*37* Author: Archie Cobbs <[email protected]>38* $Whistle: ng_bpf.h,v 1.3 1999/12/03 20:30:23 archie Exp $39*/4041#ifndef _NETGRAPH_NG_BPF_H_42#define _NETGRAPH_NG_BPF_H_4344/* Node type name and magic cookie */45#define NG_BPF_NODE_TYPE "bpf"46#define NGM_BPF_COOKIE 9441007924748/* Program structure for one hook */49struct ng_bpf_hookprog {50char thisHook[NG_HOOKSIZ]; /* name of hook */51char ifMatch[NG_HOOKSIZ]; /* match dest hook */52char ifNotMatch[NG_HOOKSIZ]; /* !match dest hook */53int32_t bpf_prog_len; /* #insns in program */54struct bpf_insn bpf_prog[]; /* bpf program */55};5657#define NG_BPF_HOOKPROG_SIZE(numInsn) \58(sizeof(struct ng_bpf_hookprog) + (numInsn) * sizeof(struct bpf_insn))5960/* Keep this in sync with the above structure definition */61#define NG_BPF_HOOKPROG_TYPE_INFO(bptype) { \62{ "thisHook", &ng_parse_hookbuf_type }, \63{ "ifMatch", &ng_parse_hookbuf_type }, \64{ "ifNotMatch", &ng_parse_hookbuf_type }, \65{ "bpf_prog_len", &ng_parse_int32_type }, \66{ "bpf_prog", (bptype) }, \67{ NULL } \68}6970/* Statistics structure for one hook */71struct ng_bpf_hookstat {72u_int64_t recvFrames;73u_int64_t recvOctets;74u_int64_t recvMatchFrames;75u_int64_t recvMatchOctets;76u_int64_t xmitFrames;77u_int64_t xmitOctets;78};7980/* Keep this in sync with the above structure definition */81#define NG_BPF_HOOKSTAT_TYPE_INFO { \82{ "recvFrames", &ng_parse_uint64_type }, \83{ "recvOctets", &ng_parse_uint64_type }, \84{ "recvMatchFrames", &ng_parse_uint64_type }, \85{ "recvMatchOctets", &ng_parse_uint64_type }, \86{ "xmitFrames", &ng_parse_uint64_type }, \87{ "xmitOctets", &ng_parse_uint64_type }, \88{ NULL } \89}9091/* Netgraph commands */92enum {93NGM_BPF_SET_PROGRAM = 1, /* supply a struct ng_bpf_hookprog */94NGM_BPF_GET_PROGRAM, /* returns a struct ng_bpf_hookprog */95NGM_BPF_GET_STATS, /* supply name as char[NG_HOOKSIZ] */96NGM_BPF_CLR_STATS, /* supply name as char[NG_HOOKSIZ] */97NGM_BPF_GETCLR_STATS, /* supply name as char[NG_HOOKSIZ] */98};99100#endif /* _NETGRAPH_NG_BPF_H_ */101102103