aboutsummaryrefslogtreecommitdiff
path: root/src/core/or/channelpadding.h
blob: 48002eedb7aabb90077e3e883d988d4210956929 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* Copyright (c) 2001 Matej Pfajfar.
 * Copyright (c) 2001-2004, Roger Dingledine.
 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
 * Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */

/**
 * \file circuitbuild.h
 * \brief Header file for circuitbuild.c.
 **/
#ifndef TOR_CHANNELPADDING_H
#define TOR_CHANNELPADDING_H

#include "trunnel/channelpadding_negotiation.h"

#define CHANNELPADDING_SOS_PARAM  "nf_pad_single_onion"
#define CHANNELPADDING_SOS_DEFAULT 1

typedef enum {
  CHANNELPADDING_WONTPAD,
  CHANNELPADDING_PADLATER,
  CHANNELPADDING_PADDING_SCHEDULED,
  CHANNELPADDING_PADDING_ALREADY_SCHEDULED,
  CHANNELPADDING_PADDING_SENT,
} channelpadding_decision_t;

channelpadding_decision_t channelpadding_decide_to_pad_channel(channel_t
                                                               *chan);
int channelpadding_update_padding_for_channel(channel_t *,
                                              const channelpadding_negotiate_t
                                              *chan);

void channelpadding_disable_padding_on_channel(channel_t *chan);
void channelpadding_reduce_padding_on_channel(channel_t *chan);
int channelpadding_send_enable_command(channel_t *chan, uint16_t low_timeout,
                                       uint16_t high_timeout);

int channelpadding_get_circuits_available_timeout(void);
unsigned int channelpadding_get_channel_idle_timeout(const channel_t *, int);
void channelpadding_new_consensus_params(networkstatus_t *ns);

#endif /* !defined(TOR_CHANNELPADDING_H) */