diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index 31aa5619d1..9632059b3c 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -167,6 +167,26 @@ class UdpContext #endif // !LWIP_IPV6 + /* + * Add a netif (by its index) as the multicast interface + */ + void setMulticastInterface(netif* p_pNetIf) + { +#if LWIP_VERSION_MAJOR == 1 + udp_set_multicast_netif_addr(_pcb, (p_pNetIf ? ip_2_ip4(p_pNetIf->ip_addr) : ip_addr_any)); +#else + udp_set_multicast_netif_index(_pcb, (p_pNetIf ? netif_get_index(p_pNetIf) : 0)); +#endif + } + + /* + * Allow access to pcb to change eg. options + */ + udp_pcb* pcb(void) + { + return _pcb; + } + void setMulticastTTL(int ttl) { #ifdef LWIP_MAYBE_XCC @@ -205,6 +225,11 @@ class UdpContext return (pos <= _rx_buf->len); } + netif* getInputNetif() const + { + return _currentAddr.input_netif; + } + CONST IPAddress& getRemoteAddress() CONST { return _currentAddr.srcaddr; @@ -265,7 +290,6 @@ class UdpContext // ref'ing it to prevent release from the below pbuf_free(deleteme) pbuf_ref(_rx_buf); } - // remove the already-consumed head of the chain pbuf_free(deleteme); _rx_buf_offset = 0; @@ -457,8 +481,10 @@ class UdpContext #if LWIP_VERSION_MAJOR == 1 #define TEMPDSTADDR (¤t_iphdr_dest) + #define TEMPINPUTNETIF (current_netif) #else #define TEMPDSTADDR (ip_current_dest_addr()) + #define TEMPINPUTNETIF (ip_current_input_netif()) #endif // chain this helper pbuf first @@ -486,7 +512,7 @@ class UdpContext return; } // construct in place - new(PBUF_ALIGNER(pb_helper->payload)) AddrHelper(srcaddr, TEMPDSTADDR, srcport); + new(PBUF_ALIGNER(pb_helper->payload)) AddrHelper(srcaddr, TEMPDSTADDR, srcport, TEMPINPUTNETIF); pb_helper->flags = PBUF_HELPER_FLAG; // mark helper pbuf // chain it pbuf_cat(_rx_buf, pb_helper); @@ -500,6 +526,7 @@ class UdpContext _currentAddr.srcaddr = srcaddr; _currentAddr.dstaddr = TEMPDSTADDR; _currentAddr.srcport = srcport; + _currentAddr.input_netif = TEMPINPUTNETIF; DEBUGV(":urn %d\r\n", pb->tot_len); _first_buf_taken = false; @@ -512,6 +539,7 @@ class UdpContext } #undef TEMPDSTADDR + #undef TEMPINPUTNETIF } @@ -539,10 +567,11 @@ class UdpContext { IPAddress srcaddr, dstaddr; int16_t srcport; + netif* input_netif; AddrHelper() { } - AddrHelper(const ip_addr_t* src, const ip_addr_t* dst, uint16_t srcport): - srcaddr(src), dstaddr(dst), srcport(srcport) { } + AddrHelper(const ip_addr_t* src, const ip_addr_t* dst, uint16_t srcport, netif* input_netif): + srcaddr(src), dstaddr(dst), srcport(srcport), input_netif(input_netif) { } }; AddrHelper _currentAddr; diff --git a/libraries/LittleFS/lib/littlefs b/libraries/LittleFS/lib/littlefs index ce2c01f098..6b65737715 160000 --- a/libraries/LittleFS/lib/littlefs +++ b/libraries/LittleFS/lib/littlefs @@ -1 +1 @@ -Subproject commit ce2c01f098f4d2b9479de5a796c3bb531f1fe14c +Subproject commit 6b65737715039ef92d348014316b575b52547019 diff --git a/libraries/SoftwareSerial b/libraries/SoftwareSerial index 1bb28accb7..3bfd18d428 160000 --- a/libraries/SoftwareSerial +++ b/libraries/SoftwareSerial @@ -1 +1 @@ -Subproject commit 1bb28accb7cadacd425e7394b5e517933d187106 +Subproject commit 3bfd18d428992b1924eebb28e333ee21d00e9ead diff --git a/tools/sdk/ssl/bearssl b/tools/sdk/ssl/bearssl index 0645c68c36..89454af34e 160000 --- a/tools/sdk/ssl/bearssl +++ b/tools/sdk/ssl/bearssl @@ -1 +1 @@ -Subproject commit 0645c68c3653233c4d0e59252cd591a664f808fd +Subproject commit 89454af34e3e61ddfc9837f3da5a0bc8ed44c3aa