47 #ifdef NBR_TABLE_CONF_MAX_NEIGHBORS
48 #define NBR_TABLE_MAX_NEIGHBORS NBR_TABLE_CONF_MAX_NEIGHBORS
50 #define NBR_TABLE_MAX_NEIGHBORS 8
54 typedef void nbr_table_item_t;
57 typedef void(nbr_table_callback)(nbr_table_item_t *item);
60 typedef struct nbr_table {
63 nbr_table_callback *callback;
64 nbr_table_item_t *data;
68 #define NBR_TABLE(type, name) \
69 static type _##name##_mem[NBR_TABLE_MAX_NEIGHBORS]; \
70 static nbr_table_t name##_struct = { 0, sizeof(type), NULL, (nbr_table_item_t *)_##name##_mem }; \
71 static nbr_table_t *name = &name##_struct \
74 #define NBR_TABLE_GLOBAL(type, name) \
75 static type _##name##_mem[NBR_TABLE_MAX_NEIGHBORS]; \
76 static nbr_table_t name##_struct = { 0, sizeof(type), NULL, (nbr_table_item_t *)_##name##_mem }; \
77 nbr_table_t *name = &name##_struct \
80 #define NBR_TABLE_DECLARE(name) extern nbr_table_t *name
84 int nbr_table_register(nbr_table_t *table, nbr_table_callback *callback);
85 nbr_table_item_t *nbr_table_head(nbr_table_t *table);
86 nbr_table_item_t *nbr_table_next(nbr_table_t *table, nbr_table_item_t *item);
91 nbr_table_item_t *nbr_table_add_lladdr(nbr_table_t *table,
const linkaddr_t *lladdr);
92 nbr_table_item_t *nbr_table_get_from_lladdr(nbr_table_t *table,
const linkaddr_t *lladdr);
97 int nbr_table_remove(nbr_table_t *table, nbr_table_item_t *item);
98 int nbr_table_lock(nbr_table_t *table, nbr_table_item_t *item);
99 int nbr_table_unlock(nbr_table_t *table, nbr_table_item_t *item);
104 linkaddr_t *nbr_table_get_lladdr(nbr_table_t *table,
const nbr_table_item_t *item);