diff options
Diffstat (limited to 'src/addr_list.c')
-rw-r--r-- | src/addr_list.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/addr_list.c b/src/addr_list.c index 759907e..e8ba571 100644 --- a/src/addr_list.c +++ b/src/addr_list.c | |||
@@ -9,7 +9,7 @@ void addr_list_init(struct addr_list* list) { | |||
9 | list->top = NULL; | 9 | list->top = NULL; |
10 | } | 10 | } |
11 | 11 | ||
12 | void addr_list_add(struct addr_list* list, unsigned char addr[6]) { | 12 | void addr_list_add(struct addr_list* list, unsigned char addr[6], void* userdata) { |
13 | struct addr_list_node* cur = list->top; | 13 | struct addr_list_node* cur = list->top; |
14 | struct addr_list_node* prev = NULL; | 14 | struct addr_list_node* prev = NULL; |
15 | 15 | ||
@@ -25,6 +25,7 @@ void addr_list_add(struct addr_list* list, unsigned char addr[6]) { | |||
25 | struct addr_list_node* next = (struct addr_list_node*)malloc(sizeof(struct addr_list_node)); | 25 | struct addr_list_node* next = (struct addr_list_node*)malloc(sizeof(struct addr_list_node)); |
26 | next->next = NULL; | 26 | next->next = NULL; |
27 | memcpy(next->value, addr, 6); | 27 | memcpy(next->value, addr, 6); |
28 | next->userdata = userdata; | ||
28 | 29 | ||
29 | if (prev == NULL) { | 30 | if (prev == NULL) { |
30 | list->top = next; | 31 | list->top = next; |
@@ -47,6 +48,20 @@ bool addr_list_contains(struct addr_list* list, unsigned char addr[6]) { | |||
47 | return false; | 48 | return false; |
48 | } | 49 | } |
49 | 50 | ||
51 | void* addr_list_get(struct addr_list* list, unsigned char addr[6]) { | ||
52 | struct addr_list_node* cur = list->top; | ||
53 | |||
54 | while (cur != NULL) { | ||
55 | if (!strncmp(cur->value, addr, 6)) { | ||
56 | return cur->userdata; | ||
57 | } | ||
58 | |||
59 | cur = cur->next; | ||
60 | } | ||
61 | |||
62 | return NULL; | ||
63 | } | ||
64 | |||
50 | void addr_list_remove(struct addr_list* list, unsigned char addr[6]) { | 65 | void addr_list_remove(struct addr_list* list, unsigned char addr[6]) { |
51 | struct addr_list_node* cur = list->top; | 66 | struct addr_list_node* cur = list->top; |
52 | struct addr_list_node* prev = NULL; | 67 | struct addr_list_node* prev = NULL; |