make windows cross compile pass, make format parts of libutp

pull/47/head
Jeff Becker 6 years ago
parent cc4a836fc5
commit d408b08889
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

1
.gitignore vendored

@ -39,6 +39,7 @@ vsproject/
daemon.ini daemon.ini
lokinet-win32.exe lokinet-win32.exe
lokinet lokinet
lokinet.exe
rapidjson/ rapidjson/

@ -582,6 +582,7 @@ randombytes_salsa20_random_buf(void *const buf, const size_t size)
stream.nonce++; stream.nonce++;
crypto_stream_salsa20_xor(stream.key, stream.key, sizeof stream.key, crypto_stream_salsa20_xor(stream.key, stream.key, sizeof stream.key,
(unsigned char *)&stream.nonce, stream.key); (unsigned char *)&stream.nonce, stream.key);
(void)ret;
} }
/* /*
@ -616,7 +617,7 @@ randombytes_salsa20_random(void)
stream.rnd32_outleft -= sizeof val; stream.rnd32_outleft -= sizeof val;
memcpy(&val, &stream.rnd32[stream.rnd32_outleft], sizeof val); memcpy(&val, &stream.rnd32[stream.rnd32_outleft], sizeof val);
memset(&stream.rnd32[stream.rnd32_outleft], 0, sizeof val); memset(&stream.rnd32[stream.rnd32_outleft], 0, sizeof val);
(void)ret;
return val; return val;
} }

File diff suppressed because it is too large Load Diff

@ -32,109 +32,135 @@
#include "libutp_inet_ntop.h" #include "libutp_inet_ntop.h"
byte PackedSockAddr::get_family() const byte
PackedSockAddr::get_family() const
{ {
#if defined(__sh__) #if defined(__sh__)
return ((_sin6d[0] == 0) && (_sin6d[1] == 0) && (_sin6d[2] == htonl(0xffff)) != 0) ? return ((_sin6d[0] == 0) && (_sin6d[1] == 0)
AF_INET : AF_INET6; && (_sin6d[2] == htonl(0xffff)) != 0)
#else ? AF_INET
return (IN6_IS_ADDR_V4MAPPED(&_in._in6addr) != 0) ? AF_INET : AF_INET6; : AF_INET6;
#endif // defined(__sh__) #else
return (IN6_IS_ADDR_V4MAPPED(&_in._in6addr) != 0) ? AF_INET : AF_INET6;
#endif // defined(__sh__)
} }
bool PackedSockAddr::operator==(const PackedSockAddr& rhs) const bool
PackedSockAddr::operator==(const PackedSockAddr &rhs) const
{ {
if (&rhs == this) if(&rhs == this)
return true; return true;
if (_port != rhs._port) if(_port != rhs._port)
return false; return false;
return memcmp(_sin6, rhs._sin6, sizeof(_sin6)) == 0; return memcmp(_sin6, rhs._sin6, sizeof(_sin6)) == 0;
} }
bool PackedSockAddr::operator!=(const PackedSockAddr& rhs) const bool
PackedSockAddr::operator!=(const PackedSockAddr &rhs) const
{ {
return !(*this == rhs); return !(*this == rhs);
} }
uint32 PackedSockAddr::compute_hash() const { uint32
return utp_hash_mem(&_in, sizeof(_in)) ^ _port; PackedSockAddr::compute_hash() const
{
return utp_hash_mem(&_in, sizeof(_in)) ^ _port;
} }
void PackedSockAddr::set(const SOCKADDR_STORAGE* sa, socklen_t len) void
PackedSockAddr::set(const SOCKADDR_STORAGE *sa, socklen_t len)
{ {
// on unix, the cast does nothing, socklen_t is _already_ unsigned // on unix, the cast does nothing, socklen_t is _already_ unsigned
if (sa->ss_family == AF_INET) { if(sa->ss_family == AF_INET)
assert((unsigned)len >= sizeof(sockaddr_in)); {
const sockaddr_in *sin = (sockaddr_in*)sa; assert((unsigned)len >= sizeof(sockaddr_in));
_sin6w[0] = 0; const sockaddr_in *sin = (sockaddr_in *)sa;
_sin6w[1] = 0; _sin6w[0] = 0;
_sin6w[2] = 0; _sin6w[1] = 0;
_sin6w[3] = 0; _sin6w[2] = 0;
_sin6w[4] = 0; _sin6w[3] = 0;
_sin6w[5] = 0xffff; _sin6w[4] = 0;
_sin4 = sin->sin_addr.s_addr; _sin6w[5] = 0xffff;
_port = ntohs(sin->sin_port); _sin4 = sin->sin_addr.s_addr;
} else { _port = ntohs(sin->sin_port);
assert((unsigned)len >= sizeof(sockaddr_in6)); }
const sockaddr_in6 *sin6 = (sockaddr_in6*)sa; else
_in._in6addr = sin6->sin6_addr; {
_port = ntohs(sin6->sin6_port); assert((unsigned)len >= sizeof(sockaddr_in6));
} const sockaddr_in6 *sin6 = (sockaddr_in6 *)sa;
_in._in6addr = sin6->sin6_addr;
_port = ntohs(sin6->sin6_port);
}
(void)len;
} }
PackedSockAddr::PackedSockAddr(const SOCKADDR_STORAGE* sa, socklen_t len) PackedSockAddr::PackedSockAddr(const SOCKADDR_STORAGE *sa, socklen_t len)
{ {
set(sa, len); set(sa, len);
} }
PackedSockAddr::PackedSockAddr(void) PackedSockAddr::PackedSockAddr(void)
{ {
SOCKADDR_STORAGE sa; SOCKADDR_STORAGE sa;
socklen_t len = sizeof(SOCKADDR_STORAGE); socklen_t len = sizeof(SOCKADDR_STORAGE);
memset(&sa, 0, len); memset(&sa, 0, len);
sa.ss_family = AF_INET; sa.ss_family = AF_INET;
set(&sa, len); set(&sa, len);
} }
SOCKADDR_STORAGE PackedSockAddr::get_sockaddr_storage(socklen_t *len = NULL) const SOCKADDR_STORAGE
PackedSockAddr::get_sockaddr_storage(socklen_t *len = NULL) const
{ {
SOCKADDR_STORAGE sa; SOCKADDR_STORAGE sa;
const byte family = get_family(); const byte family = get_family();
if (family == AF_INET) { if(family == AF_INET)
sockaddr_in *sin = (sockaddr_in*)&sa; {
if (len) *len = sizeof(sockaddr_in); sockaddr_in *sin = (sockaddr_in *)&sa;
memset(sin, 0, sizeof(sockaddr_in)); if(len)
sin->sin_family = family; *len = sizeof(sockaddr_in);
sin->sin_port = htons(_port); memset(sin, 0, sizeof(sockaddr_in));
sin->sin_addr.s_addr = _sin4; sin->sin_family = family;
} else { sin->sin_port = htons(_port);
sockaddr_in6 *sin6 = (sockaddr_in6*)&sa; sin->sin_addr.s_addr = _sin4;
memset(sin6, 0, sizeof(sockaddr_in6)); }
if (len) *len = sizeof(sockaddr_in6); else
sin6->sin6_family = family; {
sin6->sin6_addr = _in._in6addr; sockaddr_in6 *sin6 = (sockaddr_in6 *)&sa;
sin6->sin6_port = htons(_port); memset(sin6, 0, sizeof(sockaddr_in6));
} if(len)
return sa; *len = sizeof(sockaddr_in6);
sin6->sin6_family = family;
sin6->sin6_addr = _in._in6addr;
sin6->sin6_port = htons(_port);
}
return sa;
} }
// #define addrfmt(x, s) x.fmt(s, sizeof(s)) // #define addrfmt(x, s) x.fmt(s, sizeof(s))
cstr PackedSockAddr::fmt(str s, size_t len) const cstr
PackedSockAddr::fmt(str s, size_t len) const
{ {
memset(s, 0, len); memset(s, 0, len);
const byte family = get_family(); const byte family = get_family();
str i; str i;
if (family == AF_INET) { if(family == AF_INET)
INET_NTOP(family, (uint32*)&_sin4, s, len); {
i = s; INET_NTOP(family, (uint32 *)&_sin4, s, len);
while (*++i) {} i = s;
} else { while(*++i)
i = s; {
*i++ = '['; }
INET_NTOP(family, (in6_addr*)&_in._in6addr, i, len-1); }
while (*++i) {} else
*i++ = ']'; {
} i = s;
snprintf(i, len - (i-s), ":%u", _port); *i++ = '[';
return s; INET_NTOP(family, (in6_addr *)&_in._in6addr, i, len - 1);
while(*++i)
{
}
*i++ = ']';
}
snprintf(i, len - (i - s), ":%u", _port);
return s;
} }

@ -15,7 +15,7 @@ namespace llarp
int int
tcp_conn::read(void* buf, size_t sz) tcp_conn::read(void* buf, size_t sz)
{ {
WSABUF r_buf = {sz, (char*)buf}; WSABUF r_buf = {(u_long)sz, (char*)buf};
DWORD amount = 0; DWORD amount = 0;
WSARecv(std::get< SOCKET >(fd), &r_buf, 1, nullptr, 0, &portfd[0], nullptr); WSARecv(std::get< SOCKET >(fd), &r_buf, 1, nullptr, 0, &portfd[0], nullptr);
@ -38,7 +38,7 @@ namespace llarp
ssize_t ssize_t
tcp_conn::do_write(void* buf, size_t sz) tcp_conn::do_write(void* buf, size_t sz)
{ {
WSABUF s_buf = {sz, (char*)buf}; WSABUF s_buf = {(u_long)sz, (char*)buf};
DWORD sent = 0; DWORD sent = 0;
if(_shouldClose) if(_shouldClose)
@ -136,7 +136,7 @@ namespace llarp
socklen_t slen = sizeof(src); socklen_t slen = sizeof(src);
sockaddr* addr = (sockaddr*)&src; sockaddr* addr = (sockaddr*)&src;
unsigned long flags = 0; unsigned long flags = 0;
WSABUF wbuf = {sz, static_cast< char* >(buf)}; WSABUF wbuf = {(u_long)sz, static_cast< char* >(buf)};
// WSARecvFrom // WSARecvFrom
llarp::LogDebug("read ", sz, " bytes into socket"); llarp::LogDebug("read ", sz, " bytes into socket");
int ret = ::WSARecvFrom(std::get< SOCKET >(fd), &wbuf, 1, nullptr, &flags, int ret = ::WSARecvFrom(std::get< SOCKET >(fd), &wbuf, 1, nullptr, &flags,
@ -156,7 +156,7 @@ namespace llarp
sendto(const sockaddr* to, const void* data, size_t sz) sendto(const sockaddr* to, const void* data, size_t sz)
{ {
socklen_t slen; socklen_t slen;
WSABUF wbuf = {sz, (char*)data}; WSABUF wbuf = {(u_long)sz, (char*)data};
switch(to->sa_family) switch(to->sa_family)
{ {
case AF_INET: case AF_INET:
@ -242,7 +242,7 @@ namespace llarp
setup() setup()
{ {
llarp::LogDebug("set ifname to ", t->ifname); llarp::LogDebug("set ifname to ", t->ifname);
strncpy(tunif->if_name, t->ifname, sizeof(tunif->if_name)); strncpy(tunif->if_name, t->ifname, IFNAMSIZ);
if(tuntap_start(tunif, TUNTAP_MODE_TUNNEL, 0) == -1) if(tuntap_start(tunif, TUNTAP_MODE_TUNNEL, 0) == -1)
{ {

Loading…
Cancel
Save