]> git.decadent.org.uk Git - odhcp6c.git/blobdiff - src/odhcp6c.c
Revert to old behaviour regarding information requests
[odhcp6c.git] / src / odhcp6c.c
index 0282500b20a4e623b78937080e28bbe2e14f59f4..dbba60512c171ef8f5782ecd524d07baacfabc87 100644 (file)
@@ -311,7 +311,16 @@ int main(_unused int argc, char* const argv[])
                                        break; // Other signal type
 
                                // Send renew as T1 expired
-                               res = dhcpv6_request(DHCPV6_MSG_RENEW);
+                               size_t ia_pd_len, ia_na_len;
+                               odhcp6c_get_state(STATE_IA_PD, &ia_pd_len);
+                               odhcp6c_get_state(STATE_IA_NA, &ia_na_len);
+
+                               // If we have any IAs, send renew, otherwise request
+                               if (ia_pd_len == 0 && ia_na_len == 0)
+                                       res = dhcpv6_request(DHCPV6_MSG_REQUEST);
+                               else
+                                       res = dhcpv6_request(DHCPV6_MSG_RENEW);
+
                                odhcp6c_signal_process();
                                if (res > 0) { // Renew was succesfull
                                        // Publish updates