Improved multipath link monitoring
This commit is contained in:
parent
0797adf223
commit
bc521504ca
9 changed files with 232 additions and 255 deletions
|
@ -140,12 +140,11 @@ private:
|
|||
};
|
||||
|
||||
struct PhySocketImpl {
|
||||
PhySocketImpl() { memset(ifname, 0, sizeof(ifname)); }
|
||||
PhySocketImpl() {}
|
||||
PhySocketType type;
|
||||
ZT_PHY_SOCKFD_TYPE sock;
|
||||
void *uptr; // user-settable pointer
|
||||
ZT_PHY_SOCKADDR_STORAGE_TYPE saddr; // remote for TCP_OUT and TCP_IN, local for TCP_LISTEN, RAW, and UDP
|
||||
char ifname[256 + 4];
|
||||
};
|
||||
|
||||
std::list<PhySocketImpl> _socks;
|
||||
|
@ -243,38 +242,6 @@ public:
|
|||
return &(reinterpret_cast<PhySocketImpl*>(s)->uptr);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param s Socket object
|
||||
* @param nameBuf Buffer to store name of interface which this Socket object is bound to
|
||||
* @param buflen Length of buffer to copy name into
|
||||
*/
|
||||
static inline void getIfName(PhySocket* s, char* nameBuf, int buflen)
|
||||
{
|
||||
PhySocketImpl& sws = *(reinterpret_cast<PhySocketImpl*>(s));
|
||||
if (sws.type == ZT_PHY_SOCKET_CLOSED) {
|
||||
return;
|
||||
}
|
||||
if (s) {
|
||||
memcpy(nameBuf, reinterpret_cast<PhySocketImpl*>(s)->ifname, buflen);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param s Socket object
|
||||
* @param ifname Buffer containing name of interface that this Socket object is bound to
|
||||
* @param len Length of name of interface
|
||||
*/
|
||||
static inline void setIfName(PhySocket* s, char* ifname, int len)
|
||||
{
|
||||
PhySocketImpl& sws = *(reinterpret_cast<PhySocketImpl*>(s));
|
||||
if (sws.type == ZT_PHY_SOCKET_CLOSED) {
|
||||
return;
|
||||
}
|
||||
if (s) {
|
||||
memcpy(&(reinterpret_cast<PhySocketImpl*>(s)->ifname), ifname, len);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cause poll() to stop waiting immediately
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue