summaryrefslogtreecommitdiff
path: root/src/or/address_set.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/or/address_set.h')
-rw-r--r--src/or/address_set.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/or/address_set.h b/src/or/address_set.h
new file mode 100644
index 0000000000..2efa1cb03b
--- /dev/null
+++ b/src/or/address_set.h
@@ -0,0 +1,31 @@
+/* Copyright (c) 2018-2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file address_set.h
+ * \brief Types to handle sets of addresses.
+ **/
+
+#ifndef TOR_ADDRESS_SET_H
+#define TOR_ADDRESS_SET_H
+
+#include "orconfig.h"
+#include "lib/cc/torint.h"
+#include "lib/container/bloomfilt.h"
+
+/**
+ * An address_set_t represents a set of tor_addr_t values. The implementation
+ * is probabilistic: false negatives cannot occur but false positives are
+ * possible.
+ */
+typedef struct bloomfilt_t address_set_t;
+struct tor_addr_t;
+
+address_set_t *address_set_new(int max_addresses_guess);
+#define address_set_free(set) bloomfilt_free(set)
+void address_set_add(address_set_t *set, const struct tor_addr_t *addr);
+void address_set_add_ipv4h(address_set_t *set, uint32_t addr);
+int address_set_probably_contains(const address_set_t *set,
+ const struct tor_addr_t *addr);
+
+#endif