From 27e0133d40f7b328482b501a18e22b12a55564ea Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 13 Jul 2025 10:07:59 -0400 Subject: Associate --- src/addr_list.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/addr_list.c') 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) { list->top = NULL; } -void addr_list_add(struct addr_list* list, unsigned char addr[6]) { +void addr_list_add(struct addr_list* list, unsigned char addr[6], void* userdata) { struct addr_list_node* cur = list->top; struct addr_list_node* prev = NULL; @@ -25,6 +25,7 @@ void addr_list_add(struct addr_list* list, unsigned char addr[6]) { struct addr_list_node* next = (struct addr_list_node*)malloc(sizeof(struct addr_list_node)); next->next = NULL; memcpy(next->value, addr, 6); + next->userdata = userdata; if (prev == NULL) { list->top = next; @@ -47,6 +48,20 @@ bool addr_list_contains(struct addr_list* list, unsigned char addr[6]) { return false; } +void* addr_list_get(struct addr_list* list, unsigned char addr[6]) { + struct addr_list_node* cur = list->top; + + while (cur != NULL) { + if (!strncmp(cur->value, addr, 6)) { + return cur->userdata; + } + + cur = cur->next; + } + + return NULL; +} + void addr_list_remove(struct addr_list* list, unsigned char addr[6]) { struct addr_list_node* cur = list->top; struct addr_list_node* prev = NULL; -- cgit 1.4.1