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