Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ZerXes
Tor
Commits
8b71b733
Commit
8b71b733
authored
Sep 16, 2003
by
Roger Dingledine
Browse files
clean up exported api's
svn:r461
parent
9c6343fd
Changes
9
Hide whitespace changes
Inline
Side-by-side
src/or/circuit.c
View file @
8b71b733
...
...
@@ -6,6 +6,10 @@
extern
or_options_t
options
;
/* command-line and config-file options */
static
void
circuit_free_cpath
(
crypt_path_t
*
cpath
);
static
void
circuit_free_cpath_node
(
crypt_path_t
*
victim
);
static
aci_t
get_unique_aci_by_addr_port
(
uint32_t
addr
,
uint16_t
port
,
int
aci_type
);
/********* START VARIABLES **********/
static
circuit_t
*
global_circuitlist
=
NULL
;
...
...
@@ -86,7 +90,7 @@ void circuit_free(circuit_t *circ) {
free
(
circ
);
}
void
circuit_free_cpath
(
crypt_path_t
*
cpath
)
{
static
void
circuit_free_cpath
(
crypt_path_t
*
cpath
)
{
crypt_path_t
*
victim
,
*
head
=
cpath
;
if
(
!
cpath
)
...
...
@@ -103,7 +107,7 @@ void circuit_free_cpath(crypt_path_t *cpath) {
circuit_free_cpath_node
(
cpath
);
}
void
circuit_free_cpath_node
(
crypt_path_t
*
victim
)
{
static
void
circuit_free_cpath_node
(
crypt_path_t
*
victim
)
{
if
(
victim
->
f_crypto
)
crypto_free_cipher_env
(
victim
->
f_crypto
);
if
(
victim
->
b_crypto
)
...
...
@@ -114,7 +118,7 @@ void circuit_free_cpath_node(crypt_path_t *victim) {
}
/* return 0 if can't get a unique aci. */
aci_t
get_unique_aci_by_addr_port
(
uint32_t
addr
,
uint16_t
port
,
int
aci_type
)
{
static
aci_t
get_unique_aci_by_addr_port
(
uint32_t
addr
,
uint16_t
port
,
int
aci_type
)
{
aci_t
test_aci
;
connection_t
*
conn
;
...
...
src/or/command.c
View file @
8b71b733
...
...
@@ -6,7 +6,12 @@
extern
or_options_t
options
;
/* command-line and config-file options */
void
command_time_process_cell
(
cell_t
*
cell
,
connection_t
*
conn
,
static
void
command_process_create_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
static
void
command_process_created_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
static
void
command_process_relay_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
static
void
command_process_destroy_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
static
void
command_time_process_cell
(
cell_t
*
cell
,
connection_t
*
conn
,
int
*
num
,
int
*
time
,
void
(
*
func
)(
cell_t
*
,
connection_t
*
))
{
struct
timeval
start
,
end
;
...
...
@@ -77,7 +82,7 @@ void command_process_cell(cell_t *cell, connection_t *conn) {
}
}
void
command_process_create_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
static
void
command_process_create_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
circuit_t
*
circ
;
circ
=
circuit_get_by_aci_conn
(
cell
->
aci
,
conn
);
...
...
@@ -106,7 +111,7 @@ void command_process_create_cell(cell_t *cell, connection_t *conn) {
log_fn
(
LOG_DEBUG
,
"success: handed off onionskin."
);
}
void
command_process_created_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
static
void
command_process_created_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
circuit_t
*
circ
;
cell_t
newcell
;
...
...
@@ -155,7 +160,7 @@ void command_process_created_cell(cell_t *cell, connection_t *conn) {
}
}
void
command_process_relay_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
static
void
command_process_relay_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
circuit_t
*
circ
;
circ
=
circuit_get_by_aci_conn
(
cell
->
aci
,
conn
);
...
...
@@ -187,7 +192,7 @@ void command_process_relay_cell(cell_t *cell, connection_t *conn) {
}
}
void
command_process_destroy_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
static
void
command_process_destroy_cell
(
cell_t
*
cell
,
connection_t
*
conn
)
{
circuit_t
*
circ
;
circ
=
circuit_get_by_aci_conn
(
cell
->
aci
,
conn
);
...
...
src/or/connection.c
View file @
8b71b733
...
...
@@ -765,26 +765,6 @@ int connection_finished_flushing(connection_t *conn) {
}
}
void
cell_pack
(
char
*
dest
,
const
cell_t
*
src
)
{
*
(
uint16_t
*
)
dest
=
htons
(
src
->
aci
);
*
(
uint8_t
*
)(
dest
+
2
)
=
src
->
command
;
*
(
uint8_t
*
)(
dest
+
3
)
=
src
->
length
;
*
(
uint32_t
*
)(
dest
+
4
)
=
0
;
/* Reserved */
memcpy
(
dest
+
8
,
src
->
payload
,
CELL_PAYLOAD_SIZE
);
}
void
cell_unpack
(
cell_t
*
dest
,
const
char
*
src
)
{
dest
->
aci
=
ntohs
(
*
(
uint16_t
*
)(
src
));
dest
->
command
=
*
(
uint8_t
*
)(
src
+
2
);
dest
->
length
=
*
(
uint8_t
*
)(
src
+
3
);
dest
->
seq
=
ntohl
(
*
(
uint32_t
*
)(
src
+
4
));
memcpy
(
dest
->
payload
,
src
+
8
,
CELL_PAYLOAD_SIZE
);
}
/*
Local Variables:
mode:c
...
...
src/or/connection_edge.c
View file @
8b71b733
...
...
@@ -535,7 +535,7 @@ static int connection_ap_handshake_process_socks(connection_t *conn) {
return
0
;
}
int
connection_ap_handshake_send_begin
(
connection_t
*
ap_conn
,
circuit_t
*
circ
)
{
static
int
connection_ap_handshake_send_begin
(
connection_t
*
ap_conn
,
circuit_t
*
circ
)
{
cell_t
cell
;
memset
(
&
cell
,
0
,
sizeof
(
cell_t
));
...
...
@@ -565,7 +565,7 @@ int connection_ap_handshake_send_begin(connection_t *ap_conn, circuit_t *circ) {
return
0
;
}
int
connection_ap_handshake_socks_reply
(
connection_t
*
conn
,
char
result
)
{
static
int
connection_ap_handshake_socks_reply
(
connection_t
*
conn
,
char
result
)
{
socks4_t
socks4_info
;
assert
(
conn
);
...
...
src/or/connection_or.c
View file @
8b71b733
...
...
@@ -20,11 +20,25 @@ static void conn_or_init_crypto(connection_t *conn);
static
void
connection_or_set_open
(
connection_t
*
conn
);
#endif
/*
*
* these two functions are the main ways 'in' to connection_or
*
*/
/**************************************************************/
static
void
cell_pack
(
char
*
dest
,
const
cell_t
*
src
)
{
*
(
uint16_t
*
)
dest
=
htons
(
src
->
aci
);
*
(
uint8_t
*
)(
dest
+
2
)
=
src
->
command
;
*
(
uint8_t
*
)(
dest
+
3
)
=
src
->
length
;
*
(
uint32_t
*
)(
dest
+
4
)
=
0
;
/* Reserved */
memcpy
(
dest
+
8
,
src
->
payload
,
CELL_PAYLOAD_SIZE
);
}
static
void
cell_unpack
(
cell_t
*
dest
,
const
char
*
src
)
{
dest
->
aci
=
ntohs
(
*
(
uint16_t
*
)(
src
));
dest
->
command
=
*
(
uint8_t
*
)(
src
+
2
);
dest
->
length
=
*
(
uint8_t
*
)(
src
+
3
);
dest
->
seq
=
ntohl
(
*
(
uint32_t
*
)(
src
+
4
));
memcpy
(
dest
->
payload
,
src
+
8
,
CELL_PAYLOAD_SIZE
);
}
/**************************************************************/
int
connection_or_process_inbuf
(
connection_t
*
conn
)
{
...
...
@@ -424,14 +438,8 @@ or_handshake_client_process_auth(connection_t *conn) {
return
connection_process_inbuf
(
conn
);
/* process the rest of the inbuf */
}
/*
*
* auth handshake, as performed by OR *receiving* the connection
*
*/
static
int
or_handshake_server_process_auth
(
connection_t
*
conn
)
{
/* auth handshake, as performed by OR *receiving* the connection */
static
int
or_handshake_server_process_auth
(
connection_t
*
conn
)
{
int
retval
;
char
buf
[
128
];
/* 50 of this is expected to be used for OR, 38 for OP */
...
...
@@ -639,7 +647,6 @@ connection_or_set_open(connection_t *conn) {
static
void
conn_or_init_crypto
(
connection_t
*
conn
)
{
//int x;
unsigned
char
iv
[
16
];
assert
(
conn
);
...
...
@@ -718,21 +725,9 @@ int connection_process_cell_from_inbuf(connection_t *conn) {
return
connection_process_inbuf
(
conn
);
/* process the remainder of the buffer */
}
#ifndef USE_TLS
int
connection_encrypt_cell
(
char
*
cellp
,
connection_t
*
conn
)
{
char
cryptcell
[
CELL_NETWORK_SIZE
];
#if 0
int x;
char *px;
printf("Sending: Cell header plaintext: ");
px = (char *)cellp;
for(x=0;x<8;x++) {
printf("%u ",px[x]);
}#
printf("\n");
#endif
assert
(
conn
);
...
...
@@ -740,14 +735,6 @@ int connection_encrypt_cell(char *cellp, connection_t *conn) {
log
(
LOG_ERR
,
"Could not encrypt cell for connection %s:%u."
,
conn
->
address
,
conn
->
port
);
return
-
1
;
}
#if 0
printf("Sending: Cell header crypttext: ");
px = (char *)&newcell;
for(x=0;x<8;x++) {
printf("%u ",px[x]);
}
printf("\n");
#endif
memcpy
(
cellp
,
cryptcell
,
CELL_NETWORK_SIZE
);
return
0
;
...
...
src/or/directory.c
View file @
8b71b733
...
...
@@ -6,6 +6,11 @@
#define MAX_DIR_SIZE 50000
/* XXX, big enough? */
static
int
directory_send_command
(
connection_t
*
conn
);
static
void
directory_rebuild
(
void
);
static
int
directory_handle_command
(
connection_t
*
conn
);
static
int
directory_handle_reading
(
connection_t
*
conn
);
/********* START VARIABLES **********/
extern
or_options_t
options
;
/* command-line and config-file options */
...
...
@@ -77,7 +82,7 @@ void directory_initiate_fetch(routerinfo_t *router) {
}
}
int
directory_send_command
(
connection_t
*
conn
)
{
static
int
directory_send_command
(
connection_t
*
conn
)
{
assert
(
conn
&&
conn
->
type
==
CONN_TYPE_DIR
);
...
...
@@ -94,7 +99,7 @@ void directory_set_dirty(void) {
directory_dirty
=
1
;
}
void
directory_rebuild
(
void
)
{
static
void
directory_rebuild
(
void
)
{
if
(
directory_dirty
)
{
if
(
dump_signed_directory_to_string
(
the_directory
,
MAX_DIR_SIZE
,
get_signing_privatekey
()))
{
...
...
@@ -150,7 +155,7 @@ int connection_dir_process_inbuf(connection_t *conn) {
return
0
;
}
int
directory_handle_command
(
connection_t
*
conn
)
{
static
int
directory_handle_command
(
connection_t
*
conn
)
{
char
buf
[
15
];
assert
(
conn
&&
conn
->
type
==
CONN_TYPE_DIR
);
...
...
@@ -185,7 +190,7 @@ int directory_handle_command(connection_t *conn) {
return
0
;
}
int
directory_handle_reading
(
connection_t
*
conn
)
{
static
int
directory_handle_reading
(
connection_t
*
conn
)
{
int
amt
;
char
*
headers
;
...
...
src/or/onion.c
View file @
8b71b733
...
...
@@ -155,8 +155,7 @@ int onionskin_answer(circuit_t *circ, unsigned char *payload, unsigned char *key
}
/* uses a weighted coin with weight cw to choose a route length */
int
chooselen
(
double
cw
)
{
static
int
chooselen
(
double
cw
)
{
int
len
=
2
;
uint8_t
coin
;
...
...
@@ -181,8 +180,7 @@ int chooselen(double cw)
* int cw is the coin weight to use when choosing the route
* order of routers is from last to first
*/
unsigned
int
*
new_route
(
double
cw
,
routerinfo_t
**
rarray
,
int
rarray_len
,
int
*
routelen
)
{
static
unsigned
int
*
new_route
(
double
cw
,
routerinfo_t
**
rarray
,
int
rarray_len
,
int
*
routelen
)
{
int
i
;
int
num_acceptable_routers
;
unsigned
int
*
route
;
...
...
src/or/or.h
View file @
8b71b733
...
...
@@ -96,7 +96,7 @@
#include
"../common/log.h"
#include
"../common/util.h"
#define RECOMMENDED_SOFTWARE_VERSIONS "0.0.2pre
7
,0.0.2pre
8
"
#define RECOMMENDED_SOFTWARE_VERSIONS "0.0.2pre
8
,0.0.2pre
9
"
#define MAXCONNECTIONS 1000
/* upper bound on max connections.
can be lowered by config file */
...
...
@@ -466,60 +466,29 @@ typedef struct {
/********************************* buffers.c ***************************/
int
buf_new
(
char
**
buf
,
int
*
buflen
,
int
*
buf_datalen
);
void
buf_free
(
char
*
buf
);
int
read_to_buf
(
int
s
,
int
at_most
,
char
**
buf
,
int
*
buflen
,
int
*
buf_datalen
,
int
*
reached_eof
);
/* grab from s, put onto buf, return how many bytes read */
int
read_to_buf_tls
(
tor_tls
*
tls
,
int
at_most
,
char
**
buf
,
int
*
buflen
,
int
*
buf_datalen
);
/* grab from tls, put onto buf, return how many bytes read or a TLS
* status (same status codes as tor_tls_read) */
int
flush_buf
(
int
s
,
char
**
buf
,
int
*
buflen
,
int
*
buf_flushlen
,
int
*
buf_datalen
);
/* push from buf onto s
* then memmove to front of buf
* return -1 or how many bytes remain on the buf */
int
flush_buf_tls
(
tor_tls
*
tls
,
char
**
buf
,
int
*
buflen
,
int
*
buf_flushlen
,
int
*
buf_datalen
);
/* As flush_buf, but returns number of bytes written or TLS status
* (same status codes as tor_tls_write) */
int
write_to_buf
(
char
*
string
,
int
string_len
,
char
**
buf
,
int
*
buflen
,
int
*
buf_datalen
);
/* append string to buf (growing as needed, return -1 if "too big")
* return total number of bytes on the buf
*/
int
fetch_from_buf
(
char
*
string
,
int
string_len
,
char
**
buf
,
int
*
buflen
,
int
*
buf_datalen
);
/* if there is string_len bytes in buf, write them onto string,
* then memmove buf back (that is, remove them from buf)
*/
int
find_on_inbuf
(
char
*
string
,
int
string_len
,
char
*
buf
,
int
buf_datalen
);
/* find first instance of needle 'string' on haystack 'buf'. return how
* many bytes from the beginning of buf to the end of string.
* If it's not there, return -1.
*/
/********************************* cell.c ***************************/
int
pack_create
(
uint16_t
aci
,
unsigned
char
*
onion
,
u
int
32_t
onionlen
,
unsigned
char
**
cellbuf
,
unsigned
int
*
cellbuf
len
);
int
write_to_buf
(
char
*
string
,
int
string_len
,
char
**
buf
,
int
*
buflen
,
int
*
buf_datalen
);
int
fetch_from_buf
(
char
*
string
,
int
string_len
,
char
**
buf
,
int
*
buflen
,
int
*
buf_datalen
);
int
find_on_inbuf
(
char
*
string
,
int
string_len
,
char
*
buf
,
int
buf_data
len
);
/********************************* circuit.c ***************************/
void
circuit_add
(
circuit_t
*
circ
);
void
circuit_remove
(
circuit_t
*
circ
);
circuit_t
*
circuit_new
(
aci_t
p_aci
,
connection_t
*
p_conn
);
void
circuit_free
(
circuit_t
*
circ
);
/* internal */
aci_t
get_unique_aci_by_addr_port
(
uint32_t
addr
,
uint16_t
port
,
int
aci_type
);
circuit_t
*
circuit_enumerate_by_naddr_nport
(
circuit_t
*
start
,
uint32_t
naddr
,
uint16_t
nport
);
circuit_t
*
circuit_get_by_aci_conn
(
aci_t
aci
,
connection_t
*
conn
);
circuit_t
*
circuit_get_by_conn
(
connection_t
*
conn
);
circuit_t
*
circuit_get_newest_ap
(
void
);
circuit_t
*
circuit_enumerate_by_naddr_nport
(
circuit_t
*
start
,
uint32_t
naddr
,
uint16_t
nport
);
int
circuit_deliver_relay_cell
(
cell_t
*
cell
,
circuit_t
*
circ
,
int
cell_direction
,
crypt_path_t
*
layer_hint
);
...
...
@@ -531,14 +500,8 @@ void circuit_resume_edge_reading(circuit_t *circ, int edge_type, crypt_path_t *l
int
circuit_consider_stop_edge_reading
(
circuit_t
*
circ
,
int
edge_type
,
crypt_path_t
*
layer_hint
);
int
circuit_consider_sending_sendme
(
circuit_t
*
circ
,
int
edge_type
,
crypt_path_t
*
layer_hint
);
void
circuit_free
(
circuit_t
*
circ
);
void
circuit_free_cpath
(
crypt_path_t
*
cpath
);
void
circuit_free_cpath_node
(
crypt_path_t
*
victim
);
void
circuit_close
(
circuit_t
*
circ
);
void
circuit_about_to_close_connection
(
connection_t
*
conn
);
/* flush and send destroys for all circuits using conn */
void
circuit_dump_by_conn
(
connection_t
*
conn
);
...
...
@@ -555,16 +518,8 @@ int circuit_truncated(circuit_t *circ, crypt_path_t *layer);
void
command_process_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
void
command_process_create_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
void
command_process_created_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
void
command_process_sendme_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
void
command_process_relay_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
void
command_process_destroy_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
void
command_process_connected_cell
(
cell_t
*
cell
,
connection_t
*
conn
);
/********************************* config.c ***************************/
/* return 0 if success, <0 if failure. */
int
getconfig
(
int
argc
,
char
**
argv
,
or_options_t
*
options
);
/********************************* connection.c ***************************/
...
...
@@ -575,7 +530,9 @@ void connection_free(connection_t *conn);
int
connection_create_listener
(
struct
sockaddr_in
*
bindaddr
,
int
type
);
int
connection_handle_listener_read
(
connection_t
*
conn
,
int
new_type
);
#ifdef USE_TLS
int
connection_tls_start_handshake
(
connection_t
*
conn
,
int
receiving
);
#endif
int
connection_connect
(
connection_t
*
conn
,
char
*
address
,
uint32_t
addr
,
uint16_t
port
);
int
retry_all_connections
(
uint16_t
or_listenport
,
uint16_t
ap_listenport
,
uint16_t
dir_listenport
);
...
...
@@ -584,13 +541,12 @@ int connection_handle_read(connection_t *conn);
int
connection_read_to_buf
(
connection_t
*
conn
);
int
connection_fetch_from_buf
(
char
*
string
,
int
len
,
connection_t
*
conn
);
int
connection_outbuf_too_full
(
connection_t
*
conn
);
int
connection_find_on_inbuf
(
char
*
string
,
int
len
,
connection_t
*
conn
);
int
connection_wants_to_flush
(
connection_t
*
conn
);
int
connection_outbuf_too_full
(
connection_t
*
conn
);
int
connection_flush_buf
(
connection_t
*
conn
);
int
connection_handle_write
(
connection_t
*
conn
);
int
connection_write_to_buf
(
char
*
string
,
int
len
,
connection_t
*
conn
);
int
connection_receiver_bucket_should_increase
(
connection_t
*
conn
);
...
...
@@ -600,20 +556,16 @@ int connection_is_listener(connection_t *conn);
int
connection_state_is_open
(
connection_t
*
conn
);
int
connection_send_destroy
(
aci_t
aci
,
connection_t
*
conn
);
int
connection_send_connected
(
aci_t
aci
,
connection_t
*
conn
);
int
connection_process_inbuf
(
connection_t
*
conn
);
int
connection_finished_flushing
(
connection_t
*
conn
);
void
cell_pack
(
char
*
dest
,
const
cell_t
*
src
);
void
cell_unpack
(
cell_t
*
dest
,
const
char
*
src
);
/********************************* connection_edge.c ***************************/
int
connection_edge_process_inbuf
(
connection_t
*
conn
);
int
connection_edge_send_command
(
connection_t
*
fromconn
,
circuit_t
*
circ
,
int
relay_command
);
int
connection_edge_process_relay_cell
(
cell_t
*
cell
,
circuit_t
*
circ
,
connection_t
*
conn
,
int
edge_type
,
crypt_path_t
*
layer_hint
);
int
connection_edge_process_relay_cell
(
cell_t
*
cell
,
circuit_t
*
circ
,
connection_t
*
conn
,
int
edge_type
,
crypt_path_t
*
layer_hint
);
int
connection_edge_finished_flushing
(
connection_t
*
conn
);
int
connection_package_raw_inbuf
(
connection_t
*
conn
);
...
...
@@ -646,12 +598,8 @@ int assign_to_cpuworker(connection_t *cpuworker, unsigned char question_type,
/********************************* directory.c ***************************/
void
directory_initiate_fetch
(
routerinfo_t
*
router
);
int
directory_send_command
(
connection_t
*
conn
);
void
directory_set_dirty
(
void
);
void
directory_rebuild
(
void
);
int
connection_dir_process_inbuf
(
connection_t
*
conn
);
int
directory_handle_command
(
connection_t
*
conn
);
int
directory_handle_reading
(
connection_t
*
conn
);
int
connection_dir_finished_flushing
(
connection_t
*
conn
);
/********************************* dns.c ***************************/
...
...
@@ -706,15 +654,6 @@ void onion_pending_remove(circuit_t *circ);
int
onionskin_answer
(
circuit_t
*
circ
,
unsigned
char
*
payload
,
unsigned
char
*
keys
);
/* uses a weighted coin with weight cw to choose a route length */
int
chooselen
(
double
cw
);
/* returns an array of pointers to routent that define a new route through the OR network
* int cw is the coin weight to use when choosing the route
* order of routers is from last to first
*/
unsigned
int
*
new_route
(
double
cw
,
routerinfo_t
**
rarray
,
int
rarray_len
,
int
*
routelen
);
crypt_path_t
*
onion_generate_cpath
(
routerinfo_t
**
firsthop
);
int
onion_skin_create
(
crypto_pk_env_t
*
router_key
,
...
...
@@ -743,8 +682,6 @@ void router_get_directory(directory_t **pdirectory);
int
router_is_me
(
uint32_t
addr
,
uint16_t
port
);
void
router_forget_router
(
uint32_t
addr
,
uint16_t
port
);
int
router_get_list_from_file
(
char
*
routerfile
);
int
router_resolve
(
routerinfo_t
*
router
);
int
router_resolve_directory
(
directory_t
*
dir
);
/* Reads a list of known routers, unsigned. */
int
router_get_list_from_string
(
char
*
s
);
...
...
src/or/routers.c
View file @
8b71b733
...
...
@@ -34,6 +34,8 @@ static int router_get_list_from_string_tok(char **s, directory_t **dest,
directory_token_t
*
tok
);
static
int
router_add_exit_policy
(
routerinfo_t
*
router
,
directory_token_t
*
tok
);
static
int
router_resolve_directory
(
directory_t
*
dir
);
/****************************************************************************/
...
...
@@ -667,7 +669,6 @@ int router_get_dir_from_string_impl(char *s, directory_t **dest,
#undef TOK_IS
}
static
int
router_get_list_from_string_tok
(
char
**
s
,
directory_t
**
dest
,
directory_token_t
*
tok
)
{
...
...
@@ -702,7 +703,7 @@ static int router_get_list_from_string_tok(char **s, directory_t **dest,
return
0
;
}
int
static
int
router_resolve
(
routerinfo_t
*
router
)
{
struct
hostent
*
rent
;
...
...
@@ -719,7 +720,7 @@ router_resolve(routerinfo_t *router)
return
0
;
}
int
static
int
router_resolve_directory
(
directory_t
*
dir
)
{
int
i
,
max
,
remove
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment