Compare commits

...

3 Commits

Author SHA1 Message Date
Adrien Gallouët
a8595c36b4 Update mud 2016-12-22 13:44:31 +00:00
Adrien Gallouët
1dfe105bd0 Don't modify mtu from mud_get_mtu() 2016-12-22 10:25:34 +00:00
Adrien Gallouët
f2ead2e4e2 Set nonblock to all fds 2016-12-22 10:22:16 +00:00
2 changed files with 22 additions and 17 deletions

2
mud

Submodule mud updated: fe5499d46d...fd1a1285ac

View File

@@ -229,6 +229,22 @@ gt_setup_option(int argc, char **argv)
return 0; return 0;
} }
static void
gt_setup_mtu(struct mud *mud, char *tun_name)
{
int mtu = mud_get_mtu(mud);
if (mtu == (int)gt.mtu)
return;
gt.mtu = mtu;
gt_log("setup MTU to %i on interface %s\n", mtu, tun_name);
if (tun_set_mtu(tun_name, mtu) == -1)
perror("tun_set_mtu");
}
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
@@ -313,18 +329,16 @@ main(int argc, char **argv)
} }
} }
gt.mtu = GT_MTU(mud_get_mtu(mud)); gt_setup_mtu(mud, tun_name);
if (tun_set_mtu(tun_name, gt.mtu) == -1) {
perror("tun_set_mtu");
return 1;
}
int mud_fd = mud_get_fd(mud); int mud_fd = mud_get_fd(mud);
fd_set_nonblock(tun_fd); fd_set_nonblock(tun_fd);
fd_set_nonblock(mud_fd); fd_set_nonblock(mud_fd);
if (icmp_fd != -1)
fd_set_nonblock(icmp_fd);
gt_log("running...\n"); gt_log("running...\n");
fd_set rfds; fd_set rfds;
@@ -412,16 +426,7 @@ main(int argc, char **argv)
int r = mud_send(mud, &buf[p], q - p, tc); int r = mud_send(mud, &buf[p], q - p, tc);
if (r == -1 && errno == EMSGSIZE) { if (r == -1 && errno == EMSGSIZE) {
int mtu = GT_MTU(mud_get_mtu(mud)); gt_setup_mtu(mud, tun_name);
if (mtu != (int)gt.mtu) {
gt.mtu = mtu;
gt_log("setup MTU to %i on interface %s\n", mtu, tun_name);
if (tun_set_mtu(tun_name, mtu) == -1)
perror("tun_set_mtu");
}
} else { } else {
if (r == -1 && errno != EAGAIN) if (r == -1 && errno != EAGAIN)
perror("mud_send"); perror("mud_send");