34 lines
738 B
C
34 lines
738 B
C
|
/*
|
||
|
* Copyright (c) 2017 Linus Lüssing <linus.luessing@c0d3.blue>
|
||
|
*
|
||
|
* 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_ */
|