net-tools/includes/internal/ping/tracker.h

33 lines
772 B
C

#ifndef PING_TRACKER_H
#define PING_TRACKER_H
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <time.h>
#define PING_TRACKER_SLOTS 128
struct ping_tracker_slot {
struct timespec ts;
bool used;
bool acked;
};
struct ping_tracker {
struct ping_tracker_slot slots[PING_TRACKER_SLOTS];
size_t nb_sent;
size_t nb_recv;
};
void ping_tracker_init(struct ping_tracker *t);
void ping_tracker_record_send(struct ping_tracker *t, uint16_t seq, const
struct timespec *ts);
int64_t ping_tracker_record_recv(struct ping_tracker *t, uint16_t seq,
const struct timespec *ts);
#define ping_tracker_sent(t) ((t)->nb_sent)
#define ping_tracker_recv(t) ((t)->nb_recv)
#define ping_tracker_lost(t) ((t)->nb_sent - (t)->nb_recv)
#endif