1cb3c7a5dSArchie Cobbs /* 2cb3c7a5dSArchie Cobbs * ng_ksocket.h 3c398230bSWarner Losh */ 4c398230bSWarner Losh 5c398230bSWarner Losh /*- 6cb3c7a5dSArchie Cobbs * Copyright (c) 1996-1999 Whistle Communications, Inc. 7cb3c7a5dSArchie Cobbs * All rights reserved. 8cb3c7a5dSArchie Cobbs * 9cb3c7a5dSArchie Cobbs * Subject to the following obligations and disclaimer of warranty, use and 10cb3c7a5dSArchie Cobbs * redistribution of this software, in source or object code forms, with or 11cb3c7a5dSArchie Cobbs * without modifications are expressly permitted by Whistle Communications; 12cb3c7a5dSArchie Cobbs * provided, however, that: 13cb3c7a5dSArchie Cobbs * 1. Any and all reproductions of the source or object code must include the 14cb3c7a5dSArchie Cobbs * copyright notice above and the following disclaimer of warranties; and 15cb3c7a5dSArchie Cobbs * 2. No rights are granted, in any manner or form, to use Whistle 16cb3c7a5dSArchie Cobbs * Communications, Inc. trademarks, including the mark "WHISTLE 17cb3c7a5dSArchie Cobbs * COMMUNICATIONS" on advertising, endorsements, or otherwise except as 18cb3c7a5dSArchie Cobbs * such appears in the above copyright notice or in the software. 19cb3c7a5dSArchie Cobbs * 20cb3c7a5dSArchie Cobbs * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND 21cb3c7a5dSArchie Cobbs * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO 22cb3c7a5dSArchie Cobbs * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, 23cb3c7a5dSArchie Cobbs * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF 24cb3c7a5dSArchie Cobbs * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. 25cb3c7a5dSArchie Cobbs * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY 26cb3c7a5dSArchie Cobbs * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS 27cb3c7a5dSArchie Cobbs * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE. 28cb3c7a5dSArchie Cobbs * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES 29cb3c7a5dSArchie Cobbs * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING 30cb3c7a5dSArchie Cobbs * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 31cb3c7a5dSArchie Cobbs * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR 32cb3c7a5dSArchie Cobbs * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY 33cb3c7a5dSArchie Cobbs * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34cb3c7a5dSArchie Cobbs * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35cb3c7a5dSArchie Cobbs * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY 36cb3c7a5dSArchie Cobbs * OF SUCH DAMAGE. 37cb3c7a5dSArchie Cobbs * 38cc3bbd68SJulian Elischer * Author: Archie Cobbs <archie@freebsd.org> 39cb3c7a5dSArchie Cobbs * 40cb3c7a5dSArchie Cobbs * $FreeBSD$ 41cb3c7a5dSArchie Cobbs * $Whistle: ng_ksocket.h,v 1.1 1999/11/16 20:04:40 archie Exp $ 42cb3c7a5dSArchie Cobbs */ 43cb3c7a5dSArchie Cobbs 44e20480bfSRuslan Ermilov #ifndef _NETGRAPH_NG_KSOCKET_H_ 45e20480bfSRuslan Ermilov #define _NETGRAPH_NG_KSOCKET_H_ 46cb3c7a5dSArchie Cobbs 47f97e0a07SJulian Elischer #include <sys/socket.h> 48f97e0a07SJulian Elischer 49cb3c7a5dSArchie Cobbs /* Node type name and magic cookie */ 50cb3c7a5dSArchie Cobbs #define NG_KSOCKET_NODE_TYPE "ksocket" 51cb3c7a5dSArchie Cobbs #define NGM_KSOCKET_COOKIE 942710669 52cb3c7a5dSArchie Cobbs 53f8307e12SArchie Cobbs /* For NGM_KSOCKET_SETOPT and NGM_KSOCKET_GETOPT control messages */ 54f8307e12SArchie Cobbs struct ng_ksocket_sockopt { 55cac2a7deSArchie Cobbs int32_t level; /* second arg of [gs]etsockopt() */ 56cac2a7deSArchie Cobbs int32_t name; /* third arg of [gs]etsockopt() */ 57f8307e12SArchie Cobbs u_char value[0]; /* fourth arg of [gs]etsockopt() */ 58f8307e12SArchie Cobbs }; 59f8307e12SArchie Cobbs 60f8307e12SArchie Cobbs /* Max length socket option we can return via NGM_KSOCKET_GETOPT 61f8307e12SArchie Cobbs XXX This should not be necessary, we should dynamically size 62f8307e12SArchie Cobbs XXX the response. Until then.. */ 63f8307e12SArchie Cobbs #define NG_KSOCKET_MAX_OPTLEN 1024 64f8307e12SArchie Cobbs 65f8307e12SArchie Cobbs /* Keep this in sync with the above structure definition */ 66f8307e12SArchie Cobbs #define NG_KSOCKET_SOCKOPT_INFO(svtype) { \ 67f8307e12SArchie Cobbs { "level", &ng_parse_int32_type }, \ 68f8307e12SArchie Cobbs { "name", &ng_parse_int32_type }, \ 69f8307e12SArchie Cobbs { "value", (svtype) }, \ 70f0184ff8SArchie Cobbs { NULL } \ 71f8307e12SArchie Cobbs } 72f8307e12SArchie Cobbs 73f97e0a07SJulian Elischer /* For NGM_KSOCKET_ACCEPT control message responses */ 74f97e0a07SJulian Elischer struct ng_ksocket_accept { 75f97e0a07SJulian Elischer u_int32_t nodeid; /* node ID of connected ksocket */ 76f97e0a07SJulian Elischer struct sockaddr addr; /* peer's address (variable length) */ 77f97e0a07SJulian Elischer }; 78f97e0a07SJulian Elischer 79f97e0a07SJulian Elischer /* Keep this in sync with the above structure definition */ 80f97e0a07SJulian Elischer #define NGM_KSOCKET_ACCEPT_INFO { \ 81f97e0a07SJulian Elischer { "nodeid", &ng_parse_hint32_type }, \ 82f97e0a07SJulian Elischer { "addr", &ng_ksocket_generic_sockaddr_type }, \ 83f97e0a07SJulian Elischer { NULL } \ 84f97e0a07SJulian Elischer } 85f97e0a07SJulian Elischer 86cb3c7a5dSArchie Cobbs /* Netgraph commands */ 87cb3c7a5dSArchie Cobbs enum { 88cb3c7a5dSArchie Cobbs NGM_KSOCKET_BIND = 1, 89cb3c7a5dSArchie Cobbs NGM_KSOCKET_LISTEN, 90cb3c7a5dSArchie Cobbs NGM_KSOCKET_ACCEPT, 91cb3c7a5dSArchie Cobbs NGM_KSOCKET_CONNECT, 92cb3c7a5dSArchie Cobbs NGM_KSOCKET_GETNAME, 93cb3c7a5dSArchie Cobbs NGM_KSOCKET_GETPEERNAME, 94cb3c7a5dSArchie Cobbs NGM_KSOCKET_SETOPT, 95cb3c7a5dSArchie Cobbs NGM_KSOCKET_GETOPT, 96cb3c7a5dSArchie Cobbs }; 97cb3c7a5dSArchie Cobbs 98601c644fSJulian Elischer #ifdef _KERNEL 99601c644fSJulian Elischer 100327b288eSJulian Elischer /* Structure for sockaddr tag */ 101327b288eSJulian Elischer struct sa_tag { 102327b288eSJulian Elischer struct m_tag tag; 103327b288eSJulian Elischer struct sockaddr sa; 104327b288eSJulian Elischer }; 105327b288eSJulian Elischer 106327b288eSJulian Elischer /* Tag information ID's */ 107327b288eSJulian Elischer #define NG_KSOCKET_TAG_SOCKADDR 1 /* data is struct sockaddr */ 10819ff9e5fSArchie Cobbs 109601c644fSJulian Elischer #endif /* _KERNEL */ 110e20480bfSRuslan Ermilov #endif /* _NETGRAPH_NG_KSOCKET_H_ */ 111