OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmpx_environment.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef gmpx_environment_h
6 #define gmpx_environment_h
7 
8 #include "bvx_environment.h"
9 
10 /* Pick up the patricia stuff directly. */
11 
12 #define gmpx_patnode patnode
13 #define gmpx_patroot patroot
14 #define GMPX_PATNODE_TO_STRUCT PATNODE_TO_STRUCT
15 #define gmpx_patricia_lookup_least patricia_lookup_least
16 #define gmpx_patricia_lookup_geq patricia_lookup_geq
17 #define gmpx_patroot_init(keylen, offset) \
18  patricia_root_init(NULL, FALSE, (keylen), (offset))
19 #define GMPX_PATRICIA_OFFSET STRUCT_OFFSET
20 #define gmpx_patricia_add patricia_add
21 #define gmpx_patroot_destroy patricia_root_delete
22 #define gmpx_patricia_get_next patricia_get_next
23 #define gmpx_patricia_lookup patricia_lookup
24 #define gmpx_patricia_delete patricia_delete
25 
26 /* Interface index. */
27 
29 #define GMPX_MANY_INTFS 50 /* Intf count before changing
30  * general query strategy
31  */
32 
33 /* Memory stuff. */
34 
35 #define gmpx_block_tag block_t
36 #define gmpx_malloc_block task_block_alloc
37 #define gmpx_free_block task_block_free
38 #define gmpx_malloc_block_create task_block_init
39 
40 /* Checksum */
41 
42 #define gmpx_calculate_cksum inet_cksum
43 
44 /* Assert. */
45 
46 #define gmpx_assert assert
47 
48 #define GMPX_UNUSED UNUSED
49 
50 #define GMPX_MAX_RTR_CLIENTS 2 /* Should be enough */
51 
52 /*
53  * Packet attribute. For now it's just a boolean, with TRUE meaning that
54  * the packet represents statically defined groups.
55  */
56 typedef boolean gmpx_packet_attr; /* Packet attribute */
57 
58 /* Tracing */
59 
60 extern void gmpx_trace(void *context, const char *parms, ...);
61 
62 typedef enum {
68 
69 /* Event */
70 extern void gmpx_post_event(void *context, gmpx_event_type ev,
71  const void *parms, ...);
72 
73 /*
74  * Timer entry
75  *
76  * This consists of a timer embedded in an outer structure so that we can
77  * adapt rpd's timers to GMP's expectations.
78  */
79 typedef struct gmpx_timer_ gmpx_timer;
80 typedef void (*gmpx_timer_callback)(gmpx_timer *timer, void *context);
81 
82 struct gmpx_timer_ {
83  task_timer *gmpxt_timer; /* rpd's timer */
84  void *gmpxt_context; /* timer context */
85  gmpx_timer_callback gmpxt_callback; /* Callback address */
86  gmp_timer_group gmpxt_group; /* Timer group */
87  gmp_proto gmpxt_proto; /* Associated protocol */
88 };
89 
90 
91 /* gmpx_environment.c */
92 
93 extern void gmpx_start_timer(gmpx_timer *timer, uint32_t ivl,
94  uint32_t jitter_pct);
95 extern gmpx_timer *gmpx_create_timer(void *inst_context, const char *name,
96  gmpx_timer_callback callback,
97  void *timer_context);
99  void *inst_context,
100  const char *name,
101  gmpx_timer_callback callback,
102  void *timer_context);
103 extern void gmpx_destroy_timer(gmpx_timer *timer);
104 extern uint32_t gmpx_timer_time_remaining(gmpx_timer *timer);
105 extern boolean gmpx_timer_running(gmpx_timer *timer);
106 extern void gmpx_stop_timer(gmpx_timer *timer);
107 extern void gmpx_smear_timer_group(gmp_proto proto, gmp_timer_group group);
108 
109 #endif /* gmpx_environment_h */
gmpx_timer * gmpx_create_timer(void *inst_context, const char *name, gmpx_timer_callback callback, void *timer_context)
boolean gmpx_timer_running(gmpx_timer *timer)
void gmpx_stop_timer(gmpx_timer *timer)
task_timer * gmpxt_timer
void gmpx_smear_timer_group(gmp_proto proto, gmp_timer_group group)
gmpx_timer * gmpx_create_grouped_timer(gmp_timer_group group, void *inst_context, const char *name, gmpx_timer_callback callback, void *timer_context)
gmp_proto
Definition: gmp.h:45
gmp_timer_group
Definition: gmp.h:141
void gmpx_post_event(void *context, gmpx_event_type ev, const void *parms,...)
Definition: gmp_map.cc:564
void gmpx_trace(void *context, const char *parms,...)
Definition: gmp_map.cc:548
boolean gmpx_packet_attr
uint32_t gmpx_timer_time_remaining(gmpx_timer *timer)
struct gmp_intf_handle_ * gmpx_intf_id
void * gmpxt_context
void gmpx_start_timer(gmpx_timer *timer, uint32_t ivl, uint32_t jitter_pct)
void gmpx_destroy_timer(gmpx_timer *timer)
gmp_proto gmpxt_proto
gmp_timer_group gmpxt_group
void(* gmpx_timer_callback)(gmpx_timer *timer, void *context)
gmpx_event_type
gmpx_timer_callback gmpxt_callback