parse-util: add explicit parsers for MTU values
We use MTUs all over the place, let's add a unified, strict parser for it, that takes MTU ranges into account. We already have parse_ifindex() close-by, hence this appears to be a natural addition, in particular as the range checking is not entirely trivial to do, as it depends on the protocol used.
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include <errno.h>
|
||||
#include <locale.h>
|
||||
#include <math.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "errno-list.h"
|
||||
@@ -757,6 +758,27 @@ static void test_parse_syscall_and_errno(void) {
|
||||
assert_se(parse_syscall_and_errno("hoge:", &n, &e) == -EINVAL);
|
||||
}
|
||||
|
||||
static void test_parse_mtu(void) {
|
||||
uint32_t mtu = 0;
|
||||
|
||||
assert_se(parse_mtu(AF_UNSPEC, "1500", &mtu) >= 0 && mtu == 1500);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "1400", &mtu) >= 0 && mtu == 1400);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "65535", &mtu) >= 0 && mtu == 65535);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "65536", &mtu) >= 0 && mtu == 65536);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "4294967295", &mtu) >= 0 && mtu == 4294967295);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "500", &mtu) >= 0 && mtu == 500);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "1280", &mtu) >= 0 && mtu == 1280);
|
||||
assert_se(parse_mtu(AF_INET6, "1280", &mtu) >= 0 && mtu == 1280);
|
||||
assert_se(parse_mtu(AF_INET6, "1279", &mtu) == -ERANGE);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "4294967296", &mtu) == -ERANGE);
|
||||
assert_se(parse_mtu(AF_INET6, "4294967296", &mtu) == -ERANGE);
|
||||
assert_se(parse_mtu(AF_INET6, "68", &mtu) == -ERANGE);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "68", &mtu) >= 0 && mtu == 68);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "67", &mtu) == -ERANGE);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "0", &mtu) == -ERANGE);
|
||||
assert_se(parse_mtu(AF_UNSPEC, "", &mtu) == -EINVAL);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
@@ -779,6 +801,7 @@ int main(int argc, char *argv[]) {
|
||||
test_parse_dev();
|
||||
test_parse_errno();
|
||||
test_parse_syscall_and_errno();
|
||||
test_parse_mtu();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user