mirror of
https://github.com/systemd/systemd
synced 2024-07-24 03:36:24 +00:00
network: use scope link for direct unicast routes by default
Strictly speaking, this breaks the backward compatibility, but I guess in most cases people already sets Scope=link for such routes. This behavior matches with how 'ip route' command adds such route by default. Prompted by https://twitter.com/jplitza/status/1480500562391179270.
This commit is contained in:
parent
fad7ad2b8b
commit
902bbdc4b6
|
@ -1547,9 +1547,9 @@ Table=1234</programlisting></para>
|
|||
|
||||
<para>For IPv4 route, defaults to <literal>host</literal> if <varname>Type=</varname> is
|
||||
<literal>local</literal> or <literal>nat</literal>, and <literal>link</literal> if
|
||||
<varname>Type=</varname> is <literal>broadcast</literal>, <literal>multicast</literal>, or
|
||||
<literal>anycast</literal>. In other cases, defaults to <literal>global</literal>. The value
|
||||
is not used for IPv6.</para>
|
||||
<varname>Type=</varname> is <literal>broadcast</literal>, <literal>multicast</literal>,
|
||||
<literal>anycast</literal>, or direct <literal>unicast</literal> routes. In other cases,
|
||||
defaults to <literal>global</literal>. The value is not used for IPv6.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
|
|
@ -2846,6 +2846,12 @@ static int route_section_verify(Route *route, Network *network) {
|
|||
route->scope = RT_SCOPE_HOST;
|
||||
else if (IN_SET(route->type, RTN_BROADCAST, RTN_ANYCAST, RTN_MULTICAST))
|
||||
route->scope = RT_SCOPE_LINK;
|
||||
else if (IN_SET(route->type, RTN_UNICAST, RTN_UNSPEC) &&
|
||||
!route->gateway_from_dhcp_or_ra &&
|
||||
!in_addr_is_set(route->gw_family, &route->gw) &&
|
||||
ordered_set_isempty(route->multipath_routes) &&
|
||||
route->nexthop_id == 0)
|
||||
route->scope = RT_SCOPE_LINK;
|
||||
}
|
||||
|
||||
if (route->scope != RT_SCOPE_UNIVERSE && route->family == AF_INET6) {
|
||||
|
|
|
@ -24,7 +24,6 @@ Gateway=fe80::222:4dff:ff:ff:ff:ff
|
|||
|
||||
[Route]
|
||||
Destination=149.10.124.64
|
||||
Scope=link
|
||||
|
||||
[Route]
|
||||
Gateway=149.10.124.64
|
||||
|
|
|
@ -2542,9 +2542,9 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities):
|
|||
self.assertIn('149.10.124.48/28 proto kernel scope link src 149.10.124.58', output)
|
||||
self.assertIn('149.10.124.64 proto static scope link', output)
|
||||
self.assertIn('169.254.0.0/16 proto static scope link metric 2048', output)
|
||||
self.assertIn('192.168.1.1 proto static initcwnd 20', output)
|
||||
self.assertIn('192.168.1.2 proto static initrwnd 30', output)
|
||||
self.assertIn('192.168.1.3 proto static advmss 30', output)
|
||||
self.assertIn('192.168.1.1 proto static scope link initcwnd 20', output)
|
||||
self.assertIn('192.168.1.2 proto static scope link initrwnd 30', output)
|
||||
self.assertIn('192.168.1.3 proto static scope link advmss 30', output)
|
||||
self.assertIn('multicast 149.10.123.4 proto static', output)
|
||||
|
||||
print('### ip -4 route show dev dummy98 default')
|
||||
|
|
Loading…
Reference in a new issue