31 #define MAXSTRINGSIZE_1 1000
33 extern void gmpx_trace(
void *context,
const char *fmt, ...);
37 uint32_t qrivl, uint32_t lmqi);
72 uint32_t qrivl, uint32_t lmqi)
92 params = &def_gmpr_intf_params[mcast_af];
126 gd = &mgm_global[mcast_af];
137 &igmp_client_context);
150 gd = &mgm_global[mcast_af];
225 (
const u_int8_t *)intf_addr);
242 void *rcv_pkt, u_int32_t packet_len,
246 boolean parse_ok =
FALSE;
258 u_int8_t *group_addr, u_int8_t *source_addr,
261 *output_handle = handle;
268 u_int8_t *group_addr, u_int8_t *source_addr,
269 boolean static_group)
280 gif = gmp_handle_to_gif(handle);
301 u_int8_t *group_addr)
311 boolean pending =
FALSE;
339 gif = gmp_handle_to_gif(handle);
425 boolean pending =
FALSE;
437 while (notif_count--) {
451 gif = gmp_handle_to_gif(handle);
513 boolean pending =
FALSE;
542 boolean querier, u_int8_t *querier_addr)
552 va_start( arglist, fmt );
553 vsprintf(dest, fmt, arglist);
556 snprintf(buff,
sizeof(buff), dest, arglist);
558 MCTRACE(Info,
"igmp_trace: ", buff);
565 const void *parms, ...)
579 gif = gmp_handle_to_gif(intf);
591 if (formatted_len == 0) {
void gmp_register_peek_function(gmp_role role, gmp_xmit_peek_callback_func xm_peek_cb, gmp_rcv_peek_callback_func rc_peek_cb)
#define IGMP_MAX_HOST_NOTIF_PER_PASS
uint8_t gmpr_ifparm_version
gmp_filter_mode notif_filter_mode
gmp_addr_string host_notif_host_addr
bool igmp_send_one_packet(gmp_intf_handle *intf)
int gmpr_detach_intf(gmp_instance_id instance_id, gmpx_intf_id intf_id)
void gmp_free_send_buffer(mgm_global_data *gd, gmp_intf *intf, uint8_t *buffer)
gmpr_client_host_notification_type host_notif_type
gmpx_intf_id host_notif_intf_id
uint8_t * gmp_get_send_buffer(mgm_global_data *gd, gmp_intf *intf)
gmp_intf_handle gmpif_handle
void gmpr_return_notification(gmpr_client_notification *notification)
#define IGMP_MAX_NOTIF_PER_PASS
uint32_t gmpr_ifparm_chan_threshold
void gmp_set_intf_params(mgm_global_data *gd, gmp_intf *gif)
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)
gmp_intf * gmp_attach_intf(mgm_global_data *gd, void *mif_state)
uint8_t gmpr_ifparm_robustness
gmpr_client_notification * gmpr_get_notification(gmp_client_id client_id, gmpr_client_notification *last_notification)
gmp_addr_string notif_group_addr
static gmp_intf_handle * gmp_gif_to_handle(gmp_intf *gif)
uint32_t gmpr_ifparm_qivl
void gmpr_return_host_notification(gmpr_client_host_notification *host_notif)
gmpr_intf_params def_gmpr_intf_params[MCAST_AF_MAX]
boolean gmp_client_host_notification(mgm_global_data *gd)
gmpr_client_host_notification * gmpr_get_host_notification(gmp_client_id client_id, gmpr_client_host_notification *last_notification)
void igmp_host_notification_ready(void *context)
int gmpr_attach_intf(gmp_instance_id instance_id, gmpx_intf_id intf_id)
void gmpx_post_event(void *context, gmpx_event_type ev, const void *parms,...)
boolean gmpr_ifparm_fast_leave
void gmp_set_def_ipv4_ivl_params(uint32_t robust_count, uint32_t qivl, uint32_t qrivl, uint32_t lmqi)
#define IGMP_QUERY_RESPONSE_INTERVAL
void gmp_xmit_ready(gmp_role role, gmp_proto proto, gmpx_intf_id intf_id)
void gmp_set_def_igmp_version(uint32_t version)
void gmp_deinit(mc_af mcast_af)
gmpx_intf_id notif_intf_id
int gmpr_set_intf_params(gmp_instance_id instance_id, gmpx_intf_id intf_id, gmpr_intf_params *params)
gmp_addr_string notif_source_addr
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)
void gmpr_update_trace_flags(gmp_instance_id instance_id, uint32_t trace_flags)
gmp_addr_string host_notif_source_addr
boolean gmpr_ifparm_suppress_gs_query
boolean gmpr_ifparm_suppress_gen_query
mgm_global_data * gmp_init(mc_af mcast_af, task *tp, void *gmp_sm)
boolean gmpr_ifparm_passive_receive
boolean gmp_update_intf_state(mgm_global_data *gd, gmp_intf *gif, const gmp_addr_string *intf_addr)
void gmpx_trace(void *context, const char *parms,...)
uint32_t gmpr_ifparm_chan_limit
boolean gmp_policy_check(mgm_global_data *gd, gmp_intf *intf, gmp_addr_string source, gmp_addr_string group)
#define MGM_GROUP_SRC_REMOVED
void mgm_querier_change(void *cli_context UNUSED, gmp_intf_handle *handle, boolean querier, u_int8_t *querier_addr)
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)
mgm_global_data mgm_global[MCAST_AF_MAX]
void igmp_notification_ready(void *context)
void gmp_set_def_intf_params(mc_af mcast_af)
boolean gmp_client_notification(mgm_global_data *gd)
#define IGMP_QUERY_INTERVAL
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)
#define IGMP_ROBUST_COUNT
void gmp_notification_ready(mgm_global_data *gd)
#define IGMP_QUERY_LASTMEMBER_INTERVAL
void gmpr_destroy_instance(gmp_instance_id instance_id)
boolean gmp_policy_cb(void *inst_context, gmp_intf_handle *handle, u_int8_t *group_addr, u_int8_t *source_addr, boolean static_group)
gmp_client_id gmpr_register(gmp_instance_id instance_id, void *cli_context, gmpr_client_context *context)
uint32_t gmpr_ifparm_qrivl
gmp_addr_string host_notif_group_addr
uint32_t gmpr_ifparm_lmqi
uint8_t gmp_v4_addr[IPV4_ADDR_LEN]
void gmp_group_notify(mgm_global_data *gd, gmp_intf *gif, int group_action, gmp_addr_string source, gmp_addr_string group)
gmp_instance_id gmpr_create_instance(gmp_proto proto, void *inst_context, gmpr_instance_context *context)
gmpr_client_notification_type notif_type
static gmpr_client_context igmp_client_context
#define MGM_GROUP_REMOVED
boolean gmp_ssm_check_cb(void *inst_context UNUSED, gmp_intf_handle *handle, u_int8_t *group_addr)
void gmp_cache_resync_notify(mgm_global_data *gd, gmp_intf *gif, gmp_addr_string source, gmp_addr_string group)
void gmp_detach_intf(mgm_global_data *gd, gmp_intf *gif)
static gmpr_instance_context gmp_inst_ctx
void gmpr_detach(gmp_client_id client_id)
void gmp_static_peek(gmp_intf_handle *handle, gmp_proto proto, gmp_packet *rcv_packet)
uint32_t gmpr_ifparm_log_interval
boolean gmp_notification_handler(mgm_global_data *gd)
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)
void gmp_register_io(gmp_role role, gmp_proto proto, gmpp_xmit_ready_func xmit_ready)
void gmp_send_one_packet(mgm_global_data *gd, gmp_intf *intf, uint8_t *pkt, uint32_t pkt_len, gmp_addr_string dest)
boolean gmp_update_intf_querying(mgm_global_data *gd, gmp_intf *gif, boolean query)
boolean gmpr_notification_last_sg(gmpr_client_notification *notification)
void gmpr_update_intf_state(gmp_instance_id instance_id, gmpx_intf_id intf_id, const uint8_t *intf_addr)
task_thread gmpifh_xmit_thread