mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-06 05:21:22 +03:00
Additions to UdpContext needed for LEAmDNS2 (#7048)
* Addition to UdpContext needed for LEAmDNS2
This commit is contained in:
parent
2d58be744b
commit
4b2bf45933
@ -167,6 +167,26 @@ public:
|
|||||||
|
|
||||||
#endif // !LWIP_IPV6
|
#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 ? p_pNetIf->ip_addr : ip_addr_any));
|
||||||
|
#else
|
||||||
|
udp_set_multicast_netif_index(_pcb, (p_pNetIf ? netif_get_index(p_pNetIf) : NETIF_NO_INDEX));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allow access to pcb to change eg. options
|
||||||
|
*/
|
||||||
|
udp_pcb* pcb(void)
|
||||||
|
{
|
||||||
|
return _pcb;
|
||||||
|
}
|
||||||
|
|
||||||
void setMulticastTTL(int ttl)
|
void setMulticastTTL(int ttl)
|
||||||
{
|
{
|
||||||
#ifdef LWIP_MAYBE_XCC
|
#ifdef LWIP_MAYBE_XCC
|
||||||
@ -205,6 +225,11 @@ public:
|
|||||||
return (pos <= _rx_buf->tot_len);
|
return (pos <= _rx_buf->tot_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
netif* getInputNetif() const
|
||||||
|
{
|
||||||
|
return _currentAddr.input_netif;
|
||||||
|
}
|
||||||
|
|
||||||
CONST IPAddress& getRemoteAddress() CONST
|
CONST IPAddress& getRemoteAddress() CONST
|
||||||
{
|
{
|
||||||
return _currentAddr.srcaddr;
|
return _currentAddr.srcaddr;
|
||||||
@ -269,7 +294,6 @@ public:
|
|||||||
// ref'ing it to prevent release from the below pbuf_free(deleteme)
|
// ref'ing it to prevent release from the below pbuf_free(deleteme)
|
||||||
pbuf_ref(_rx_buf);
|
pbuf_ref(_rx_buf);
|
||||||
}
|
}
|
||||||
// remove the already-consumed head of the chain
|
|
||||||
pbuf_free(deleteme);
|
pbuf_free(deleteme);
|
||||||
|
|
||||||
_rx_buf_offset = 0;
|
_rx_buf_offset = 0;
|
||||||
@ -464,11 +488,12 @@ private:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LWIP_VERSION_MAJOR == 1
|
#if LWIP_VERSION_MAJOR == 1
|
||||||
#define TEMPDSTADDR (¤t_iphdr_dest)
|
#define TEMPDSTADDR (¤t_iphdr_dest)
|
||||||
|
#define TEMPINPUTNETIF (current_netif)
|
||||||
#else
|
#else
|
||||||
#define TEMPDSTADDR (ip_current_dest_addr())
|
#define TEMPDSTADDR (ip_current_dest_addr())
|
||||||
|
#define TEMPINPUTNETIF (ip_current_input_netif())
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// chain this helper pbuf first
|
// chain this helper pbuf first
|
||||||
@ -496,7 +521,7 @@ private:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// construct in place
|
// 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
|
pb_helper->flags = PBUF_HELPER_FLAG; // mark helper pbuf
|
||||||
// chain it
|
// chain it
|
||||||
pbuf_cat(_rx_buf, pb_helper);
|
pbuf_cat(_rx_buf, pb_helper);
|
||||||
@ -510,6 +535,7 @@ private:
|
|||||||
_currentAddr.srcaddr = srcaddr;
|
_currentAddr.srcaddr = srcaddr;
|
||||||
_currentAddr.dstaddr = TEMPDSTADDR;
|
_currentAddr.dstaddr = TEMPDSTADDR;
|
||||||
_currentAddr.srcport = srcport;
|
_currentAddr.srcport = srcport;
|
||||||
|
_currentAddr.input_netif = TEMPINPUTNETIF;
|
||||||
|
|
||||||
DEBUGV(":urn %d\r\n", pb->tot_len);
|
DEBUGV(":urn %d\r\n", pb->tot_len);
|
||||||
_first_buf_taken = false;
|
_first_buf_taken = false;
|
||||||
@ -522,6 +548,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
#undef TEMPDSTADDR
|
#undef TEMPDSTADDR
|
||||||
|
#undef TEMPINPUTNETIF
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -633,10 +660,11 @@ private:
|
|||||||
{
|
{
|
||||||
IPAddress srcaddr, dstaddr;
|
IPAddress srcaddr, dstaddr;
|
||||||
int16_t srcport;
|
int16_t srcport;
|
||||||
|
netif* input_netif;
|
||||||
|
|
||||||
AddrHelper() { }
|
AddrHelper() { }
|
||||||
AddrHelper(const ip_addr_t* src, const ip_addr_t* dst, uint16_t srcport):
|
AddrHelper(const ip_addr_t* src, const ip_addr_t* dst, uint16_t srcport, netif* input_netif):
|
||||||
srcaddr(src), dstaddr(dst), srcport(srcport) { }
|
srcaddr(src), dstaddr(dst), srcport(srcport), input_netif(input_netif) { }
|
||||||
};
|
};
|
||||||
AddrHelper _currentAddr;
|
AddrHelper _currentAddr;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user