resolve merge conflicts
[olsrd.git] / src / two_hop_neighbor_table.h
index 992c4a5..7cc8a22 100644 (file)
 #define        NB2S_COVERED    0x1     /* node has been covered by a MPR */
 
 
-struct neighbor_list_entry {
-  struct nbr_entry *neighbor;
+struct nbr_list_entry {
+  struct nbr_entry *neighbor;          /* backpointer to owning nbr entry */
   olsr_linkcost second_hop_linkcost;
   olsr_linkcost path_linkcost;
   olsr_linkcost saved_path_linkcost;
-  struct neighbor_list_entry *next;
-  struct neighbor_list_entry *prev;
+  struct nbr_list_entry *next;
+  struct nbr_list_entry *prev;
 };
 
 
-struct neighbor_2_entry {
-  union olsr_ip_addr neighbor_2_addr;
-  uint8_t mpr_covered_count;           /*used in mpr calculation */
-  uint8_t processed;                   /*used in mpr calculation */
-  int16_t neighbor_2_pointer;          /* Neighbor count */
-  struct neighbor_list_entry neighbor_2_nblist;
-  struct neighbor_2_entry *prev;
-  struct neighbor_2_entry *next;
-};
+struct nbr2_entry {
+  union olsr_ip_addr nbr2_addr;
+  struct nbr2_entry *prev;
+  struct nbr2_entry *next;
+  unsigned int mpr_covered_count;      /* Used in mpr calculation */
+  unsigned int processed:1;            /* Used in mpr calculation */
+  unsigned int nbr2_refcount;          /* Reference counter */
+  struct nbr_list_entry nbr2_nblist;
+} __attribute__ ((packed));;
 
 /*
- * macros for traversing two-hop neighbors lists.
+ * macros for traversing two-hop neighbors.
  * it is recommended to use this because it hides all the internal
  * datastructure from the callers.
  *
@@ -87,15 +87,17 @@ struct neighbor_2_entry {
   nbr2 = nbr2->next)
 #define OLSR_FOR_ALL_NBR2_ENTRIES_END(nbr2) }}
 
-extern struct neighbor_2_entry two_hop_neighbortable[HASHSIZE];
+extern struct nbr2_entry two_hop_neighbortable[HASHSIZE];
 
-void olsr_init_two_hop_table(void); 
-void olsr_delete_neighbor_pointer(struct neighbor_2_entry *, struct nbr_entry *);
-void olsr_delete_two_hop_neighbor_table(struct neighbor_2_entry *);
-void olsr_insert_two_hop_neighbor_table(struct neighbor_2_entry *);
-struct neighbor_2_entry *olsr_lookup_two_hop_neighbor_table(const union olsr_ip_addr *);
-struct neighbor_2_entry *olsr_lookup_two_hop_neighbor_table_mid(const union olsr_ip_addr *);
-void olsr_link_nbr_nbr2(struct nbr_entry *, struct neighbor_2_entry *, float);
+void olsr_init_two_hop_table(void);
+void olsr_lock_nbr2(struct nbr2_entry *);
+void olsr_unlock_nbr2(struct nbr2_entry *);
+void olsr_delete_neighbor_pointer(struct nbr2_entry *, struct nbr_entry *);
+void olsr_delete_two_hop_neighbor_table(struct nbr2_entry *);
+void olsr_insert_two_hop_neighbor_table(struct nbr2_entry *);
+struct nbr2_entry *olsr_lookup_two_hop_neighbor_table(const union olsr_ip_addr *);
+struct nbr2_entry *olsr_lookup_two_hop_neighbor_table_mid(const union olsr_ip_addr *);
+void olsr_link_nbr_nbr2(struct nbr_entry *, struct nbr2_entry *, float);
 void olsr_print_two_hop_neighbor_table(void);
 
 #endif