FD.io VPP
v18.07-rc0-415-g6c78436
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | igmp_key_t |
igmp key More... | |
struct | igmp_src_t |
igmp source More... | |
struct | igmp_group_t_ |
igmp group More... | |
struct | igmp_config_t_ |
igmp configuration More... | |
struct | igmp_type_info_t |
struct | igmp_report_type_info_t |
struct | igmp_main_t_ |
igmp main More... | |
struct | igmp_timer_t_ |
igmp timer More... | |
Macros | |
#define | IGMP_QUERY_TIMER (60) |
#define | IGMP_SRC_TIMER (3 * IGMP_QUERY_TIMER) |
#define | IGMP_DEFAULT_ROBUSTNESS_VARIABLE (2) |
#define | ENABLE_IGMP_DBG 0 |
#define | IGMP_DBG(...) |
#define | IGMP_GENERAL_QUERY_ADDRESS (0xE0000001) |
General Query address - 224.0.0.1. More... | |
#define | IGMP_MEMBERSHIP_REPORT_ADDRESS (0xE0000016) |
Membership Report address - 224.0.0.22. More... | |
#define | group_ptr(p, l) ((igmp_membership_group_v3_t *)((char*)p + l)) |
helper macro to get igmp mebership group from pointer plus offset More... | |
#define | IGMP_GROUP_FLAG_QUERY_RESP_RECVED (1 << 0) |
reponse to query was received More... | |
#define | IGMP_CONFIG_FLAG_QUERY_RESP_RECVED (1 << 0) |
#define | IGMP_CONFIG_FLAG_CAN_SEND_REPORT (1 << 1) |
Typedefs | |
typedef struct igmp_config_t_ | igmp_config_t |
igmp configuration More... | |
typedef struct igmp_group_t_ | igmp_group_t |
igmp group More... | |
typedef void( | create_msg_t) (vlib_buffer_t *b, igmp_config_t *config, igmp_group_t *group) |
create message More... | |
typedef struct igmp_timer_t_ | igmp_timer_t |
igmp timer More... | |
typedef struct igmp_main_t_ | igmp_main_t |
igmp main More... | |
typedef void( | igmp_timer_function_t) (vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer) |
igmp timer function More... | |
Enumerations | |
enum | { IGMP_PROCESS_EVENT_UPDATE_TIMER = 1 } |
enum | igmp_ver_t { IGMP_V1, IGMP_V2, IGMP_V3 } |
enum | igmp_next_t { IGMP_NEXT_IP4_REWRITE_MCAST_NODE, IGMP_NEXT_IP6_REWRITE_MCAST_NODE, IGMP_N_NEXT } |
Variables | |
enum { ... } | igmp_process_event_t |
igmp_main_t | igmp_main |
vlib_node_registration_t | igmp_timer_process_node |
(constructor) VLIB_REGISTER_NODE (igmp_timer_process_node) More... | |
vlib_node_registration_t | igmp_input_node |
(constructor) VLIB_REGISTER_NODE (igmp_input_node) More... | |
vlib_node_registration_t | igmp_parse_query_node |
(constructor) VLIB_REGISTER_NODE (igmp_parse_query_node) More... | |
vlib_node_registration_t | igmp_parse_report_node |
(constructor) VLIB_REGISTER_NODE (igmp_parse_report_node) More... | |
#define group_ptr | ( | p, | |
l | |||
) | ((igmp_membership_group_v3_t *)((char*)p + l)) |
#define IGMP_GENERAL_QUERY_ADDRESS (0xE0000001) |
#define IGMP_GROUP_FLAG_QUERY_RESP_RECVED (1 << 0) |
#define IGMP_MEMBERSHIP_REPORT_ADDRESS (0xE0000016) |
#define IGMP_SRC_TIMER (3 * IGMP_QUERY_TIMER) |
typedef void( create_msg_t) (vlib_buffer_t *b, igmp_config_t *config, igmp_group_t *group) |
typedef struct igmp_config_t_ igmp_config_t |
igmp configuration
sw_if_index | - interface sw_if_index |
adj_index | - adjacency index |
cli_api_configured | - if zero, an igmp report was received |
next_create_msg | - specify next igmp message |
igmp_ver | - igmp version |
robustness_var | - robustness variable |
flags | - igmp configuration falgs |
igmp_group_by_key | - group by key hash |
groups | - pool of groups |
typedef struct igmp_group_t_ igmp_group_t |
typedef struct igmp_main_t_ igmp_main_t |
igmp main
msg_id_base | - API message ID base |
igmp_api_client_by_client_index | - get api client by client_index |
api_clients | - pool of api clients registered for join/leave notifications |
igmp_config_by_sw_if_index | - get config index by config key |
configs | - pool of igmp configurations |
buffers | - buffer cache |
timers | - pool of igmp timers |
type_infos | - igmp type info |
report_type_infos | - igmp report type info |
type_info_by_type | - |
report_type_info_by_report_type | - |
general_query_address | - 224.0.0.1 |
membership_report_address | - 224.0.0.22 |
typedef void( igmp_timer_function_t) (vlib_main_t *vm, vlib_node_runtime_t *rt, igmp_main_t *im, igmp_timer_t *timer) |
typedef struct igmp_timer_t_ igmp_timer_t |
enum igmp_next_t |
enum igmp_ver_t |
void igmp_clear_config | ( | igmp_config_t * | config | ) |
void igmp_clear_group | ( | igmp_config_t * | config, |
igmp_group_t * | group | ||
) |
|
inlinestatic |
void igmp_create_group_timer | ( | f64 | time, |
u32 | sw_if_index, | ||
igmp_key_t * | gkey, | ||
igmp_timer_function_t * | func | ||
) |
igmp create group timer
time | - expiration time (at this time the timer will expire) |
sw_if_index | - interface sw_if_index |
gkey | - key to find the group by |
func | - function to all after timer expiration |
Creates new group timer.
Definition at line 124 of file igmp.c.
void igmp_create_int_timer | ( | f64 | time, |
u32 | sw_if_index, | ||
igmp_timer_function_t * | func | ||
) |
igmp create int timer
time | - expiration time (at this time the timer will expire) |
sw_if_index | - interface sw_if_index |
func | - function to all after timer expiration |
Creates new interface timer. Delayed reports, query msg, query resp.
Definition at line 108 of file igmp.c.
void igmp_create_src_timer | ( | f64 | time, |
u32 | sw_if_index, | ||
igmp_key_t * | gkey, | ||
igmp_key_t * | skey, | ||
igmp_timer_function_t * | func | ||
) |
igmp create group timer
time | - expiration time (at this time the timer will expire) |
sw_if_index | - interface sw_if_index |
gkey | - key to find the group by |
skey | - key to find the source by |
func | - function to all after timer expiration |
Creates new source timer.
Definition at line 146 of file igmp.c.
void igmp_event | ( | igmp_main_t * | im, |
igmp_config_t * | config, | ||
igmp_group_t * | group, | ||
igmp_src_t * | src | ||
) |
igmp event
im | - igmp main |
config | - igmp configuration |
group | - igmp group |
src | - source |
Notify registered api clients of (S,G) filter update.
Definition at line 301 of file igmp_api.c.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
int igmp_listen | ( | vlib_main_t * | vm, |
u8 | enable, | ||
u32 | sw_if_index, | ||
ip46_address_t | saddr, | ||
ip46_address_t | gaddr, | ||
u8 | cli_api_configured | ||
) |
igmp listen
vm | - vlib main |
enable | - 0 == remove (S,G), else add (S,G) |
sw_if_index | - interface sw_if_index |
saddr | - source address |
gaddr | - group address |
cli_api_configured | - if zero, an igmp report has been received on interface |
Add/del (S,G) on an interface. If user configured, send a status change report from the interface. If a report was received on interface notify registered api clients.
Definition at line 738 of file igmp.c.
void igmp_query_resp_exp | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | rt, | ||
igmp_main_t * | im, | ||
igmp_timer_t * | timer | ||
) |
void igmp_send_query | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | rt, | ||
igmp_main_t * | im, | ||
igmp_timer_t * | timer | ||
) |
void igmp_send_report | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | rt, | ||
igmp_main_t * | im, | ||
igmp_timer_t * | timer | ||
) |
void igmp_send_state_changed | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | rt, | ||
igmp_main_t * | im, | ||
igmp_timer_t * | timer | ||
) |
void igmp_sort_timers | ( | igmp_timer_t * | timers | ) |
void igmp_src_exp | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | rt, | ||
igmp_main_t * | im, | ||
igmp_timer_t * | timer | ||
) |
|
inlinestatic |
vlib_node_registration_t igmp_input_node |
igmp_main_t igmp_main |
vlib_node_registration_t igmp_parse_query_node |
vlib_node_registration_t igmp_parse_report_node |
enum { ... } igmp_process_event_t |
vlib_node_registration_t igmp_timer_process_node |