wooooo path builds work

update readme

fix gcc 8.x error
fix apple cross-clang someday
pull/66/head
despair 6 years ago
parent c7d3e39c53
commit b9ab1f19a9

@ -103,73 +103,6 @@ namespace llarp
return -1;
}
struct udp_listener : public ev_io
{
llarp_udp_io* udp;
udp_listener(int fd, llarp_udp_io* u) : ev_io(fd), udp(u){};
~udp_listener()
{
}
bool
tick()
{
if(udp->tick)
udp->tick(udp);
return true;
}
int
read(void* buf, size_t sz)
{
if(this->is_tun)
{
llarp::tun* t = (llarp::tun*)this;
ssize_t ret = tuntap_read(t->tunif, buf, sz);
goto next;
}
sockaddr_in6 src;
socklen_t slen = sizeof(sockaddr_in6);
sockaddr* addr = (sockaddr*)&src;
ssize_t ret = ::recvfrom(fd.socket, (char*)buf, sz, 0, addr, &slen);
next:
if(ret < 0)
return -1;
if(static_cast< size_t >(ret) > sz)
return -1;
udp->recvfrom(udp, addr, buf, ret);
return 0;
}
int
sendto(const sockaddr* to, const void* data, size_t sz)
{
if(this->is_tun)
{
}
socklen_t slen;
switch(to->sa_family)
{
case AF_INET:
slen = sizeof(struct sockaddr_in);
break;
case AF_INET6:
slen = sizeof(struct sockaddr_in6);
break;
default:
return -1;
}
ssize_t sent = ::sendto(fd.socket, (char*)data, sz, 0, to, slen);
if(sent == -1)
{
llarp::LogWarn(strerror(errno));
}
return sent;
}
};
struct tun : public ev_io
{
llarp_tun_io* t;
@ -186,9 +119,9 @@ namespace llarp
int
sendto(const sockaddr* to, const void* data, size_t sz)
{
(void)(to);
(void)(data);
(void)(sz);
UNREFERENCED_PARAMETER(to);
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(sz);
return -1;
}
@ -211,12 +144,6 @@ namespace llarp
return true;
}
ssize_t
do_write(void* data, size_t sz)
{
return tuntap_write(tunif, data, sz);
}
int
read(void* buf, size_t sz)
{
@ -260,6 +187,63 @@ namespace llarp
}
};
struct udp_listener : public ev_io
{
llarp_udp_io* udp;
udp_listener(int fd, llarp_udp_io* u) : ev_io(fd), udp(u){};
~udp_listener()
{
}
bool
tick()
{
if(udp->tick)
udp->tick(udp);
return true;
}
int
read(void* buf, size_t sz)
{
sockaddr_in6 src;
socklen_t slen = sizeof(sockaddr_in6);
sockaddr* addr = (sockaddr*)&src;
ssize_t ret = ::recvfrom(fd.socket, (char*)buf, sz, 0, addr, &slen);
if(ret < 0)
return -1;
if(static_cast< size_t >(ret) > sz)
return -1;
udp->recvfrom(udp, addr, buf, ret);
return 0;
}
int
sendto(const sockaddr* to, const void* data, size_t sz)
{
socklen_t slen;
switch(to->sa_family)
{
case AF_INET:
slen = sizeof(struct sockaddr_in);
break;
case AF_INET6:
slen = sizeof(struct sockaddr_in6);
break;
default:
return -1;
}
ssize_t sent = ::sendto(fd.socket, (char*)data, sz, 0, to, slen);
if(sent == -1)
{
llarp::LogWarn(strerror(errno));
}
return sent;
}
};
}; // namespace llarp
struct llarp_win32_loop : public llarp_ev_loop
@ -501,9 +485,13 @@ struct llarp_win32_loop : public llarp_ev_loop
bool
add_ev(llarp::ev_io* e, bool write)
{
// if tun, add to vector without adding to
// the epollfd - epollfds on windows only take
// real sockets
// if tun, add to vector without adding to
// the epollfd - epollfds on windows only take
// real sockets
if(write)
e->flags = 1;
if(e->is_tun)
goto add;
upoll_event_t ev;
ev.data.ptr = e;
ev.events = UPOLLIN | UPOLLERR;
@ -514,6 +502,7 @@ struct llarp_win32_loop : public llarp_ev_loop
delete e;
return false;
}
add:
handlers.emplace_back(e);
return true;
}

@ -109,8 +109,8 @@ upoll_destroy(upoll_t* upq)
{
assert(upq != NULL);
uhash_destroy(upq->table);
ulist_t* q;
unote_t* n;
ulist_t* q = NULL;
unote_t* n = NULL;
while(!ulist_empty(&upq->alive))
{
q = ulist_next(&upq->alive);

@ -64,7 +64,7 @@ if cross-compiling, install mingw-w64 from your distro's package manager, or [bu
$ export COMPILER=clang # if using clang for windows
$ cmake .. -DCMAKE_BUILD_TYPE=[Debug|Release] -DSTATIC_LINK=ON -DCMAKE_CROSSCOMPILING=ON -DDNS_PORT=53 -DCMAKE_TOOLCHAIN_FILE=../contrib/cross/mingw[32].cmake
this will create a static binary that can be installed anywhere, with no other dependency other than libc (7.0)
this will create a static binary that can be installed anywhere, with no other dependency other than libc (minimum v6.1)
## Running on Linux/UNIX/BSD

Loading…
Cancel
Save