Line data Source code
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 */ 44 : } gmpp_io_context; 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 */ 50 : } gmpp_io_exception; 51 : 52 2627 : GMPX_PATNODE_TO_STRUCT(gmpp_patnode_to_io_ex, gmpp_io_exception, io_ctx_node); 53 : 54 : #endif /* __GMPP_PRIVATE_H__ */