From 42faaf816f8037d1fc2a5ef5fcf94e6681d613c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Gallou=C3=ABt?= Date: Sat, 7 Mar 2020 16:19:06 +0000 Subject: [PATCH] Update mud: losslimit per path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrien Gallouët --- mud | 2 +- src/bind.c | 3 ++- src/ctl.h | 1 + src/path.c | 12 ++++++++++-- src/set.c | 1 - 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/mud b/mud index 2f966bb..bda2c6e 160000 --- a/mud +++ b/mud @@ -1 +1 @@ -Subproject commit 2f966bb3652b44c13a40b88d20c7bbcafad065f7 +Subproject commit bda2c6eaa7919e891fda83e9c15edc30c612ac7c diff --git a/src/bind.c b/src/bind.c index 2b51541..013184b 100644 --- a/src/bind.c +++ b/src/bind.c @@ -305,7 +305,8 @@ gt_bind(int argc, char **argv) req.path.rate_tx, req.path.rate_rx, req.path.beat, - req.path.fixed_rate)) + req.path.fixed_rate, + req.path.loss_limit)) res.ret = errno; break; case CTL_CONF: diff --git a/src/ctl.h b/src/ctl.h index 995566f..5ed60ca 100644 --- a/src/ctl.h +++ b/src/ctl.h @@ -27,6 +27,7 @@ struct ctl_msg { unsigned long rate_rx; unsigned long beat; unsigned char fixed_rate; + unsigned char loss_limit; } path; struct { char tun_name[64]; diff --git a/src/path.c b/src/path.c index aff7d29..ffee1e4 100644 --- a/src/path.c +++ b/src/path.c @@ -40,6 +40,7 @@ gt_path_print_status(struct mud_path *path, int term) " rtt: %.3f ms\n" " rttvar: %.3f ms\n" " rate: %s\n" + " losslim: %u\n" " beat: %"PRIu64" ms\n" " tx:\n" " rate: %"PRIu64" bytes/sec\n" @@ -52,7 +53,7 @@ gt_path_print_status(struct mud_path *path, int term) : "path %s %s" " %s %"PRIu16" %s %"PRIu16" %s %"PRIu16 " %zu %.3f %.3f" - " %s" + " %s %u" " %"PRIu64 " %"PRIu64" %"PRIu64" %"PRIu64 " %"PRIu64" %"PRIu64" %"PRIu64 @@ -69,6 +70,7 @@ gt_path_print_status(struct mud_path *path, int term) (double)path->rtt.val / 1e3, (double)path->rtt.var / 1e3, path->conf.fixed_rate ? "fixed" : "auto", + path->conf.loss_limit * 100 / 255, path->conf.beat / 1000, path->tx.rate, path->tx.loss * 100 / 255, @@ -145,6 +147,7 @@ int gt_path(int argc, char **argv) { const char *dev = NULL; + unsigned int loss_limit = 0; struct ctl_msg req = { .type = CTL_STATE, @@ -165,6 +168,7 @@ gt_path(int argc, char **argv) {"up|backup|down", NULL, NULL, argz_option}, {"rate", NULL, &ratez, argz_option}, {"beat", "SECONDS", &req.path.beat, argz_time}, + {"losslimit", "PERCENT", &loss_limit, argz_percent}, {NULL}}; if (argz(pathz, argc, argv)) @@ -190,7 +194,8 @@ gt_path(int argc, char **argv) } int set = argz_is_set(pathz, "rate") - || argz_is_set(pathz, "beat"); + || argz_is_set(pathz, "beat") + || argz_is_set(pathz, "losslimit"); if (set && !req.path.addr.ss_family) { gt_log("please specify a path\n"); @@ -205,6 +210,9 @@ gt_path(int argc, char **argv) req.path.state = MUD_DOWN; } + if (loss_limit) + req.path.loss_limit = loss_limit * 255 / 100; + if (argz_is_set(ratez, "fixed")) { req.path.fixed_rate = 3; } else if (argz_is_set(ratez, "auto")) { diff --git a/src/set.c b/src/set.c index c8e283d..e99a8e8 100644 --- a/src/set.c +++ b/src/set.c @@ -47,7 +47,6 @@ gt_set(int argc, char **argv) {"tc", "CS|AF|EF", &req.conf.tc, gt_argz_tc}, {"kxtimeout", "SECONDS", &req.conf.kxtimeout, argz_time}, {"timetolerance", "SECONDS", &req.conf.timetolerance, argz_time}, - {"losslimit", "PERCENT", &req.conf.losslimit, argz_percent}, {"keepalive", "SECONDS", &req.conf.keepalive, argz_time}, {NULL}};