Skip to content

Commit a6e3b29

Browse files
forkineyeme-no-dev
authored andcommitted
Added support for using TCPIP_ADAPTER_IF_MAX to join igmp groups on all (#2279)
interfaces
1 parent 812d131 commit a6e3b29

File tree

1 file changed

+35
-13
lines changed

1 file changed

+35
-13
lines changed

Diff for: libraries/AsyncUDP/src/AsyncUDP.cpp

+35-13
Original file line numberDiff line numberDiff line change
@@ -561,26 +561,48 @@ static esp_err_t joinMulticastGroup(const ip_addr_t *addr, bool join, tcpip_adap
561561
return ESP_ERR_INVALID_ARG;
562562
}
563563
netif = (struct netif *)nif;
564-
}
565564

566-
if (addr->type == IPADDR_TYPE_V4) {
567-
if(join){
568-
if (igmp_joingroup_netif(netif, (const ip4_addr *)&(addr->u_addr.ip4))) {
569-
return ESP_ERR_INVALID_STATE;
565+
if (addr->type == IPADDR_TYPE_V4) {
566+
if(join){
567+
if (igmp_joingroup_netif(netif, (const ip4_addr *)&(addr->u_addr.ip4))) {
568+
return ESP_ERR_INVALID_STATE;
569+
}
570+
} else {
571+
if (igmp_leavegroup_netif(netif, (const ip4_addr *)&(addr->u_addr.ip4))) {
572+
return ESP_ERR_INVALID_STATE;
573+
}
570574
}
571575
} else {
572-
if (igmp_leavegroup_netif(netif, (const ip4_addr *)&(addr->u_addr.ip4))) {
573-
return ESP_ERR_INVALID_STATE;
576+
if(join){
577+
if (mld6_joingroup_netif(netif, &(addr->u_addr.ip6))) {
578+
return ESP_ERR_INVALID_STATE;
579+
}
580+
} else {
581+
if (mld6_leavegroup_netif(netif, &(addr->u_addr.ip6))) {
582+
return ESP_ERR_INVALID_STATE;
583+
}
574584
}
575585
}
576-
} else {
577-
if(join){
578-
if (mld6_joingroup_netif(netif, &(addr->u_addr.ip6))) {
579-
return ESP_ERR_INVALID_STATE;
586+
} else {
587+
if (addr->type == IPADDR_TYPE_V4) {
588+
if(join){
589+
if (igmp_joingroup((const ip4_addr *)IP4_ADDR_ANY, (const ip4_addr *)&(addr->u_addr.ip4))) {
590+
return ESP_ERR_INVALID_STATE;
591+
}
592+
} else {
593+
if (igmp_leavegroup((const ip4_addr *)IP4_ADDR_ANY, (const ip4_addr *)&(addr->u_addr.ip4))) {
594+
return ESP_ERR_INVALID_STATE;
595+
}
580596
}
581597
} else {
582-
if (mld6_leavegroup_netif(netif, &(addr->u_addr.ip6))) {
583-
return ESP_ERR_INVALID_STATE;
598+
if(join){
599+
if (mld6_joingroup((const ip6_addr *)IP6_ADDR_ANY, &(addr->u_addr.ip6))) {
600+
return ESP_ERR_INVALID_STATE;
601+
}
602+
} else {
603+
if (mld6_leavegroup((const ip6_addr *)IP6_ADDR_ANY, &(addr->u_addr.ip6))) {
604+
return ESP_ERR_INVALID_STATE;
605+
}
584606
}
585607
}
586608
}

0 commit comments

Comments
 (0)