/* rollover exists */
} else {
/* counter is 64bit */
- if (*a > MAX32 || is64bit == 1) {
+ if (*a > MAX32 || *b > MAX32 || is64bit == 1) {
if (debug)
printf("cc64 (%d): uint64 - %" PRIu64 " + %" PRIu64 " = %" PRIu64 "\n", is64bit, *a, *b, (uint64_t)MAX64 - *a + *b);
return MAX64 - *a + *b;
/* in order to be on the safe side and avoid discarding data in case there's some random extra delay */
if ((interval >= 1) && (interval <= 360)) {
+ if ((*dc)->currx > MAX32 || (*dc)->curtx > MAX32 || ifinfo.rx > MAX32 || ifinfo.tx > MAX32) {
+ ifinfo.is64bit = 1;
+ }
+
rxchange = countercalc(&(*dc)->currx, &ifinfo.rx, ifinfo.is64bit);
txchange = countercalc(&(*dc)->curtx, &ifinfo.tx, ifinfo.is64bit);