X-Git-Url: https://git.decadent.org.uk/gitweb/?p=odhcp6c.git;a=blobdiff_plain;f=src%2Fodhcp6c.c;h=0a46947f4a5e2adc689b9dfd4ebc8ad412d18369;hp=3c6b3b05abd8db9eaeedb92dcf270dee90d8625b;hb=6c8109e0c77d5a54950ba607d1ec1f83d5efb5b7;hpb=69128a57204554ce433cbc8860c8c1077092ac58 diff --git a/src/odhcp6c.c b/src/odhcp6c.c index 3c6b3b0..0a46947 100644 --- a/src/odhcp6c.c +++ b/src/odhcp6c.c @@ -391,6 +391,12 @@ int main(_unused int argc, char* const argv[]) odhcp6c_clear_state(STATE_SERVER_ID); // Remove binding + odhcp6c_get_state(STATE_IA_PD, &ia_pd_len); + odhcp6c_get_state(STATE_IA_NA, &ia_na_len); + + if (ia_pd_len == 0 && ia_na_len == 0) + break; + // If we have IAs, try rebind otherwise restart res = dhcpv6_request(DHCPV6_MSG_REBIND); odhcp6c_signal_process(); @@ -470,7 +476,7 @@ uint64_t odhcp6c_get_milli_time(void) { struct timespec t = {0, 0}; syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &t); - return t.tv_sec * 1000 + t.tv_nsec / 1000000; + return ((uint64_t)t.tv_sec) * 1000 + ((uint64_t)t.tv_nsec) / 1000000; }