minor updates on upcoming changelog
[tor.git] / src / or / channeltls.h
blobd9c4239c3a80f1e783bbfaf0d31c57e9699b64a7
1 /* * Copyright (c) 2012-2017, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 /**
5 * \file channeltls.h
6 * \brief Header file for channeltls.c
7 **/
9 #ifndef TOR_CHANNELTLS_H
10 #define TOR_CHANNELTLS_H
12 #include "or.h"
13 #include "channel.h"
15 #define BASE_CHAN_TO_TLS(c) (channel_tls_from_base((c)))
16 #define TLS_CHAN_TO_BASE(c) (channel_tls_to_base((c)))
18 #define TLS_CHAN_MAGIC 0x8a192427U
20 #ifdef TOR_CHANNEL_INTERNAL_
22 struct channel_tls_s {
23 /* Base channel_t struct */
24 channel_t base_;
25 /* or_connection_t pointer */
26 or_connection_t *conn;
29 #endif /* defined(TOR_CHANNEL_INTERNAL_) */
31 channel_t * channel_tls_connect(const tor_addr_t *addr, uint16_t port,
32 const char *id_digest,
33 const ed25519_public_key_t *ed_id);
34 channel_listener_t * channel_tls_get_listener(void);
35 channel_listener_t * channel_tls_start_listener(void);
36 channel_t * channel_tls_handle_incoming(or_connection_t *orconn);
38 /* Casts */
40 channel_t * channel_tls_to_base(channel_tls_t *tlschan);
41 channel_tls_t * channel_tls_from_base(channel_t *chan);
43 /* Things for connection_or.c to call back into */
44 void channel_tls_handle_cell(cell_t *cell, or_connection_t *conn);
45 void channel_tls_handle_state_change_on_orconn(channel_tls_t *chan,
46 or_connection_t *conn,
47 uint8_t old_state,
48 uint8_t state);
49 void channel_tls_handle_var_cell(var_cell_t *var_cell,
50 or_connection_t *conn);
51 void channel_tls_update_marks(or_connection_t *conn);
53 /* Cleanup at shutdown */
54 void channel_tls_free_all(void);
56 extern uint64_t stats_n_authorize_cells_processed;
57 extern uint64_t stats_n_authenticate_cells_processed;
58 extern uint64_t stats_n_versions_cells_processed;
59 extern uint64_t stats_n_netinfo_cells_processed;
60 extern uint64_t stats_n_vpadding_cells_processed;
61 extern uint64_t stats_n_certs_cells_processed;
62 extern uint64_t stats_n_auth_challenge_cells_processed;
64 #ifdef CHANNELTLS_PRIVATE
65 STATIC void channel_tls_process_certs_cell(var_cell_t *cell,
66 channel_tls_t *tlschan);
67 STATIC void channel_tls_process_auth_challenge_cell(var_cell_t *cell,
68 channel_tls_t *tlschan);
69 STATIC void channel_tls_common_init(channel_tls_t *tlschan);
70 STATIC void channel_tls_process_authenticate_cell(var_cell_t *cell,
71 channel_tls_t *tlschan);
72 #endif /* defined(CHANNELTLS_PRIVATE) */
74 #endif /* !defined(TOR_CHANNELTLS_H) */