diff mbox series

[1/5] dhcp6: Include Client ID in Information-Request

Message ID 20220930135250.534296-1-andrew.zaborowski@intel.com (mailing list archive)
State New
Headers show
Series [1/5] dhcp6: Include Client ID in Information-Request | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
prestwoj/iwd-ci-build success Build - Configure
prestwoj/iwd-ci-clang success clang PASS
prestwoj/iwd-ci-makecheckvalgrind success Make Check w/Valgrind
prestwoj/iwd-ci-makecheck success Make Check
prestwoj/iwd-ci-testrunner fail test-runner - FAIL:
prestwoj/iwd-ci-makedistcheck success Make Distcheck

Commit Message

Andrew Zaborowski Sept. 30, 2022, 1:52 p.m. UTC
The Reply parser requires that the Client ID be present in the Reply but
the server only includes that if the Information-Request included the
Client ID.  RFC 8415 Section 18.2.6 has this to say about the Client ID:

"The client SHOULD include a Client Identifier option (see Section 21.2)
to identify itself to the server (however, see Section 4.3.1 of [RFC7844]
for reasons why a client may not want to include this option).  If the
client does not include a Client Identifier option, the server will not
be able to return any client-specific options to the client, or the
server may choose not to respond to the message at all."

RFC 7833 Section 4.3.1 says this:
"When using stateless DHCPv6, clients wanting to protect their privacy
SHOULD NOT include client identifiers in their Information-request
messages.  This will prevent the server from specifying client-specific
options if it is configured to do so, but the need for anonymity
precludes such options anyway."
---
The obvious alternative is to not include the Client ID and not require
it in the Reply validation, or make this configurable to avoid privacy
concerns.  I'm happy to go with either of these options.

 ell/dhcp6.c | 2 ++
 1 file changed, 2 insertions(+)
diff mbox series

Patch

diff --git a/ell/dhcp6.c b/ell/dhcp6.c
index 2792ff2..0705a7b 100644
--- a/ell/dhcp6.c
+++ b/ell/dhcp6.c
@@ -738,6 +738,8 @@  static int dhcp6_client_send_information_request(struct l_dhcp6_client *client)
 	option_append_elapsed_time(builder, client->transaction_start_t);
 	option_append_option_request(builder, client->request_options,
 					DHCP6_STATE_REQUESTING_INFORMATION);
+	option_append_bytes(builder, DHCP6_OPTION_CLIENT_ID,
+					client->duid, client->duid_len);
 
 	information_request = dhcp6_message_builder_free(builder, false,
 						&information_request_len);