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

33 lines
803 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
typedef struct s_ping_tracker_slot {
struct timespec ts;
bool used;
bool acked;
} t_ping_tracker_slot;
typedef struct s_ping_tracker {
t_ping_tracker_slot slots[PING_TRACKER_SLOTS];
size_t nb_sent;
size_t nb_recv;
} t_ping_tracker;
void ping_tracker_init(t_ping_tracker *t);
void ping_tracker_record_send(t_ping_tracker *t, uint16_t seq, const
struct timespec *ts);
int64_t ping_tracker_record_recv(t_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