parse-util: accept arbitrary MTU size when AF_UNSPEC

When [Link] MTU= is specified in a .network file, we have no idea about
that what kind of interface will be configured with the .network file.
The maximum and minimum MTU size depend on the kind of interface.
So, we should not filter MTU eagerly in the parser.

Closes #30140.
This commit is contained in:
Yu Watanabe
2023-12-08 10:47:42 +09:00
parent f43ce810c4
commit a0460dfed6
3 changed files with 31 additions and 11 deletions
+20 -5
View File
@@ -914,15 +914,30 @@ TEST(parse_mtu) {
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_UNSPEC, "4294967296", &mtu) == -ERANGE);
assert_se(parse_mtu(AF_UNSPEC, "68", &mtu) >= 0 && mtu == 68);
assert_se(parse_mtu(AF_UNSPEC, "67", &mtu) >= 0 && mtu == 67);
assert_se(parse_mtu(AF_UNSPEC, "0", &mtu) >= 0 && mtu == 0);
assert_se(parse_mtu(AF_UNSPEC, "", &mtu) == -EINVAL);
assert_se(parse_mtu(AF_INET, "1500", &mtu) >= 0 && mtu == 1500);
assert_se(parse_mtu(AF_INET, "1400", &mtu) >= 0 && mtu == 1400);
assert_se(parse_mtu(AF_INET, "65535", &mtu) >= 0 && mtu == 65535);
assert_se(parse_mtu(AF_INET, "65536", &mtu) >= 0 && mtu == 65536);
assert_se(parse_mtu(AF_INET, "4294967295", &mtu) >= 0 && mtu == 4294967295);
assert_se(parse_mtu(AF_INET, "500", &mtu) >= 0 && mtu == 500);
assert_se(parse_mtu(AF_INET, "1280", &mtu) >= 0 && mtu == 1280);
assert_se(parse_mtu(AF_INET, "4294967296", &mtu) == -ERANGE);
assert_se(parse_mtu(AF_INET, "68", &mtu) >= 0 && mtu == 68);
assert_se(parse_mtu(AF_INET, "67", &mtu) == -ERANGE);
assert_se(parse_mtu(AF_INET, "0", &mtu) == -ERANGE);
assert_se(parse_mtu(AF_INET, "", &mtu) == -EINVAL);
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);
assert_se(parse_mtu(AF_INET6, "", &mtu) == -EINVAL);
}
TEST(parse_loadavg_fixed_point) {