Try bringing back TTL escalation -- may help with Docker (IP-MASQ) type NAT
This commit is contained in:
parent
94f4316a0e
commit
2cc50bdb10
7 changed files with 58 additions and 19 deletions
|
@ -414,6 +414,24 @@ public:
|
|||
return (PhySocket *)&sws;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the IP TTL for the next outgoing packet (for IPv4 UDP sockets only)
|
||||
*
|
||||
* @param ttl New TTL (0 or >255 will set it to 255)
|
||||
* @return True on success
|
||||
*/
|
||||
inline bool setIp4UdpTtl(PhySocket *sock,unsigned int ttl)
|
||||
{
|
||||
PhySocketImpl &sws = *(reinterpret_cast<PhySocketImpl *>(sock));
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
DWORD tmp = ((ttl == 0)||(ttl > 255)) ? 255 : (DWORD)ttl;
|
||||
return (::setsockopt(sws.sock,IPPROTO_IP,IP_TTL,(const char *)&tmp,sizeof(tmp)) == 0);
|
||||
#else
|
||||
int tmp = ((ttl == 0)||(ttl > 255)) ? 255 : (int)ttl;
|
||||
return (::setsockopt(sws.sock,IPPROTO_IP,IP_TTL,(void *)&tmp,sizeof(tmp)) == 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a UDP packet
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue