Update mud

Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
This commit is contained in:
Adrien Gallouët
2018-11-29 22:22:29 +00:00
parent 8ff9d3d7a1
commit 0e052dc2db
3 changed files with 33 additions and 22 deletions

2
mud

Submodule mud updated: ff55d6a173...79688de09e

View File

@@ -209,15 +209,23 @@ gt_bind(int argc, char **argv)
unsigned char buf[4096]; unsigned char buf[4096];
while (!gt_quit) { while (!gt_quit) {
FD_SET(tun_fd, &rfds); unsigned long send_wait = mud_send_wait(mud);
if (send_wait) {
FD_CLR(tun_fd, &rfds);
} else {
FD_SET(tun_fd, &rfds);
}
FD_SET(mud_fd, &rfds); FD_SET(mud_fd, &rfds);
FD_SET(ctl_fd, &rfds); FD_SET(ctl_fd, &rfds);
struct timeval tv = { struct timeval tv = {
.tv_sec = sync / 1000UL, .tv_sec = 0,
.tv_usec = send_wait,
}; };
const int ret = select(last_fd, &rfds, NULL, NULL, sync ? &tv : NULL); const int ret = select(last_fd, &rfds, NULL, NULL, send_wait ? &tv : NULL);
if (ret == -1) { if (ret == -1) {
if (errno == EBADF) { if (errno == EBADF) {
@@ -309,21 +317,6 @@ gt_bind(int argc, char **argv)
} }
} }
if (FD_ISSET(tun_fd, &rfds)) {
struct ip_common ic;
const int r = tun_read(tun_fd, buf, sizeof(buf));
if (!ip_get_common(&ic, buf, r)) {
unsigned char hash[crypto_shorthash_BYTES];
crypto_shorthash(hash, (const unsigned char *)&ic, sizeof(ic), hashkey);
unsigned h;
memcpy(&h, hash, sizeof(h));
mud_send(mud, buf, r, (h << 8) | ic.tc);
}
}
if (FD_ISSET(mud_fd, &rfds)) { if (FD_ISSET(mud_fd, &rfds)) {
const int r = mud_recv(mud, buf, sizeof(buf)); const int r = mud_recv(mud, buf, sizeof(buf));
@@ -331,8 +324,26 @@ gt_bind(int argc, char **argv)
tun_write(tun_fd, buf, r); tun_write(tun_fd, buf, r);
} }
if (FD_ISSET(tun_fd, &rfds) && !mud_send_wait(mud)) {
struct ip_common ic;
const int r = tun_read(tun_fd, buf, sizeof(buf));
if (!ip_get_common(&ic, buf, r)) {
// TODO: disable hash for now
// unsigned char hash[crypto_shorthash_BYTES];
// crypto_shorthash(hash, (const unsigned char *)&ic, sizeof(ic), hashkey);
unsigned h = 0;
// memcpy(&h, hash, sizeof(h));
mud_send(mud, buf, r, (h << 8) | ic.tc);
}
}
/* TODO
if (!ret) if (!ret)
mud_sync(mud); mud_sync(mud);
*/
} }
if (gt_reload && tun_fd >= 0) { if (gt_reload && tun_fd >= 0) {

View File

@@ -89,11 +89,11 @@ gt_path_status(int fd)
peerstr[0] ? peerstr : "-", peerstr[0] ? peerstr : "-",
gt_get_port((struct sockaddr *)&res.path_status.addr), gt_get_port((struct sockaddr *)&res.path_status.addr),
res.path_status.mtu.ok, res.path_status.mtu.ok,
res.path_status.rtt/(double)1e3, res.path_status.rtt.val / 1e3,
res.path_status.rttvar/(double)1e3, res.path_status.rtt.var / 1e3,
res.path_status.r_rate * 10, res.path_status.r_rate * 10,
res.path_status.r_ratemax * 10, res.path_status.r_ratemax * 10,
res.path_status.recv.rate * 10, res.path_status.rate.val * 10,
res.path_status.recv.ratemax * 10, res.path_status.recv.ratemax * 10,
res.path_status.send.total, res.path_status.send.total,
res.path_status.recv.total); res.path_status.recv.total);