aboutsummaryrefslogtreecommitdiff
path: root/src/common/address_set.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-02-07 09:49:35 -0500
committerDavid Goulet <dgoulet@torproject.org>2018-02-08 14:38:11 -0500
commit46bd2aed915f17d520f9ff237262d1510fe25e12 (patch)
tree8a20c6425bee4fb1216b9fe639c347de29e7eb57 /src/common/address_set.h
parenta2aaf9509ba578f4e7705b506ee9a0f764d24ff2 (diff)
downloadtor-46bd2aed915f17d520f9ff237262d1510fe25e12.tar.gz
tor-46bd2aed915f17d520f9ff237262d1510fe25e12.zip
Add an address-set backend using a bloom filter.
We're going to need this to make our anti-DoS code (see 24902) more robust.
Diffstat (limited to 'src/common/address_set.h')
-rw-r--r--src/common/address_set.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/common/address_set.h b/src/common/address_set.h
new file mode 100644
index 0000000000..568528c89e
--- /dev/null
+++ b/src/common/address_set.h
@@ -0,0 +1,33 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file addressset.h
+ * \brief Types to handle sets of addresses.
+ *
+ * This module was first written on a semi-emergency basis to improve the
+ * robustness of the anti-DoS module. As such, it's written in a pretty
+ * conservative way, and should be susceptible to improvement later on.
+ **/
+
+#ifndef TOR_ADDRESS_SET_H
+#define TOR_ADDRESS_SET_H
+
+#include "orconfig.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 address_set_t address_set_t;
+struct tor_addr_t;
+
+address_set_t *address_set_new(int max_addresses_guess);
+void address_set_free(address_set_t *set);
+void address_set_add(address_set_t *set, const struct tor_addr_t *addr);
+int address_set_probably_contains(address_set_t *set,
+ const struct tor_addr_t *addr);
+
+#endif
+