Print for duplicate table implemented
[olsrd.git] / src / duplicate_set.h
index f1745b7..8833e5b 100644 (file)
 #ifndef DUPLICATE_SET_2_H_
 #define DUPLICATE_SET_2_H_
 
-#include "common/avl.h"
+#include "defs.h"
 #include "olsr.h"
+#include "mantissa.h"
+#include "common/avl.h"
+
+#define DUPLICATE_CLEANUP_INTERVAL 15000
+#define DUPLICATE_CLEANUP_JITTER 25
+#define DUPLICATE_VTIME 120000
 
-struct duplicate_entry {
+struct dup_entry {
   struct avl_node avl;
   union olsr_ip_addr ip;
   olsr_u16_t seqnr;
   olsr_u16_t too_low_counter;
   olsr_u32_t array;
+  clock_t    valid_until;
 };
 
+AVLNODE2STRUCT(duptree2dupentry, struct dup_entry , avl);
+
 void olsr_init_duplicate_set(void);
-struct duplicate_entry *olsr_create_duplicate_entry(void *ip, olsr_u16_t seqnr);
+struct dup_entry *olsr_create_duplicate_entry(void *ip, olsr_u16_t seqnr);
 int olsr_shall_process_message(void *ip, olsr_u16_t seqnr);
 void olsr_print_duplicate_table(void);
 
+#define OLSR_FOR_ALL_DUP_ENTRIES(dup) \
+{ \
+  struct avl_node *dup_tree_node, *next_dup_tree_node; \
+  for (dup_tree_node = avl_walk_first(&duplicate_set); \
+    dup_tree_node; dup_tree_node = next_dup_tree_node) { \
+    next_dup_tree_node = avl_walk_next(dup_tree_node); \
+    dup = duptree2dupentry(dup_tree_node);
+#define OLSR_FOR_ALL_DUP_ENTRIES_END(dup) }}
+
 #endif /*DUPLICATE_SET_2_H_*/
 
 /*