ng_hole.c revision 53913
1207753Smm 2207753Smm/* 3207753Smm * ng_hole.c 4207753Smm * 5207753Smm * Copyright (c) 1996-1999 Whistle Communications, Inc. 6207753Smm * All rights reserved. 7207753Smm * 8207753Smm * Subject to the following obligations and disclaimer of warranty, use and 9207753Smm * redistribution of this software, in source or object code forms, with or 10207753Smm * without modifications are expressly permitted by Whistle Communications; 11207753Smm * provided, however, that: 12207753Smm * 1. Any and all reproductions of the source or object code must include the 13207753Smm * copyright notice above and the following disclaimer of warranties; and 14207753Smm * 2. No rights are granted, in any manner or form, to use Whistle 15207753Smm * Communications, Inc. trademarks, including the mark "WHISTLE 16207753Smm * COMMUNICATIONS" on advertising, endorsements, or otherwise except as 17207753Smm * such appears in the above copyright notice or in the software. 18207753Smm * 19207753Smm * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND 20207753Smm * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO 21207753Smm * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, 22207753Smm * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF 23207753Smm * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. 24207753Smm * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY 25207753Smm * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS 26207753Smm * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE. 27207753Smm * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES 28207753Smm * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING 29207753Smm * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 30207753Smm * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR 31207753Smm * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY 32207753Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33207753Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 34207753Smm * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY 35207753Smm * OF SUCH DAMAGE. 36207753Smm * 37207753Smm * Author: Julian Elisher <julian@whistle.com> 38207753Smm * 39207753Smm * $FreeBSD: head/sys/netgraph/ng_hole.c 53913 1999-11-30 02:45:32Z archie $ 40207753Smm * $Whistle: ng_hole.c,v 1.10 1999/11/01 09:24:51 julian Exp $ 41207753Smm */ 42207753Smm 43207753Smm/* 44207753Smm * This node is a 'black hole' that simply discards everything it receives 45207753Smm */ 46207753Smm 47207753Smm#include <sys/param.h> 48207753Smm#include <sys/systm.h> 49207753Smm#include <sys/errno.h> 50207753Smm#include <sys/kernel.h> 51207753Smm#include <sys/malloc.h> 52207753Smm#include <sys/mbuf.h> 53207753Smm#include <sys/syslog.h> 54207753Smm#include <netgraph/ng_message.h> 55207753Smm#include <netgraph/netgraph.h> 56207753Smm#include <netgraph/ng_hole.h> 57207753Smm 58207753Smm/* Netgraph methods */ 59207753Smmstatic ng_rcvdata_t ngh_rcvdata; 60207753Smmstatic ng_disconnect_t ngh_disconnect; 61207753Smm 62207753Smmstatic struct ng_type typestruct = { 63207753Smm NG_VERSION, 64207753Smm NG_HOLE_NODE_TYPE, 65207753Smm NULL, 66207753Smm NULL, 67207753Smm NULL, 68207753Smm NULL, 69207753Smm NULL, 70207753Smm NULL, 71207753Smm NULL, 72207753Smm ngh_rcvdata, 73207753Smm ngh_rcvdata, 74207753Smm ngh_disconnect, 75207753Smm NULL 76207753Smm}; 77207753SmmNETGRAPH_INIT(hole, &typestruct); 78207753Smm 79207753Smm/* 80207753Smm * Receive data 81207753Smm */ 82207753Smmstatic int 83207753Smmngh_rcvdata(hook_p hook, struct mbuf *m, meta_p meta) 84207753Smm{ 85207753Smm NG_FREE_DATA(m, meta); 86207753Smm return 0; 87207753Smm} 88207753Smm 89207753Smm/* 90207753Smm * Hook disconnection 91207753Smm */ 92207753Smmstatic int 93207753Smmngh_disconnect(hook_p hook) 94207753Smm{ 95207753Smm if (hook->node->numhooks == 0) 96207753Smm ng_rmnode(hook->node); 97207753Smm return (0); 98207753Smm} 99207753Smm