File:  [DragonFly] / src / sys / netgraph / bpf / ng_bpf.h
Revision 1.3: download - view: text, annotated - select for diffs
Sat Feb 14 17:47:41 2004 UTC (10 years, 5 months ago) by dillon
Branches: MAIN
CVS tags: HEAD
C99 specify ary[] instead of ary[0] in structure.

Obtained-from: FreeBSD-5
Submitted-by: YONETANI Tomokazu <qhwt+dragonfly-submit@les.ath.cx>

    1: 
    2: /*
    3:  * ng_bpf.h
    4:  *
    5:  * Copyright (c) 1996-1999 Whistle Communications, Inc.
    6:  * All rights reserved.
    7:  * 
    8:  * Subject to the following obligations and disclaimer of warranty, use and
    9:  * redistribution of this software, in source or object code forms, with or
   10:  * 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 the
   13:  *    copyright notice above and the following disclaimer of warranties; and
   14:  * 2. No rights are granted, in any manner or form, to use Whistle
   15:  *    Communications, Inc. trademarks, including the mark "WHISTLE
   16:  *    COMMUNICATIONS" on advertising, endorsements, or otherwise except as
   17:  *    such appears in the above copyright notice or in the software.
   18:  * 
   19:  * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
   20:  * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
   21:  * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
   22:  * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
   23:  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
   24:  * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANBPF, OR MAKE ANY
   25:  * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
   26:  * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
   27:  * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
   28:  * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
   29:  * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
   30:  * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
   31:  * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
   32:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   33:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   34:  * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
   35:  * OF SUCH DAMAGE.
   36:  *
   37:  * Author: Archie Cobbs <archie@freebsd.org>
   38:  *
   39:  * $FreeBSD: src/sys/netgraph/ng_bpf.h,v 1.2.4.3 2002/07/02 23:44:02 archie Exp $
   40:  * $DragonFly: src/sys/netgraph/bpf/ng_bpf.h,v 1.3 2004/02/14 17:47:41 dillon Exp $
   41:  * $Whistle: ng_bpf.h,v 1.3 1999/12/03 20:30:23 archie Exp $
   42:  */
   43: 
   44: #ifndef _NETGRAPH_BPF_H_
   45: #define _NETGRAPH_BPF_H_
   46: 
   47: /* Node type name and magic cookie */
   48: #define NG_BPF_NODE_TYPE	"bpf"
   49: #define NGM_BPF_COOKIE		944100792
   50: 
   51: /* Program structure for one hook */
   52: struct ng_bpf_hookprog {
   53: 	char		thisHook[NG_HOOKLEN+1];		/* name of hook */
   54: 	char		ifMatch[NG_HOOKLEN+1];		/* match dest hook */
   55: 	char		ifNotMatch[NG_HOOKLEN+1];	/* !match dest hook */
   56: 	int32_t		bpf_prog_len;			/* #isns in program */
   57: 	struct bpf_insn	bpf_prog[];			/* bpf program */
   58: };
   59: 
   60: #define NG_BPF_HOOKPROG_SIZE(numInsn)	\
   61: 	(sizeof(struct ng_bpf_hookprog) + (numInsn) * sizeof(struct bpf_insn))
   62: 
   63: /* Keep this in sync with the above structure definition */
   64: #define NG_BPF_HOOKPROG_TYPE_INFO(bptype)	{		\
   65: 	  { "thisHook",		&ng_parse_hookbuf_type	},	\
   66: 	  { "ifMatch",		&ng_parse_hookbuf_type	},	\
   67: 	  { "ifNotMatch",	&ng_parse_hookbuf_type	},	\
   68: 	  { "bpf_prog_len",	&ng_parse_int32_type	},	\
   69: 	  { "bpf_prog",		(bptype)		},	\
   70: 	  { NULL }						\
   71: }
   72: 
   73: /* Statistics structure for one hook */
   74: struct ng_bpf_hookstat {
   75: 	u_int64_t	recvFrames;
   76: 	u_int64_t	recvOctets;
   77: 	u_int64_t	recvMatchFrames;
   78: 	u_int64_t	recvMatchOctets;
   79: 	u_int64_t	xmitFrames;
   80: 	u_int64_t	xmitOctets;
   81: };
   82: 
   83: /* Keep this in sync with the above structure definition */
   84: #define NG_BPF_HOOKSTAT_TYPE_INFO	{			\
   85: 	  { "recvFrames",	&ng_parse_uint64_type	},	\
   86: 	  { "recvOctets",	&ng_parse_uint64_type	},	\
   87: 	  { "recvMatchFrames",	&ng_parse_uint64_type	},	\
   88: 	  { "recvMatchOctets",	&ng_parse_uint64_type	},	\
   89: 	  { "xmitFrames",	&ng_parse_uint64_type	},	\
   90: 	  { "xmitOctets",	&ng_parse_uint64_type	},	\
   91: 	  { NULL }						\
   92: }
   93: 
   94: /* Netgraph commands */
   95: enum {
   96: 	NGM_BPF_SET_PROGRAM = 1,	/* supply a struct ng_bpf_hookprog */
   97: 	NGM_BPF_GET_PROGRAM,		/* returns a struct ng_bpf_hookprog */
   98: 	NGM_BPF_GET_STATS,		/* supply name as char[NG_HOOKLEN+1] */
   99: 	NGM_BPF_CLR_STATS,		/* supply name as char[NG_HOOKLEN+1] */
  100: 	NGM_BPF_GETCLR_STATS,		/* supply name as char[NG_HOOKLEN+1] */
  101: };
  102: 
  103: #endif /* _NETGRAPH_BPF_H_ */