convert ip_prefix_list to common/list datastructure
[olsrd.git] / src / olsr_ip_prefix_list.h
1
2 /*
3  * olsr_ip_prefix_list.h
4  *
5  *  Created on: 06.01.2009
6  *      Author: henning
7  */
8
9 #ifndef OLSR_IP_PREFIX_LIST_H_
10 #define OLSR_IP_PREFIX_LIST_H_
11
12 #include "defs.h"
13 #include "olsr_types.h"
14 #include "common/list.h"
15
16 struct ip_prefix_entry {
17   struct list_node node;
18   struct olsr_ip_prefix net;
19 };
20
21 /* inline to recast from node back to ip_prefix_entry */
22 LISTNODE2STRUCT(list2ipprefix, struct ip_prefix_entry, node);
23
24 /* deletion safe macro for ip_prefix traversal */
25 #define OLSR_FOR_ALL_IPPREFIX_ENTRIES(ipprefix_head, ipprefix_node) \
26 { \
27   struct list_node *link_head_node, *link_node, *next_link_node; \
28   link_head_node = ipprefix_head; \
29   for (link_node = link_head_node->next; \
30     link_node != link_head_node; link_node = next_link_node) { \
31     next_link_node = link_node->next; \
32     ipprefix_node = list2ipprefix(link_node);
33 #define OLSR_FOR_ALL_IPPREFIX_ENTRIES_END() }}
34
35 //struct ip_prefix_list {
36 //  struct olsr_ip_prefix net;
37 //  struct ip_prefix_list *next;
38 //};
39
40 /*
41  * List functions
42  */
43 void EXPORT(ip_prefix_list_add) (struct list_node *, const union olsr_ip_addr *, uint8_t);
44 int EXPORT(ip_prefix_list_remove) (struct list_node *, const union olsr_ip_addr *, uint8_t);
45 void EXPORT(ip_prefix_list_flush) (struct list_node *);
46 struct ip_prefix_entry *ip_prefix_list_find(struct list_node *, const union olsr_ip_addr *, uint8_t);
47
48
49 #endif /* OLSR_IP_PREFIX_LIST_H_ */