aboutsummaryrefslogtreecommitdiff
path: root/src/core/or/or_circuit_st.h
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2019-05-29 14:05:16 -0400
committerDavid Goulet <dgoulet@torproject.org>2019-08-06 07:58:14 -0400
commit9f738be8937d675929b43a149d706160641a089d (patch)
tree8a54a82b32bea028f6693f97e359899d3bd43aec /src/core/or/or_circuit_st.h
parent4ee65a6f877e841739f037ad27d2d588ce4e0c51 (diff)
downloadtor-9f738be8937d675929b43a149d706160641a089d.tar.gz
tor-9f738be8937d675929b43a149d706160641a089d.zip
hs: Limit the amount of relayed INTRODUCE2
This commit add the hs_dos.{c|h} file that has the purpose of having the anti-DoS code for onion services. At this commit, it only has one which is a function that decides if an INTRODUCE2 can be sent on the given introduction service circuit (S<->IP) using a simple token bucket. The rate per second is 25 and allowed burst to 200. Basic defenses on #15516. Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/core/or/or_circuit_st.h')
-rw-r--r--src/core/or/or_circuit_st.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/or/or_circuit_st.h b/src/core/or/or_circuit_st.h
index 6789668224..8f319585a6 100644
--- a/src/core/or/or_circuit_st.h
+++ b/src/core/or/or_circuit_st.h
@@ -12,6 +12,8 @@
#include "core/or/circuit_st.h"
#include "core/or/crypt_path_st.h"
+#include "lib/evloop/token_bucket.h"
+
struct onion_queue_t;
/** An or_circuit_t holds information needed to implement a circuit at an
@@ -69,6 +71,11 @@ struct or_circuit_t {
* exit-ward queues of this circuit; reset every time when writing
* buffer stats to disk. */
uint64_t total_cell_waiting_time;
+
+ /** INTRODUCE2 cell bucket controlling how much can go on this circuit. Only
+ * used if this is a service introduction circuit at the intro point
+ * (purpose = CIRCUIT_PURPOSE_INTRO_POINT). */
+ token_bucket_ctr_t introduce2_bucket;
};
#endif /* !defined(OR_CIRCUIT_ST_H) */