OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmp_externs.h
Go to the documentation of this file.
1 /* $Id: gmp_externs.h 346474 2009-11-14 10:18:58Z ssiano $
2  *
3  * gmp_externs.h - External definitions for GMP support
4  *
5  * Dave Katz, July 2008
6  *
7  * Copyright (c) 2008, Juniper Networks, Inc.
8  * All rights reserved.
9  *
10  * This file defines general, common external definitions for both
11  * host-side and router-side GMP, and is expected to be included in
12  * external code that uses the GMP toolkit.
13  */
14 
15 #ifndef __GMP_EXTERNS_H__
16 #define __GMP_EXTERNS_H__
17 
18 
19 /*
20  * Transmit ready callback type
21  *
22  * This defines the callback made from the generic protocol handler to the
23  * I/O environment when a packet is ready to transmit.
24  */
25 typedef void (*gmpp_xmit_ready_func) (gmp_role role, gmp_proto proto,
26  gmpx_intf_id intf_id);
27 
28 
29 /*
30  * Packet interface receive peek callback type
31  *
32  * This defines the callback made from the generic packet I/O routines
33  * when a generic packet has been received to be passed to the client.
34  */
35 typedef void (*gmp_rcv_peek_callback_func)(gmpx_intf_id intf_id,
36  gmp_proto proto,
37  gmp_packet *gen_packet);
38 
39 
40 /*
41  * Packet interface transmit peek callback type
42  *
43  * This defines the callback made from the generic packet I/O routines
44  * when a generic packet has been formatted for transmission by the client.
45  */
46 typedef void (*gmp_xmit_peek_callback_func)(gmpx_intf_id intf_id,
47  gmp_proto proto,
48  gmp_packet *gen_packet);
49 
50 
51 /* Externals */
52 
53 /* igmp_proto.c */
54 
55 extern uint32_t igmp_next_xmit_packet(gmp_role role, gmpx_intf_id intf_id,
56  void *packet, uint8_t *dest_addr,
57  uint32_t packet_len, void *trace_context,
58  uint32_t trace_flags);
59 extern boolean igmp_process_pkt(void *rcv_pkt, const uint8_t *src_addr,
60  const uint8_t *dest_addr,
61  uint32_t packet_len, gmpx_intf_id intf_id,
62  gmpx_packet_attr attrib, void *trace_context,
63  uint32_t trace_flags);
64 extern void
65  gmp_igmp_trace_pkt(void *pkt, uint32_t len, const uint8_t *addr,
66  gmpx_intf_id intf_id, boolean receive,
67  void *trace_context, uint32_t trace_flags);
68 extern void
69  gmp_igmp_trace_bad_pkt(uint32_t len, const uint8_t *addr,
70  gmpx_intf_id intf_id, void *trace_context,
71  uint32_t trace_flags);
72 
73 /* mld_proto.c */
74 
75 extern uint32_t mld_next_xmit_packet(gmp_role role, gmpx_intf_id intf_id,
76  void *packet, uint8_t *dest_addr,
77  uint32_t packet_len, void *trace_context,
78  uint32_t trace_flags);
79 extern boolean mld_process_pkt(void *rcv_pkt, const uint8_t *src_addr,
80  const uint8_t *dest_addr, uint32_t packet_len,
81  gmpx_intf_id intf_id, gmpx_packet_attr attrib,
82  void *trace_context, uint32_t trace_flags);
83 extern void gmp_mld_trace_pkt(void *pkt, uint32_t len, const uint8_t *addr,
84  gmpx_intf_id intf_id, boolean receive,
85  void *trace_context, uint32_t trace_flags);
86 extern void gmp_mld_trace_bad_pkt(uint32_t len, const uint8_t *addr,
87  gmpx_intf_id intf_id, void *trace_context,
88  uint32_t trace_flags);
89 
90 /* gmp_addrlist.c */
91 
93 extern int gmp_enqueue_addr_thread_addr(gmp_addr_thread *addr_thread,
94  uint8_t *addr, uint32_t addr_len);
95 extern gmp_addr_string
97  gmp_addr_thread_entry **entry_ptr);
98 extern void gmp_destroy_addr_thread(gmp_addr_thread *addr_thread);
99 extern uint32_t gmp_addr_thread_count(gmp_addr_thread *addr_thread);
100 
101 
102 /* gmpp_proto.c */
103 
104 extern void gmp_register_io(gmp_role role, gmp_proto proto,
105  gmpp_xmit_ready_func xmit_ready);
106 extern void gmp_register_io_exception(gmp_role role, gmp_proto proto,
107  gmpx_intf_id intf_id,
108  gmpp_xmit_ready_func xmit_ready);
109 extern void gmp_register_peek_function(gmp_role role,
110  gmp_xmit_peek_callback_func xm_peek_cb,
111  gmp_rcv_peek_callback_func rc_peek_cb);
112 
113 #endif /* __GMP_EXTERNS_H__ */
void gmp_register_peek_function(gmp_role role, gmp_xmit_peek_callback_func xm_peek_cb, gmp_rcv_peek_callback_func rc_peek_cb)
void(* gmpp_xmit_ready_func)(gmp_role role, gmp_proto proto, gmpx_intf_id intf_id)
Definition: gmp_externs.h:25
void gmp_mld_trace_bad_pkt(uint32_t len, const uint8_t *addr, gmpx_intf_id intf_id, void *trace_context, uint32_t trace_flags)
uint32_t igmp_next_xmit_packet(gmp_role role, gmpx_intf_id intf_id, void *packet, uint8_t *dest_addr, uint32_t packet_len, void *trace_context, uint32_t trace_flags)
void gmp_mld_trace_pkt(void *pkt, uint32_t len, const uint8_t *addr, gmpx_intf_id intf_id, boolean receive, void *trace_context, uint32_t trace_flags)
void gmp_register_io_exception(gmp_role role, gmp_proto proto, gmpx_intf_id intf_id, gmpp_xmit_ready_func xmit_ready)
gmp_proto
Definition: gmp.h:45
int gmp_enqueue_addr_thread_addr(gmp_addr_thread *addr_thread, uint8_t *addr, uint32_t addr_len)
void gmp_igmp_trace_bad_pkt(uint32_t len, const uint8_t *addr, gmpx_intf_id intf_id, void *trace_context, uint32_t trace_flags)
Definition: gmp_private.h:355
boolean mld_process_pkt(void *rcv_pkt, const uint8_t *src_addr, const uint8_t *dest_addr, uint32_t packet_len, gmpx_intf_id intf_id, gmpx_packet_attr attrib, void *trace_context, uint32_t trace_flags)
void(* gmp_rcv_peek_callback_func)(gmpx_intf_id intf_id, gmp_proto proto, gmp_packet *gen_packet)
Definition: gmp_externs.h:35
uint32_t gmp_addr_thread_count(gmp_addr_thread *addr_thread)
void(* gmp_xmit_peek_callback_func)(gmpx_intf_id intf_id, gmp_proto proto, gmp_packet *gen_packet)
Definition: gmp_externs.h:46
uint32_t mld_next_xmit_packet(gmp_role role, gmpx_intf_id intf_id, void *packet, uint8_t *dest_addr, uint32_t packet_len, void *trace_context, uint32_t trace_flags)
boolean gmpx_packet_attr
void gmp_destroy_addr_thread(gmp_addr_thread *addr_thread)
boolean igmp_process_pkt(void *rcv_pkt, const uint8_t *src_addr, const uint8_t *dest_addr, uint32_t packet_len, gmpx_intf_id intf_id, gmpx_packet_attr attrib, void *trace_context, uint32_t trace_flags)
gmp_addr_string * gmp_next_addr_thread_addr(gmp_addr_thread *addr_thread, gmp_addr_thread_entry **entry_ptr)
gmp_addr_thread * gmp_alloc_addr_thread(void)
gmp_role
Definition: gmp.h:56
void gmp_igmp_trace_pkt(void *pkt, uint32_t len, const uint8_t *addr, gmpx_intf_id intf_id, boolean receive, void *trace_context, uint32_t trace_flags)
void gmp_register_io(gmp_role role, gmp_proto proto, gmpp_xmit_ready_func xmit_ready)