10#define TOR_RELAY_MSG_H
23 cell_t *cell_out) ATTR_WUR;
29 const cell_t *cell) ATTR_WUR;
31#define relay_msg_free(msg) \
32 FREE_AND_NULL(relay_msg_t, relay_msg_free_, (msg))
46 switch (relay_command) {
47 case RELAY_COMMAND_BEGIN:
48 case RELAY_COMMAND_BEGIN_DIR:
49 case RELAY_COMMAND_CONNECTED:
50 case RELAY_COMMAND_DATA:
51 case RELAY_COMMAND_END:
52 case RELAY_COMMAND_RESOLVE:
53 case RELAY_COMMAND_RESOLVED:
54 case RELAY_COMMAND_XOFF:
55 case RELAY_COMMAND_XON:
66 uint8_t relay_command)
84#ifdef RELAY_MSG_PRIVATE
Master header file for Tor-specific functionality.
#define CELL_PAYLOAD_SIZE
#define RELAY_HEADER_SIZE_V1_NO_STREAM_ID
#define RELAY_HEADER_SIZE_V0
#define RELAY_HEADER_SIZE_V1_WITH_STREAM_ID
void relay_msg_clear(relay_msg_t *msg)
relay_msg_t * relay_msg_copy(const relay_msg_t *msg)
int relay_msg_decode_cell_in_place(relay_cell_fmt_t format, const cell_t *cell, relay_msg_t *msg_out) ATTR_WUR
static bool relay_cmd_expects_streamid_in_v1(uint8_t relay_command)
relay_msg_t * relay_msg_decode_cell(relay_cell_fmt_t format, const cell_t *cell) ATTR_WUR
void relay_msg_free_(relay_msg_t *msg)
int relay_msg_encode_cell(relay_cell_fmt_t format, const relay_msg_t *msg, cell_t *cell_out) ATTR_WUR
static size_t relay_cell_max_payload_size(relay_cell_fmt_t format, uint8_t relay_command)
A relay message which contains a relay command and parameters, if any, that is from a relay cell.
#define tor_fragile_assert()