mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 17:51:22 +03:00
network: move and rename network_apply_anonymize_if_set()
This commit is contained in:
parent
993eb00016
commit
ae7ea5a7ba
@ -57,6 +57,8 @@ void network_adjust_dhcp(Network *network) {
|
||||
"Disabling DHCPv6 client.", network->filename);
|
||||
SET_FLAG(network->dhcp, ADDRESS_FAMILY_IPV6, false);
|
||||
}
|
||||
|
||||
network_adjust_dhcp4(network);
|
||||
}
|
||||
|
||||
static struct DUID fallback_duid = { .type = DUID_TYPE_EN };
|
||||
|
@ -26,6 +26,47 @@
|
||||
static int dhcp4_update_address(Link *link, bool announce);
|
||||
static int dhcp4_remove_all(Link *link);
|
||||
|
||||
void network_adjust_dhcp4(Network *network) {
|
||||
assert(network);
|
||||
|
||||
if (!FLAGS_SET(network->dhcp, ADDRESS_FAMILY_IPV4))
|
||||
return;
|
||||
|
||||
if (network->dhcp_use_gateway < 0)
|
||||
network->dhcp_use_gateway = network->dhcp_use_routes;
|
||||
|
||||
if (network->dhcp_anonymize) {
|
||||
/* RFC7844 3.7: SHOULD NOT send the Host Name option */
|
||||
network->dhcp_send_hostname = false;
|
||||
|
||||
/* RFC7844 section 3.: MAY contain the Client Identifier option
|
||||
* Section 3.5: clients MUST use client identifiers based solely on the link-layer address
|
||||
* NOTE: Using MAC, as it does not reveal extra information, and some servers might not
|
||||
* answer if this option is not sent */
|
||||
network->dhcp_client_identifier = DHCP_CLIENT_ID_MAC;
|
||||
|
||||
/* RFC7844 3.10: SHOULD NOT use the Vendor Class Identifier option */
|
||||
network->dhcp_vendor_class_identifier = mfree(network->dhcp_vendor_class_identifier);
|
||||
|
||||
/* RFC7844 section 3.6.: The client intending to protect its privacy SHOULD only
|
||||
* request a minimal number of options in the PRL and SHOULD also randomly shuffle the
|
||||
* ordering of option codes in the PRL. If this random ordering cannot be implemented,
|
||||
* the client MAY order the option codes in the PRL by option code number (lowest to
|
||||
* highest).
|
||||
*
|
||||
* TODO: Maybe there should be another variable called dhcp_request_mtu (to use the MTU
|
||||
* sent by the server but to do not request the option in the PRL)? */
|
||||
network->dhcp_use_mtu = false;
|
||||
|
||||
/* NOTE: when Anonymize=yes, the PRL route options are sent by default, but this is
|
||||
* needed to use them. */
|
||||
network->dhcp_use_routes = true;
|
||||
|
||||
/* RFC7844 section 3.6: same comments as previous option */
|
||||
network->dhcp_use_timezone = false;
|
||||
}
|
||||
}
|
||||
|
||||
static int dhcp4_release_old_lease(Link *link) {
|
||||
Route *route;
|
||||
int k, r = 0;
|
||||
|
@ -17,6 +17,7 @@ typedef enum DHCPClientIdentifier {
|
||||
_DHCP_CLIENT_ID_INVALID = -EINVAL,
|
||||
} DHCPClientIdentifier;
|
||||
|
||||
void network_adjust_dhcp4(Network *network);
|
||||
int dhcp4_configure(Link *link);
|
||||
int dhcp4_update_mac(Link *link);
|
||||
|
||||
|
@ -41,45 +41,6 @@
|
||||
/* Let's assume that anything above this number is a user misconfiguration. */
|
||||
#define MAX_NTP_SERVERS 128
|
||||
|
||||
/* Set defaults following RFC7844 */
|
||||
void network_apply_anonymize_if_set(Network *network) {
|
||||
if (!network->dhcp_anonymize)
|
||||
return;
|
||||
/* RFC7844 3.7
|
||||
SHOULD NOT send the Host Name option */
|
||||
network->dhcp_send_hostname = false;
|
||||
/* RFC7844 section 3.:
|
||||
MAY contain the Client Identifier option
|
||||
Section 3.5:
|
||||
clients MUST use client identifiers based solely
|
||||
on the link-layer address */
|
||||
/* NOTE: Using MAC, as it does not reveal extra information,
|
||||
* and some servers might not answer if this option is not sent */
|
||||
network->dhcp_client_identifier = DHCP_CLIENT_ID_MAC;
|
||||
/* RFC 7844 3.10:
|
||||
SHOULD NOT use the Vendor Class Identifier option */
|
||||
network->dhcp_vendor_class_identifier = mfree(network->dhcp_vendor_class_identifier);
|
||||
/* RFC7844 section 3.6.:
|
||||
The client intending to protect its privacy SHOULD only request a
|
||||
minimal number of options in the PRL and SHOULD also randomly shuffle
|
||||
the ordering of option codes in the PRL. If this random ordering
|
||||
cannot be implemented, the client MAY order the option codes in the
|
||||
PRL by option code number (lowest to highest).
|
||||
*/
|
||||
/* NOTE: dhcp_use_mtu is false by default,
|
||||
* though it was not initiallized to any value in network_load_one.
|
||||
* Maybe there should be another var called *send*?
|
||||
* (to use the MTU sent by the server but to do not send
|
||||
* the option in the PRL). */
|
||||
network->dhcp_use_mtu = false;
|
||||
/* NOTE: when Anonymize=yes, the PRL route options are sent by default,
|
||||
* but this is needed to use them. */
|
||||
network->dhcp_use_routes = true;
|
||||
/* RFC7844 section 3.6.
|
||||
* same comments as previous option */
|
||||
network->dhcp_use_timezone = false;
|
||||
}
|
||||
|
||||
static int network_resolve_netdev_one(Network *network, const char *name, NetDevKind kind, NetDev **ret_netdev) {
|
||||
const char *kind_string;
|
||||
NetDev *netdev;
|
||||
@ -223,9 +184,6 @@ int network_verify(Network *network) {
|
||||
network->dhcp_use_mtu = false;
|
||||
}
|
||||
|
||||
if (network->dhcp_use_gateway < 0)
|
||||
network->dhcp_use_gateway = network->dhcp_use_routes;
|
||||
|
||||
if (network->dhcp_critical >= 0) {
|
||||
if (network->keep_configuration >= 0)
|
||||
log_warning("%s: Both KeepConfiguration= and deprecated CriticalConnection= are set. "
|
||||
@ -353,19 +311,19 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
|
||||
.dhcp_use_hostname = true,
|
||||
.dhcp_use_routes = true,
|
||||
.dhcp_use_gateway = -1,
|
||||
/* NOTE: this var might be overwritten by network_apply_anonymize_if_set */
|
||||
/* NOTE: this var might be overwritten by network_adjust_dhcp4() */
|
||||
.dhcp_send_hostname = true,
|
||||
.dhcp_send_release = true,
|
||||
/* To enable/disable RFC7844 Anonymity Profiles */
|
||||
.dhcp_anonymize = false,
|
||||
.dhcp_route_metric = DHCP_ROUTE_METRIC,
|
||||
/* NOTE: this var might be overwritten by network_apply_anonymize_if_set */
|
||||
/* NOTE: this var might be overwritten by network_adjust_dhcp4() */
|
||||
.dhcp_client_identifier = DHCP_CLIENT_ID_DUID,
|
||||
.dhcp_route_table = RT_TABLE_MAIN,
|
||||
.dhcp_route_table_set = false,
|
||||
/* NOTE: from man: UseMTU=... Defaults to false*/
|
||||
/* NOTE: from man: UseMTU=... Defaults to false */
|
||||
.dhcp_use_mtu = false,
|
||||
/* NOTE: from man: UseTimezone=... Defaults to "no".*/
|
||||
/* NOTE: from man: UseTimezone=... Defaults to "no". */
|
||||
.dhcp_use_timezone = false,
|
||||
.dhcp_ip_service_type = -1,
|
||||
|
||||
@ -505,8 +463,6 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
network_apply_anonymize_if_set(network);
|
||||
|
||||
r = network_add_ipv4ll_route(network);
|
||||
if (r < 0)
|
||||
log_warning_errno(r, "%s: Failed to add IPv4LL route, ignoring: %m", network->filename);
|
||||
|
Loading…
Reference in New Issue
Block a user