/* * Copyright (c) 2017 Linus Lüssing * * SPDX-License-Identifier: GPL-2.0+ * License-Filename: LICENSE */ #ifndef _ADDR_STORE_H_ #define _ADDR_STORE_H_ #define ADDR_STORE_NUM_BUCKETS 32 struct addr_list { struct addr_list *next; int tic; char addr[0]; }; struct addr_store { struct addr_list *buckets[ADDR_STORE_NUM_BUCKETS]; size_t addr_len; void (*destructor)(struct addr_list *); char *(*ntoa)(void *); }; int addr_store_init(size_t addr_len, void (*destructor)(struct addr_list *), char *(*ntoa)(void *), struct addr_store *store); int addr_store_add(void *addr, struct addr_store *store); void addr_store_cleanup(struct addr_store *store); #endif /* _ADDR_STORE_H_ */