]> git.decadent.org.uk Git - odhcp6c.git/blobdiff - src/odhcp6c.c
Revert "Revert to old behaviour regarding information requests"
[odhcp6c.git] / src / odhcp6c.c
index 3c6b3b05abd8db9eaeedb92dcf270dee90d8625b..36e9949f3a5c644ddd0a488e9e36f69f929aa734 100644 (file)
@@ -372,16 +372,7 @@ int main(_unused int argc, char* const argv[])
                                        break; // Other signal type
 
                                // Send renew as T1 expired
-                               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);
-
+                               res = dhcpv6_request(DHCPV6_MSG_RENEW);
                                odhcp6c_signal_process();
                                if (res > 0) { // Renew was succesfull
                                        // Publish updates
@@ -391,6 +382,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();
@@ -444,6 +441,7 @@ static int usage(void)
 #ifdef EXT_BFD_PING
        "       -B <interval>   Enable BFD ping check\n"
 #endif
+       "       -u <user-class> Set user-class option string\n"
        "       -c <clientid>   Override client-ID (base-16 encoded)\n"
        "       -i <iface-id>   Use a custom interface identifier for RA handling\n"
        "       -r <options>    Options to be requested (comma-separated)\n"
@@ -470,7 +468,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;
 }