From: Yu Watanabe Date: Fri, 9 Aug 2024 10:01:40 +0000 (+0900) Subject: network-generator: allow to create bridge or friends without slave interfaces X-Git-Tag: v257-rc1~707^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c40ef3f8ff3fd212b88aa84b9e17d1d49aca4ddb;p=thirdparty%2Fsystemd.git network-generator: allow to create bridge or friends without slave interfaces --- diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c index de8340ac71b..8c96598e204 100644 --- a/src/network/generator/network-generator.c +++ b/src/network/generator/network-generator.c @@ -532,7 +532,9 @@ static int network_set_vlan(Context *context, const char *ifname, const char *va int r; assert(context); - assert(ifname); + + if (isempty(ifname)) + return 0; network = network_get(context, ifname); if (!network) { @@ -549,7 +551,9 @@ static int network_set_bridge(Context *context, const char *ifname, const char * int r; assert(context); - assert(ifname); + + if (isempty(ifname)) + return 0; network = network_get(context, ifname); if (!network) { @@ -566,7 +570,9 @@ static int network_set_bond(Context *context, const char *ifname, const char *va int r; assert(context); - assert(ifname); + + if (isempty(ifname)) + return 0; network = network_get(context, ifname); if (!network) { @@ -1011,8 +1017,6 @@ static int parse_cmdline_bridge(Context *context, const char *key, const char *v } p++; - if (isempty(p)) - return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Missing slave interfaces for bridge '%s'", name); for (;;) { _cleanup_free_ char *word = NULL; @@ -1060,9 +1064,6 @@ static int parse_cmdline_bond(Context *context, const char *key, const char *val else slaves = strndupa_safe(value, p - value); - if (isempty(slaves)) - return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Missing slave interfaces for bond '%s'", name); - for (const char *q = slaves; ; ) { _cleanup_free_ char *word = NULL; diff --git a/src/network/generator/test-network-generator.c b/src/network/generator/test-network-generator.c index 6577f1a0860..436b6b820d9 100644 --- a/src/network/generator/test-network-generator.c +++ b/src/network/generator/test-network-generator.c @@ -343,6 +343,31 @@ int main(int argc, char *argv[]) { "\n[DHCP]\n" ); + test_netdev_one("bridge99", "bridge", "bridge99:", + "[NetDev]\n" + "Kind=bridge\n" + "Name=bridge99\n" + ); + + test_netdev_one("bridge99", "bridge", "bridge99:,,,", + "[NetDev]\n" + "Kind=bridge\n" + "Name=bridge99\n" + ); + + test_netdev_one("bond99", "bond", "bond99:", + "[NetDev]\n" + "Kind=bond\n" + "Name=bond99\n" + ); + + test_netdev_one("bond99", "bond", "bond99::hogehoge:1530", + "[NetDev]\n" + "Kind=bond\n" + "Name=bond99\n" + "MTUBytes=1530\n" + ); + test_netdev_one("bond99", "bond", "bond99:eth0,eth1::1530", "[NetDev]\n" "Kind=bond\n"