Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Tor
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
orbea
Tor
Commits
ca7f5c05
Commit
ca7f5c05
authored
3 years ago
by
Mike Perry
Committed by
David Goulet
3 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Prop#324: Add fields to edge connection.
parent
33d8974f
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/core/or/edge_connection_st.h
+55
-0
55 additions, 0 deletions
src/core/or/edge_connection_st.h
with
55 additions
and
0 deletions
src/core/or/edge_connection_st.h
+
55
−
0
View file @
ca7f5c05
...
...
@@ -15,6 +15,7 @@
#include
"core/or/or.h"
#include
"core/or/connection_st.h"
#include
"lib/evloop/token_bucket.h"
/** Subtype of connection_t for an "edge connection" -- that is, an entry (ap)
* connection, or an exit. */
...
...
@@ -73,6 +74,60 @@ struct edge_connection_t {
* that's going away and being used on channels instead. We still tag
* edge connections with dirreq_id from circuits, so it's copied here. */
uint64_t
dirreq_id
;
/* The following are flow control fields */
/** Used for rate limiting the read side of this edge connection when
* congestion control is enabled on its circuit. The XON cell ewma_drain_rate
* parameter is used to set the bucket limits. */
token_bucket_rw_t
bucket
;
/**
* Monotime timestamp of the last time we sent a flow control message
* for this edge, used to compute advisory rates */
uint64_t
drain_start_usec
;
/**
* Number of bytes written since we either emptied our buffers,
* or sent an advisory drate rate. Can wrap, buf if so,
* we must reset the usec timestamp above. (Or make this u64, idk).
*/
uint32_t
drained_bytes
;
uint32_t
prev_drained_bytes
;
/**
* N_EWMA of the drain rate of writes on this edge conn
* while buffers were present.
*/
uint32_t
ewma_drain_rate
;
/**
* The ewma drain rate the last time we sent an xon.
*/
uint32_t
ewma_rate_last_sent
;
/**
* The following fields are used to count the total bytes sent on this
* stream, and compare them to the number of XON and XOFFs recieved, so
* that clients can check rate limits of XOFF/XON to prevent dropmark
* attacks. */
uint32_t
total_bytes_xmit
;
/** Number of XOFFs received */
uint8_t
num_xoff_recv
;
/** Number of XONs received */
uint8_t
num_xon_recv
;
/**
* Flag that tells us if an XOFF has been sent; cleared when we send an XON.
* Used to avoid sending multiple */
uint8_t
xoff_sent
:
1
;
/** Flag that tells us if an XOFF has been received; cleared when we get
* an XON. Used to ensure that this edge keeps reads on its edge socket
* disabled. */
uint8_t
xoff_received
:
1
;
};
#endif
/* !defined(EDGE_CONNECTION_ST_H) */
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment