FreeBSD kernel netgraph code
ng_cisco.c File Reference
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/errno.h>
#include <sys/kernel.h>
#include <sys/socket.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/syslog.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
#include <netgraph/ng_parse.h>
#include <netgraph/ng_cisco.h>
Include dependency graph for ng_cisco.c:

Go to the source code of this file.

Data Structures

struct  cisco_header
 
struct  cisco_packet
 
struct  protoent
 
struct  cisco_priv
 

Macros

#define CISCO_MULTICAST   0x8f /* Cisco multicast address */
 
#define CISCO_UNICAST   0x0f /* Cisco unicast address */
 
#define CISCO_KEEPALIVE   0x8035 /* Cisco keepalive protocol */
 
#define CISCO_ADDR_REQ   0 /* Cisco address request */
 
#define CISCO_ADDR_REPLY   1 /* Cisco address reply */
 
#define CISCO_KEEPALIVE_REQ   2 /* Cisco keepalive request */
 
#define KEEPALIVE_SECS   10
 
#define CISCO_HEADER_LEN   sizeof (struct cisco_header)
 
#define CISCO_PACKET_LEN   (sizeof(struct cisco_packet))
 

Typedefs

typedef struct cisco_privsc_p
 

Functions

static int cisco_input (sc_p sc, item_p item)
 
static void cisco_keepalive (node_p node, hook_p hook, void *arg1, int arg2)
 
static int cisco_send (sc_p sc, int type, long par1, long par2)
 
static void cisco_notify (sc_p sc, uint32_t cmd)
 
 NETGRAPH_INIT (cisco, &typestruct)
 
static int cisco_constructor (node_p node)
 
static int cisco_newhook (node_p node, hook_p hook, const char *name)
 
static int cisco_rcvmsg (node_p node, item_p item, hook_p lasthook)
 
static int cisco_rcvdata (hook_p hook, item_p item)
 
static int cisco_shutdown (node_p node)
 
static int cisco_disconnect (hook_p hook)
 

Variables

struct cisco_header __packed
 
static ng_constructor_t cisco_constructor
 
static ng_rcvmsg_t cisco_rcvmsg
 
static ng_shutdown_t cisco_shutdown
 
static ng_newhook_t cisco_newhook
 
static ng_rcvdata_t cisco_rcvdata
 
static ng_disconnect_t cisco_disconnect
 
static const struct ng_parse_struct_field ng_cisco_ipaddr_type_fields [] = NG_CISCO_IPADDR_TYPE_INFO
 
static const struct ng_parse_type ng_cisco_ipaddr_type
 
static const struct ng_parse_struct_field ng_cisco_stats_type_fields [] = NG_CISCO_STATS_TYPE_INFO
 
static const struct ng_parse_type ng_cisco_stats_type
 
static const struct ng_cmdlist ng_cisco_cmdlist []
 
static struct ng_type typestruct
 

Macro Definition Documentation

◆ CISCO_ADDR_REPLY

#define CISCO_ADDR_REPLY   1 /* Cisco address reply */

Definition at line 67 of file ng_cisco.c.

◆ CISCO_ADDR_REQ

#define CISCO_ADDR_REQ   0 /* Cisco address request */

Definition at line 66 of file ng_cisco.c.

◆ CISCO_HEADER_LEN

#define CISCO_HEADER_LEN   sizeof (struct cisco_header)

Definition at line 78 of file ng_cisco.c.

◆ CISCO_KEEPALIVE

#define CISCO_KEEPALIVE   0x8035 /* Cisco keepalive protocol */

Definition at line 65 of file ng_cisco.c.

◆ CISCO_KEEPALIVE_REQ

#define CISCO_KEEPALIVE_REQ   2 /* Cisco keepalive request */

Definition at line 68 of file ng_cisco.c.

◆ CISCO_MULTICAST

#define CISCO_MULTICAST   0x8f /* Cisco multicast address */

Definition at line 63 of file ng_cisco.c.

◆ CISCO_PACKET_LEN

#define CISCO_PACKET_LEN   (sizeof(struct cisco_packet))

Definition at line 89 of file ng_cisco.c.

◆ CISCO_UNICAST

#define CISCO_UNICAST   0x0f /* Cisco unicast address */

Definition at line 64 of file ng_cisco.c.

◆ KEEPALIVE_SECS

#define KEEPALIVE_SECS   10

Definition at line 70 of file ng_cisco.c.

Typedef Documentation

◆ sc_p

typedef struct cisco_priv* sc_p

Definition at line 111 of file ng_cisco.c.

Function Documentation

◆ cisco_constructor()

static int cisco_constructor ( node_p  node)
static

Definition at line 187 of file ng_cisco.c.

References ng_callout_init, NG_NODE_SET_PRIVATE, and ng_async_private::node.

◆ cisco_disconnect()

static int cisco_disconnect ( hook_p  hook)
static

Definition at line 415 of file ng_cisco.c.

References protoent::af, protoent::hook, NG_HOOK_NODE, NG_HOOK_PRIVATE, NG_NODE_IS_VALID, NG_NODE_NUMHOOKS, NG_NODE_PRIVATE, ng_rmnode_self(), and ng_uncallout().

Here is the call graph for this function:

◆ cisco_input()

◆ cisco_keepalive()

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

Definition at line 579 of file ng_cisco.c.

References cisco_keepalive(), CISCO_KEEPALIVE_REQ, cisco_notify(), cisco_send(), KEEPALIVE_SECS, ng_callout(), and NGM_LINK_IS_DOWN.

Referenced by cisco_keepalive(), and cisco_newhook().

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

◆ cisco_newhook()

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

◆ cisco_notify()

static void cisco_notify ( sc_p  sc,
uint32_t  cmd 
)
static

Definition at line 634 of file ng_cisco.c.

References NG_MKMESSAGE, NG_SEND_MSG_HOOK, NGM_FLOW_COOKIE, and ng_async_private::node.

Referenced by cisco_input(), and cisco_keepalive().

Here is the caller graph for this function:

◆ cisco_rcvdata()

static int cisco_rcvdata ( hook_p  hook,
item_p  item 
)
static

◆ cisco_rcvmsg()

◆ cisco_send()

static int cisco_send ( sc_p  sc,
int  type,
long  par1,
long  par2 
)
static

◆ cisco_shutdown()

static int cisco_shutdown ( node_p  node)
static

◆ NETGRAPH_INIT()

NETGRAPH_INIT ( cisco  ,
typestruct 
)

Variable Documentation

◆ __packed

struct ether_vlan_stack_header __packed

Referenced by ng_pppoe_rcvdata().

◆ cisco_constructor

ng_constructor_t cisco_constructor
static

Definition at line 114 of file ng_cisco.c.

◆ cisco_disconnect

ng_disconnect_t cisco_disconnect
static

Definition at line 119 of file ng_cisco.c.

◆ cisco_newhook

ng_newhook_t cisco_newhook
static

Definition at line 117 of file ng_cisco.c.

◆ cisco_rcvdata

ng_rcvdata_t cisco_rcvdata
static

Definition at line 118 of file ng_cisco.c.

◆ cisco_rcvmsg

ng_rcvmsg_t cisco_rcvmsg
static

Definition at line 115 of file ng_cisco.c.

◆ cisco_shutdown

ng_shutdown_t cisco_shutdown
static

Definition at line 116 of file ng_cisco.c.

◆ ng_cisco_cmdlist

const struct ng_cmdlist ng_cisco_cmdlist[]
static
Initial value:
= {
{
"setipaddr",
NULL
},
{
"getipaddr",
NULL,
},
{
"getstats",
NULL,
},
{ 0 }
}
static const struct ng_parse_type ng_cisco_stats_type
Definition: ng_cisco.c:138
static const struct ng_parse_type ng_cisco_ipaddr_type
Definition: ng_cisco.c:130
#define NGM_CISCO_COOKIE
Definition: ng_cisco.h:49
@ NGM_CISCO_GET_IPADDR
Definition: ng_cisco.h:62
@ NGM_CISCO_SET_IPADDR
Definition: ng_cisco.h:61
@ NGM_CISCO_GET_STATUS
Definition: ng_cisco.h:63

Definition at line 144 of file ng_cisco.c.

◆ ng_cisco_ipaddr_type

const struct ng_parse_type ng_cisco_ipaddr_type
static
Initial value:
= {
}
static const struct ng_parse_struct_field ng_cisco_ipaddr_type_fields[]
Definition: ng_cisco.c:129
const struct ng_parse_type ng_parse_struct_type
Definition: ng_parse.c:222

Definition at line 130 of file ng_cisco.c.

◆ ng_cisco_ipaddr_type_fields

const struct ng_parse_struct_field ng_cisco_ipaddr_type_fields[] = NG_CISCO_IPADDR_TYPE_INFO
static

Definition at line 128 of file ng_cisco.c.

◆ ng_cisco_stats_type

const struct ng_parse_type ng_cisco_stats_type
static
Initial value:
= {
}
static const struct ng_parse_struct_field ng_cisco_stats_type_fields[]
Definition: ng_cisco.c:137

Definition at line 138 of file ng_cisco.c.

◆ ng_cisco_stats_type_fields

const struct ng_parse_struct_field ng_cisco_stats_type_fields[] = NG_CISCO_STATS_TYPE_INFO
static

Definition at line 136 of file ng_cisco.c.

◆ typestruct

struct ng_type typestruct
static
Initial value:
= {
.version = NG_ABI_VERSION,
.constructor = cisco_constructor,
.rcvmsg = cisco_rcvmsg,
.shutdown = cisco_shutdown,
.newhook = cisco_newhook,
.rcvdata = cisco_rcvdata,
.disconnect = cisco_disconnect,
.cmdlist = ng_cisco_cmdlist,
}
#define NG_ABI_VERSION
Definition: netgraph.h:77
static const struct ng_cmdlist ng_cisco_cmdlist[]
Definition: ng_cisco.c:144
static ng_shutdown_t cisco_shutdown
Definition: ng_cisco.c:116
static ng_newhook_t cisco_newhook
Definition: ng_cisco.c:117
static ng_rcvdata_t cisco_rcvdata
Definition: ng_cisco.c:118
static ng_constructor_t cisco_constructor
Definition: ng_cisco.c:114
static ng_disconnect_t cisco_disconnect
Definition: ng_cisco.c:119
static ng_rcvmsg_t cisco_rcvmsg
Definition: ng_cisco.c:115
#define NG_CISCO_NODE_TYPE
Definition: ng_cisco.h:48

Definition at line 170 of file ng_cisco.c.