From: Yu Watanabe Date: Tue, 18 May 2021 04:59:49 +0000 (+0900) Subject: network: introduce network_adjust_ipv6_proxy_ndp() X-Git-Tag: v249-rc1~76^2~40 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=14d9ab9d32f328f0206c0777416211c3f28770fb;p=thirdparty%2Fsystemd.git network: introduce network_adjust_ipv6_proxy_ndp() --- diff --git a/src/network/networkd-ipv6-proxy-ndp.c b/src/network/networkd-ipv6-proxy-ndp.c index 57b3fb0118c..897447a20cd 100644 --- a/src/network/networkd-ipv6-proxy-ndp.c +++ b/src/network/networkd-ipv6-proxy-ndp.c @@ -12,6 +12,20 @@ #include "string-util.h" #include "sysctl-util.h" +void network_adjust_ipv6_proxy_ndp(Network *network) { + assert(network); + + if (set_isempty(network->ipv6_proxy_ndp_addresses)) + return; + + if (!socket_ipv6_is_supported()) { + log_once(LOG_WARNING, + "%s: IPv6 proxy NDP addresses are set, but IPv6 is not supported by kernel, " + "Ignoring IPv6 proxy NDP addresses.", network->filename); + network->ipv6_proxy_ndp_addresses = set_free_free(network->ipv6_proxy_ndp_addresses); + } +} + static int set_ipv6_proxy_ndp_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) { int r; diff --git a/src/network/networkd-ipv6-proxy-ndp.h b/src/network/networkd-ipv6-proxy-ndp.h index 27313efa0c8..546137fdaca 100644 --- a/src/network/networkd-ipv6-proxy-ndp.h +++ b/src/network/networkd-ipv6-proxy-ndp.h @@ -4,6 +4,9 @@ #include "conf-parser.h" typedef struct Link Link; +typedef struct Network Network; + +void network_adjust_ipv6_proxy_ndp(Network *network); int link_set_ipv6_proxy_ndp_addresses(Link *link); diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 4edccee0141..9cb6551d8ae 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -20,6 +20,7 @@ #include "networkd-dhcp-common.h" #include "networkd-dhcp-server-static-lease.h" #include "networkd-dhcp-server.h" +#include "networkd-ipv6-proxy-ndp.h" #include "networkd-manager.h" #include "networkd-ndisc.h" #include "networkd-neighbor.h" @@ -177,6 +178,7 @@ int network_verify(Network *network) { /* IPMasquerade implies IPForward */ network->ip_forward |= network->ip_masquerade; + network_adjust_ipv6_proxy_ndp(network); network_adjust_ipv6_accept_ra(network); network_adjust_dhcp(network); network_adjust_radv(network);