FreeBSD kernel netgraph code
ng_eiface.c File Reference
#include <sys/param.h>
#include <sys/eventhandler.h>
#include <sys/systm.h>
#include <sys/errno.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/proc.h>
#include <sys/sockio.h>
#include <sys/socket.h>
#include <sys/syslog.h>
#include <net/if.h>
#include <net/if_var.h>
#include <net/if_media.h>
#include <net/if_types.h>
#include <net/netisr.h>
#include <net/route.h>
#include <net/vnet.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
#include <netgraph/ng_parse.h>
#include <netgraph/ng_eiface.h>
#include <net/bpf.h>
#include <net/ethernet.h>
#include <net/if_arp.h>
Include dependency graph for ng_eiface.c:

Go to the source code of this file.

Data Structures

struct  ng_eiface_private
 

Macros

#define V_ng_eiface_unit   VNET(ng_eiface_unit)
 

Typedefs

typedef struct ng_eiface_privatepriv_p
 

Functions

static void ng_eiface_init (void *xsc)
 
static void ng_eiface_start (struct ifnet *ifp)
 
static int ng_eiface_ioctl (struct ifnet *ifp, u_long cmd, caddr_t data)
 
static int ng_eiface_mod_event (module_t, int, void *)
 
 NETGRAPH_INIT (eiface, &typestruct)
 
 VNET_DEFINE_STATIC (struct unrhdr *, ng_eiface_unit)
 
static void ng_eiface_start2 (node_p node, hook_p hook, void *arg1, int arg2)
 
static int ng_eiface_mediachange (struct ifnet *ifp)
 
static void ng_eiface_mediastatus (struct ifnet *ifp, struct ifmediareq *ifmr)
 
static int ng_eiface_constructor (node_p node)
 
static int ng_eiface_newhook (node_p node, hook_p hook, const char *name)
 
static int ng_eiface_rcvmsg (node_p node, item_p item, hook_p lasthook)
 
static int ng_eiface_rcvdata (hook_p hook, item_p item)
 
static int ng_eiface_rmnode (node_p node)
 
static int ng_eiface_disconnect (hook_p hook)
 
static void vnet_ng_eiface_init (const void *unused)
 
 VNET_SYSINIT (vnet_ng_eiface_init, SI_SUB_PSEUDO, SI_ORDER_ANY, vnet_ng_eiface_init, NULL)
 
static void vnet_ng_eiface_uninit (const void *unused)
 
 VNET_SYSUNINIT (vnet_ng_eiface_uninit, SI_SUB_INIT_IF, SI_ORDER_ANY, vnet_ng_eiface_uninit, NULL)
 

Variables

static const struct ng_cmdlist ng_eiface_cmdlist []
 
static ng_constructor_t ng_eiface_constructor
 
static ng_rcvmsg_t ng_eiface_rcvmsg
 
static ng_shutdown_t ng_eiface_rmnode
 
static ng_newhook_t ng_eiface_newhook
 
static ng_rcvdata_t ng_eiface_rcvdata
 
static ng_disconnect_t ng_eiface_disconnect
 
static struct ng_type typestruct
 

Macro Definition Documentation

◆ V_ng_eiface_unit

#define V_ng_eiface_unit   VNET(ng_eiface_unit)

Definition at line 125 of file ng_eiface.c.

Typedef Documentation

◆ priv_p

typedef struct ng_eiface_private* priv_p

Definition at line 90 of file ng_eiface.c.

Function Documentation

◆ NETGRAPH_INIT()

NETGRAPH_INIT ( eiface  ,
typestruct 
)

◆ ng_eiface_constructor()

static int ng_eiface_constructor ( node_p  node)
static

◆ ng_eiface_disconnect()

static int ng_eiface_disconnect ( hook_p  hook)
static

Definition at line 638 of file ng_eiface.c.

References NG_HOOK_NODE, and NG_NODE_PRIVATE.

◆ ng_eiface_init()

static void ng_eiface_init ( void *  xsc)
static

Definition at line 202 of file ng_eiface.c.

Referenced by ng_eiface_constructor().

Here is the caller graph for this function:

◆ ng_eiface_ioctl()

static int ng_eiface_ioctl ( struct ifnet *  ifp,
u_long  cmd,
caddr_t  data 
)
static

Definition at line 135 of file ng_eiface.c.

References data, NG_EIFACE_MTU_MAX, and NG_EIFACE_MTU_MIN.

Referenced by ng_eiface_constructor().

Here is the caller graph for this function:

◆ ng_eiface_mediachange()

static int ng_eiface_mediachange ( struct ifnet *  ifp)
static

Definition at line 343 of file ng_eiface.c.

Referenced by ng_eiface_constructor().

Here is the caller graph for this function:

◆ ng_eiface_mediastatus()

static void ng_eiface_mediastatus ( struct ifnet *  ifp,
struct ifmediareq *  ifmr 
)
static

Definition at line 359 of file ng_eiface.c.

Referenced by ng_eiface_constructor().

Here is the caller graph for this function:

◆ ng_eiface_mod_event()

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

Definition at line 654 of file ng_eiface.c.

References event.

◆ ng_eiface_newhook()

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

◆ ng_eiface_rcvdata()

static int ng_eiface_rcvdata ( hook_p  hook,
item_p  item 
)
static

Definition at line 576 of file ng_eiface.c.

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

◆ ng_eiface_rcvmsg()

◆ ng_eiface_rmnode()

static int ng_eiface_rmnode ( node_p  node)
static

Definition at line 613 of file ng_eiface.c.

References NG_NODE_PRIVATE, NG_NODE_SET_PRIVATE, NG_NODE_UNREF, and V_ng_eiface_unit.

◆ ng_eiface_start()

static void ng_eiface_start ( struct ifnet *  ifp)
static

Definition at line 290 of file ng_eiface.c.

References ng_eiface_start2(), and ng_send_fn().

Referenced by ng_eiface_constructor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ng_eiface_start2()

static void ng_eiface_start2 ( node_p  node,
hook_p  hook,
void *  arg1,
int  arg2 
)
static

Definition at line 217 of file ng_eiface.c.

References NG_OUTBOUND_THREAD_REF, NG_OUTBOUND_THREAD_UNREF, and NG_SEND_DATA_ONLY.

Referenced by ng_eiface_start().

Here is the caller graph for this function:

◆ VNET_DEFINE_STATIC()

VNET_DEFINE_STATIC ( struct unrhdr *  ,
ng_eiface_unit   
)

◆ vnet_ng_eiface_init()

static void vnet_ng_eiface_init ( const void *  unused)
static

Definition at line 670 of file ng_eiface.c.

References V_ng_eiface_unit.

◆ vnet_ng_eiface_uninit()

static void vnet_ng_eiface_uninit ( const void *  unused)
static

Definition at line 679 of file ng_eiface.c.

References V_ng_eiface_unit.

◆ VNET_SYSINIT()

VNET_SYSINIT ( vnet_ng_eiface_init  ,
SI_SUB_PSEUDO  ,
SI_ORDER_ANY  ,
vnet_ng_eiface_init  ,
NULL   
)

◆ VNET_SYSUNINIT()

VNET_SYSUNINIT ( vnet_ng_eiface_uninit  ,
SI_SUB_INIT_IF  ,
SI_ORDER_ANY  ,
vnet_ng_eiface_uninit  ,
NULL   
)

Variable Documentation

◆ ng_eiface_cmdlist

const struct ng_cmdlist ng_eiface_cmdlist[]
static
Initial value:
= {
{
"getifname",
NULL,
},
{
"set",
NULL
},
{ 0 }
}
@ NGM_EIFACE_GET_IFNAME
Definition: ng_eiface.h:56
@ NGM_EIFACE_SET
Definition: ng_eiface.h:58
#define NGM_EIFACE_COOKIE
Definition: ng_eiface.h:41
const struct ng_parse_type ng_parse_enaddr_type
Definition: ng_parse.c:1058
const struct ng_parse_type ng_parse_string_type
Definition: ng_parse.c:766

Definition at line 63 of file ng_eiface.c.

◆ ng_eiface_constructor

ng_constructor_t ng_eiface_constructor
static

Definition at line 102 of file ng_eiface.c.

◆ ng_eiface_disconnect

ng_disconnect_t ng_eiface_disconnect
static

Definition at line 107 of file ng_eiface.c.

◆ ng_eiface_newhook

ng_newhook_t ng_eiface_newhook
static

Definition at line 105 of file ng_eiface.c.

◆ ng_eiface_rcvdata

ng_rcvdata_t ng_eiface_rcvdata
static

Definition at line 106 of file ng_eiface.c.

◆ ng_eiface_rcvmsg

ng_rcvmsg_t ng_eiface_rcvmsg
static

Definition at line 103 of file ng_eiface.c.

◆ ng_eiface_rmnode

ng_shutdown_t ng_eiface_rmnode
static

Definition at line 104 of file ng_eiface.c.

◆ typestruct

struct ng_type typestruct
static
Initial value:
= {
.version = NG_ABI_VERSION,
.mod_event = ng_eiface_mod_event,
.constructor = ng_eiface_constructor,
.rcvmsg = ng_eiface_rcvmsg,
.shutdown = ng_eiface_rmnode,
.newhook = ng_eiface_newhook,
.rcvdata = ng_eiface_rcvdata,
.disconnect = ng_eiface_disconnect,
.cmdlist = ng_eiface_cmdlist
}
#define NG_ABI_VERSION
Definition: netgraph.h:77
static ng_constructor_t ng_eiface_constructor
Definition: ng_eiface.c:102
static ng_shutdown_t ng_eiface_rmnode
Definition: ng_eiface.c:104
static ng_newhook_t ng_eiface_newhook
Definition: ng_eiface.c:105
static ng_rcvmsg_t ng_eiface_rcvmsg
Definition: ng_eiface.c:103
static ng_disconnect_t ng_eiface_disconnect
Definition: ng_eiface.c:107
static ng_rcvdata_t ng_eiface_rcvdata
Definition: ng_eiface.c:106
static const struct ng_cmdlist ng_eiface_cmdlist[]
Definition: ng_eiface.c:63
static int ng_eiface_mod_event(module_t, int, void *)
Definition: ng_eiface.c:654
#define NG_EIFACE_NODE_TYPE
Definition: ng_eiface.h:40

Definition at line 110 of file ng_eiface.c.