ON Semiconductor / mbed-os

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Embed: (wiki syntax)

« Back to documentation index

lwip_igmp.c File Reference

lwip_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, const ip4_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_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, const ip4_addr_t *src, const ip4_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.
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_groupigmp_lookfor_group (struct netif *ifp, const ip4_addr_t *addr)
 Search for a group in the global igmp_group_list.
void igmp_input (struct pbuf *p, struct netif *inp, const ip4_addr_t *dest)
 Called from ip_input() if a new IGMP packet is received.
err_t igmp_joingroup (const ip4_addr_t *ifaddr, const ip4_addr_t *groupaddr)
 Join a group on one network interface.
err_t igmp_joingroup_netif (struct netif *netif, const ip4_addr_t *groupaddr)
 Join a group on one network interface.
err_t igmp_leavegroup (const ip4_addr_t *ifaddr, const ip4_addr_t *groupaddr)
 Leave a group on one network interface.
err_t igmp_leavegroup_netif (struct netif *netif, const ip4_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 lwip_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:
groupthe igmp_group for which "delaying" membership report
maxrespquery delay

Definition at line 751 of file lwip_igmp.c.

void igmp_init ( void   )

Initialize the IGMP module.

Definition at line 159 of file lwip_igmp.c.

void igmp_input ( struct pbuf p,
struct netif inp,
const ip4_addr_t dest 
)

Called from ip_input() if a new IGMP packet is received.

Parameters:
preceived igmp packet, p->payload pointing to the igmp header
inpnetwork interface on which the packet was received
destdestination ip address of the igmp packet

Definition at line 372 of file lwip_igmp.c.

static err_t igmp_ip_output_if ( struct pbuf p,
const ip4_addr_t src,
const ip4_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:
pthe 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)
srcthe 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)
destthe destination IP address to send the packet to
ttlthe TTL value to be set in the IP header
protothe PROTOCOL to be set in the IP header
netifthe 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

Definition at line 781 of file lwip_igmp.c.

struct igmp_group* igmp_lookfor_group ( struct netif ifp,
const ip4_addr_t addr 
) [read]

Search for a group in the global igmp_group_list.

Parameters:
ifpthe network interface for which to look
addrthe group ip address to search for
Returns:
a struct igmp_group* if the group has been found, NULL if the group wasn't found.

Definition at line 272 of file lwip_igmp.c.

struct igmp_group * igmp_lookup_group ( struct netif ifp,
const ip4_addr_t addr 
) [static, read]

Search for a specific igmp group and create a new one if not found-.

Parameters:
ifpthe network interface for which to look
addrthe group ip address to search
Returns:
a struct igmp_group*, NULL on memory error.

Definition at line 298 of file lwip_igmp.c.

static err_t igmp_remove_group ( struct igmp_group group ) [static]

Remove a group in the global igmp_group_list.

Parameters:
groupthe group to remove from the global igmp_group_list
Returns:
ERR_OK if group was removed from the list, an err_t otherwise

Definition at line 337 of file lwip_igmp.c.

void igmp_report_groups ( struct netif netif )

Report IGMP memberships for this interface.

Parameters:
netifnetwork interface on which report IGMP memberships

Definition at line 249 of file lwip_igmp.c.

static void igmp_send ( struct igmp_group group,
u8_t  type 
) [static]

Send an igmp packet to a specific group.

Parameters:
groupthe group to which to send the packet
typethe type of igmp packet to send

Definition at line 798 of file lwip_igmp.c.

err_t igmp_start ( struct netif netif )

Start IGMP processing on interface.

Parameters:
netifnetwork interface on which start IGMP processing

Definition at line 173 of file lwip_igmp.c.

static void igmp_start_timer ( struct igmp_group group,
u8_t  max_time 
) [static]

Start a timer for an igmp group.

Parameters:
groupthe igmp_group for which to start a timer
max_timethe time in multiples of IGMP_TMR_INTERVAL (decrease with every call to igmp_tmr())

Definition at line 730 of file lwip_igmp.c.

err_t igmp_stop ( struct netif netif )

Stop IGMP processing on interface.

Parameters:
netifnetwork interface on which stop IGMP processing

Definition at line 205 of file lwip_igmp.c.

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:
groupan igmp_group for which a timeout is reached

Definition at line 707 of file lwip_igmp.c.

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).

Definition at line 685 of file lwip_igmp.c.