OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmpp_private.h
Go to the documentation of this file.
1 /* $Id: gmpp_private.h 346474 2009-11-14 10:18:58Z ssiano $
2  *
3  * gmpp_private.h - Private definitions for GMP generic packet handling support
4  *
5  * Dave Katz, March 2008
6  *
7  * Copyright (c) 2008, Juniper Networks, Inc.
8  * All rights reserved.
9  */
10 
11 #ifndef __GMPP_PRIVATE_H__
12 #define __GMPP_PRIVATE_H__
13 
14 /*
15  * Context block
16  *
17  * There is one of these, statically allocated, for each client role
18  * (host/router.) It tracks all necessary state for each client.
19  */
20 typedef struct gmpp_context_ {
21  void *ctx_client_context; /* Client's context */
22  gmp_xmit_callback_func ctx_xmit_cb; /* Transmit callback */
23  gmp_xmit_peek_callback_func ctx_xmit_peek_cb; /* Transmit peek callback */
24  gmp_rcv_peek_callback_func ctx_rcv_peek_cb; /* Receive peek callback */
25  gmp_rcv_callback_func ctx_rcv_cb; /* Receive callback */
26  gmp_group_done_callback_func ctx_group_cb; /* Group-done callback */
27  gmp_packet_free_callback_func ctx_pkt_free_cb; /* Free-packet callback */
28  boolean ctx_proto_active[GMP_NUM_PROTOS]; /* True if protocol is active */
29 } gmpp_context;
30 
31 
32 /*
33  * I/O context block
34  *
35  * There is one block per role, per protocol. It defines the transmit-ready
36  * callback used to drive packet transmission.
37  *
38  * Normally, the same callback is used for all interfaces, but a tree of
39  * exceptions exists for specific interfaces needing a different callback.
40  */
41 typedef struct gmpp_io_context_ {
42  gmpp_xmit_ready_func io_ctx_xmitready_cb; /* Transmit-ready callback */
43  gmpx_patroot *io_ctx_exceptions; /* Tree of exception interfaces */
45 
46 typedef struct gmpp_io_exception_ {
47  gmpx_patnode io_ctx_node; /* Node on context tree */
48  gmpx_intf_id io_ctx_intf; /* Interface ID */
49  gmpp_xmit_ready_func io_ctx_alt_cb; /* Callback for this interface */
51 
52 GMPX_PATNODE_TO_STRUCT(gmpp_patnode_to_io_ex, gmpp_io_exception, io_ctx_node);
53 
54 #endif /* __GMPP_PRIVATE_H__ */
gmp_packet_free_callback_func ctx_pkt_free_cb
Definition: gmpp_private.h:27
void(* gmpp_xmit_ready_func)(gmp_role role, gmp_proto proto, gmpx_intf_id intf_id)
Definition: gmp_externs.h:25
gmpx_patroot * io_ctx_exceptions
Definition: gmpp_private.h:43
boolean ctx_proto_active[GMP_NUM_PROTOS]
Definition: gmpp_private.h:28
gmp_rcv_callback_func ctx_rcv_cb
Definition: gmpp_private.h:25
#define GMPX_PATNODE_TO_STRUCT
void(* gmp_packet_free_callback_func)(gmp_packet *packet)
Definition: gmp_private.h:388
gmp_xmit_callback_func ctx_xmit_cb
Definition: gmpp_private.h:22
void * ctx_client_context
Definition: gmpp_private.h:21
void(* gmp_rcv_peek_callback_func)(gmpx_intf_id intf_id, gmp_proto proto, gmp_packet *gen_packet)
Definition: gmp_externs.h:35
gmp_packet *(* gmp_xmit_callback_func)(gmpx_intf_id intf_id, gmp_proto proto, uint32_t buffer_len)
Definition: gmp_private.h:377
void(* gmp_xmit_peek_callback_func)(gmpx_intf_id intf_id, gmp_proto proto, gmp_packet *gen_packet)
Definition: gmp_externs.h:46
struct gmpp_context_ gmpp_context
gmp_rcv_peek_callback_func ctx_rcv_peek_cb
Definition: gmpp_private.h:24
gmpp_xmit_ready_func io_ctx_xmitready_cb
Definition: gmpp_private.h:42
#define gmpx_patroot
void(* gmp_rcv_callback_func)(gmpx_intf_id intf_id, gmp_packet *pkt)
Definition: gmp_private.h:397
gmp_xmit_peek_callback_func ctx_xmit_peek_cb
Definition: gmpp_private.h:23
gmp_group_done_callback_func ctx_group_cb
Definition: gmpp_private.h:26
gmpx_patnode io_ctx_node
Definition: gmpp_private.h:47
#define gmpx_patnode
struct gmpp_io_exception_ gmpp_io_exception
void(* gmp_group_done_callback_func)(void *group_id)
Definition: gmp_private.h:406
struct gmpp_io_context_ gmpp_io_context
gmpp_xmit_ready_func io_ctx_alt_cb
Definition: gmpp_private.h:49
gmpx_intf_id io_ctx_intf
Definition: gmpp_private.h:48