mirror of
https://git.savannah.nongnu.org/git/lwip.git
synced 2026-08-10 01:23:48 +08:00
Changes for "#20503 IGMP Improvement". Initialize igmp_mac_filter to NULL in netif_add (this field should be set in the netif's "init" function). Use the "imr_interface" field (for socket layer) and/or the "interface" field (for netconn layer), for join/leave operations. The igmp_join/leavegroup first parameter change from a netif to an ipaddr. This field could be a netif's ipaddr, or "any" (same meaning than ip_addr_isany).
This commit is contained in:
@@ -915,9 +915,9 @@ do_join_leave_group(struct api_msg_msg *msg)
|
||||
if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
|
||||
#if LWIP_UDP
|
||||
if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
|
||||
msg->conn->err = igmp_joingroup ( netif_default, msg->msg.jl.multiaddr);
|
||||
msg->conn->err = igmp_joingroup ( msg->msg.jl.interface, msg->msg.jl.multiaddr);
|
||||
} else {
|
||||
msg->conn->err = igmp_leavegroup( netif_default, msg->msg.jl.multiaddr);
|
||||
msg->conn->err = igmp_leavegroup( msg->msg.jl.interface, msg->msg.jl.multiaddr);
|
||||
}
|
||||
#endif /* LWIP_UDP */
|
||||
#if (LWIP_TCP || LWIP_RAW)
|
||||
|
||||
@@ -1626,9 +1626,9 @@ static void lwip_setsockopt_internal(void *arg)
|
||||
/* If this is a TCP or a RAW socket, ignore these options. */
|
||||
struct ip_mreq *imr = (struct ip_mreq *)optval;
|
||||
if(optname == IP_ADD_MEMBERSHIP){
|
||||
data->err = igmp_joingroup(netif_default, (struct ip_addr*)&(imr->imr_multiaddr.s_addr));
|
||||
data->err = igmp_joingroup((struct ip_addr*)&(imr->imr_interface.s_addr), (struct ip_addr*)&(imr->imr_multiaddr.s_addr));
|
||||
} else {
|
||||
data->err = igmp_leavegroup(netif_default, (struct ip_addr*)&(imr->imr_multiaddr.s_addr));
|
||||
data->err = igmp_leavegroup((struct ip_addr*)&(imr->imr_interface.s_addr), (struct ip_addr*)&(imr->imr_multiaddr.s_addr));
|
||||
}
|
||||
if(data->err != ERR_OK) {
|
||||
data->err = EADDRNOTAVAIL;
|
||||
|
||||
Reference in New Issue
Block a user