xref: /f-stack/tools/libnetgraph/netgraph.3 (revision 22ce4aff)
13b2bd0f6Slogwang.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
23b2bd0f6Slogwang.\" All rights reserved.
33b2bd0f6Slogwang.\"
43b2bd0f6Slogwang.\" Subject to the following obligations and disclaimer of warranty, use and
53b2bd0f6Slogwang.\" redistribution of this software, in source or object code forms, with or
63b2bd0f6Slogwang.\" without modifications are expressly permitted by Whistle Communications;
73b2bd0f6Slogwang.\" provided, however, that:
83b2bd0f6Slogwang.\" 1. Any and all reproductions of the source or object code must include the
93b2bd0f6Slogwang.\"    copyright notice above and the following disclaimer of warranties; and
103b2bd0f6Slogwang.\" 2. No rights are granted, in any manner or form, to use Whistle
113b2bd0f6Slogwang.\"    Communications, Inc. trademarks, including the mark "WHISTLE
123b2bd0f6Slogwang.\"    COMMUNICATIONS" on advertising, endorsements, or otherwise except as
133b2bd0f6Slogwang.\"    such appears in the above copyright notice or in the software.
143b2bd0f6Slogwang.\"
153b2bd0f6Slogwang.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
163b2bd0f6Slogwang.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
173b2bd0f6Slogwang.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
183b2bd0f6Slogwang.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
193b2bd0f6Slogwang.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
203b2bd0f6Slogwang.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
213b2bd0f6Slogwang.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
223b2bd0f6Slogwang.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
233b2bd0f6Slogwang.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
243b2bd0f6Slogwang.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
253b2bd0f6Slogwang.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
263b2bd0f6Slogwang.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
273b2bd0f6Slogwang.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
283b2bd0f6Slogwang.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
293b2bd0f6Slogwang.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
303b2bd0f6Slogwang.\" THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
313b2bd0f6Slogwang.\" OF SUCH DAMAGE.
323b2bd0f6Slogwang.\"
333b2bd0f6Slogwang.\" Author: Archie Cobbs <[email protected]>
343b2bd0f6Slogwang.\"
353b2bd0f6Slogwang.\" $FreeBSD$
363b2bd0f6Slogwang.\" $Whistle: netgraph.3,v 1.7 1999/01/25 07:14:06 archie Exp $
373b2bd0f6Slogwang.\"
38*22ce4affSfengbojiang.Dd May 15, 2020
393b2bd0f6Slogwang.Dt NETGRAPH 3
403b2bd0f6Slogwang.Os
413b2bd0f6Slogwang.Sh NAME
423b2bd0f6Slogwang.Nm NgMkSockNode ,
433b2bd0f6Slogwang.Nm NgNameNode ,
443b2bd0f6Slogwang.Nm NgSendMsg ,
453b2bd0f6Slogwang.Nm NgSendAsciiMsg ,
46*22ce4affSfengbojiang.Nm NgSendReplyMsg ,
473b2bd0f6Slogwang.Nm NgRecvMsg ,
483b2bd0f6Slogwang.Nm NgAllocRecvMsg ,
493b2bd0f6Slogwang.Nm NgRecvAsciiMsg ,
503b2bd0f6Slogwang.Nm NgAllocRecvAsciiMsg ,
513b2bd0f6Slogwang.Nm NgSendData ,
523b2bd0f6Slogwang.Nm NgRecvData ,
533b2bd0f6Slogwang.Nm NgAllocRecvData ,
543b2bd0f6Slogwang.Nm NgSetDebug ,
553b2bd0f6Slogwang.Nm NgSetErrLog
563b2bd0f6Slogwang.Nd netgraph user library
573b2bd0f6Slogwang.Sh LIBRARY
583b2bd0f6Slogwang.Lb libnetgraph
593b2bd0f6Slogwang.Sh SYNOPSIS
60*22ce4affSfengbojiang.In netgraph.h
613b2bd0f6Slogwang.Ft int
623b2bd0f6Slogwang.Fn NgMkSockNode "const char *name" "int *csp" "int *dsp"
633b2bd0f6Slogwang.Ft int
643b2bd0f6Slogwang.Fn NgNameNode "int cs" "const char *path" "const char *fmt" ...
653b2bd0f6Slogwang.Ft int
663b2bd0f6Slogwang.Fo NgSendMsg
673b2bd0f6Slogwang.Fa "int cs" "const char *path" "int cookie" "int cmd" "const void *arg"
683b2bd0f6Slogwang.Fa "size_t arglen"
693b2bd0f6Slogwang.Fc
703b2bd0f6Slogwang.Ft int
713b2bd0f6Slogwang.Fn NgSendAsciiMsg "int cs" "const char *path" "const char *fmt" ...
723b2bd0f6Slogwang.Ft int
73*22ce4affSfengbojiang.Fo NgSendReplyMsg
743b2bd0f6Slogwang.Fa "int cs" "const char *path" "struct ng_mesg *msg" "const void *arg"
753b2bd0f6Slogwang.Fa "size_t arglen"
763b2bd0f6Slogwang.Fc
773b2bd0f6Slogwang.Ft int
783b2bd0f6Slogwang.Fn NgRecvMsg "int cs" "struct ng_mesg *rep" "size_t replen" "char *path"
793b2bd0f6Slogwang.Ft int
803b2bd0f6Slogwang.Fn NgAllocRecvMsg "int cs" "struct ng_mesg **rep" "char *path"
813b2bd0f6Slogwang.Ft int
823b2bd0f6Slogwang.Fn NgRecvAsciiMsg "int cs" "struct ng_mesg *rep" "size_t replen" "char *path"
833b2bd0f6Slogwang.Ft int
843b2bd0f6Slogwang.Fn NgAllocRecvAsciiMsg "int cs" "struct ng_mesg **rep" "char *path"
853b2bd0f6Slogwang.Ft int
863b2bd0f6Slogwang.Fn NgSendData "int ds" "const char *hook" "const u_char *buf" "size_t len"
873b2bd0f6Slogwang.Ft int
883b2bd0f6Slogwang.Fn NgRecvData "int ds" "u_char *buf" "size_t len" "char *hook"
893b2bd0f6Slogwang.Ft int
903b2bd0f6Slogwang.Fn NgAllocRecvData "int ds" "u_char **buf" "char *hook"
913b2bd0f6Slogwang.Ft int
923b2bd0f6Slogwang.Fn NgSetDebug "int level"
933b2bd0f6Slogwang.Ft void
943b2bd0f6Slogwang.Fo NgSetErrLog
953b2bd0f6Slogwang.Fa "void \*[lp]*log\*[rp]\*[lp]const char *fmt, ...\*[rp]"
963b2bd0f6Slogwang.Fa "void \*[lp]*logx\*[rp]\*[lp]const char *fmt, ...\*[rp]"
973b2bd0f6Slogwang.Fc
983b2bd0f6Slogwang.Sh DESCRIPTION
993b2bd0f6SlogwangThese functions facilitate user-mode program participation in the kernel
1003b2bd0f6Slogwang.Xr netgraph 4
1013b2bd0f6Slogwanggraph-based networking system, by utilizing the netgraph
1023b2bd0f6Slogwang.Vt socket
1033b2bd0f6Slogwangnode type (see
1043b2bd0f6Slogwang.Xr ng_socket 4 ) .
1053b2bd0f6Slogwang.Pp
1063b2bd0f6SlogwangThe
1073b2bd0f6Slogwang.Fn NgMkSockNode
1083b2bd0f6Slogwangfunction should be called first, to create a new
1093b2bd0f6Slogwang.Vt socket
1103b2bd0f6Slogwangtype netgraph node with associated control and data sockets.
1113b2bd0f6SlogwangIf
1123b2bd0f6Slogwang.Fa name
1133b2bd0f6Slogwangis
1143b2bd0f6Slogwang.No non- Ns Dv NULL ,
1153b2bd0f6Slogwangthe node will have that global name assigned to it.
1163b2bd0f6SlogwangThe
1173b2bd0f6Slogwang.Fa csp
1183b2bd0f6Slogwangand
1193b2bd0f6Slogwang.Fa dsp
1203b2bd0f6Slogwangarguments will be set to the newly opened control and data sockets
1213b2bd0f6Slogwangassociated with the node; either
1223b2bd0f6Slogwang.Fa csp
1233b2bd0f6Slogwangor
1243b2bd0f6Slogwang.Fa dsp
1253b2bd0f6Slogwangmay be
1263b2bd0f6Slogwang.Dv NULL
1273b2bd0f6Slogwangif only one socket is desired.
1283b2bd0f6SlogwangThe
1293b2bd0f6Slogwang.Fn NgMkSockNode
1303b2bd0f6Slogwangfunction loads the
1313b2bd0f6Slogwang.Vt socket
1323b2bd0f6Slogwangnode type KLD if it is not already loaded.
1333b2bd0f6Slogwang.Pp
1343b2bd0f6SlogwangThe
1353b2bd0f6Slogwang.Fn NgNameNode
1363b2bd0f6Slogwangfunction assigns a global name to the node addressed by
1373b2bd0f6Slogwang.Fa path .
1383b2bd0f6Slogwang.Pp
1393b2bd0f6SlogwangThe
1403b2bd0f6Slogwang.Fn NgSendMsg
1413b2bd0f6Slogwangfunction sends a binary control message from the
1423b2bd0f6Slogwang.Vt socket
1433b2bd0f6Slogwangnode associated with control socket
1443b2bd0f6Slogwang.Fa cs
1453b2bd0f6Slogwangto the node addressed by
1463b2bd0f6Slogwang.Fa path .
1473b2bd0f6SlogwangThe
1483b2bd0f6Slogwang.Fa cookie
1493b2bd0f6Slogwangindicates how to interpret
1503b2bd0f6Slogwang.Fa cmd ,
1513b2bd0f6Slogwangwhich indicates a specific command.
1523b2bd0f6SlogwangExtra argument data (if any) is specified by
1533b2bd0f6Slogwang.Fa arg
1543b2bd0f6Slogwangand
1553b2bd0f6Slogwang.Fa arglen .
1563b2bd0f6SlogwangThe
1573b2bd0f6Slogwang.Fa cookie , cmd ,
1583b2bd0f6Slogwangand argument data are defined by the header file corresponding
1593b2bd0f6Slogwangto the type of the node being addressed.
1603b2bd0f6SlogwangThe unique, non-negative token value chosen for use in the message
1613b2bd0f6Slogwangheader is returned.
1623b2bd0f6SlogwangThis value is typically used to associate replies.
1633b2bd0f6Slogwang.Pp
1643b2bd0f6SlogwangUse
165*22ce4affSfengbojiang.Fn NgSendReplyMsg
1663b2bd0f6Slogwangto send reply to a previously received control message.
1673b2bd0f6SlogwangThe original message header should be pointed to by
1683b2bd0f6Slogwang.Fa msg .
1693b2bd0f6Slogwang.Pp
1703b2bd0f6SlogwangThe
1713b2bd0f6Slogwang.Fn NgSendAsciiMsg
1723b2bd0f6Slogwangfunction performs the same function as
1733b2bd0f6Slogwang.Fn NgSendMsg ,
1743b2bd0f6Slogwangbut adds support for
1753b2bd0f6Slogwang.Tn ASCII
1763b2bd0f6Slogwangencoding of control messages.
1773b2bd0f6SlogwangThe
1783b2bd0f6Slogwang.Fn NgSendAsciiMsg
1793b2bd0f6Slogwangfunction formats its input a la
1803b2bd0f6Slogwang.Xr printf 3
1813b2bd0f6Slogwangand then sends the resulting
1823b2bd0f6Slogwang.Tn ASCII
1833b2bd0f6Slogwangstring to the node in a
1843b2bd0f6Slogwang.Dv NGM_ASCII2BINARY
1853b2bd0f6Slogwangcontrol message.
1863b2bd0f6SlogwangThe node returns a binary version of the
1873b2bd0f6Slogwangmessage, which is then sent back to the node just as with
1883b2bd0f6Slogwang.Fn NgSendMsg .
1893b2bd0f6SlogwangAs with
1903b2bd0f6Slogwang.Fn NgSendMsg ,
1913b2bd0f6Slogwangthe message token value is returned.
1923b2bd0f6SlogwangNote that
1933b2bd0f6Slogwang.Tn ASCII
1943b2bd0f6Slogwangconversion may not be supported by all node types.
1953b2bd0f6Slogwang.Pp
1963b2bd0f6SlogwangThe
1973b2bd0f6Slogwang.Fn NgRecvMsg
1983b2bd0f6Slogwangfunction reads the next control message received by the node associated with
1993b2bd0f6Slogwangcontrol socket
2003b2bd0f6Slogwang.Fa cs .
2013b2bd0f6SlogwangThe message and any extra argument data must fit in
2023b2bd0f6Slogwang.Fa replen
2033b2bd0f6Slogwangbytes.
2043b2bd0f6SlogwangIf
2053b2bd0f6Slogwang.Fa path
2063b2bd0f6Slogwangis
2073b2bd0f6Slogwang.No non- Ns Dv NULL ,
2083b2bd0f6Slogwangit must point to a buffer of at least
2093b2bd0f6Slogwang.Dv NG_PATHSIZ
2103b2bd0f6Slogwangbytes, which will be filled in (and
2113b2bd0f6Slogwang.Dv NUL
2123b2bd0f6Slogwangterminated) with the path to
2133b2bd0f6Slogwangthe node from which the message was received.
2143b2bd0f6Slogwang.Pp
2153b2bd0f6SlogwangThe length of the control message is returned.
2163b2bd0f6SlogwangA return value of zero indicates that the socket was closed.
2173b2bd0f6Slogwang.Pp
2183b2bd0f6SlogwangThe
2193b2bd0f6Slogwang.Fn NgAllocRecvMsg
2203b2bd0f6Slogwangfunction works exactly like
2213b2bd0f6Slogwang.Fn NgRecvMsg ,
2223b2bd0f6Slogwangexcept that the buffer for a message is dynamically allocated
2233b2bd0f6Slogwangto guarantee that a message is not truncated.
2243b2bd0f6SlogwangThe size of the buffer is equal to the socket's receive buffer size.
2253b2bd0f6SlogwangThe caller is responsible for freeing the buffer when it is no longer required.
2263b2bd0f6Slogwang.Pp
2273b2bd0f6SlogwangThe
2283b2bd0f6Slogwang.Fn NgRecvAsciiMsg
2293b2bd0f6Slogwangfunction works exactly like
2303b2bd0f6Slogwang.Fn NgRecvMsg ,
2313b2bd0f6Slogwangexcept that after the message is received, any binary arguments
2323b2bd0f6Slogwangare converted to
2333b2bd0f6Slogwang.Tn ASCII
2343b2bd0f6Slogwangby sending a
2353b2bd0f6Slogwang.Dv NGM_BINARY2ASCII
2363b2bd0f6Slogwangrequest back to the originating node.
2373b2bd0f6SlogwangThe result is the same as
2383b2bd0f6Slogwang.Fn NgRecvMsg ,
2393b2bd0f6Slogwangwith the exception that the reply arguments field will contain a
2403b2bd0f6Slogwang.Dv NUL Ns -terminated
2413b2bd0f6Slogwang.Tn ASCII
2423b2bd0f6Slogwangversion of the arguments (and the reply
2433b2bd0f6Slogwangheader argument length field will be adjusted).
2443b2bd0f6Slogwang.Pp
2453b2bd0f6SlogwangThe
2463b2bd0f6Slogwang.Fn NgAllocRecvAsciiMsg
2473b2bd0f6Slogwangfunction works exactly like
2483b2bd0f6Slogwang.Fn NgRecvAsciiMsg ,
2493b2bd0f6Slogwangexcept that the buffer for a message is dynamically allocated
2503b2bd0f6Slogwangto guarantee that a message is not truncated.
2513b2bd0f6SlogwangThe size of the buffer is equal to the socket's receive buffer size.
2523b2bd0f6SlogwangThe caller is responsible for freeing the buffer when it is no longer required.
2533b2bd0f6Slogwang.Pp
2543b2bd0f6SlogwangThe
2553b2bd0f6Slogwang.Fn NgSendData
2563b2bd0f6Slogwangfunction writes a data packet out on the specified hook of the node
2573b2bd0f6Slogwangcorresponding to data socket
2583b2bd0f6Slogwang.Fa ds .
2593b2bd0f6SlogwangThe node must already be connected to some other node via that hook.
2603b2bd0f6Slogwang.Pp
2613b2bd0f6SlogwangThe
2623b2bd0f6Slogwang.Fn NgRecvData
2633b2bd0f6Slogwangfunction reads the next data packet (of up to
2643b2bd0f6Slogwang.Fa len
2653b2bd0f6Slogwangbytes) received by the node corresponding to data socket
2663b2bd0f6Slogwang.Fa ds
2673b2bd0f6Slogwangand stores it in
2683b2bd0f6Slogwang.Fa buf ,
2693b2bd0f6Slogwangwhich must be large enough to hold the entire packet.
2703b2bd0f6SlogwangIf
2713b2bd0f6Slogwang.Fa hook
2723b2bd0f6Slogwangis
2733b2bd0f6Slogwang.No non- Ns Dv NULL ,
2743b2bd0f6Slogwangit must point to a buffer of at least
2753b2bd0f6Slogwang.Dv NG_HOOKSIZ
2763b2bd0f6Slogwangbytes, which will be filled in (and
2773b2bd0f6Slogwang.Dv NUL
2783b2bd0f6Slogwangterminated) with the name of
2793b2bd0f6Slogwangthe hook on which the data was received.
2803b2bd0f6Slogwang.Pp
2813b2bd0f6SlogwangThe length of the packet is returned.
2823b2bd0f6SlogwangA return value of zero indicates that the socket was closed.
2833b2bd0f6Slogwang.Pp
2843b2bd0f6SlogwangThe
2853b2bd0f6Slogwang.Fn NgAllocRecvData
2863b2bd0f6Slogwangfunction works exactly like
2873b2bd0f6Slogwang.Fn NgRecvData ,
2883b2bd0f6Slogwangexcept that the buffer for a data packet is dynamically allocated
2893b2bd0f6Slogwangto guarantee that a data packet is not truncated.
2903b2bd0f6SlogwangThe size of the buffer is equal to the socket's receive buffer size.
2913b2bd0f6SlogwangThe caller is responsible for freeing the buffer when it is no longer required.
2923b2bd0f6Slogwang.Pp
2933b2bd0f6SlogwangThe
2943b2bd0f6Slogwang.Fn NgSetDebug
2953b2bd0f6Slogwangand
2963b2bd0f6Slogwang.Fn NgSetErrLog
2973b2bd0f6Slogwangfunctions are used for debugging.
2983b2bd0f6SlogwangThe
2993b2bd0f6Slogwang.Fn NgSetDebug
3003b2bd0f6Slogwangfunction sets the debug level (if non-negative), and returns the old setting.
3013b2bd0f6SlogwangHigher debug levels result in more verbosity.
3023b2bd0f6SlogwangThe default is zero.
3033b2bd0f6SlogwangAll debug and error messages are logged via the functions
3043b2bd0f6Slogwangspecified in the most recent call to
3053b2bd0f6Slogwang.Fn NgSetErrLog .
3063b2bd0f6SlogwangThe default logging functions are
3073b2bd0f6Slogwang.Xr vwarn 3
3083b2bd0f6Slogwangand
3093b2bd0f6Slogwang.Xr vwarnx 3 .
3103b2bd0f6Slogwang.Pp
3113b2bd0f6SlogwangAt debug level 3, the library attempts to display control message arguments
3123b2bd0f6Slogwangin
3133b2bd0f6Slogwang.Tn ASCII
3143b2bd0f6Slogwangformat; however, this results in additional messages being
3153b2bd0f6Slogwangsent which may interfere with debugging.
3163b2bd0f6SlogwangAt even higher levels,
3173b2bd0f6Slogwangeven these additional messages will be displayed, etc.
3183b2bd0f6Slogwang.Pp
3193b2bd0f6SlogwangNote that
3203b2bd0f6Slogwang.Xr select 2
3213b2bd0f6Slogwangcan be used on the data and the control sockets to detect the presence of
3223b2bd0f6Slogwangincoming data and control messages, respectively.
3233b2bd0f6SlogwangData and control packets are always written and read atomically, i.e.,
3243b2bd0f6Slogwangin one whole piece.
3253b2bd0f6Slogwang.Pp
3263b2bd0f6SlogwangUser mode programs must be linked with the
3273b2bd0f6Slogwang.Fl l Ns Li netgraph
3283b2bd0f6Slogwangflag to link in this library.
3293b2bd0f6Slogwang.Sh INITIALIZATION
3303b2bd0f6SlogwangTo enable netgraph in your kernel, either your kernel must be
3313b2bd0f6Slogwangcompiled with
3323b2bd0f6Slogwang.Cd "options NETGRAPH"
3333b2bd0f6Slogwangin the kernel configuration
3343b2bd0f6Slogwangfile, or else the
3353b2bd0f6Slogwang.Xr netgraph 4
3363b2bd0f6Slogwangand
3373b2bd0f6Slogwang.Xr ng_socket 4
3383b2bd0f6SlogwangKLD modules must have been loaded via
3393b2bd0f6Slogwang.Xr kldload 8 .
3403b2bd0f6Slogwang.Sh RETURN VALUES
3413b2bd0f6SlogwangThe
3423b2bd0f6Slogwang.Fn NgSetDebug
3433b2bd0f6Slogwangfunction returns the previous debug setting.
3443b2bd0f6Slogwang.Pp
3453b2bd0f6SlogwangThe
3463b2bd0f6Slogwang.Fn NgSetErrLog
3473b2bd0f6Slogwangfunction has no return value.
3483b2bd0f6Slogwang.Pp
3493b2bd0f6SlogwangAll other functions return \-1 if there was an error and set
3503b2bd0f6Slogwang.Va errno
3513b2bd0f6Slogwangaccordingly.
3523b2bd0f6Slogwang.Pp
3533b2bd0f6SlogwangA return value of zero from
3543b2bd0f6Slogwang.Fn NgRecvMsg
3553b2bd0f6Slogwangor
3563b2bd0f6Slogwang.Fn NgRecvData
3573b2bd0f6Slogwangindicates that the netgraph socket has been closed.
3583b2bd0f6Slogwang.Pp
3593b2bd0f6SlogwangFor
3603b2bd0f6Slogwang.Fn NgSendAsciiMsg
3613b2bd0f6Slogwangand
3623b2bd0f6Slogwang.Fn NgRecvAsciiMsg ,
3633b2bd0f6Slogwangthe following additional errors are possible:
3643b2bd0f6Slogwang.Bl -tag -width Er
3653b2bd0f6Slogwang.It Bq Er ENOSYS
3663b2bd0f6SlogwangThe node type does not know how to encode or decode the control message.
3673b2bd0f6Slogwang.It Bq Er ERANGE
3683b2bd0f6SlogwangThe encoded or decoded arguments were too long for the supplied buffer.
3693b2bd0f6Slogwang.It Bq Er ENOENT
3703b2bd0f6SlogwangAn unknown structure field was seen in an
3713b2bd0f6Slogwang.Tn ASCII
3723b2bd0f6Slogwangcontrol message.
3733b2bd0f6Slogwang.It Bq Er EALREADY
3743b2bd0f6SlogwangThe same structure field was specified twice in an
3753b2bd0f6Slogwang.Tn ASCII
3763b2bd0f6Slogwangcontrol message.
3773b2bd0f6Slogwang.It Bq Er EINVAL
3783b2bd0f6Slogwang.Tn ASCII
3793b2bd0f6Slogwangcontrol message parse error or illegal value.
3803b2bd0f6Slogwang.It Bq Er E2BIG
3813b2bd0f6SlogwangASCII control message array or fixed width string buffer overflow.
3823b2bd0f6Slogwang.El
3833b2bd0f6Slogwang.Sh SEE ALSO
3843b2bd0f6Slogwang.Xr select 2 ,
3853b2bd0f6Slogwang.Xr socket 2 ,
3863b2bd0f6Slogwang.Xr warnx 3 ,
3873b2bd0f6Slogwang.Xr kld 4 ,
3883b2bd0f6Slogwang.Xr netgraph 4 ,
3893b2bd0f6Slogwang.Xr ng_socket 4
3903b2bd0f6Slogwang.Sh HISTORY
3913b2bd0f6SlogwangThe
3923b2bd0f6Slogwang.Nm netgraph
3933b2bd0f6Slogwangsystem was designed and first implemented at Whistle Communications, Inc.\& in
3943b2bd0f6Slogwanga version of
3953b2bd0f6Slogwang.Fx 2.2
3963b2bd0f6Slogwangcustomized for the Whistle InterJet.
3973b2bd0f6Slogwang.Sh AUTHORS
3983b2bd0f6Slogwang.An Archie Cobbs Aq Mt [email protected]
399