From: Yu Watanabe Date: Fri, 24 Sep 2021 19:52:47 +0000 (+0900) Subject: network: rename IPv6Token= in [Network] -> Token= in [IPv6AcceptRA] X-Git-Tag: v250-rc1~552^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a73628e647b15b83bfcc49cb554c0ab31a4045ea;p=thirdparty%2Fsystemd.git network: rename IPv6Token= in [Network] -> Token= in [IPv6AcceptRA] The token is only used by received prefixes through RA. --- diff --git a/man/systemd.network.xml b/man/systemd.network.xml index 52043789ed9..7860bd10e6e 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -488,53 +488,6 @@ Gateway=0.0.0.0 Table=1234 - - IPv6Token= - - Specifies an optional address generation mode for the Stateless Address - Autoconfiguration (SLAAC). Supported modes are prefixstable and - static. - - When the mode is set to static, an IPv6 address must be - specified after a colon (:), and the lower bits of the supplied - address are combined with the upper bits of a prefix received in a Router Advertisement - (RA) message to form a complete address. Note that if multiple prefixes are received in an - RA message, or in multiple RA messages, addresses will be formed from each of them using - the supplied address. This mode implements SLAAC but uses a static interface identifier - instead of an identifier generated by using the EUI-64 algorithm. Because the interface - identifier is static, if Duplicate Address Detection detects that the computed address is a - duplicate (in use by another node on the link), then this mode will fail to provide an - address for that prefix. If an IPv6 address without mode is specified, then - static mode is assumed. - - When the mode is set to prefixstable the - RFC 7217 algorithm for generating - interface identifiers will be used. This mode can optionally take an IPv6 address separated - with a colon (:). If an IPv6 address is specified, then an interface - identifier is generated only when a prefix received in an RA message matches the supplied - address. - - If no address generation mode is specified (which is the default), or a received - prefix does not match any of the addresses provided in prefixstable - mode, then the EUI-64 algorithm will be used to form an interface identifier for that - prefix. This mode is also SLAAC, but with a potentially stable interface identifier which - does not directly map to the interface's hardware address. - - Note that the prefixstable algorithm uses both the interface - name and MAC address as input to the hash to compute the interface identifier, so if either - of those are changed the resulting interface identifier (and address) will change, even if - the prefix received in the RA message has not changed. - - This setting can be specified multiple times. If an empty string is assigned, then - the all previous assignments are cleared. - - Examples: - IPv6Token=::1a:2b:3c:4d -IPv6Token=static:::1a:2b:3c:4d -IPv6Token=prefixstable -IPv6Token=prefixstable:2002:da8:1:: - - LLMNR= @@ -2236,6 +2189,53 @@ IPv6Token=prefixstable:2002:da8:1:: with the IPv6AcceptRA= setting described above: + + Token= + + Specifies an optional address generation mode for the Stateless Address + Autoconfiguration (SLAAC). Supported modes are static and + prefixstable. + + When the mode is set to static, an IPv6 address must be + specified after a colon (:), and the lower bits of the supplied + address are combined with the upper bits of a prefix received in a Router Advertisement + (RA) message to form a complete address. Note that if multiple prefixes are received in an + RA message, or in multiple RA messages, addresses will be formed from each of them using + the supplied address. This mode implements SLAAC but uses a static interface identifier + instead of an identifier generated by using the EUI-64 algorithm. Because the interface + identifier is static, if Duplicate Address Detection detects that the computed address is a + duplicate (in use by another node on the link), then this mode will fail to provide an + address for that prefix. If an IPv6 address without mode is specified, then + static mode is assumed. + + When the mode is set to prefixstable the + RFC 7217 algorithm for generating + interface identifiers will be used. This mode can optionally take an IPv6 address separated + with a colon (:). If an IPv6 address is specified, then an interface + identifier is generated only when a prefix received in an RA message matches the supplied + address. + + If no address generation mode is specified (which is the default), or a received + prefix does not match any of the addresses provided in prefixstable + mode, then the EUI-64 algorithm will be used to form an interface identifier for that + prefix. + + Note that the prefixstable algorithm uses both the interface + name and MAC address as input to the hash to compute the interface identifier, so if either + of those are changed the resulting interface identifier (and address) will be changed, even + if the prefix received in the RA message has not been changed. + + This setting can be specified multiple times. If an empty string is assigned, then + the all previous assignments are cleared. + + Examples: + Token=::1a:2b:3c:4d +Token=static:::1a:2b:3c:4d +Token=prefixstable +Token=prefixstable:2002:da8:1:: + + + UseDNS= diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf index 9aa253e1d94..ce7e6c089ea 100644 --- a/src/network/networkd-network-gperf.gperf +++ b/src/network/networkd-network-gperf.gperf @@ -104,7 +104,6 @@ Network.IPv6LinkLocalAddressGenerationMode, config_parse_ipv6_link_local_addres Network.IPv6StableSecretAddress, config_parse_in_addr_non_null, AF_INET6, offsetof(Network, ipv6ll_stable_secret) Network.IPv4LLRoute, config_parse_bool, 0, offsetof(Network, ipv4ll_route) Network.DefaultRouteOnDevice, config_parse_bool, 0, offsetof(Network, default_route_on_device) -Network.IPv6Token, config_parse_address_generation_type, 0, offsetof(Network, ndisc_tokens) Network.LLDP, config_parse_lldp_mode, 0, offsetof(Network, lldp_mode) Network.EmitLLDP, config_parse_lldp_multicast_mode, 0, offsetof(Network, lldp_multicast_mode) Network.Address, config_parse_address, 0, 0 @@ -271,6 +270,7 @@ IPv6AcceptRA.PrefixAllowList, config_parse_in_addr_prefixes, IPv6AcceptRA.PrefixDenyList, config_parse_in_addr_prefixes, AF_INET6, offsetof(Network, ndisc_deny_listed_prefix) IPv6AcceptRA.RouteAllowList, config_parse_in_addr_prefixes, AF_INET6, offsetof(Network, ndisc_allow_listed_route_prefix) IPv6AcceptRA.RouteDenyList, config_parse_in_addr_prefixes, AF_INET6, offsetof(Network, ndisc_deny_listed_route_prefix) +IPv6AcceptRA.Token, config_parse_address_generation_type, 0, offsetof(Network, ndisc_tokens) DHCPServer.ServerAddress, config_parse_dhcp_server_address, 0, 0 DHCPServer.UplinkInterface, config_parse_uplink, 0, 0 DHCPServer.RelayTarget, config_parse_in_addr_non_null, AF_INET, offsetof(Network, dhcp_server_relay_target) @@ -493,6 +493,7 @@ TrivialLinkEqualizer.Handle, config_parse_qdisc_handle, TrivialLinkEqualizer.Id, config_parse_trivial_link_equalizer_id, QDISC_KIND_TEQL, 0 /* backwards compatibility: do not add new entries to this section */ Network.IPv4LL, config_parse_ipv4ll, 0, offsetof(Network, link_local) +Network.IPv6Token, config_parse_address_generation_type, 0, offsetof(Network, ndisc_tokens) Network.IPv6PrefixDelegation, config_parse_router_prefix_delegation, 0, offsetof(Network, router_prefix_delegation) IPv6PrefixDelegation.RouterLifetimeSec, config_parse_sec, 0, offsetof(Network, router_lifetime_usec) IPv6PrefixDelegation.Managed, config_parse_bool, 0, offsetof(Network, router_managed) diff --git a/test/fuzz/fuzz-network-parser/directives.network b/test/fuzz/fuzz-network-parser/directives.network index fdd7f73baee..9b5ecccedbb 100644 --- a/test/fuzz/fuzz-network-parser/directives.network +++ b/test/fuzz/fuzz-network-parser/directives.network @@ -359,6 +359,7 @@ RouteAllowList= RouteDenyList= DenyList= BlackList= +Token= [DHCPServer] EmitNTP= PoolSize=