1585ff168SJulian Elischer /* 2585ff168SJulian Elischer * ng_source.h 3c398230bSWarner Losh */ 4c398230bSWarner Losh 5c398230bSWarner Losh /*- 6585ff168SJulian Elischer * Copyright 2002 Sandvine Inc. 7585ff168SJulian Elischer * All rights reserved. 8585ff168SJulian Elischer * 9585ff168SJulian Elischer * Subject to the following obligations and disclaimer of warranty, use and 10585ff168SJulian Elischer * redistribution of this software, in source or object code forms, with or 11585ff168SJulian Elischer * without modifications are expressly permitted by Sandvine Inc.; 12585ff168SJulian Elischer provided, 13585ff168SJulian Elischer * however, that: 14585ff168SJulian Elischer * 1. Any and all reproductions of the source or object code must include 15585ff168SJulian Elischer the 16585ff168SJulian Elischer * copyright notice above and the following disclaimer of warranties; 17585ff168SJulian Elischer and 18585ff168SJulian Elischer * 2. No rights are granted, in any manner or form, to use Sandvine Inc. 19585ff168SJulian Elischer * trademarks, including the mark "SANDVINE" on advertising, 20585ff168SJulian Elischer endorsements, 21585ff168SJulian Elischer * or otherwise except as such appears in the above copyright notice or 22585ff168SJulian Elischer in 23585ff168SJulian Elischer * the software. 24585ff168SJulian Elischer * 25585ff168SJulian Elischer * THIS SOFTWARE IS BEING PROVIDED BY SANDVINE "AS IS", AND TO THE MAXIMUM 26585ff168SJulian Elischer * EXTENT PERMITTED BY LAW, SANDVINE MAKES NO REPRESENTATIONS OR 27585ff168SJulian Elischer WARRANTIES, 28585ff168SJulian Elischer * EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, INCLUDING WITHOUT 29585ff168SJulian Elischer LIMITATION, 30585ff168SJulian Elischer * ANY AND ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 31585ff168SJulian Elischer PARTICULAR 32585ff168SJulian Elischer * PURPOSE, OR NON-INFRINGEMENT. SANDVINE DOES NOT WARRANT, GUARANTEE, OR 33585ff168SJulian Elischer * MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE 34585ff168SJulian Elischer * USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY 35585ff168SJulian Elischer * OR OTHERWISE. IN NO EVENT SHALL SANDVINE BE LIABLE FOR ANY DAMAGES 36585ff168SJulian Elischer * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING 37585ff168SJulian Elischer * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 38585ff168SJulian Elischer EXEMPLARY, 39585ff168SJulian Elischer * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR 40585ff168SJulian Elischer * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY 41585ff168SJulian Elischer * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 42585ff168SJulian Elischer * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 43585ff168SJulian Elischer * THIS SOFTWARE, EVEN IF SANDVINE IS ADVISED OF THE POSSIBILITY OF SUCH 44585ff168SJulian Elischer * DAMAGE. 45585ff168SJulian Elischer * 46585ff168SJulian Elischer * Author: Dave Chapeskie <dchapeskie@sandvine.com> 47585ff168SJulian Elischer * 48585ff168SJulian Elischer * $FreeBSD$ 49585ff168SJulian Elischer */ 50585ff168SJulian Elischer 51e20480bfSRuslan Ermilov #ifndef _NETGRAPH_NG_SOURCE_H_ 52e20480bfSRuslan Ermilov #define _NETGRAPH_NG_SOURCE_H_ 53585ff168SJulian Elischer 54585ff168SJulian Elischer /* Node type name and magic cookie */ 55585ff168SJulian Elischer #define NG_SOURCE_NODE_TYPE "source" 56585ff168SJulian Elischer #define NGM_SOURCE_COOKIE 1034346805 57585ff168SJulian Elischer 58585ff168SJulian Elischer /* Hook names */ 59585ff168SJulian Elischer #define NG_SOURCE_HOOK_INPUT "input" 60585ff168SJulian Elischer #define NG_SOURCE_HOOK_OUTPUT "output" 61585ff168SJulian Elischer 62585ff168SJulian Elischer /* Statistics structure returned by NGM_SOURCE_GET_STATS */ 63585ff168SJulian Elischer struct ng_source_stats { 64585ff168SJulian Elischer u_int64_t outOctets; 65585ff168SJulian Elischer u_int64_t outFrames; 66585ff168SJulian Elischer u_int32_t queueOctets; 67585ff168SJulian Elischer u_int32_t queueFrames; 68585ff168SJulian Elischer struct timeval startTime; 69585ff168SJulian Elischer struct timeval endTime; 70585ff168SJulian Elischer struct timeval elapsedTime; 71585ff168SJulian Elischer }; 72585ff168SJulian Elischer 73585ff168SJulian Elischer extern const struct ng_parse_type ng_source_timeval_type; 74585ff168SJulian Elischer /* Keep this in sync with the above structure definition */ 75585ff168SJulian Elischer #define NG_SOURCE_STATS_TYPE_INFO { \ 76585ff168SJulian Elischer { "outOctets", &ng_parse_uint64_type }, \ 77585ff168SJulian Elischer { "outFrames", &ng_parse_uint64_type }, \ 78585ff168SJulian Elischer { "queueOctets", &ng_parse_uint32_type }, \ 79585ff168SJulian Elischer { "queueFrames", &ng_parse_uint32_type }, \ 80585ff168SJulian Elischer { "startTime", &ng_source_timeval_type }, \ 81585ff168SJulian Elischer { "endTime", &ng_source_timeval_type }, \ 82585ff168SJulian Elischer { "elapsedTime", &ng_source_timeval_type }, \ 83585ff168SJulian Elischer { NULL } \ 84585ff168SJulian Elischer } 85585ff168SJulian Elischer 86585ff168SJulian Elischer /* Netgraph commands */ 87585ff168SJulian Elischer enum { 88585ff168SJulian Elischer NGM_SOURCE_GET_STATS = 1, /* get stats */ 89585ff168SJulian Elischer NGM_SOURCE_CLR_STATS, /* clear stats */ 90585ff168SJulian Elischer NGM_SOURCE_GETCLR_STATS, /* atomically get and clear stats */ 91585ff168SJulian Elischer NGM_SOURCE_START, /* start sending queued data */ 92585ff168SJulian Elischer NGM_SOURCE_STOP, /* stop sending queued data */ 93585ff168SJulian Elischer NGM_SOURCE_CLR_DATA, /* clear the queued data */ 9446005fe0SHartmut Brandt NGM_SOURCE_START_NOW, /* start on non-ether output */ 95585ff168SJulian Elischer }; 96585ff168SJulian Elischer 97e20480bfSRuslan Ermilov #endif /* _NETGRAPH_NG_SOURCE_H_ */ 98