X-Git-Url: https://git.decadent.org.uk/gitweb/?p=odhcp6c.git;a=blobdiff_plain;f=src%2Fodhcp6c.c;h=dbba60512c171ef8f5782ecd524d07baacfabc87;hp=0282500b20a4e623b78937080e28bbe2e14f59f4;hb=c98181c4a48c57e405effd1dc9046aaaee6d480f;hpb=efb1a99e7cbaf9841226bb7564d07a76411a2552 diff --git a/src/odhcp6c.c b/src/odhcp6c.c index 0282500..dbba605 100644 --- a/src/odhcp6c.c +++ b/src/odhcp6c.c @@ -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