Merge pull request #29873 from yuwata/network-revert-hop-limit

network: several follow-ups for IPv6 hop limit
This commit is contained in:
Luca Boccassi 2023-11-06 10:00:46 +00:00 committed by GitHub
commit 69c37b26a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 9 additions and 17 deletions

View file

@ -864,9 +864,9 @@ Table=1234</programlisting></para>
<varlistentry>
<term><varname>IPv6HopLimit=</varname></term>
<listitem>
<para>Configures IPv6 Hop Limit. For each router that forwards the packet, the hop limit is
decremented by 1. When the hop limit field reaches zero, the packet is discarded. When unset,
the kernel's default will be used.</para>
<para>Configures IPv6 Hop Limit. Takes an integer in the range 1…255. For each router that
forwards the packet, the hop limit is decremented by 1. When the hop limit field reaches zero, the
packet is discarded. When unset, the kernel's default will be used.</para>
<xi:include href="version-info.xml" xpointer="v228"/>
</listitem>

View file

@ -195,16 +195,11 @@ static int ndisc_request_route(Route *in, Link *link, sd_ndisc_router *rt) {
return log_link_warning_errno(link, r, "Failed to get default router MTU from RA: %m");
}
if (link->network->ipv6_accept_ra_use_hop_limit) {
if (link->network->ipv6_accept_ra_use_hop_limit) {
r = sd_ndisc_router_get_hop_limit(rt, &hop_limit);
if (r < 0 && r != -ENODATA)
return log_link_warning_errno(link, r, "Failed to get default router hop limit from RA: %m");
link->network->ipv6_hop_limit = hop_limit;
r = link_set_ipv6_hop_limit(link);
if (r < 0)
log_link_warning_errno(link, r, "Cannot set IPv6 hop limit for interface, ignoring: %m");
}
}
route->source = NETWORK_CONFIG_SOURCE_NDISC;
route->provider.in6 = router;
@ -217,7 +212,6 @@ static int ndisc_request_route(Route *in, Link *link, sd_ndisc_router *rt) {
route->quickack = link->network->ipv6_accept_ra_quickack;
if (route->mtu == 0)
route->mtu = mtu;
if (route->hop_limit == 0)
route->hop_limit = hop_limit;

View file

@ -130,7 +130,7 @@ Network.IPv6PrivacyExtensions, config_parse_ipv6_privacy_extension
Network.IPv6AcceptRA, config_parse_tristate, 0, offsetof(Network, ipv6_accept_ra)
Network.IPv6AcceptRouterAdvertisements, config_parse_tristate, 0, offsetof(Network, ipv6_accept_ra)
Network.IPv6DuplicateAddressDetection, config_parse_int, 0, offsetof(Network, ipv6_dad_transmits)
Network.IPv6HopLimit, config_parse_int, 0, offsetof(Network, ipv6_hop_limit)
Network.IPv6HopLimit, config_parse_uint8, 0, offsetof(Network, ipv6_hop_limit)
Network.IPv6ProxyNDP, config_parse_tristate, 0, offsetof(Network, ipv6_proxy_ndp)
Network.IPv6MTUBytes, config_parse_mtu, AF_INET6, offsetof(Network, ipv6_mtu)
Network.IPv4AcceptLocal, config_parse_tristate, 0, offsetof(Network, ipv4_accept_local)

View file

@ -466,7 +466,6 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
.ipv4_route_localnet = -1,
.ipv6_privacy_extensions = _IPV6_PRIVACY_EXTENSIONS_INVALID,
.ipv6_dad_transmits = -1,
.ipv6_hop_limit = -1,
.ipv6_proxy_ndp = -1,
.proxy_arp = -1,
.ipv4_rp_filter = _IP_REVERSE_PATH_FILTER_INVALID,

View file

@ -323,7 +323,7 @@ struct Network {
int ipv4_accept_local;
int ipv4_route_localnet;
int ipv6_dad_transmits;
int ipv6_hop_limit;
uint8_t ipv6_hop_limit;
int proxy_arp;
uint32_t ipv6_mtu;
IPv6PrivacyExtensions ipv6_privacy_extensions;

View file

@ -165,7 +165,7 @@ static int link_set_ipv6_dad_transmits(Link *link) {
return sysctl_write_ip_property_int(AF_INET6, link->ifname, "dad_transmits", link->network->ipv6_dad_transmits);
}
int link_set_ipv6_hop_limit(Link *link) {
static int link_set_ipv6_hop_limit(Link *link) {
assert(link);
/* Make this a NOP if IPv6 is not available */
@ -178,7 +178,7 @@ int link_set_ipv6_hop_limit(Link *link) {
if (!link->network)
return 0;
if (link->network->ipv6_hop_limit < 0)
if (link->network->ipv6_hop_limit <= 0)
return 0;
return sysctl_write_ip_property_int(AF_INET6, link->ifname, "hop_limit", link->network->ipv6_hop_limit);

View file

@ -28,7 +28,6 @@ typedef enum IPReversePathFilter {
int link_set_sysctl(Link *link);
int link_set_ipv6_mtu(Link *link);
int link_set_ipv6_hop_limit(Link *link);
const char* ipv6_privacy_extensions_to_string(IPv6PrivacyExtensions i) _const_;
IPv6PrivacyExtensions ipv6_privacy_extensions_from_string(const char *s) _pure_;