]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network-generator: vlan= can be specified multiple times
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 7 Aug 2024 06:03:59 +0000 (15:03 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 9 Aug 2024 06:39:38 +0000 (15:39 +0900)
src/network/generator/network-generator.c
src/network/generator/network-generator.h
src/network/generator/test-network-generator.c

index ec6652028b7ec526797ff25ba4f4d18c4883c0f1..de8340ac71b76d54faf8d92c552b945eb126031d 100644 (file)
@@ -181,7 +181,7 @@ static Network *network_free(Network *network) {
         free(network->ifname);
         free(network->hostname);
         strv_free(network->dns);
-        free(network->vlan);
+        strv_free(network->vlan);
         free(network->bridge);
         free(network->bond);
 
@@ -541,7 +541,7 @@ static int network_set_vlan(Context *context, const char *ifname, const char *va
                         return log_debug_errno(r, "Failed to create network for '%s': %m", ifname);
         }
 
-        return free_and_strdup(&network->vlan, value);
+        return strv_extend(&network->vlan, value);
 }
 
 static int network_set_bridge(Context *context, const char *ifname, const char *value) {
@@ -1329,8 +1329,8 @@ void network_dump(Network *network, FILE *f) {
                 STRV_FOREACH(dns, network->dns)
                         fprintf(f, "DNS=%s\n", *dns);
 
-        if (network->vlan)
-                fprintf(f, "VLAN=%s\n", network->vlan);
+        STRV_FOREACH(v, network->vlan)
+                fprintf(f, "VLAN=%s\n", *v);
 
         if (network->bridge)
                 fprintf(f, "Bridge=%s\n", network->bridge);
index aa5ca9d69520a030a7ebdbd0a478e4eb03592f46..166ec68fe6020d3d0706c363b1a76521e89ccf24 100644 (file)
@@ -62,7 +62,7 @@ struct Network {
         /* [Network] */
         DHCPType dhcp_type;
         char **dns;
-        char *vlan;
+        char **vlan;
         char *bridge;
         char *bond;
 
index 4de4a51995c51586dfdc7875bd6127e2db07f301..6577f1a086086227447c76ff8c7c40ca2c717caa 100644 (file)
@@ -297,12 +297,13 @@ int main(int argc, char *argv[]) {
                          "UseDNS=yes\n"
                          );
 
-        test_network_one("eth0", "vlan", "vlan99:eth0",
+        test_network_two("eth0", "vlan", "vlan99:eth0", "vlan", "vlan98:eth0",
                          "[Match]\n"
                          "Name=eth0\n"
                          "\n[Link]\n"
                          "\n[Network]\n"
                          "VLAN=vlan99\n"
+                         "VLAN=vlan98\n"
                          "\n[DHCP]\n"
                          );