OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmp_map.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_gmp_map_h
6 #define vnsw_agent_gmp_map_h
7 
8 typedef enum {
13 } mc_af;
14 
15 typedef struct _mgm_global_data {
16  void *gmp_sm;
17  task *tp;
18  mc_af mgm_gd_af; /* Address family */
19 
21  void *mgm_gmpr_instance; /* GMP instance ID */
22  void *mgm_gmpr_client; /* GMP client ID */
24 
25 #define IGMP_MAX_NOTIF_PER_PASS 10
26 #define IGMP_MAX_HOST_NOTIF_PER_PASS 50
27 
28 #define MGM_GROUP_ADDED 1
29 #define MGM_GROUP_REMOVED 2
30 #define MGM_GROUP_SRC_REMOVED 3
31 
32 extern mgm_global_data *gmp_init(mc_af mcast_af, task *tp, void *gmp_sm);
33 extern void gmp_deinit(mc_af mcast_af);
34 extern gmp_intf *gmp_attach_intf(mgm_global_data *gd, void *mif_state);
35 extern void gmp_detach_intf(mgm_global_data *gd, gmp_intf *gif);
36 extern boolean gmp_update_intf_state(mgm_global_data *gd, gmp_intf *gif,
37  const gmp_addr_string *intf_addr);
38 extern boolean gmp_update_intf_querying(mgm_global_data *gd, gmp_intf *gif,
39  boolean query);
40 extern boolean gmp_process_pkt(mgm_global_data *gd, gmp_intf *gif,
41  void *rcv_pkt, uint32_t packet_len,
42  const gmp_addr_string *src_addr,
43  const gmp_addr_string *dst_addr);
44 
45 extern boolean gmp_oif_map_cb (void *inst_context UNUSED, gmp_intf_handle *handle,
46  uint8_t *group_addr, uint8_t *source_addr,
47  gmp_intf_handle **output_handle);
48 extern boolean gmp_policy_cb (void *inst_context, gmp_intf_handle *handle,
49  uint8_t *group_addr, uint8_t *source_addr,
50  boolean static_group);
51 extern void igmp_notification_ready (void *context);
52 extern void igmp_host_notification_ready (void *context);
53 extern void mgm_querier_change(void *cli_context UNUSED, gmp_intf_handle *handle,
54  boolean querier, uint8_t *querier_addr);
55 extern boolean gmp_ssm_check_cb (void *inst_context UNUSED, gmp_intf_handle *handle,
56  uint8_t *group_addr);
57 extern void gmp_xmit_ready(gmp_role role, gmp_proto proto, gmpx_intf_id intf_id);
58 extern void gmp_static_peek(gmp_intf_handle *handle, gmp_proto proto,
59  gmp_packet *rcv_packet);
60 
61 extern boolean gmp_policy_check(mgm_global_data *gd, gmp_intf *intf,
62  gmp_addr_string source, gmp_addr_string group);
63 extern void gmp_group_notify(mgm_global_data *gd, gmp_intf *gif,
64  int group_action, gmp_addr_string source,
65  gmp_addr_string group);
67  gmp_addr_string source, gmp_addr_string group);
68 extern void gmp_host_update(mgm_global_data *gd, gmp_intf *intf, boolean join,
69  gmp_addr_string host, gmp_addr_string source,
70  gmp_addr_string group);
72 extern boolean gmp_notification_handler(mgm_global_data *gd);
73 extern uint8_t *gmp_get_send_buffer(mgm_global_data *gd, gmp_intf *intf);
74 extern void gmp_free_send_buffer(mgm_global_data *gd, gmp_intf *intf,
75  uint8_t *buffer);
76 extern void gmp_send_one_packet(mgm_global_data *gd, gmp_intf *intf,
77  uint8_t *pkt, uint32_t pkt_len,
78  gmp_addr_string dest);
79 
80 #endif /* vnsw_agent_gmp_map_h */
void gmp_free_send_buffer(mgm_global_data *gd, gmp_intf *intf, uint8_t *buffer)
Definition: gmp_proto.cc:970
uint8_t * gmp_get_send_buffer(mgm_global_data *gd, gmp_intf *intf)
Definition: gmp_proto.cc:959
struct _mgm_global_data mgm_global_data
void * gmp_sm
Definition: gmp_map.h:16
gmp_intf * gmp_attach_intf(mgm_global_data *gd, void *mif_state)
Definition: gmp_map.cc:177
Definition: task_int.h:10
gmp_proto
Definition: gmp.h:45
void igmp_host_notification_ready(void *context)
Definition: gmp_map.cc:533
void gmp_xmit_ready(gmp_role role, gmp_proto proto, gmpx_intf_id intf_id)
Definition: gmp_map.cc:604
void gmp_deinit(mc_af mcast_af)
Definition: gmp_map.cc:146
boolean refresh_required
Definition: gmp_map.h:20
boolean gmp_oif_map_cb(void *inst_context UNUSED, gmp_intf_handle *handle, u_int8_t *group_addr, u_int8_t *source_addr, gmp_intf_handle **output_handle)
Definition: gmp_map.cc:257
mgm_global_data * gmp_init(mc_af mcast_af, task *tp, void *gmp_sm)
Definition: gmp_map.cc:115
boolean gmp_update_intf_state(mgm_global_data *gd, gmp_intf *gif, const gmp_addr_string *intf_addr)
Definition: gmp_map.cc:221
void * mgm_gmpr_instance
Definition: gmp_map.h:21
boolean gmp_policy_check(mgm_global_data *gd, gmp_intf *intf, gmp_addr_string source, gmp_addr_string group)
Definition: gmp_proto.cc:827
void * mgm_gmpr_client
Definition: gmp_map.h:22
void mgm_querier_change(void *cli_context UNUSED, gmp_intf_handle *handle, boolean querier, u_int8_t *querier_addr)
Definition: gmp_map.cc:541
mc_af
Definition: gmp_map.h:8
void igmp_notification_ready(void *context)
Definition: gmp_map.cc:524
mc_af mgm_gd_af
Definition: gmp_map.h:18
boolean gmp_process_pkt(mgm_global_data *gd, gmp_intf *gif, void *rcv_pkt, u_int32_t packet_len, const gmp_addr_string *src_addr, const gmp_addr_string *dst_addr)
Definition: gmp_map.cc:241
void gmp_notification_ready(mgm_global_data *gd)
Definition: gmp_proto.cc:856
boolean gmp_policy_cb(void *inst_context, gmp_intf_handle *handle, u_int8_t *group_addr, u_int8_t *source_addr, boolean static_group)
Definition: gmp_map.cc:267
#define UNUSED
void gmp_group_notify(mgm_global_data *gd, gmp_intf *gif, int group_action, gmp_addr_string source, gmp_addr_string group)
Definition: gmp_proto.cc:870
gmp_role
Definition: gmp.h:56
boolean gmp_ssm_check_cb(void *inst_context UNUSED, gmp_intf_handle *handle, u_int8_t *group_addr)
Definition: gmp_map.cc:300
void gmp_cache_resync_notify(mgm_global_data *gd, gmp_intf *gif, gmp_addr_string source, gmp_addr_string group)
Definition: gmp_proto.cc:899
void gmp_detach_intf(mgm_global_data *gd, gmp_intf *gif)
Definition: gmp_map.cc:207
void gmp_static_peek(gmp_intf_handle *handle, gmp_proto proto, gmp_packet *rcv_packet)
Definition: gmp_map.cc:624
boolean gmp_notification_handler(mgm_global_data *gd)
Definition: gmp_map.cc:511
void gmp_host_update(mgm_global_data *gd, gmp_intf *intf, boolean join, gmp_addr_string host, gmp_addr_string source, gmp_addr_string group)
Definition: gmp_proto.cc:927
void gmp_send_one_packet(mgm_global_data *gd, gmp_intf *intf, uint8_t *pkt, uint32_t pkt_len, gmp_addr_string dest)
Definition: gmp_proto.cc:983
boolean gmp_update_intf_querying(mgm_global_data *gd, gmp_intf *gif, boolean query)
Definition: gmp_map.cc:230