OpenVPN
Data Fields
multi_context Struct Reference

Main OpenVPN server state structure. More...

#include <multi.h>

Collaboration diagram for multi_context:
Collaboration graph
[legend]

Data Fields

struct multi_instance ** instances
 Array of multi_instances with the size of max_clients.
 
uint32_t max_peerid
 highest currently allocated peer-id and maximum allocated/valid index in instances
 
uint32_t assigned_peer_ids
 Number of peer-ids that are currently assigned.
 
struct hash * hash
 VPN tunnel instances indexed by real address of the remote peer.
 
struct hash * vhash
 VPN tunnel instances indexed by virtual address of remote hosts.
 
struct hash * sid_hash
 TLS sessions indexed by the peer's session id.
 
struct schedule * schedule
 
struct mbuf_set * mbuf
 Set of buffers for passing data channel packets between VPN tunnel instances.
 
struct multi_io * multi_io
 I/O state and events tracker.
 
struct ifconfig_pool * ifconfig_pool
 
struct frequency_limit * new_connection_limiter
 
struct initial_packet_rate_limit * initial_rate_limiter
 
struct mroute_helper * route_helper
 
struct multi_reap * reaper
 
struct mroute_addr local
 
bool enable_c2c
 
uint32_t max_clients
 
int tcp_queue_limit
 
int status_file_version
 
int n_clients
 
struct hash * cid_hash
 
unsigned long cid_counter
 
struct multi_instance * pending
 
struct multi_instance * earliest_wakeup
 
struct multi_instance ** mpp_touched
 
struct context_buffers * context_buffers
 
time_t per_second_trigger
 
struct context top
 Storage structure for process-wide configuration.
 
struct event_timeout stale_routes_check_et
 
struct deferred_signal_schedule_entry deferred_shutdown_signal
 

Detailed Description

Main OpenVPN server state structure.

This structure is used by OpenVPN processes running in server-mode to store all the VPN tunnel and process-wide state.

The Structure of VPN tunnel state storage related page describes the role the structure plays when OpenVPN is running in server-mode.

Definition at line 169 of file multi.h.

Field Documentation

◆ assigned_peer_ids

uint32_t multi_context::assigned_peer_ids

Number of peer-ids that are currently assigned.

Definition at line 177 of file multi.h.

Referenced by multi_assign_peer_id(), multi_close_instance(), and multi_create_instance().

◆ cid_counter

unsigned long multi_context::cid_counter

Definition at line 208 of file multi.h.

Referenced by multi_create_instance().

◆ cid_hash

struct hash* multi_context::cid_hash

◆ context_buffers

struct context_buffers* multi_context::context_buffers

Definition at line 214 of file multi.h.

◆ deferred_shutdown_signal

struct deferred_signal_schedule_entry multi_context::deferred_shutdown_signal

◆ earliest_wakeup

struct multi_instance* multi_context::earliest_wakeup

◆ enable_c2c

bool multi_context::enable_c2c

Definition at line 200 of file multi.h.

Referenced by multi_init(), and multi_process_incoming_link_data().

◆ hash

struct hash* multi_context::hash

◆ ifconfig_pool

struct ifconfig_pool* multi_context::ifconfig_pool

◆ initial_rate_limiter

struct initial_packet_rate_limit* multi_context::initial_rate_limiter

Definition at line 196 of file multi.h.

Referenced by do_pre_decrypt_check(), handle_connection_attempt(), multi_init(), and multi_uninit().

◆ instances

struct multi_instance** multi_context::instances

◆ local

struct mroute_addr multi_context::local

Definition at line 199 of file multi.h.

Referenced by multi_get_instance_by_virtual_addr(), multi_init(), and multi_learn_addr().

◆ max_clients

uint32_t multi_context::max_clients

Definition at line 201 of file multi.h.

Referenced by multi_assign_peer_id(), multi_create_instance(), and multi_init().

◆ max_peerid

uint32_t multi_context::max_peerid

highest currently allocated peer-id and maximum allocated/valid index in instances

Definition at line 174 of file multi.h.

Referenced by management_callback_kill_by_cn(), multi_assign_peer_id(), multi_bcast(), multi_close_instance(), multi_delete_dup(), multi_push_restart_schedule_exit(), multi_uninit(), and send_push_update().

◆ mbuf

struct mbuf_set* multi_context::mbuf

Set of buffers for passing data channel packets between VPN tunnel instances.

Definition at line 190 of file multi.h.

Referenced by multi_add_mbuf(), multi_close_instance(), multi_init(), multi_io_process_io(), multi_io_write_link_pre(), and multi_uninit().

◆ mpp_touched

struct multi_instance** multi_context::mpp_touched

Definition at line 213 of file multi.h.

Referenced by multi_io_dispatch(), and multi_process_post().

◆ multi_io

struct multi_io* multi_context::multi_io

◆ n_clients

int multi_context::n_clients

◆ new_connection_limiter

struct frequency_limit* multi_context::new_connection_limiter

Definition at line 195 of file multi.h.

Referenced by handle_connection_attempt(), multi_init(), and multi_uninit().

◆ pending

struct multi_instance* multi_context::pending

◆ per_second_trigger

time_t multi_context::per_second_trigger

Definition at line 215 of file multi.h.

Referenced by multi_process_per_second_timers().

◆ reaper

struct multi_reap* multi_context::reaper

Definition at line 198 of file multi.h.

Referenced by multi_init(), multi_reap_process(), multi_reap_process_dowork(), and multi_uninit().

◆ route_helper

struct mroute_helper* multi_context::route_helper

◆ schedule

struct schedule* multi_context::schedule

◆ sid_hash

struct hash* multi_context::sid_hash

TLS sessions indexed by the peer's session id.

We do not care about collisions here as clients should have unique ids and supporting clients with identical SIDs is not needed

Definition at line 183 of file multi.h.

Referenced by multi_hash_sid_add(), multi_hash_sid_lookup(), multi_hash_sid_remove(), multi_init(), multi_uninit(), and test_sid_hash_list().

◆ stale_routes_check_et

struct event_timeout multi_context::stale_routes_check_et

Definition at line 223 of file multi.h.

Referenced by multi_init(), and stale_route_check_trigger().

◆ status_file_version

int multi_context::status_file_version

◆ tcp_queue_limit

int multi_context::tcp_queue_limit

Definition at line 202 of file multi.h.

Referenced by multi_init(), and multi_output_queue_ready().

◆ top

struct context multi_context::top

◆ vhash

struct hash* multi_context::vhash

The documentation for this struct was generated from the following file: