Maintained by: NLnet Labs
Data Structures | Macros | Functions
remote.h File Reference

This file contains the remote control functionality for the daemon. More...

Data Structures

struct  rc_state
 a busy control command connection, SSL state More...
 
struct  daemon_remote
 The remote control tool state. More...
 

Macros

#define REMOTE_CONTROL_TCP_TIMEOUT   120
 number of seconds timeout on incoming remote control handshake
 

Functions

struct daemon_remotedaemon_remote_create (struct config_file *cfg)
 Create new remote control state for the daemon. More...
 
void daemon_remote_delete (struct daemon_remote *rc)
 remote control state to delete. More...
 
void daemon_remote_clear (struct daemon_remote *rc)
 remote control state to clear up. More...
 
struct listen_portdaemon_remote_open_ports (struct config_file *cfg)
 Open and create listening ports for remote control. More...
 
int daemon_remote_open_accept (struct daemon_remote *rc, struct listen_port *ports, struct worker *worker)
 Setup comm points for accepting remote control connections. More...
 
void daemon_remote_stop_accept (struct daemon_remote *rc)
 Stop accept handlers for TCP (until enabled again) More...
 
void daemon_remote_start_accept (struct daemon_remote *rc)
 Stop accept handlers for TCP (until enabled again) More...
 
void daemon_remote_exec (struct worker *worker)
 Handle nonthreaded remote cmd execution. More...
 
int remote_accept_callback (struct comm_point *, void *, int, struct comm_reply *)
 handle remote control accept callbacks
 
int remote_control_callback (struct comm_point *, void *, int, struct comm_reply *)
 handle remote control data callbacks
 
void remote_get_opt_ssl (char *line, void *arg)
 routine to printout option values over SSL
 

Detailed Description

This file contains the remote control functionality for the daemon.

The remote control can be performed using either the commandline unbound-control tool, or a SSLv3/TLS capable web browser. The channel is secured using SSLv3 or TLSv1, and certificates. Both the server and the client(control tool) have their own keys.

Function Documentation

struct daemon_remote* daemon_remote_create ( struct config_file cfg)
read

Create new remote control state for the daemon.

Parameters
cfg,:config file with key file settings.
Returns
new state, or NULL on failure.

References daemon_remote_delete(), fname_after_chroot(), log_crypto_err(), log_err(), daemon_remote::max_active, config_file::remote_control_enable, config_file::server_cert_file, config_file::server_key_file, VERB_ALGO, and verbose().

Referenced by perform_setup(), and service_init().

void daemon_remote_delete ( struct daemon_remote rc)

remote control state to delete.

Parameters
rc,:state to delete.

References daemon_remote_clear().

Referenced by daemon_delete(), and daemon_remote_create().

void daemon_remote_clear ( struct daemon_remote rc)

remote control state to clear up.

Busy and accept points are closed. Does not delete the rc itself, or the ssl context (with its keys).

Parameters
rc,:state to clear.

References daemon_remote::accept_list, daemon_remote::active, daemon_remote::busy_list, rc_state::c, comm_point_delete(), listen_list_delete(), rc_state::next, and daemon_remote::worker.

Referenced by daemon_cleanup(), and daemon_remote_delete().

struct listen_port* daemon_remote_open_ports ( struct config_file cfg)
read

Open and create listening ports for remote control.

Parameters
cfg,:config options.
Returns
list of ports or NULL on failure. can be freed with listening_ports_free().

References add_open(), config_file::control_ifs, config_file::control_port, config_file::do_ip4, config_file::do_ip6, listening_ports_free(), log_assert, config_strlist::next, config_file::remote_control_enable, and config_strlist::str.

Referenced by daemon_open_shared_ports().

int daemon_remote_open_accept ( struct daemon_remote rc,
struct listen_port ports,
struct worker worker 
)

Setup comm points for accepting remote control connections.

Parameters
rc,:state
ports,:already opened ports.
worker,:worker with communication base. and links to command channels.
Returns
false on error.

References accept_open(), listen_port::fd, log_err(), listen_port::next, and daemon_remote::worker.

Referenced by worker_init().

void daemon_remote_stop_accept ( struct daemon_remote rc)

Stop accept handlers for TCP (until enabled again)

Parameters
rc,:state

References daemon_remote::accept_list, listen_list::com, and listen_list::next.

Referenced by worker_stop_accept().

void daemon_remote_start_accept ( struct daemon_remote rc)

Stop accept handlers for TCP (until enabled again)

Parameters
rc,:state

References daemon_remote::accept_list, listen_list::com, and listen_list::next.

Referenced by worker_start_accept().

void daemon_remote_exec ( struct worker worker)

Handle nonthreaded remote cmd execution.

Parameters
worker,:this worker (the remote worker).

References worker::cmd, execute_cmd(), log_err(), tube_read_msg(), VERB_ALGO, and verbose().