|
Tor 0.4.9.8
|
Code that is related to SENDME cells both in terms of creating/parsing cells and handling the content. More...
#include "core/or/or.h"#include "app/config/config.h"#include "core/crypto/relay_crypto.h"#include "core/mainloop/connection.h"#include "core/or/cell_st.h"#include "core/or/crypt_path.h"#include "core/or/circuitlist.h"#include "core/or/circuituse.h"#include "core/or/or_circuit_st.h"#include "core/or/relay.h"#include "core/or/sendme.h"#include "core/or/congestion_control_common.h"#include "core/or/congestion_control_flow.h"#include "feature/nodelist/networkstatus.h"#include "lib/ctime/di_ops.h"#include "trunnel/sendme_cell.h"Go to the source code of this file.
Functions | |
| static bool | tag_len_ok (size_t tag_len) |
| STATIC int | get_emit_min_version (void) |
| STATIC int | get_accept_min_version (void) |
| static uint8_t * | pop_first_cell_digest (const circuit_t *circ) |
| static bool | v1_tag_matches (const uint8_t *circ_digest, const uint8_t *cell_tag, size_t tag_len) |
| static bool | cell_v1_is_valid (const sendme_cell_t *cell, const uint8_t *circ_digest, size_t circ_digest_len) |
| STATIC bool | cell_version_can_be_handled (uint8_t cell_version) |
| STATIC bool | sendme_is_valid (circuit_t *circ, const crypt_path_t *layer_hint, const uint8_t *cell_payload, size_t cell_payload_len) |
| STATIC ssize_t | build_cell_payload_v1 (const uint8_t *cell_tag, const size_t tag_len, uint8_t *payload) |
| static int | send_circuit_level_sendme (circuit_t *circ, crypt_path_t *layer_hint, const uint8_t *cell_tag, size_t tag_len) |
| static void | record_cell_digest_on_circ (circuit_t *circ, const uint8_t *sendme_tag, size_t tag_len) |
| void | sendme_connection_edge_consider_sending (edge_connection_t *conn) |
| void | sendme_circuit_consider_sending (circuit_t *circ, crypt_path_t *layer_hint) |
| int | sendme_process_circuit_level (crypt_path_t *layer_hint, circuit_t *circ, const uint8_t *cell_payload, uint16_t cell_payload_len) |
| int | sendme_process_circuit_level_impl (crypt_path_t *layer_hint, circuit_t *circ) |
| int | sendme_process_stream_level (edge_connection_t *conn, circuit_t *circ, uint16_t cell_body_len) |
| int | sendme_circuit_data_received (circuit_t *circ, crypt_path_t *layer_hint) |
| int | sendme_stream_data_received (edge_connection_t *conn) |
| int | sendme_note_circuit_data_packaged (circuit_t *circ, crypt_path_t *layer_hint) |
| int | sendme_note_stream_data_packaged (edge_connection_t *conn, size_t len) |
| void | sendme_record_cell_digest_on_circ (circuit_t *circ, crypt_path_t *cpath) |
Code that is related to SENDME cells both in terms of creating/parsing cells and handling the content.
Definition in file sendme.c.
| STATIC ssize_t build_cell_payload_v1 | ( | const uint8_t * | cell_tag, |
| const size_t | tag_len, | ||
| uint8_t * | payload ) |
|
static |
| STATIC bool cell_version_can_be_handled | ( | uint8_t | cell_version | ) |
|
static |
|
static |
|
static |
| void sendme_circuit_consider_sending | ( | circuit_t * | circ, |
| crypt_path_t * | layer_hint ) |
Check if the deliver_window for circuit circ (at hop layer_hint if it's defined) is low enough that we should send a circuit-level sendme back down the circuit. If so, send enough sendmes that the window would be overfull if we sent any more.
Definition at line 448 of file sendme.c.
Referenced by connection_edge_process_relay_cell().
| int sendme_circuit_data_received | ( | circuit_t * | circ, |
| crypt_path_t * | layer_hint ) |
| void sendme_connection_edge_consider_sending | ( | edge_connection_t * | conn | ) |
Called when we've just received a relay data cell, when we've just finished flushing all bytes to stream conn, or when we've flushed some bytes to the stream conn.
If conn->outbuf is not too full, and our deliver window is low, send back a suitable number of stream-level sendme cells.
Definition at line 401 of file sendme.c.
Referenced by connection_edge_finished_flushing(), connection_edge_flushed_some(), and handle_relay_msg().
| STATIC bool sendme_is_valid | ( | circuit_t * | circ, |
| const crypt_path_t * | layer_hint, | ||
| const uint8_t * | cell_payload, | ||
| size_t | cell_payload_len ) |
| int sendme_note_circuit_data_packaged | ( | circuit_t * | circ, |
| crypt_path_t * | layer_hint ) |
| int sendme_note_stream_data_packaged | ( | edge_connection_t * | conn, |
| size_t | len ) |
| int sendme_process_circuit_level | ( | crypt_path_t * | layer_hint, |
| circuit_t * | circ, | ||
| const uint8_t * | cell_payload, | ||
| uint16_t | cell_payload_len ) |
| int sendme_process_circuit_level_impl | ( | crypt_path_t * | layer_hint, |
| circuit_t * | circ ) |
| int sendme_process_stream_level | ( | edge_connection_t * | conn, |
| circuit_t * | circ, | ||
| uint16_t | cell_body_len ) |
| void sendme_record_cell_digest_on_circ | ( | circuit_t * | circ, |
| crypt_path_t * | cpath ) |
| int sendme_stream_data_received | ( | edge_connection_t * | conn | ) |
|
inlinestatic |