]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network-generator: support link6 network configuration
authorJonas Jelten <jj@sft.lol>
Fri, 10 Dec 2021 23:12:08 +0000 (00:12 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 11 Dec 2021 02:03:42 +0000 (11:03 +0900)
this just brings up an interface in order to have IPv6 link local
connectivity.

src/network/generator/network-generator.c
src/network/generator/network-generator.h

index 3185e10a830b70890038c21d8bda3d46214b4ce8..4a4ac3ed3962c8efa263275cf1df07b79b04afa0 100644 (file)
 
 /*
   # .network
-  ip={dhcp|on|any|dhcp6|auto6|either6}
-  ip=<interface>:{dhcp|on|any|dhcp6|auto6}[:[<mtu>][:<macaddr>]]
-  ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|ibft}[:[<mtu>][:<macaddr>]]
-  ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|ibft}[:[<dns1>][:<dns2>]]
+  ip={dhcp|on|any|dhcp6|auto6|either6|link6}
+  ip=<interface>:{dhcp|on|any|dhcp6|auto6|link6}[:[<mtu>][:<macaddr>]]
+  ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|link6|ibft}[:[<mtu>][:<macaddr>]]
+  ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|link6|ibft}[:[<dns1>][:<dns2>]]
   rd.route=<net>/<netmask>:<gateway>[:<interface>]
   nameserver=<IP> [nameserver=<IP> ...]
   rd.peerdns=0
@@ -51,6 +51,7 @@ static const char * const dracut_dhcp_type_table[_DHCP_TYPE_MAX] = {
         [DHCP_TYPE_AUTO6]   = "auto6",
         [DHCP_TYPE_EITHER6] = "either6",
         [DHCP_TYPE_IBFT]    = "ibft",
+        [DHCP_TYPE_LINK6]   = "link6",
 };
 
 DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(dracut_dhcp_type, DHCPType);
@@ -65,6 +66,7 @@ static const char * const networkd_dhcp_type_table[_DHCP_TYPE_MAX] = {
         [DHCP_TYPE_AUTO6]   = "no",   /* TODO: enable other setting? */
         [DHCP_TYPE_EITHER6] = "ipv6", /* TODO: enable other setting? */
         [DHCP_TYPE_IBFT]    = "no",
+        [DHCP_TYPE_LINK6]   = "no",
 };
 
 DEFINE_PRIVATE_STRING_TABLE_LOOKUP_TO_STRING(networkd_dhcp_type, DHCPType);
@@ -566,8 +568,8 @@ static int parse_cmdline_ip_address(Context *context, int family, const char *va
         unsigned char prefixlen;
         int r;
 
-        /* ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|ibft}[:[<mtu>][:<macaddr>]]
-         * ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|ibft}[:[<dns1>][:<dns2>]] */
+        /* ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|ibft|link6}[:[<mtu>][:<macaddr>]]
+         * ip=<client-IP>:[<peer>]:<gateway-IP>:<netmask>:<client_hostname>:<interface>:{none|off|dhcp|on|any|dhcp6|auto6|ibft|link6}[:[<dns1>][:<dns2>]] */
 
         r = parse_ip_address_one(family, &value, &addr);
         if (r < 0)
@@ -660,7 +662,7 @@ static int parse_cmdline_ip_interface(Context *context, const char *value) {
         const char *ifname, *dhcp_type, *p;
         int r;
 
-        /* ip=<interface>:{dhcp|on|any|dhcp6|auto6}[:[<mtu>][:<macaddr>]] */
+        /* ip=<interface>:{dhcp|on|any|dhcp6|auto6|link6}[:[<mtu>][:<macaddr>]] */
 
         p = strchr(value, ':');
         if (!p)
@@ -694,7 +696,7 @@ static int parse_cmdline_ip(Context *context, const char *key, const char *value
 
         p = strchr(value, ':');
         if (!p)
-                /* ip={dhcp|on|any|dhcp6|auto6|either6} */
+                /* ip={dhcp|on|any|dhcp6|auto6|either6|link6} */
                 return network_set_dhcp_type(context, "", value);
 
         if (value[0] == '[')
index 5131b20bcc7d4f99d384cc81836d1d707965116b..25c8816bbe71bff1d904aadfec9396e90c4cc08f 100644 (file)
@@ -18,6 +18,7 @@ typedef enum DHCPType {
         DHCP_TYPE_AUTO6,
         DHCP_TYPE_EITHER6,
         DHCP_TYPE_IBFT,
+        DHCP_TYPE_LINK6,
         _DHCP_TYPE_MAX,
         _DHCP_TYPE_INVALID = -EINVAL,
 } DHCPType;