FreeBSD kernel netgraph code
ng_vjc.c File Reference
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/errno.h>
#include <sys/kernel.h>
#include <sys/mbuf.h>
#include <sys/malloc.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
#include <netgraph/ng_parse.h>
#include <netgraph/ng_vjc.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <net/slcompress.h>
Include dependency graph for ng_vjc.c:

Go to the source code of this file.

Data Structures

struct  ng_vjc_private
 

Macros

#define MAX_VJHEADER   19
 
#define ERROUT(x)   do { error = (x); goto done; } while (0)
 
#define NG_VJC_TSTATE_PTR_TYPE   &ng_parse_uint32_type
 

Typedefs

typedef struct ng_vjc_privatepriv_p
 

Functions

static struct mbuf * ng_vjc_pulluphdrs (struct mbuf *m, int knownTCP)
 
 NETGRAPH_INIT (vjc, &ng_vjc_typestruct)
 
static int ng_vjc_constructor (node_p node)
 
static int ng_vjc_newhook (node_p node, hook_p hook, const char *name)
 
static int ng_vjc_rcvmsg (node_p node, item_p item, hook_p lasthook)
 
static int ng_vjc_rcvdata (hook_p hook, item_p item)
 
static int ng_vjc_shutdown (node_p node)
 
static int ng_vjc_disconnect (hook_p hook)
 

Variables

static ng_constructor_t ng_vjc_constructor
 
static ng_rcvmsg_t ng_vjc_rcvmsg
 
static ng_shutdown_t ng_vjc_shutdown
 
static ng_newhook_t ng_vjc_newhook
 
static ng_rcvdata_t ng_vjc_rcvdata
 
static ng_disconnect_t ng_vjc_disconnect
 
static const struct ng_parse_struct_field ng_vjc_config_type_fields [] = NG_VJC_CONFIG_TYPE_INFO
 
static const struct ng_parse_type ng_vjc_config_type
 
static const struct ng_parse_fixedarray_info ng_vjc_cs_hdr_type_info
 
static const struct ng_parse_type ng_vjc_cs_hdr_type
 
static const struct ng_parse_struct_field ng_vjc_cstate_type_fields []
 
static const struct ng_parse_type ng_vjc_cstate_type
 
static const struct ng_parse_fixedarray_info ng_vjc_cstatearray_type_info
 
static const struct ng_parse_type ng_vjc_cstatearray_type
 
static const struct ng_parse_struct_field ng_vjc_slcompress_type_fields []
 
static const struct ng_parse_type ng_vjc_slcompress_type
 
static const struct ng_cmdlist ng_vjc_cmds []
 
static struct ng_type ng_vjc_typestruct
 

Macro Definition Documentation

◆ ERROUT

#define ERROUT (   x)    do { error = (x); goto done; } while (0)

Definition at line 89 of file ng_vjc.c.

◆ MAX_VJHEADER

#define MAX_VJHEADER   19

Definition at line 76 of file ng_vjc.c.

◆ NG_VJC_TSTATE_PTR_TYPE

#define NG_VJC_TSTATE_PTR_TYPE   &ng_parse_uint32_type

Definition at line 113 of file ng_vjc.c.

Typedef Documentation

◆ priv_p

typedef struct ng_vjc_private* priv_p

Definition at line 87 of file ng_vjc.c.

Function Documentation

◆ NETGRAPH_INIT()

NETGRAPH_INIT ( vjc  ,
ng_vjc_typestruct 
)

◆ ng_vjc_constructor()

static int ng_vjc_constructor ( node_p  node)
static

Definition at line 241 of file ng_vjc.c.

References NG_NODE_FORCE_WRITER, and NG_NODE_SET_PRIVATE.

◆ ng_vjc_disconnect()

static int ng_vjc_disconnect ( hook_p  hook)
static

Definition at line 558 of file ng_vjc.c.

References NG_HOOK_NODE, NG_NODE_IS_VALID, NG_NODE_NUMHOOKS, NG_NODE_PRIVATE, and ng_rmnode_self().

Here is the call graph for this function:

◆ ng_vjc_newhook()

static int ng_vjc_newhook ( node_p  node,
hook_p  hook,
const char *  name 
)
static

◆ ng_vjc_pulluphdrs()

static struct mbuf * ng_vjc_pulluphdrs ( struct mbuf *  m,
int  knownTCP 
)
static

Definition at line 591 of file ng_vjc.c.

Referenced by ng_vjc_rcvdata().

Here is the caller graph for this function:

◆ ng_vjc_rcvdata()

static int ng_vjc_rcvdata ( hook_p  hook,
item_p  item 
)
static

Definition at line 398 of file ng_vjc.c.

References MAX_VJHEADER, NG_FREE_ITEM, NG_FREE_M, NG_FWD_NEW_DATA, NG_HOOK_NODE, NG_NODE_PRIVATE, ng_vjc_pulluphdrs(), NGI_GET_M, and type.

Here is the call graph for this function:

◆ ng_vjc_rcvmsg()

◆ ng_vjc_shutdown()

static int ng_vjc_shutdown ( node_p  node)
static

Definition at line 543 of file ng_vjc.c.

References NG_NODE_PRIVATE, NG_NODE_SET_PRIVATE, and NG_NODE_UNREF.

Variable Documentation

◆ ng_vjc_cmds

const struct ng_cmdlist ng_vjc_cmds[]
static

Definition at line 180 of file ng_vjc.c.

◆ ng_vjc_config_type

const struct ng_parse_type ng_vjc_config_type
static
Initial value:
= {
}
const struct ng_parse_type ng_parse_struct_type
Definition: ng_parse.c:222
static const struct ng_parse_struct_field ng_vjc_config_type_fields[]
Definition: ng_vjc.c:104

Definition at line 105 of file ng_vjc.c.

◆ ng_vjc_config_type_fields

const struct ng_parse_struct_field ng_vjc_config_type_fields[] = NG_VJC_CONFIG_TYPE_INFO
static

Definition at line 103 of file ng_vjc.c.

◆ ng_vjc_constructor

ng_constructor_t ng_vjc_constructor
static

Definition at line 92 of file ng_vjc.c.

◆ ng_vjc_cs_hdr_type

const struct ng_parse_type ng_vjc_cs_hdr_type
static
Initial value:
= {
}
const struct ng_parse_type ng_parse_fixedarray_type
Definition: ng_parse.c:271
static const struct ng_parse_fixedarray_info ng_vjc_cs_hdr_type_info
Definition: ng_vjc.c:120

Definition at line 124 of file ng_vjc.c.

◆ ng_vjc_cs_hdr_type_info

const struct ng_parse_fixedarray_info ng_vjc_cs_hdr_type_info
static
Initial value:
= {
MAX_HDR
}
const struct ng_parse_type ng_parse_hint8_type
Definition: ng_parse.c:418

Definition at line 120 of file ng_vjc.c.

◆ ng_vjc_cstate_type

const struct ng_parse_type ng_vjc_cstate_type
static
Initial value:
= {
}
static const struct ng_parse_struct_field ng_vjc_cstate_type_fields[]
Definition: ng_vjc.c:130

Definition at line 138 of file ng_vjc.c.

◆ ng_vjc_cstate_type_fields

const struct ng_parse_struct_field ng_vjc_cstate_type_fields[]
static
Initial value:
= {
{ "cs_next", NG_VJC_TSTATE_PTR_TYPE },
{ "cs_hlen", &ng_parse_uint16_type },
{ "cs_id", &ng_parse_uint8_type },
{ "cs_filler", &ng_parse_uint8_type },
{ "cs_hdr", &ng_vjc_cs_hdr_type },
{ NULL }
}
const struct ng_parse_type ng_parse_uint16_type
Definition: ng_parse.c:509
const struct ng_parse_type ng_parse_uint8_type
Definition: ng_parse.c:413
static const struct ng_parse_type ng_vjc_cs_hdr_type
Definition: ng_vjc.c:124
#define NG_VJC_TSTATE_PTR_TYPE
Definition: ng_vjc.c:113

Definition at line 130 of file ng_vjc.c.

◆ ng_vjc_cstatearray_type

const struct ng_parse_type ng_vjc_cstatearray_type
static
Initial value:
= {
}
static const struct ng_parse_fixedarray_info ng_vjc_cstatearray_type_info
Definition: ng_vjc.c:144

Definition at line 148 of file ng_vjc.c.

◆ ng_vjc_cstatearray_type_info

const struct ng_parse_fixedarray_info ng_vjc_cstatearray_type_info
static
Initial value:
= {
MAX_STATES
}
static const struct ng_parse_type ng_vjc_cstate_type
Definition: ng_vjc.c:138

Definition at line 144 of file ng_vjc.c.

◆ ng_vjc_disconnect

ng_disconnect_t ng_vjc_disconnect
static

Definition at line 97 of file ng_vjc.c.

◆ ng_vjc_newhook

ng_newhook_t ng_vjc_newhook
static

Definition at line 95 of file ng_vjc.c.

◆ ng_vjc_rcvdata

ng_rcvdata_t ng_vjc_rcvdata
static

Definition at line 96 of file ng_vjc.c.

◆ ng_vjc_rcvmsg

ng_rcvmsg_t ng_vjc_rcvmsg
static

Definition at line 93 of file ng_vjc.c.

◆ ng_vjc_shutdown

ng_shutdown_t ng_vjc_shutdown
static

Definition at line 94 of file ng_vjc.c.

◆ ng_vjc_slcompress_type

const struct ng_parse_type ng_vjc_slcompress_type
static
Initial value:
= {
}
static const struct ng_parse_struct_field ng_vjc_slcompress_type_fields[]
Definition: ng_vjc.c:155

Definition at line 174 of file ng_vjc.c.

◆ ng_vjc_slcompress_type_fields

const struct ng_parse_struct_field ng_vjc_slcompress_type_fields[]
static
Initial value:
= {
{ "last_cs", NG_VJC_TSTATE_PTR_TYPE },
{ "last_recv", &ng_parse_uint8_type },
{ "last_xmit", &ng_parse_uint8_type },
{ "flags", &ng_parse_hint16_type },
{ "sls_packets", &ng_parse_uint32_type },
{ "sls_compressed", &ng_parse_uint32_type },
{ "sls_searches", &ng_parse_uint32_type },
{ "sls_misses", &ng_parse_uint32_type },
{ "sls_uncompressedin", &ng_parse_uint32_type },
{ "sls_compressedin", &ng_parse_uint32_type },
{ "sls_errorin", &ng_parse_uint32_type },
{ "sls_tossed", &ng_parse_uint32_type },
{ "tstate", &ng_vjc_cstatearray_type },
{ "rstate", &ng_vjc_cstatearray_type },
{ NULL }
}
const struct ng_parse_type ng_parse_uint32_type
Definition: ng_parse.c:608
const struct ng_parse_type ng_parse_hint16_type
Definition: ng_parse.c:514
static const struct ng_parse_type ng_vjc_cstatearray_type
Definition: ng_vjc.c:148

Definition at line 155 of file ng_vjc.c.

◆ ng_vjc_typestruct

struct ng_type ng_vjc_typestruct
static
Initial value:
= {
.version = NG_ABI_VERSION,
.constructor = ng_vjc_constructor,
.rcvmsg = ng_vjc_rcvmsg,
.shutdown = ng_vjc_shutdown,
.newhook = ng_vjc_newhook,
.rcvdata = ng_vjc_rcvdata,
.disconnect = ng_vjc_disconnect,
.cmdlist = ng_vjc_cmds,
}
#define NG_ABI_VERSION
Definition: netgraph.h:77
static ng_rcvdata_t ng_vjc_rcvdata
Definition: ng_vjc.c:96
static ng_rcvmsg_t ng_vjc_rcvmsg
Definition: ng_vjc.c:93
static ng_disconnect_t ng_vjc_disconnect
Definition: ng_vjc.c:97
static ng_constructor_t ng_vjc_constructor
Definition: ng_vjc.c:92
static const struct ng_cmdlist ng_vjc_cmds[]
Definition: ng_vjc.c:180
static ng_shutdown_t ng_vjc_shutdown
Definition: ng_vjc.c:94
static ng_newhook_t ng_vjc_newhook
Definition: ng_vjc.c:95
#define NG_VJC_NODE_TYPE
Definition: ng_vjc.h:49

Definition at line 220 of file ng_vjc.c.