ell.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/5] dhcp6: Fix emitting LEASE_OBTAINED in stateless mode
@ 2022-10-03 22:28 Andrew Zaborowski
  2022-10-03 22:28 ` [PATCH 2/5] netconfig: Enable stateless DHCP mode Andrew Zaborowski
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Andrew Zaborowski @ 2022-10-03 22:28 UTC (permalink / raw)
  To: ell

Make sure we emit the LEASE_OBTAINED and not LEASE_RENEWED event after
obtaining a reply to an Information-Request.  Only set
client->request_na in stateful mode so as not to require the NA in the
lease object when we're later validating it.  Fix switching to BOUND
state after dhcp6_client_receive_reply() returns BOUND.
---
 ell/dhcp6.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/ell/dhcp6.c b/ell/dhcp6.c
index 2792ff2..3dbd0cd 100644
--- a/ell/dhcp6.c
+++ b/ell/dhcp6.c
@@ -971,8 +971,9 @@ static void dhcp6_client_setup_lease(struct l_dhcp6_client *client,
 	client->lease->start_time = timestamp;
 
 	/* TODO: Emit IP_CHANGED if any addresses were removed / added */
-	if (client->state == DHCP6_STATE_REQUESTING ||
-			client->state == DHCP6_STATE_SOLICITING)
+	if (L_IN_SET(client->state, DHCP6_STATE_REQUESTING,
+				DHCP6_STATE_SOLICITING,
+				DHCP6_STATE_REQUESTING_INFORMATION))
 		event = L_DHCP6_CLIENT_EVENT_LEASE_OBTAINED;
 	else
 		event = L_DHCP6_CLIENT_EVENT_LEASE_RENEWED;
@@ -1385,7 +1386,8 @@ static void dhcp6_client_rx_message(const void *data, size_t len,
 	case DHCP6_STATE_BOUND:
 		return;
 	case DHCP6_STATE_REQUESTING_INFORMATION:
-		if (dhcp6_client_receive_reply(client, message, len) < 0)
+		r = dhcp6_client_receive_reply(client, message, len);
+		if (r < 0)
 			return;
 
 		break;
@@ -1527,7 +1529,6 @@ LIB_EXPORT struct l_dhcp6_client *l_dhcp6_client_new(uint32_t ifindex)
 
 	client->state = DHCP6_STATE_INIT;
 	client->ifindex = ifindex;
-	client->request_na = true;
 
 	client->icmp6 = l_icmp6_client_new(ifindex);
 	l_icmp6_client_add_event_handler(client->icmp6,
@@ -1803,6 +1804,8 @@ LIB_EXPORT bool l_dhcp6_client_start(struct l_dhcp6_client *client)
 	else
 		client_duid_generate_addr_plus_time(client);
 
+	client->request_na = !client->stateless;
+
 	if (!client->transport) {
 		client->transport =
 			_dhcp6_default_transport_new(client->ifindex,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-10-04 17:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-03 22:28 [PATCH 1/5] dhcp6: Fix emitting LEASE_OBTAINED in stateless mode Andrew Zaborowski
2022-10-03 22:28 ` [PATCH 2/5] netconfig: Enable stateless DHCP mode Andrew Zaborowski
2022-10-03 22:28 ` [PATCH 3/5] netconfig: Return SLAAC+DHCP6 DNS info from getters Andrew Zaborowski
2022-10-03 22:28 ` [PATCH 4/5] netconfig: Stop ongoing work on failure Andrew Zaborowski
2022-10-03 22:28 ` [PATCH 5/5] dhcp6: Don't require Client ID in Information-request reply Andrew Zaborowski
2022-10-04 17:44 ` [PATCH 1/5] dhcp6: Fix emitting LEASE_OBTAINED in stateless mode Denis Kenzior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).