From: Susant Sahani Date: Tue, 9 Jul 2019 14:23:28 +0000 (+0530) Subject: networkd: DHCPv6 - separate DHCPv6 options from DHCPv4 options X-Git-Tag: v243~275^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=caa8ca4286a44d2de178088ef4c5186ae3026a13;p=platform%2Fupstream%2Fsystemd.git networkd: DHCPv6 - separate DHCPv6 options from DHCPv4 options Closes https://github.com/systemd/systemd/issues/12917 --- diff --git a/man/systemd.network.xml b/man/systemd.network.xml index d32b60a..a57c600 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -1293,7 +1293,7 @@ [DHCP] Section Options The [DHCP] section configures the - DHCPv4 and DHCP6 client, if it is enabled with the + DHCPv4 client, if it is enabled with the DHCP= setting described above: @@ -1527,6 +1527,30 @@ + BlackList= + + A whitespace-separated list of IPv4 addresses. DHCP offers from servers in the list are rejected. + + + + + + + + [DHCPv6] Section Options + The [DHCPv6] section configures the DHCPv6 client, if it is enabled with the + DHCPv6= setting described above: + + + + UseDNS= + UseNTP= + + As in the [DHCP] section. + + + + RapidCommit= Takes a boolean. The DHCPv6 client can obtain configuration parameters from a DHCPv6 server through @@ -1555,15 +1579,8 @@ - - BlackList= - - A whitespace-separated list of IPv4 addresses. DHCP offers from servers in the list are rejected. - - - - + [IPv6AcceptRA] Section Options diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 5f91d66..7a22883 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -3474,7 +3474,7 @@ int link_save(Link *link) { space = true; } - if (link->network->dhcp_use_dns && dhcp6_lease) { + if (link->network->dhcp6_use_dns && dhcp6_lease) { struct in6_addr *in6_addrs; r = sd_dhcp6_lease_get_dns(dhcp6_lease, &in6_addrs); @@ -3517,7 +3517,7 @@ int link_save(Link *link) { space = true; } - if (link->network->dhcp_use_ntp && dhcp6_lease) { + if (link->network->dhcp6_use_ntp && dhcp6_lease) { struct in6_addr *in6_addrs; char **hosts; diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf index e6723f2..0aa84f3 100644 --- a/src/network/networkd-network-gperf.gperf +++ b/src/network/networkd-network-gperf.gperf @@ -161,15 +161,17 @@ DHCP.UseTimezone, config_parse_bool, DHCP.IAID, config_parse_iaid, 0, 0 DHCP.ListenPort, config_parse_uint16, 0, offsetof(Network, dhcp_client_port) DHCP.SendRelease, config_parse_bool, 0, offsetof(Network, dhcp_send_release) -DHCP.RapidCommit, config_parse_bool, 0, offsetof(Network, rapid_commit) DHCP.BlackList, config_parse_dhcp_black_listed_ip_address, 0, 0 -DHCP.ForceDHCPv6PDOtherInformation, config_parse_bool, 0, offsetof(Network, dhcp6_force_pd_other_information) IPv6AcceptRA.UseAutonomousPrefix, config_parse_bool, 0, offsetof(Network, ipv6_accept_ra_use_autonomous_prefix) IPv6AcceptRA.UseOnLinkPrefix, config_parse_bool, 0, offsetof(Network, ipv6_accept_ra_use_onlink_prefix) IPv6AcceptRA.UseDNS, config_parse_bool, 0, offsetof(Network, ipv6_accept_ra_use_dns) IPv6AcceptRA.UseDomains, config_parse_dhcp_use_domains, 0, offsetof(Network, ipv6_accept_ra_use_domains) IPv6AcceptRA.RouteTable, config_parse_section_route_table, 0, 0 IPv6AcceptRA.BlackList, config_parse_ndisc_black_listed_prefix, 0, 0 +DHCPv6.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp6_use_dns) +DHCPv6.UseNTP, config_parse_bool, 0, offsetof(Network, dhcp6_use_ntp) +DHCPv6.RapidCommit, config_parse_bool, 0, offsetof(Network, rapid_commit) +DHCPv6.ForceDHCPv6PDOtherInformation, config_parse_bool, 0, offsetof(Network, dhcp6_force_pd_other_information) DHCPServer.MaxLeaseTimeSec, config_parse_sec, 0, offsetof(Network, dhcp_server_max_lease_time_usec) DHCPServer.DefaultLeaseTimeSec, config_parse_sec, 0, offsetof(Network, dhcp_server_default_lease_time_usec) DHCPServer.EmitDNS, config_parse_bool, 0, offsetof(Network, dhcp_server_emit_dns) @@ -230,3 +232,5 @@ DHCPv4.UseHostname, config_parse_bool, DHCP.UseDomainName, config_parse_dhcp_use_domains, 0, offsetof(Network, dhcp_use_domains) DHCPv4.UseDomainName, config_parse_dhcp_use_domains, 0, offsetof(Network, dhcp_use_domains) DHCPv4.CriticalConnection, config_parse_bool, 0, offsetof(Network, dhcp_critical) +DHCP.RapidCommit, config_parse_bool, 0, offsetof(Network, rapid_commit) +DHCP.ForceDHCPv6PDOtherInformation, config_parse_bool, 0, offsetof(Network, dhcp6_force_pd_other_information) diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 0b5205e..ee8876a 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -361,6 +361,9 @@ int network_load_one(Manager *manager, const char *filename) { .dhcp_use_timezone = false, .rapid_commit = true, + .dhcp6_use_ntp = true, + .dhcp6_use_dns = true, + .dhcp_server_emit_dns = true, .dhcp_server_emit_ntp = true, .dhcp_server_emit_router = true, @@ -426,6 +429,7 @@ int network_load_one(Manager *manager, const char *filename) { "Route\0" "DHCP\0" "DHCPv4\0" /* compat */ + "DHCPv6\0" "DHCPServer\0" "IPv6AcceptRA\0" "IPv6NDPProxyAddress\0" diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h index 72f1b94..6a3db9b 100644 --- a/src/network/networkd-network.h +++ b/src/network/networkd-network.h @@ -101,6 +101,10 @@ struct Network { DHCPUseDomains dhcp_use_domains; Set *dhcp_black_listed_ip; + /* DHCPv6 Client support*/ + bool dhcp6_use_dns; + bool dhcp6_use_ntp; + /* DHCP Server Support */ bool dhcp_server; bool dhcp_server_emit_dns; diff --git a/test/fuzz/fuzz-network-parser/directives.network b/test/fuzz/fuzz-network-parser/directives.network index 26dd83d..8136322 100644 --- a/test/fuzz/fuzz-network-parser/directives.network +++ b/test/fuzz/fuzz-network-parser/directives.network @@ -66,6 +66,11 @@ UseTimezone= RouteTable= BlackList= SendRelease= +[DHCPv6] +UseNTP= +UseDNS= +RapidCommit= +ForceDHCPv6PDOtherInformation= [Route] Destination= Protocol=