OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmp_private.h File Reference
#include "bitvector.h"
#include "ordinal.h"
Include dependency graph for gmp_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  gmp_addr_catalog_
 
struct  gmp_addr_cat_entry_
 
struct  gmp_addr_vect_
 
struct  gmp_addr_list_
 
struct  gmp_addr_list_entry_
 
struct  gmp_query_packet_
 
struct  gmp_report_packet_
 
struct  gmp_report_group_record_
 
struct  gmp_packet_
 
struct  gmp_addr_thread_
 
struct  gmp_addr_thread_entry_
 

Macros

#define EMBEDDED_STRUCT_TO_STRUCT(procname, outerstruct, innerstruct, field)
 
#define GMP_VERSION_DEFAULT   GMP_VERSION_SOURCES /* Default version */
 
#define GMP_ROBUSTNESS_DEFAULT   2 /* Retransmission count */
 
#define GMP_UNSOL_RPT_IVL_DEFAULT   1000 /* Unsolicited report delay (msec) */
 
#define MSECS_PER_SEC   1000 /* Milliseconds per second */
 

Typedefs

typedef struct
gmp_addr_list_entry_ *(* 
gmp_addr_list_alloc_func )(void *ctx)
 
typedef void(* gmp_addr_list_free_func )(struct gmp_addr_list_entry_ *addr_entry)
 
typedef struct gmp_addr_catalog_ gmp_addr_catalog
 
typedef struct gmp_addr_cat_entry_ gmp_addr_cat_entry
 
typedef struct gmp_addr_vect_ gmp_addr_vect
 
typedef struct gmp_addr_list_ gmp_addr_list
 
typedef struct gmp_addr_list_entry_ gmp_addr_list_entry
 
typedef struct gmp_query_packet_ gmp_query_packet
 
typedef struct gmp_report_packet_ gmp_report_packet
 
typedef struct
gmp_report_group_record_ 
gmp_report_group_record
 
typedef gmp_packet *(* gmp_xmit_callback_func )(gmpx_intf_id intf_id, gmp_proto proto, uint32_t buffer_len)
 
typedef void(* gmp_packet_free_callback_func )(gmp_packet *packet)
 
typedef void(* gmp_rcv_callback_func )(gmpx_intf_id intf_id, gmp_packet *pkt)
 
typedef void(* gmp_group_done_callback_func )(void *group_id)
 

Enumerations

enum  gmp_version { GMP_VERSION_INVALID = 0, GMP_VERSION_BASIC, GMP_VERSION_LEAVES, GMP_VERSION_SOURCES }
 
enum  gmp_report_rectype {
  GMP_RPT_INVALID = 0, GMP_RPT_IS_IN = 1, GMP_RPT_IS_EX = 2, GMP_RPT_TO_IN = 3,
  GMP_RPT_TO_EX = 4, GMP_RPT_ALLOW = 5, GMP_RPT_BLOCK = 6, GMP_RPT_MIN = GMP_RPT_IS_IN,
  GMP_RPT_MAX = GMP_RPT_BLOCK
}
 
enum  gmp_message_type { GMP_QUERY_PACKET, GMP_REPORT_PACKET, GMP_NUM_PACKET_TYPES }
 

Functions

 GMPX_PATNODE_TO_STRUCT (gmp_addr_patnode_to_addr_cat_entry, gmp_addr_cat_entry, adcat_ent_addr_node)
 
 GMPX_PATNODE_TO_STRUCT (gmp_ord_patnode_to_addr_cat_entry, gmp_addr_cat_entry, adcat_ent_ord_node)
 
static bit_vectorgmp_addr_vector (gmp_addr_vect *addr_vect)
 
 GMPX_PATNODE_TO_STRUCT (gmp_patnode_to_addr_list_entry, gmp_addr_list_entry, addr_ent_patnode)
 
 THREAD_TO_STRUCT (gmp_thread_to_addr_list_entry, gmp_addr_list_entry, addr_ent_thread)
 
 THREAD_TO_STRUCT (gmp_xmit_thread_to_addr_list_entry, gmp_addr_list_entry, addr_ent_xmit_thread)
 
 THREAD_TO_STRUCT (gmp_thread_to_report_group_record, gmp_report_group_record, gmp_rpt_thread)
 
 THREAD_TO_STRUCT (gmp_adth_thread_to_thread_entry, gmp_addr_thread_entry, gmp_adth_thread)
 
static gmp_version gmp_translate_version (gmp_proto proto, uint32_t version)
 
static uint32_t gmp_untranslate_version (gmp_proto proto, gmp_version version)
 
static boolean gmp_addr_in_list (gmp_addr_list *addr_list, ordinal_t ordinal)
 
void gmp_common_init (void)
 
int gmp_addr_vect_fill (gmp_addr_vect *addr_vect, gmp_addr_thread *addr_thread)
 
void gmp_addr_list_clean (gmp_addr_list *addr_list)
 
void gmp_free_generic_addr_list_entry (gmp_addr_list_entry *addr_entry)
 
void gmp_flush_addr_list (gmp_addr_list *addr_list)
 
int gmp_add_addr_list_entry (gmp_addr_list *addr_list, gmp_addr_list_entry *addr_entry)
 
gmp_addr_list_entrygmp_lookup_addr_entry (gmp_addr_list *addr_list, ordinal_t ordinal)
 
gmp_addr_list_entrygmp_addr_list_next_entry (gmp_addr_list *list, gmp_addr_list_entry *prev)
 
void gmp_addr_list_init (gmp_addr_list *list, gmp_addr_catalog *catalog, gmp_addr_list_alloc_func alloc_func, gmp_addr_list_free_func free_func, void *context)
 
void gmp_enqueue_xmit_addr_entry (gmp_addr_list_entry *addr_entry)
 
void gmp_dequeue_xmit_addr_entry (gmp_addr_list_entry *addr_entry)
 
gmp_addr_list_entrygmp_first_xmit_addr_entry (gmp_addr_list *addr_list)
 
void gmp_enqueue_xmit_addr_list (gmp_addr_list *addr_list)
 
void gmp_flush_xmit_list (gmp_addr_list *addr_list)
 
void gmp_delete_addr_list_entry (gmp_addr_list_entry *addr_entry)
 
boolean gmp_addr_list_empty (gmp_addr_list *list)
 
boolean gmp_xmit_addr_list_empty (gmp_addr_list *list)
 
int gmp_addr_vect_set (gmp_addr_vect *vector, gmp_addr_string *addr)
 
void gmp_addr_vect_clean (gmp_addr_vect *vector)
 
void gmp_init_addr_vector (gmp_addr_vect *vector, gmp_addr_catalog *catalog)
 
void gmp_destroy_addr_catalog (gmp_addr_catalog *catalog)
 
int gmp_init_addr_catalog (gmp_addr_catalog *catalog, uint32_t addr_len)
 
gmp_addr_cat_entrygmp_get_addr_cat_by_ordinal (gmp_addr_catalog *catalog, ordinal_t ordinal)
 
ordinal_t gmp_lookup_create_addr_cat_entry (gmp_addr_catalog *catalog, uint8_t *addr)
 
gmp_addr_cat_entrygmp_lookup_addr_cat_entry (gmp_addr_catalog *catalog, const uint8_t *addr)
 
void gmp_lock_adcat_entry (gmp_addr_catalog *catalog, ordinal_t ordinal)
 
void gmp_unlock_adcat_entry (gmp_addr_catalog *catalog, ordinal_t ordinal)
 
int gmp_addr_vect_inter (gmp_addr_vect *src1, gmp_addr_vect *src2, gmp_addr_vect *dest, bv_callback callback, void *context, bv_callback_option cb_opt)
 
int gmp_addr_vect_union (gmp_addr_vect *src1, gmp_addr_vect *src2, gmp_addr_vect *dest, bv_callback callback, void *context, bv_callback_option cb_opt)
 
int gmp_addr_vect_minus (gmp_addr_vect *src1, gmp_addr_vect *src2, gmp_addr_vect *dest, bv_callback callback, void *context, bv_callback_option cb_opt)
 
int gmp_addr_vect_compare (gmp_addr_vect *src1, gmp_addr_vect *src2, bv_callback callback, void *context)
 
int gmp_addr_vect_walk (gmp_addr_vect *vect, bv_callback callback, void *context)
 
int gmp_build_addr_list (gmp_addr_list *addr_list, gmp_addr_vect *vector)
 
boolean gmp_addr_list_copy_cb (void *context, bv_bitnum_t bitnum, boolean new_val, boolean old_val)
 
gmp_addr_list_entrygmp_alloc_generic_addr_list_entry (void *context)
 
gmp_addr_list_entrygmp_create_addr_list_entry (gmp_addr_list *addr_list, ordinal_t ordinal)
 
void gmp_move_addr_list_entry (gmp_addr_list *to_list, gmp_addr_list_entry *addr_entry)
 
boolean gmp_addr_vect_empty (gmp_addr_vect *vector)
 
boolean gmp_addr_is_zero (gmp_addr_string *addr, uint32_t addr_len)
 
void gmpp_start_xmit (gmp_role role, gmp_proto proto, gmpx_intf_id intf_id)
 
void gmpp_register (gmp_role role, gmp_xmit_callback_func xmit_callback, gmp_rcv_callback_func rcv_callback, gmp_group_done_callback_func group_done_callback, gmp_packet_free_callback_func packet_free_callback)
 
void gmpp_deregister (gmp_role role)
 
void gmpp_enab_disab_proto (gmp_role role, gmp_proto proto, boolean enabled)
 
gmp_packetgmpp_create_packet_header (gmp_version version, gmp_message_type message_type, gmp_proto proto)
 
void gmpp_destroy_packet (gmp_packet *packet)
 
gmp_report_group_recordgmpp_create_group_record (gmp_report_packet *report_packet, void *group_id, const uint8_t *group_addr, uint32_t addr_len)
 
void gmpp_init (void)
 
gmp_packetgmpp_next_xmit_packet (gmp_role role, gmp_proto proto, gmpx_intf_id intf_id, uint32_t buffer_len)
 
void gmpp_group_done (gmp_role role, gmp_proto proto, void *group_id)
 
void gmpp_packet_done (gmp_role role, gmp_proto proto, gmp_packet *packet)
 
void gmpp_process_rcv_packet (gmp_packet *packet, gmpx_intf_id intf_id)
 
uint32_t gmpp_max_group_count (gmp_proto proto, gmp_version version, gmp_message_type msg_type, uint32_t buffer_len)
 

Macro Definition Documentation

#define EMBEDDED_STRUCT_TO_STRUCT (   procname,
  outerstruct,
  innerstruct,
  field 
)
Value:
static inline outerstruct * procname (innerstruct *ptr) \
{ \
if (ptr)\
return ((outerstruct *) (((uint8_t *) ptr) - \
offsetof(outerstruct, field))); \
return NULL; \
}

Definition at line 28 of file gmp_private.h.

#define GMP_ROBUSTNESS_DEFAULT   2 /* Retransmission count */

Definition at line 50 of file gmp_private.h.

#define GMP_UNSOL_RPT_IVL_DEFAULT   1000 /* Unsolicited report delay (msec) */

Definition at line 51 of file gmp_private.h.

#define GMP_VERSION_DEFAULT   GMP_VERSION_SOURCES /* Default version */

Definition at line 49 of file gmp_private.h.

#define MSECS_PER_SEC   1000 /* Milliseconds per second */

Definition at line 54 of file gmp_private.h.

Typedef Documentation

typedef struct gmp_addr_list_ gmp_addr_list
typedef struct gmp_addr_list_entry_*(* gmp_addr_list_alloc_func)(void *ctx)

Definition at line 65 of file gmp_private.h.

typedef void(* gmp_addr_list_free_func)(struct gmp_addr_list_entry_ *addr_entry)

Definition at line 74 of file gmp_private.h.

typedef struct gmp_addr_vect_ gmp_addr_vect
typedef void(* gmp_group_done_callback_func)(void *group_id)

Definition at line 406 of file gmp_private.h.

typedef void(* gmp_packet_free_callback_func)(gmp_packet *packet)

Definition at line 388 of file gmp_private.h.

typedef void(* gmp_rcv_callback_func)(gmpx_intf_id intf_id, gmp_packet *pkt)

Definition at line 397 of file gmp_private.h.

typedef gmp_packet*(* gmp_xmit_callback_func)(gmpx_intf_id intf_id, gmp_proto proto, uint32_t buffer_len)

Definition at line 377 of file gmp_private.h.

Enumeration Type Documentation

Enumerator
GMP_QUERY_PACKET 
GMP_REPORT_PACKET 
GMP_NUM_PACKET_TYPES 

Definition at line 311 of file gmp_private.h.

Enumerator
GMP_RPT_INVALID 
GMP_RPT_IS_IN 
GMP_RPT_IS_EX 
GMP_RPT_TO_IN 
GMP_RPT_TO_EX 
GMP_RPT_ALLOW 
GMP_RPT_BLOCK 
GMP_RPT_MIN 
GMP_RPT_MAX 

Definition at line 279 of file gmp_private.h.

Enumerator
GMP_VERSION_INVALID 
GMP_VERSION_BASIC 
GMP_VERSION_LEAVES 
GMP_VERSION_SOURCES 

Definition at line 42 of file gmp_private.h.

Function Documentation

int gmp_add_addr_list_entry ( gmp_addr_list addr_list,
gmp_addr_list_entry addr_entry 
)
static boolean gmp_addr_in_list ( gmp_addr_list addr_list,
ordinal_t  ordinal 
)
inlinestatic

Definition at line 498 of file gmp_private.h.

Here is the call graph for this function:

boolean gmp_addr_is_zero ( gmp_addr_string addr,
uint32_t  addr_len 
)
void gmp_addr_list_clean ( gmp_addr_list addr_list)
boolean gmp_addr_list_copy_cb ( void *  context,
bv_bitnum_t  bitnum,
boolean  new_val,
boolean  old_val 
)
boolean gmp_addr_list_empty ( gmp_addr_list list)
void gmp_addr_list_init ( gmp_addr_list list,
gmp_addr_catalog catalog,
gmp_addr_list_alloc_func  alloc_func,
gmp_addr_list_free_func  free_func,
void *  context 
)
gmp_addr_list_entry* gmp_addr_list_next_entry ( gmp_addr_list list,
gmp_addr_list_entry prev 
)
void gmp_addr_vect_clean ( gmp_addr_vect vector)
int gmp_addr_vect_compare ( gmp_addr_vect src1,
gmp_addr_vect src2,
bv_callback  callback,
void *  context 
)
boolean gmp_addr_vect_empty ( gmp_addr_vect vector)
int gmp_addr_vect_fill ( gmp_addr_vect addr_vect,
gmp_addr_thread addr_thread 
)
int gmp_addr_vect_inter ( gmp_addr_vect src1,
gmp_addr_vect src2,
gmp_addr_vect dest,
bv_callback  callback,
void *  context,
bv_callback_option  cb_opt 
)
int gmp_addr_vect_minus ( gmp_addr_vect src1,
gmp_addr_vect src2,
gmp_addr_vect dest,
bv_callback  callback,
void *  context,
bv_callback_option  cb_opt 
)
int gmp_addr_vect_set ( gmp_addr_vect vector,
gmp_addr_string addr 
)
int gmp_addr_vect_union ( gmp_addr_vect src1,
gmp_addr_vect src2,
gmp_addr_vect dest,
bv_callback  callback,
void *  context,
bv_callback_option  cb_opt 
)
int gmp_addr_vect_walk ( gmp_addr_vect vect,
bv_callback  callback,
void *  context 
)
static bit_vector* gmp_addr_vector ( gmp_addr_vect addr_vect)
inlinestatic

Definition at line 145 of file gmp_private.h.

gmp_addr_list_entry* gmp_alloc_generic_addr_list_entry ( void *  context)
int gmp_build_addr_list ( gmp_addr_list addr_list,
gmp_addr_vect vector 
)
void gmp_common_init ( void  )
gmp_addr_list_entry* gmp_create_addr_list_entry ( gmp_addr_list addr_list,
ordinal_t  ordinal 
)
void gmp_delete_addr_list_entry ( gmp_addr_list_entry addr_entry)
void gmp_dequeue_xmit_addr_entry ( gmp_addr_list_entry addr_entry)
void gmp_destroy_addr_catalog ( gmp_addr_catalog catalog)
void gmp_enqueue_xmit_addr_entry ( gmp_addr_list_entry addr_entry)
void gmp_enqueue_xmit_addr_list ( gmp_addr_list addr_list)
gmp_addr_list_entry* gmp_first_xmit_addr_entry ( gmp_addr_list addr_list)
void gmp_flush_addr_list ( gmp_addr_list addr_list)
void gmp_flush_xmit_list ( gmp_addr_list addr_list)
void gmp_free_generic_addr_list_entry ( gmp_addr_list_entry addr_entry)
gmp_addr_cat_entry* gmp_get_addr_cat_by_ordinal ( gmp_addr_catalog catalog,
ordinal_t  ordinal 
)
int gmp_init_addr_catalog ( gmp_addr_catalog catalog,
uint32_t  addr_len 
)
void gmp_init_addr_vector ( gmp_addr_vect vector,
gmp_addr_catalog catalog 
)
void gmp_lock_adcat_entry ( gmp_addr_catalog catalog,
ordinal_t  ordinal 
)
gmp_addr_cat_entry* gmp_lookup_addr_cat_entry ( gmp_addr_catalog catalog,
const uint8_t *  addr 
)
gmp_addr_list_entry* gmp_lookup_addr_entry ( gmp_addr_list addr_list,
ordinal_t  ordinal 
)
ordinal_t gmp_lookup_create_addr_cat_entry ( gmp_addr_catalog catalog,
uint8_t *  addr 
)
void gmp_move_addr_list_entry ( gmp_addr_list to_list,
gmp_addr_list_entry addr_entry 
)
static gmp_version gmp_translate_version ( gmp_proto  proto,
uint32_t  version 
)
inlinestatic

Definition at line 420 of file gmp_private.h.

void gmp_unlock_adcat_entry ( gmp_addr_catalog catalog,
ordinal_t  ordinal 
)
static uint32_t gmp_untranslate_version ( gmp_proto  proto,
gmp_version  version 
)
inlinestatic

Definition at line 458 of file gmp_private.h.

boolean gmp_xmit_addr_list_empty ( gmp_addr_list list)
gmp_report_group_record* gmpp_create_group_record ( gmp_report_packet report_packet,
void *  group_id,
const uint8_t *  group_addr,
uint32_t  addr_len 
)
gmp_packet* gmpp_create_packet_header ( gmp_version  version,
gmp_message_type  message_type,
gmp_proto  proto 
)
void gmpp_deregister ( gmp_role  role)
void gmpp_destroy_packet ( gmp_packet packet)
void gmpp_enab_disab_proto ( gmp_role  role,
gmp_proto  proto,
boolean  enabled 
)
void gmpp_group_done ( gmp_role  role,
gmp_proto  proto,
void *  group_id 
)
void gmpp_init ( void  )
uint32_t gmpp_max_group_count ( gmp_proto  proto,
gmp_version  version,
gmp_message_type  msg_type,
uint32_t  buffer_len 
)
gmp_packet* gmpp_next_xmit_packet ( gmp_role  role,
gmp_proto  proto,
gmpx_intf_id  intf_id,
uint32_t  buffer_len 
)
void gmpp_packet_done ( gmp_role  role,
gmp_proto  proto,
gmp_packet packet 
)
void gmpp_process_rcv_packet ( gmp_packet packet,
gmpx_intf_id  intf_id 
)
void gmpp_register ( gmp_role  role,
gmp_xmit_callback_func  xmit_callback,
gmp_rcv_callback_func  rcv_callback,
gmp_group_done_callback_func  group_done_callback,
gmp_packet_free_callback_func  packet_free_callback 
)
void gmpp_start_xmit ( gmp_role  role,
gmp_proto  proto,
gmpx_intf_id  intf_id 
)
GMPX_PATNODE_TO_STRUCT ( gmp_addr_patnode_to_addr_cat_entry  ,
gmp_addr_cat_entry  ,
adcat_ent_addr_node   
)
GMPX_PATNODE_TO_STRUCT ( gmp_ord_patnode_to_addr_cat_entry  ,
gmp_addr_cat_entry  ,
adcat_ent_ord_node   
)
GMPX_PATNODE_TO_STRUCT ( gmp_patnode_to_addr_list_entry  ,
gmp_addr_list_entry  ,
addr_ent_patnode   
)
THREAD_TO_STRUCT ( gmp_thread_to_addr_list_entry  ,
gmp_addr_list_entry  ,
addr_ent_thread   
)
THREAD_TO_STRUCT ( gmp_xmit_thread_to_addr_list_entry  ,
gmp_addr_list_entry  ,
addr_ent_xmit_thread   
)
THREAD_TO_STRUCT ( gmp_thread_to_report_group_record  ,
gmp_report_group_record  ,
gmp_rpt_thread   
)
THREAD_TO_STRUCT ( gmp_adth_thread_to_thread_entry  ,
gmp_addr_thread_entry  ,
gmp_adth_thread   
)