NetServices Stack source
Dependents: HelloWorld ServoInterfaceBoardExample1 4180_Lab4
igmp.c File Reference
IGMP - Internet Group Management Protocol. More...
Go to the source code of this file.
Functions | |
static PACK_STRUCT_END struct igmp_group * | igmp_lookup_group (struct netif *ifp, ip_addr_t *addr) |
Search for a specific igmp group and create a new one if not found-. | |
static err_t | igmp_remove_group (struct igmp_group *group) |
Remove a group in the global igmp_group_list. | |
static void | igmp_timeout (struct igmp_group *group) |
Called if a timeout for one group is reached. | |
static void | igmp_start_timer (struct igmp_group *group, u8_t max_time) |
Start a timer for an igmp group. | |
static void | igmp_stop_timer (struct igmp_group *group) |
Stop a timer for an igmp_group. | |
static void | igmp_delaying_member (struct igmp_group *group, u8_t maxresp) |
Delaying membership report for a group if necessary. | |
static err_t | igmp_ip_output_if (struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, struct netif *netif) |
Sends an IP packet on a network interface. | |
static void | igmp_send (struct igmp_group *group, u8_t type) |
Send an igmp packet to a specific group. | |
void | igmp_init (void) |
Initialize the IGMP module. | |
void | igmp_dump_group_list () |
Dump global IGMP groups list. | |
err_t | igmp_start (struct netif *netif) |
Start IGMP processing on interface. | |
err_t | igmp_stop (struct netif *netif) |
Stop IGMP processing on interface. | |
void | igmp_report_groups (struct netif *netif) |
Report IGMP memberships for this interface. | |
struct igmp_group * | igmp_lookfor_group (struct netif *ifp, ip_addr_t *addr) |
Search for a group in the global igmp_group_list. | |
void | igmp_input (struct pbuf *p, struct netif *inp, ip_addr_t *dest) |
Called from ip_input() if a new IGMP packet is received. | |
err_t | igmp_joingroup (ip_addr_t *ifaddr, ip_addr_t *groupaddr) |
Join a group on one network interface. | |
err_t | igmp_leavegroup (ip_addr_t *ifaddr, ip_addr_t *groupaddr) |
Leave a group on one network interface. | |
void | igmp_tmr (void) |
The igmp timer function (both for NO_SYS=1 and =0) Should be called every IGMP_TMR_INTERVAL milliseconds (100 ms is default). |
Detailed Description
IGMP - Internet Group Management Protocol.
Definition in file igmp.c.
Function Documentation
static void igmp_delaying_member | ( | struct igmp_group * | group, |
u8_t | maxresp | ||
) | [static] |
Delaying membership report for a group if necessary.
- Parameters:
-
group the igmp_group for which "delaying" membership report maxresp query delay
void igmp_input | ( | struct pbuf * | p, |
struct netif * | inp, | ||
ip_addr_t * | dest | ||
) |
Called from ip_input() if a new IGMP packet is received.
- Parameters:
-
p received igmp packet, p->payload pointing to the ip header inp network interface on which the packet was received dest destination ip address of the igmp packet
static err_t igmp_ip_output_if | ( | struct pbuf * | p, |
ip_addr_t * | src, | ||
ip_addr_t * | dest, | ||
struct netif * | netif | ||
) | [static] |
Sends an IP packet on a network interface.
This function constructs the IP header and calculates the IP header checksum. If the source IP address is NULL, the IP address of the outgoing network interface is filled in as source address.
- Parameters:
-
p the packet to send (p->payload points to the data, e.g. next protocol header; if dest == IP_HDRINCL, p already includes an IP header and p->payload points to that IP header) src the source IP address to send from (if src == IP_ADDR_ANY, the IP address of the netif used to send is used as source address) dest the destination IP address to send the packet to ttl the TTL value to be set in the IP header proto the PROTOCOL to be set in the IP header netif the netif on which to send this packet
- Returns:
- ERR_OK if the packet was sent OK ERR_BUF if p doesn't have enough space for IP/LINK headers returns errors returned by netif->output
err_t igmp_joingroup | ( | ip_addr_t * | ifaddr, |
ip_addr_t * | groupaddr | ||
) |
err_t igmp_leavegroup | ( | ip_addr_t * | ifaddr, |
ip_addr_t * | groupaddr | ||
) |
struct igmp_group* igmp_lookfor_group | ( | struct netif * | ifp, |
ip_addr_t * | addr | ||
) | [read] |
struct igmp_group * igmp_lookup_group | ( | struct netif * | ifp, |
ip_addr_t * | addr | ||
) | [static, read] |
static err_t igmp_remove_group | ( | struct igmp_group * | group ) | [static] |
void igmp_report_groups | ( | struct netif * | netif ) |
static void igmp_send | ( | struct igmp_group * | group, |
u8_t | type | ||
) | [static] |
err_t igmp_start | ( | struct netif * | netif ) |
static void igmp_start_timer | ( | struct igmp_group * | group, |
u8_t | max_time | ||
) | [static] |
Start a timer for an igmp group.
- Parameters:
-
group the igmp_group for which to start a timer max_time the time in multiples of IGMP_TMR_INTERVAL (decrease with every call to igmp_tmr())
err_t igmp_stop | ( | struct netif * | netif ) |
static void igmp_stop_timer | ( | struct igmp_group * | group ) | [static] |
Stop a timer for an igmp_group.
- Parameters:
-
group the igmp_group for which to stop the timer
static void igmp_timeout | ( | struct igmp_group * | group ) | [static] |
Called if a timeout for one group is reached.
Sends a report for this group.
- Parameters:
-
group an igmp_group for which a timeout is reached
Generated on Tue Jul 12 2022 11:52:59 by 1.7.2