From 320e386b09e1b9b7ff379f69c20fbe297040ed60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Fri, 29 Sep 2023 14:24:08 +0200 Subject: [PATCH] n-dhcp4: allow not to send the client-identifier Sending the client-identifier (DHCP Option 61) is not mandatory, although it's recommended, and there are some weird cases where clients need not to send it. Allow not to send it by leaving client_id unset. --- src/n-dhcp4/src/n-dhcp4-c-connection.c | 14 ++++++++------ src/n-dhcp4/src/n-dhcp4-client.c | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/n-dhcp4/src/n-dhcp4-c-connection.c b/src/n-dhcp4/src/n-dhcp4-c-connection.c index 5abd6f5991..dd1a573a67 100644 --- a/src/n-dhcp4/src/n-dhcp4-c-connection.c +++ b/src/n-dhcp4/src/n-dhcp4-c-connection.c @@ -543,12 +543,14 @@ static int n_dhcp4_c_connection_new_message(NDhcp4CConnection *connection, if (r) return r; - r = n_dhcp4_outgoing_append(message, - N_DHCP4_OPTION_CLIENT_IDENTIFIER, - connection->client_config->client_id, - connection->client_config->n_client_id); - if (r) - return r; + if (connection->client_config->n_client_id > 0) { + r = n_dhcp4_outgoing_append(message, + N_DHCP4_OPTION_CLIENT_IDENTIFIER, + connection->client_config->client_id, + connection->client_config->n_client_id); + if (r) + return r; + } switch (message_type) { case N_DHCP4_MESSAGE_DISCOVER: diff --git a/src/n-dhcp4/src/n-dhcp4-client.c b/src/n-dhcp4/src/n-dhcp4-client.c index 3b4a70c802..7689ba938a 100644 --- a/src/n-dhcp4/src/n-dhcp4-client.c +++ b/src/n-dhcp4/src/n-dhcp4-client.c @@ -403,7 +403,7 @@ _c_public_ int n_dhcp4_client_new(NDhcp4Client **clientp, NDhcp4ClientConfig *co return N_DHCP4_E_INVALID_TRANSPORT; } - if (config->n_client_id < 1) + if (config->n_client_id != 0 && config->n_client_id < 2) return N_DHCP4_E_INVALID_CLIENT_ID; }