ng_hole.c revision 52419
1186557Skmacy 2186557Skmacy/* 3186557Skmacy * ng_hole.c 4255040Sgibbs * 5186557Skmacy * Copyright (c) 1996-1999 Whistle Communications, Inc. 6255040Sgibbs * All rights reserved. 7255040Sgibbs * 8255040Sgibbs * Subject to the following obligations and disclaimer of warranty, use and 9255040Sgibbs * redistribution of this software, in source or object code forms, with or 10255040Sgibbs * without modifications are expressly permitted by Whistle Communications; 11255040Sgibbs * provided, however, that: 12255040Sgibbs * 1. Any and all reproductions of the source or object code must include the 13255040Sgibbs * copyright notice above and the following disclaimer of warranties; and 14255040Sgibbs * 2. No rights are granted, in any manner or form, to use Whistle 15255040Sgibbs * Communications, Inc. trademarks, including the mark "WHISTLE 16255040Sgibbs * COMMUNICATIONS" on advertising, endorsements, or otherwise except as 17255040Sgibbs * such appears in the above copyright notice or in the software. 18255040Sgibbs * 19255040Sgibbs * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND 20255040Sgibbs * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO 21255040Sgibbs * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, 22255040Sgibbs * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF 23255040Sgibbs * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. 24255040Sgibbs * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY 25255040Sgibbs * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS 26255040Sgibbs * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE. 27255040Sgibbs * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES 28186557Skmacy * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING 29186557Skmacy * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 30186557Skmacy * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR 31186557Skmacy * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY 32255040Sgibbs * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33255040Sgibbs * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 34186557Skmacy * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY 35186557Skmacy * OF SUCH DAMAGE. 36255040Sgibbs * 37186557Skmacy * Author: Julian Elisher <julian@whistle.com> 38255040Sgibbs * 39255040Sgibbs * $FreeBSD: head/sys/netgraph/ng_hole.c 52419 1999-10-21 09:06:11Z julian $ 40255040Sgibbs * $Whistle: ng_hole.c,v 1.8 1999/01/28 23:54:53 julian Exp $ 41255040Sgibbs */ 42255040Sgibbs 43255040Sgibbs/* 44186557Skmacy * This node is a 'black hole' that simply discards everything it receives 45186557Skmacy */ 46255040Sgibbs 47186557Skmacy#include <sys/param.h> 48255040Sgibbs#include <sys/systm.h> 49255040Sgibbs#include <sys/errno.h> 50255040Sgibbs#include <sys/kernel.h> 51255040Sgibbs#include <sys/malloc.h> 52255040Sgibbs#include <sys/mbuf.h> 53255040Sgibbs#include <sys/syslog.h> 54186557Skmacy#include <netgraph/ng_message.h> 55255040Sgibbs#include <netgraph/netgraph.h> 56255040Sgibbs#include <netgraph/ng_hole.h> 57255040Sgibbs 58255040Sgibbs/* Netgraph methods */ 59255040Sgibbsstatic int ngh_rcvdata(hook_p hook, struct mbuf *m, meta_p meta); 60255040Sgibbsstatic int ngh_disconnect(hook_p hook); 61255040Sgibbs 62255040Sgibbsstatic struct ng_type typestruct = { 63255040Sgibbs NG_VERSION, 64186557Skmacy NG_HOLE_NODE_TYPE, 65186557Skmacy NULL, 66255040Sgibbs NULL, 67186557Skmacy NULL, 68255040Sgibbs NULL, 69255040Sgibbs NULL, 70255040Sgibbs NULL, 71255040Sgibbs NULL, 72255040Sgibbs ngh_rcvdata, 73186557Skmacy ngh_rcvdata, 74186557Skmacy ngh_disconnect 75255040Sgibbs}; 76186557SkmacyNETGRAPH_INIT(hole, &typestruct); 77255040Sgibbs 78255040Sgibbs/* 79255040Sgibbs * Receive data 80255040Sgibbs */ 81255040Sgibbsstatic int 82186557Skmacyngh_rcvdata(hook_p hook, struct mbuf *m, meta_p meta) 83255040Sgibbs{ 84255040Sgibbs NG_FREE_DATA(m, meta); 85255040Sgibbs return 0; 86186557Skmacy} 87255040Sgibbs 88/* 89 * Hook disconnection 90 */ 91static int 92ngh_disconnect(hook_p hook) 93{ 94 if (hook->node->numhooks == 0) 95 ng_rmnode(hook->node); 96 return (0); 97} 98