FreeBSD kernel netgraph code
|
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/mbuf.h>
#include <sys/proc.h>
#include <sys/malloc.h>
#include <sys/ctype.h>
#include <sys/protosw.h>
#include <sys/errno.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <sys/uio.h>
#include <sys/un.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
#include <netgraph/ng_parse.h>
#include <netgraph/ng_ksocket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
Go to the source code of this file.
Data Structures | |
struct | ng_ksocket_private |
struct | ng_ksocket_alias |
Macros | |
#define | M_NETGRAPH_KSOCKET M_NETGRAPH |
#define | OFFSETOF(s, e) ((char *)&((s *)0)->e - (char *)((s *)0)) |
#define | SADATA_OFFSET (OFFSETOF(struct sockaddr, sa_data)) |
#define | KSF_CONNECTING 0x00000001 /* Waiting for connection complete */ |
#define | KSF_ACCEPTING 0x00000002 /* Waiting for accept complete */ |
#define | KSF_EOFSEEN 0x00000004 /* Have sent 0-length EOF mbuf */ |
#define | KSF_CLONED 0x00000008 /* Cloned from an accepting socket */ |
#define | KSF_EMBRYONIC 0x00000010 /* Cloned node with no hooks yet */ |
#define | ERROUT(x) do { error = (x); goto done; } while (0) |
Typedefs | |
typedef struct ng_ksocket_private * | priv_p |
Functions | |
static int | ng_ksocket_accept (priv_p) |
static int | ng_ksocket_incoming (struct socket *so, void *arg, int waitflag) |
static int | ng_ksocket_parse (const struct ng_ksocket_alias *aliases, const char *s, int family) |
static void | ng_ksocket_incoming2 (node_p node, hook_p hook, void *arg1, int arg2) |
static int | ng_parse_generic_sockdata_getLength (const struct ng_parse_type *type, const u_char *start, const u_char *buf) |
static int | ng_ksocket_sockaddr_parse (const struct ng_parse_type *type, const char *s, int *off, const u_char *const start, u_char *const buf, int *buflen) |
static int | ng_ksocket_sockaddr_unparse (const struct ng_parse_type *type, const u_char *data, int *off, char *cbuf, int cbuflen) |
static int | ng_parse_sockoptval_getLength (const struct ng_parse_type *type, const u_char *start, const u_char *buf) |
NETGRAPH_INIT (ksocket, &ng_ksocket_typestruct) | |
static int | ng_ksocket_constructor (node_p node) |
static int | ng_ksocket_newhook (node_p node, hook_p hook, const char *name0) |
static int | ng_ksocket_connect (hook_p hook) |
static int | ng_ksocket_rcvmsg (node_p node, item_p item, hook_p lasthook) |
static int | ng_ksocket_rcvdata (hook_p hook, item_p item) |
static int | ng_ksocket_shutdown (node_p node) |
static int | ng_ksocket_disconnect (hook_p hook) |
#define ERROUT | ( | x | ) | do { error = (x); goto done; } while (0) |
Definition at line 501 of file ng_ksocket.c.
#define KSF_ACCEPTING 0x00000002 /* Waiting for accept complete */ |
Definition at line 97 of file ng_ksocket.c.
#define KSF_CLONED 0x00000008 /* Cloned from an accepting socket */ |
Definition at line 99 of file ng_ksocket.c.
#define KSF_CONNECTING 0x00000001 /* Waiting for connection complete */ |
Definition at line 96 of file ng_ksocket.c.
#define KSF_EMBRYONIC 0x00000010 /* Cloned node with no hooks yet */ |
Definition at line 100 of file ng_ksocket.c.
#define KSF_EOFSEEN 0x00000004 /* Have sent 0-length EOF mbuf */ |
Definition at line 98 of file ng_ksocket.c.
#define M_NETGRAPH_KSOCKET M_NETGRAPH |
Definition at line 75 of file ng_ksocket.c.
#define OFFSETOF | ( | s, | |
e | |||
) | ((char *)&((s *)0)->e - (char *)((s *)0)) |
Definition at line 78 of file ng_ksocket.c.
#define SADATA_OFFSET (OFFSETOF(struct sockaddr, sa_data)) |
Definition at line 79 of file ng_ksocket.c.
typedef struct ng_ksocket_private* priv_p |
Definition at line 93 of file ng_ksocket.c.
NETGRAPH_INIT | ( | ksocket | , |
& | ng_ksocket_typestruct | ||
) |
|
static |
Definition at line 1163 of file ng_ksocket.c.
References ng_ksocket_accept::addr, ng_mesg::data, ng_mesg::ng_msghdr::flags, ng_mesg::header, KSF_ACCEPTING, KSF_CLONED, KSF_EMBRYONIC, ng_ksocket_constructor, ng_ksocket_incoming(), ng_ksocket_typestruct, ng_make_node_common(), NG_MKMESSAGE, NG_NODE_ID, NG_NODE_PRIVATE, NG_NODE_UNREF, NG_SEND_MSG_ID, NGF_RESP, NGM_KSOCKET_ACCEPT, NGM_KSOCKET_COOKIE, ng_ksocket_accept::nodeid, OFFSETOF, and ng_mesg::ng_msghdr::token.
Referenced by ng_ksocket_incoming2(), and ng_ksocket_rcvmsg().
|
static |
Definition at line 602 of file ng_ksocket.c.
References KSF_CLONED, NG_HOOK_NODE, ng_ksocket_incoming(), ng_ksocket_incoming2(), NG_NODE_PRIVATE, and ng_send_fn().
|
static |
Definition at line 513 of file ng_ksocket.c.
References M_NETGRAPH_KSOCKET, and NG_NODE_SET_PRIVATE.
|
static |
Definition at line 973 of file ng_ksocket.c.
References NG_HOOK_NODE, NG_NODE_IS_VALID, NG_NODE_NUMHOOKS, and ng_rmnode_self().
|
static |
Definition at line 999 of file ng_ksocket.c.
References ng_ksocket_incoming2(), NG_NODE_PRIVATE, NG_QUEUE, ng_send_fn1(), and NG_WAITOK.
Referenced by ng_ksocket_accept(), and ng_ksocket_connect().
Definition at line 1026 of file ng_ksocket.c.
References ng_mesg::data, flags, ng_mesg::ng_msghdr::flags, ng_mesg::header, sa_tag::id, KSF_ACCEPTING, KSF_CONNECTING, KSF_EOFSEEN, ng_ID_t, ng_ksocket_accept(), NG_KSOCKET_TAG_SOCKADDR, NG_MKMESSAGE, NG_NODE_ID, NG_NODE_PRIVATE, NG_SEND_DATA_ONLY, NG_SEND_MSG_ID, NGF_RESP, NGM_KSOCKET_CONNECT, NGM_KSOCKET_COOKIE, sa_tag::sa, sa_tag::tag, and ng_mesg::ng_msghdr::token.
Referenced by ng_ksocket_connect(), and ng_ksocket_incoming().
Definition at line 540 of file ng_ksocket.c.
References KSF_CLONED, KSF_EMBRYONIC, name, NG_HOOK_FORCE_QUEUE, NG_HOOKSIZ, ng_ksocket_families, ng_ksocket_parse(), ng_ksocket_protos, ng_ksocket_types, NG_NODE_PRIVATE, and type.
|
static |
Definition at line 1253 of file ng_ksocket.c.
References ng_ksocket_alias::name, name, and ng_ksocket_alias::value.
Referenced by ng_ksocket_newhook(), and ng_ksocket_sockaddr_parse().
Definition at line 882 of file ng_ksocket.c.
References sa_tag::id, NG_FREE_ITEM, NG_HOOK_NODE, NG_KSOCKET_TAG_SOCKADDR, NG_NODE_ID, NG_NODE_PRIVATE, NGI_GET_M, NGM_KSOCKET_COOKIE, and sa_tag::sa.
Definition at line 660 of file ng_ksocket.c.
References ng_mesg::ng_msghdr::arglen, ng_mesg::ng_msghdr::cmd, ng_mesg::data, ERROUT, ng_mesg::header, KSF_ACCEPTING, KSF_CONNECTING, ng_ksocket_sockopt::level, ng_ksocket_sockopt::name, NG_FREE_MSG, ng_ID_t, ng_ksocket_accept(), NG_KSOCKET_MAX_OPTLEN, NG_MKRESPONSE, NG_NODE_PRIVATE, NG_RESPOND_MSG, NGI_GET_MSG, NGI_RETADDR, NGM_KSOCKET_ACCEPT, NGM_KSOCKET_BIND, NGM_KSOCKET_CONNECT, NGM_KSOCKET_COOKIE, NGM_KSOCKET_GETNAME, NGM_KSOCKET_GETOPT, NGM_KSOCKET_GETPEERNAME, NGM_KSOCKET_LISTEN, NGM_KSOCKET_SETOPT, SADATA_OFFSET, ng_mesg::ng_msghdr::token, ng_mesg::ng_msghdr::typecookie, and ng_ksocket_sockopt::value.
|
static |
Definition at line 932 of file ng_ksocket.c.
References KSF_EMBRYONIC, M_NETGRAPH_KSOCKET, NG_NODE_PRIVATE, NG_NODE_SET_PRIVATE, NG_NODE_UNREF, ng_rmnode_self(), and netflow::node.
|
static |
Definition at line 201 of file ng_ksocket.c.
References M_NETGRAPH_KSOCKET, ng_get_string_token(), ng_ksocket_families, ng_ksocket_generic_sockaddr_type, ng_ksocket_parse(), ng_parse_get_token(), OFFSETOF, ng_parse_type::parse, SADATA_OFFSET, ng_parse_type::supertype, and T_LBRACE.
|
static |
Definition at line 312 of file ng_ksocket.c.
References data, M_NETGRAPH_KSOCKET, ng_encode_string(), ng_ksocket_generic_sockaddr_type, OFFSETOF, ng_parse_type::supertype, and ng_parse_type::unparse.
|
static |
Definition at line 169 of file ng_ksocket.c.
References SADATA_OFFSET.
|
static |
Definition at line 388 of file ng_ksocket.c.
References ng_mesg::ng_msghdr::arglen, ng_mesg::header, and OFFSETOF.
|
static |
Definition at line 420 of file ng_ksocket.c.
|
static |
Definition at line 418 of file ng_ksocket.c.
|
static |
Definition at line 426 of file ng_ksocket.c.
|
static |
Definition at line 108 of file ng_ksocket.c.
|
static |
Definition at line 103 of file ng_ksocket.c.
Referenced by ng_ksocket_accept().
|
static |
Definition at line 109 of file ng_ksocket.c.
|
static |
Definition at line 119 of file ng_ksocket.c.
Referenced by ng_ksocket_newhook(), and ng_ksocket_sockaddr_parse().
|
static |
Definition at line 192 of file ng_ksocket.c.
Referenced by ng_ksocket_sockaddr_parse(), and ng_ksocket_sockaddr_unparse().
|
static |
Definition at line 179 of file ng_ksocket.c.
|
static |
Definition at line 106 of file ng_ksocket.c.
|
static |
Definition at line 138 of file ng_ksocket.c.
Referenced by ng_ksocket_newhook().
|
static |
Definition at line 107 of file ng_ksocket.c.
|
static |
Definition at line 104 of file ng_ksocket.c.
|
static |
Definition at line 105 of file ng_ksocket.c.
|
static |
Definition at line 371 of file ng_ksocket.c.
|
static |
Definition at line 412 of file ng_ksocket.c.
|
static |
Definition at line 410 of file ng_ksocket.c.
|
static |
Definition at line 404 of file ng_ksocket.c.
|
static |
Definition at line 128 of file ng_ksocket.c.
Referenced by ng_ksocket_newhook().
|
static |
Definition at line 487 of file ng_ksocket.c.
Referenced by ng_ksocket_accept().
|
static |
Definition at line 186 of file ng_ksocket.c.