FreeBSD kernel netgraph code
ng_device.c File Reference
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/ioccom.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/poll.h>
#include <sys/proc.h>
#include <sys/epoch.h>
#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/syslog.h>
#include <sys/systm.h>
#include <sys/uio.h>
#include <sys/vnode.h>
#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_var.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
#include <netgraph/ng_device.h>
#include <netgraph/ng_parse.h>
Include dependency graph for ng_device.c:

Go to the source code of this file.

Data Structures

struct  ngd_private
 

Macros

#define DBG   do {} while (0)
 
#define ERROUT(x)   do { error = (x); goto done; } while (0)
 
#define NGDF_OPEN   0x0001
 
#define NGDF_RWAIT   0x0002
 
#define MAX_NGD   999
 

Typedefs

typedef struct ngd_privatepriv_p
 

Functions

static int ng_device_mod_event (module_t, int, void *)
 
 NETGRAPH_INIT (device, &ngd_typestruct)
 
static int ng_device_constructor (node_p node)
 
static int ng_device_rcvmsg (node_p node, item_p item, hook_p lasthook)
 
static int ng_device_newhook (node_p node, hook_p hook, const char *name)
 
static int ng_device_rcvdata (hook_p hook, item_p item)
 
static int ng_device_disconnect (hook_p hook)
 
static int ng_device_shutdown (node_p node)
 
static int ngdopen (struct cdev *dev, int flag, int mode, struct thread *td)
 
static int ngdclose (struct cdev *dev, int flag, int mode, struct thread *td)
 
static int ngdread (struct cdev *dev, struct uio *uio, int flag)
 
static int ngdwrite (struct cdev *dev, struct uio *uio, int flag)
 
static int ngdpoll (struct cdev *dev, int events, struct thread *td)
 

Variables

static ng_constructor_t ng_device_constructor
 
static ng_rcvmsg_t ng_device_rcvmsg
 
static ng_shutdown_t ng_device_shutdown
 
static ng_newhook_t ng_device_newhook
 
static ng_rcvdata_t ng_device_rcvdata
 
static ng_disconnect_t ng_device_disconnect
 
static const struct ng_cmdlist ng_device_cmds []
 
static struct ng_type ngd_typestruct
 
static struct unrhdr * ngd_unit
 
static d_close_t ngdclose
 
static d_open_t ngdopen
 
static d_read_t ngdread
 
static d_write_t ngdwrite
 
static d_poll_t ngdpoll
 
static struct cdevsw ngd_cdevsw
 

Macro Definition Documentation

◆ DBG

#define DBG   do {} while (0)

Definition at line 39 of file ng_device.c.

◆ ERROUT

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

Definition at line 70 of file ng_device.c.

◆ MAX_NGD

#define MAX_NGD   999

Definition at line 134 of file ng_device.c.

◆ NGDF_OPEN

#define NGDF_OPEN   0x0001

Definition at line 125 of file ng_device.c.

◆ NGDF_RWAIT

#define NGDF_RWAIT   0x0002

Definition at line 126 of file ng_device.c.

Typedef Documentation

◆ priv_p

typedef struct ngd_private* priv_p

Definition at line 128 of file ng_device.c.

Function Documentation

◆ NETGRAPH_INIT()

NETGRAPH_INIT ( device  ,
ngd_typestruct 
)

◆ ng_device_constructor()

static int ng_device_constructor ( node_p  node)
static

Definition at line 188 of file ng_device.c.

References DBG, ifqmaxlen, NG_DEVICE_DEVNAME, ng_name_node(), NG_NODE_SET_PRIVATE, ngd_cdevsw, and ngd_unit.

Here is the call graph for this function:

◆ ng_device_disconnect()

static int ng_device_disconnect ( hook_p  hook)
static

Definition at line 334 of file ng_device.c.

References DBG, NG_HOOK_NODE, NG_NODE_PRIVATE, ng_rmnode_self(), and ngd_unit.

Here is the call graph for this function:

◆ ng_device_mod_event()

static int ng_device_mod_event ( module_t  mod,
int  event,
void *  data 
)
static

Definition at line 166 of file ng_device.c.

References event, MAX_NGD, and ngd_unit.

◆ ng_device_newhook()

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

Definition at line 282 of file ng_device.c.

References DBG, and NG_NODE_PRIVATE.

◆ ng_device_rcvdata()

static int ng_device_rcvdata ( hook_p  hook,
item_p  item 
)
static

Definition at line 301 of file ng_device.c.

References DBG, NG_FREE_ITEM, NG_FREE_M, NG_HOOK_NODE, NG_NODE_PRIVATE, NGDF_RWAIT, and NGI_GET_M.

◆ ng_device_rcvmsg()

◆ ng_device_shutdown()

static int ng_device_shutdown ( node_p  node)
static

Definition at line 359 of file ng_device.c.

References NG_NODE_UNREF.

◆ ngdclose()

static int ngdclose ( struct cdev *  dev,
int  flag,
int  mode,
struct thread *  td 
)
static

Definition at line 390 of file ng_device.c.

References DBG.

◆ ngdopen()

static int ngdopen ( struct cdev *  dev,
int  flag,
int  mode,
struct thread *  td 
)
static

Definition at line 373 of file ng_device.c.

References DBG, and NGDF_OPEN.

◆ ngdpoll()

static int ngdpoll ( struct cdev *  dev,
int  events,
struct thread *  td 
)
static

Definition at line 523 of file ng_device.c.

◆ ngdread()

static int ngdread ( struct cdev *  dev,
struct uio *  uio,
int  flag 
)
static

Definition at line 450 of file ng_device.c.

References DBG, and NGDF_RWAIT.

◆ ngdwrite()

static int ngdwrite ( struct cdev *  dev,
struct uio *  uio,
int  flag 
)
static

Definition at line 492 of file ng_device.c.

References DBG, and NG_SEND_DATA_ONLY.

Variable Documentation

◆ ng_device_cmds

const struct ng_cmdlist ng_device_cmds[]
static
Initial value:
= {
{
"getdevname",
NULL,
},
{
"etheralign",
NULL,
NULL
},
{ 0 }
}
@ NGM_DEVICE_ETHERALIGN
Definition: ng_device.h:42
@ NGM_DEVICE_GET_DEVNAME
Definition: ng_device.h:41
#define NGM_DEVICE_COOKIE
Definition: ng_device.h:36
const struct ng_parse_type ng_parse_string_type
Definition: ng_parse.c:766

Definition at line 82 of file ng_device.c.

◆ ng_device_constructor

ng_constructor_t ng_device_constructor
static

Definition at line 74 of file ng_device.c.

◆ ng_device_disconnect

ng_disconnect_t ng_device_disconnect
static

Definition at line 79 of file ng_device.c.

◆ ng_device_newhook

ng_newhook_t ng_device_newhook
static

Definition at line 77 of file ng_device.c.

◆ ng_device_rcvdata

ng_rcvdata_t ng_device_rcvdata
static

Definition at line 78 of file ng_device.c.

◆ ng_device_rcvmsg

ng_rcvmsg_t ng_device_rcvmsg
static

Definition at line 75 of file ng_device.c.

◆ ng_device_shutdown

ng_shutdown_t ng_device_shutdown
static

Definition at line 76 of file ng_device.c.

◆ ngd_cdevsw

struct cdevsw ngd_cdevsw
static
Initial value:
= {
.d_version = D_VERSION,
.d_open = ngdopen,
.d_close = ngdclose,
.d_read = ngdread,
.d_write = ngdwrite,
.d_poll = ngdpoll,
.d_name = NG_DEVICE_DEVNAME,
}
static d_read_t ngdread
Definition: ng_device.c:138
static d_poll_t ngdpoll
Definition: ng_device.c:143
static d_open_t ngdopen
Definition: ng_device.c:137
static d_close_t ngdclose
Definition: ng_device.c:136
static d_write_t ngdwrite
Definition: ng_device.c:139
#define NG_DEVICE_DEVNAME
Definition: ng_device.h:37

Definition at line 145 of file ng_device.c.

Referenced by ng_device_constructor().

◆ ngd_typestruct

struct ng_type ngd_typestruct
static
Initial value:
= {
.version = NG_ABI_VERSION,
.mod_event = ng_device_mod_event,
.constructor = ng_device_constructor,
.rcvmsg = ng_device_rcvmsg,
.shutdown = ng_device_shutdown,
.newhook = ng_device_newhook,
.rcvdata = ng_device_rcvdata,
.disconnect = ng_device_disconnect,
.cmdlist = ng_device_cmds,
}
#define NG_ABI_VERSION
Definition: netgraph.h:77
static ng_shutdown_t ng_device_shutdown
Definition: ng_device.c:76
static ng_newhook_t ng_device_newhook
Definition: ng_device.c:77
static int ng_device_mod_event(module_t, int, void *)
Definition: ng_device.c:166
static ng_rcvmsg_t ng_device_rcvmsg
Definition: ng_device.c:75
static ng_disconnect_t ng_device_disconnect
Definition: ng_device.c:79
static const struct ng_cmdlist ng_device_cmds[]
Definition: ng_device.c:82
static ng_rcvdata_t ng_device_rcvdata
Definition: ng_device.c:78
static ng_constructor_t ng_device_constructor
Definition: ng_device.c:74
#define NG_DEVICE_NODE_TYPE
Definition: ng_device.h:35

Definition at line 101 of file ng_device.c.

◆ ngd_unit

struct unrhdr* ngd_unit
static

Definition at line 131 of file ng_device.c.

Referenced by ng_device_constructor(), ng_device_disconnect(), and ng_device_mod_event().

◆ ngdclose

d_close_t ngdclose
static

Definition at line 136 of file ng_device.c.

◆ ngdopen

d_open_t ngdopen
static

Definition at line 137 of file ng_device.c.

◆ ngdpoll

d_poll_t ngdpoll
static

Definition at line 143 of file ng_device.c.

◆ ngdread

d_read_t ngdread
static

Definition at line 138 of file ng_device.c.

◆ ngdwrite

d_write_t ngdwrite
static

Definition at line 139 of file ng_device.c.