OpenVPN
Data Structures | Macros | Enumerations | Functions | Variables
options.h File Reference
#include "basic.h"
#include "common.h"
#include "mtu.h"
#include "route.h"
#include "tun.h"
#include "socket_util.h"
#include "plugin.h"
#include "manage.h"
#include "proxy.h"
#include "comp.h"
#include "pushlist.h"
#include "clinat.h"
#include "crypto_backend.h"
#include "dns.h"
Include dependency graph for options.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  options_pre_connect
 
struct  local_entry
 
struct  connection_entry
 
struct  remote_entry
 
struct  local_list
 
struct  connection_list
 
struct  remote_list
 
struct  provider_list
 
struct  remote_host_store
 
struct  verify_hash_list
 
struct  options
 
struct  pull_filter
 
struct  pull_filter_list
 

Macros

#define MAX_PARMS   16
 
#define OPTION_PARM_SIZE   256
 
#define OPTION_LINE_SIZE   256
 
#define CE_DISABLED   (1u << 0)
 
#define CE_MAN_QUERY_PROXY   (1u << 1)
 
#define CE_MAN_QUERY_REMOTE_UNDEF   0
 
#define CE_MAN_QUERY_REMOTE_QUERY   1
 
#define CE_MAN_QUERY_REMOTE_ACCEPT   2
 
#define CE_MAN_QUERY_REMOTE_MOD   3
 
#define CE_MAN_QUERY_REMOTE_SKIP   4
 
#define CE_MAN_QUERY_REMOTE_MASK   (0x07u)
 
#define CE_MAN_QUERY_REMOTE_SHIFT   (2)
 
#define CONNECTION_LIST_SIZE   64
 
#define RH_HOST_LEN   80
 
#define RH_PORT_LEN   20
 
#define MODE_POINT_TO_POINT   0
 
#define MODE_SERVER   1
 
#define PING_UNDEF   0
 
#define PING_EXIT   1
 
#define PING_RESTART   2
 
#define SF_NOPOOL   (1 << 0)
 
#define SF_TCP_NODELAY_HELPER   (1 << 1)
 
#define SF_NO_PUSH_ROUTE_GATEWAY   (1 << 2)
 
#define streq(x, y)   (!strcmp((x), (y)))
 
#define OPT_P_GENERAL   (1u << 0)
 
#define OPT_P_UP   (1u << 1)
 
#define OPT_P_ROUTE   (1u << 2)
 
#define OPT_P_DHCPDNS   (1u << 3) /* includes ip windows options like */
 
#define OPT_P_SCRIPT   (1u << 4)
 
#define OPT_P_SETENV   (1u << 5)
 
#define OPT_P_SHAPER   (1u << 6)
 
#define OPT_P_TIMER   (1u << 7)
 
#define OPT_P_PERSIST   (1u << 8)
 
#define OPT_P_PERSIST_IP   (1u << 9)
 
#define OPT_P_COMP   (1u << 10) /* TODO */
 
#define OPT_P_MESSAGES   (1u << 11)
 
#define OPT_P_NCP   (1u << 12)
 Negotiable crypto parameters.
 
#define OPT_P_TLS_PARMS   (1u << 13) /* TODO */
 
#define OPT_P_MTU   (1u << 14) /* TODO */
 
#define OPT_P_NICE   (1u << 15)
 
#define OPT_P_PUSH   (1u << 16)
 
#define OPT_P_INSTANCE   (1u << 17)
 allowed in ccd, client-connect etc
 
#define OPT_P_CONFIG   (1u << 18)
 
#define OPT_P_EXPLICIT_NOTIFY   (1u << 19)
 
#define OPT_P_ECHO   (1u << 20)
 
#define OPT_P_INHERIT   (1u << 21)
 
#define OPT_P_ROUTE_EXTRAS   (1u << 22)
 
#define OPT_P_PULL_MODE   (1u << 23)
 
#define OPT_P_PLUGIN   (1u << 24)
 
#define OPT_P_SOCKBUF   (1u << 25)
 
#define OPT_P_SOCKFLAGS   (1u << 26)
 
#define OPT_P_CONNECTION   (1u << 27)
 
#define OPT_P_PEER_ID   (1u << 28)
 
#define OPT_P_INLINE   (1u << 29)
 
#define OPT_P_PUSH_MTU   (1u << 30)
 
#define OPT_P_ROUTE_TABLE   (1u << 31)
 
#define OPT_P_DEFAULT   (~(OPT_P_INSTANCE | OPT_P_PULL_MODE))
 
#define PULL_DEFINED(opt)   ((opt)->pull)
 
#define PUSH_DEFINED(opt)   ((opt)->push_list)
 
#define ROUTE_OPTION_FLAGS(o)   ((o)->route_method & ROUTE_METHOD_MASK)
 
#define SHAPER_DEFINED(opt)   ((opt)->shaper)
 
#define PLUGIN_OPTION_LIST(opt)   ((opt)->plugin_list)
 
#define MAN_CLIENT_AUTH_ENABLED(opt)   ((opt)->management_flags & MF_CLIENT_AUTH)
 
#define OPT_P_U_ROUTE   (1 << 0)
 
#define OPT_P_U_ROUTE6   (1 << 1)
 
#define OPT_P_U_DNS   (1 << 2)
 
#define OPT_P_U_DHCP   (1 << 3)
 
#define OPT_P_U_REDIR_GATEWAY   (1 << 4)
 
#define PUF_TYPE_UNDEF   0
 undefined filter type
 
#define PUF_TYPE_ACCEPT   1
 filter type to accept a matching option
 
#define PUF_TYPE_IGNORE   2
 filter type to ignore a matching option
 
#define PUF_TYPE_REJECT   3
 filter type to reject and trigger SIGUSR1
 
#define AR_NONE   0
 
#define AR_INTERACT   1
 
#define AR_NOINTERACT   2
 

Enumerations

enum  vlan_acceptable_frames { VLAN_ONLY_TAGGED , VLAN_ONLY_UNTAGGED_OR_PRIORITY , VLAN_ALL }
 
enum  genkey_type { GENKEY_SECRET , GENKEY_TLS_CRYPTV2_CLIENT , GENKEY_TLS_CRYPTV2_SERVER , GENKEY_AUTH_TOKEN }
 

Functions

void add_option (struct options *options, char *p[], bool is_inline, const char *file, int line, const int level, const msglvl_t msglevel, const unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es)
 
void remove_option (struct context *c, struct options *options, char *p[], bool is_inline, const char *file, int line, const msglvl_t msglevel, const unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es)
 Resets options found in the PUSH_UPDATE message that are preceded by the - flag.
 
void update_option (struct context *c, struct options *options, char *p[], bool is_inline, const char *file, int line, const int level, const msglvl_t msglevel, const unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es, unsigned int *update_options_found)
 Processes an option to update.
 
void parse_argv (struct options *options, const int argc, char *argv[], const msglvl_t msglevel, const unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es)
 
void read_config_file (struct options *options, const char *file, int level, const char *top_file, const int top_line, const msglvl_t msglevel, const unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es)
 
void read_config_string (const char *prefix, struct options *options, const char *config, const msglvl_t msglevel, const unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es)
 
void notnull (const char *arg, const char *description)
 
void usage_small (void)
 
void usage (void)
 
void show_library_versions (const unsigned int flags)
 
void show_windows_version (const unsigned int flags)
 
void show_dco_version (const unsigned int flags)
 
void init_options (struct options *o, const bool init_gc)
 
void uninit_options (struct options *o)
 
void setenv_settings (struct env_set *es, const struct options *o)
 
void show_settings (const struct options *o)
 
bool string_defined_equal (const char *s1, const char *s2)
 
const char * options_string_version (const char *s, struct gc_arena *gc)
 
char * options_string (const struct options *o, const struct frame *frame, struct tuntap *tt, openvpn_net_ctx_t *ctx, bool remote, struct gc_arena *gc)
 
bool options_cmp_equal_safe (char *actual, const char *expected, size_t actual_n)
 
void options_warning_safe (char *actual, const char *expected, size_t actual_n)
 
bool options_cmp_equal (char *actual, const char *expected)
 
void options_warning (char *actual, const char *expected)
 
char * options_string_extract_option (const char *options_string, const char *opt_name, struct gc_arena *gc)
 Given an OpenVPN options string, extract the value of an option.
 
void options_postprocess (struct options *options, struct env_set *es)
 
bool options_postprocess_pull (struct options *o, struct env_set *es)
 
void pre_connect_restore (struct options *o, struct gc_arena *gc)
 
bool apply_push_options (struct context *c, struct options *options, struct buffer *buf, unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es, bool is_update)
 
void options_detach (struct options *o)
 
void options_server_import (struct options *o, const char *filename, msglvl_t msglevel, unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es)
 
void pre_pull_default (struct options *o)
 
void rol_check_alloc (struct options *options)
 
int parse_line (const char *line, char *p[], const int n, const char *file, const int line_num, msglvl_t msglevel, struct gc_arena *gc)
 
int parse_topology (const char *str, const msglvl_t msglevel)
 
const char * print_topology (const int topology)
 
int auth_retry_get (void)
 
bool auth_retry_set (const msglvl_t msglevel, const char *option)
 
const char * auth_retry_print (void)
 
void options_string_import (struct options *options, const char *config, const msglvl_t msglevel, const unsigned int permission_mask, unsigned int *option_types_found, struct env_set *es)
 
bool key_is_external (const struct options *options)
 
bool has_udp_in_local_list (const struct options *options)
 
static bool dco_enabled (const struct options *o)
 Returns whether the current configuration has dco enabled.
 

Variables

const char title_string []
 

Macro Definition Documentation

◆ AR_INTERACT

#define AR_INTERACT   1

Definition at line 987 of file options.h.

◆ AR_NOINTERACT

#define AR_NOINTERACT   2

Definition at line 988 of file options.h.

◆ AR_NONE

#define AR_NONE   0

Definition at line 986 of file options.h.

◆ CE_DISABLED

#define CE_DISABLED   (1u << 0)

Definition at line 153 of file options.h.

◆ CE_MAN_QUERY_PROXY

#define CE_MAN_QUERY_PROXY   (1u << 1)

Definition at line 154 of file options.h.

◆ CE_MAN_QUERY_REMOTE_ACCEPT

#define CE_MAN_QUERY_REMOTE_ACCEPT   2

Definition at line 157 of file options.h.

◆ CE_MAN_QUERY_REMOTE_MASK

#define CE_MAN_QUERY_REMOTE_MASK   (0x07u)

Definition at line 160 of file options.h.

◆ CE_MAN_QUERY_REMOTE_MOD

#define CE_MAN_QUERY_REMOTE_MOD   3

Definition at line 158 of file options.h.

◆ CE_MAN_QUERY_REMOTE_QUERY

#define CE_MAN_QUERY_REMOTE_QUERY   1

Definition at line 156 of file options.h.

◆ CE_MAN_QUERY_REMOTE_SHIFT

#define CE_MAN_QUERY_REMOTE_SHIFT   (2)

Definition at line 161 of file options.h.

◆ CE_MAN_QUERY_REMOTE_SKIP

#define CE_MAN_QUERY_REMOTE_SKIP   4

Definition at line 159 of file options.h.

◆ CE_MAN_QUERY_REMOTE_UNDEF

#define CE_MAN_QUERY_REMOTE_UNDEF   0

Definition at line 155 of file options.h.

◆ CONNECTION_LIST_SIZE

#define CONNECTION_LIST_SIZE   64

Definition at line 190 of file options.h.

◆ MAN_CLIENT_AUTH_ENABLED

#define MAN_CLIENT_AUTH_ENABLED (   opt)    ((opt)->management_flags & MF_CLIENT_AUTH)

Definition at line 796 of file options.h.

◆ MAX_PARMS

#define MAX_PARMS   16

Definition at line 51 of file options.h.

◆ MODE_POINT_TO_POINT

#define MODE_POINT_TO_POINT   0

Definition at line 263 of file options.h.

◆ MODE_SERVER

#define MODE_SERVER   1

Definition at line 264 of file options.h.

◆ OPT_P_COMP

#define OPT_P_COMP   (1u << 10) /* TODO */

Definition at line 745 of file options.h.

◆ OPT_P_CONFIG

#define OPT_P_CONFIG   (1u << 18)

Definition at line 753 of file options.h.

◆ OPT_P_CONNECTION

#define OPT_P_CONNECTION   (1u << 27)

Definition at line 762 of file options.h.

◆ OPT_P_DEFAULT

#define OPT_P_DEFAULT   (~(OPT_P_INSTANCE | OPT_P_PULL_MODE))

Definition at line 768 of file options.h.

◆ OPT_P_DHCPDNS

#define OPT_P_DHCPDNS   (1u << 3) /* includes ip windows options like */

Definition at line 738 of file options.h.

◆ OPT_P_ECHO

#define OPT_P_ECHO   (1u << 20)

Definition at line 755 of file options.h.

◆ OPT_P_EXPLICIT_NOTIFY

#define OPT_P_EXPLICIT_NOTIFY   (1u << 19)

Definition at line 754 of file options.h.

◆ OPT_P_GENERAL

#define OPT_P_GENERAL   (1u << 0)

Definition at line 735 of file options.h.

◆ OPT_P_INHERIT

#define OPT_P_INHERIT   (1u << 21)

Definition at line 756 of file options.h.

◆ OPT_P_INLINE

#define OPT_P_INLINE   (1u << 29)

Definition at line 764 of file options.h.

◆ OPT_P_INSTANCE

#define OPT_P_INSTANCE   (1u << 17)

allowed in ccd, client-connect etc

Definition at line 752 of file options.h.

◆ OPT_P_MESSAGES

#define OPT_P_MESSAGES   (1u << 11)

Definition at line 746 of file options.h.

◆ OPT_P_MTU

#define OPT_P_MTU   (1u << 14) /* TODO */

Definition at line 749 of file options.h.

◆ OPT_P_NCP

#define OPT_P_NCP   (1u << 12)

Negotiable crypto parameters.

Definition at line 747 of file options.h.

◆ OPT_P_NICE

#define OPT_P_NICE   (1u << 15)

Definition at line 750 of file options.h.

◆ OPT_P_PEER_ID

#define OPT_P_PEER_ID   (1u << 28)

Definition at line 763 of file options.h.

◆ OPT_P_PERSIST

#define OPT_P_PERSIST   (1u << 8)

Definition at line 743 of file options.h.

◆ OPT_P_PERSIST_IP

#define OPT_P_PERSIST_IP   (1u << 9)

Definition at line 744 of file options.h.

◆ OPT_P_PLUGIN

#define OPT_P_PLUGIN   (1u << 24)

Definition at line 759 of file options.h.

◆ OPT_P_PULL_MODE

#define OPT_P_PULL_MODE   (1u << 23)

Definition at line 758 of file options.h.

◆ OPT_P_PUSH

#define OPT_P_PUSH   (1u << 16)

Definition at line 751 of file options.h.

◆ OPT_P_PUSH_MTU

#define OPT_P_PUSH_MTU   (1u << 30)

Definition at line 765 of file options.h.

◆ OPT_P_ROUTE

#define OPT_P_ROUTE   (1u << 2)

Definition at line 737 of file options.h.

◆ OPT_P_ROUTE_EXTRAS

#define OPT_P_ROUTE_EXTRAS   (1u << 22)

Definition at line 757 of file options.h.

◆ OPT_P_ROUTE_TABLE

#define OPT_P_ROUTE_TABLE   (1u << 31)

Definition at line 766 of file options.h.

◆ OPT_P_SCRIPT

#define OPT_P_SCRIPT   (1u << 4)

Definition at line 739 of file options.h.

◆ OPT_P_SETENV

#define OPT_P_SETENV   (1u << 5)

Definition at line 740 of file options.h.

◆ OPT_P_SHAPER

#define OPT_P_SHAPER   (1u << 6)

Definition at line 741 of file options.h.

◆ OPT_P_SOCKBUF

#define OPT_P_SOCKBUF   (1u << 25)

Definition at line 760 of file options.h.

◆ OPT_P_SOCKFLAGS

#define OPT_P_SOCKFLAGS   (1u << 26)

Definition at line 761 of file options.h.

◆ OPT_P_TIMER

#define OPT_P_TIMER   (1u << 7)

Definition at line 742 of file options.h.

◆ OPT_P_TLS_PARMS

#define OPT_P_TLS_PARMS   (1u << 13) /* TODO */

Definition at line 748 of file options.h.

◆ OPT_P_U_DHCP

#define OPT_P_U_DHCP   (1 << 3)

Definition at line 807 of file options.h.

◆ OPT_P_U_DNS

#define OPT_P_U_DNS   (1 << 2)

Definition at line 806 of file options.h.

◆ OPT_P_U_REDIR_GATEWAY

#define OPT_P_U_REDIR_GATEWAY   (1 << 4)

Definition at line 808 of file options.h.

◆ OPT_P_U_ROUTE

#define OPT_P_U_ROUTE   (1 << 0)

Definition at line 804 of file options.h.

◆ OPT_P_U_ROUTE6

#define OPT_P_U_ROUTE6   (1 << 1)

Definition at line 805 of file options.h.

◆ OPT_P_UP

#define OPT_P_UP   (1u << 1)

Definition at line 736 of file options.h.

◆ OPTION_LINE_SIZE

#define OPTION_LINE_SIZE   256

Definition at line 57 of file options.h.

◆ OPTION_PARM_SIZE

#define OPTION_PARM_SIZE   256

Definition at line 56 of file options.h.

◆ PING_EXIT

#define PING_EXIT   1

Definition at line 358 of file options.h.

◆ PING_RESTART

#define PING_RESTART   2

Definition at line 359 of file options.h.

◆ PING_UNDEF

#define PING_UNDEF   0

Definition at line 357 of file options.h.

◆ PLUGIN_OPTION_LIST

#define PLUGIN_OPTION_LIST (   opt)    ((opt)->plugin_list)

Definition at line 790 of file options.h.

◆ PUF_TYPE_ACCEPT

#define PUF_TYPE_ACCEPT   1

filter type to accept a matching option

Definition at line 813 of file options.h.

◆ PUF_TYPE_IGNORE

#define PUF_TYPE_IGNORE   2

filter type to ignore a matching option

Definition at line 814 of file options.h.

◆ PUF_TYPE_REJECT

#define PUF_TYPE_REJECT   3

filter type to reject and trigger SIGUSR1

Definition at line 815 of file options.h.

◆ PUF_TYPE_UNDEF

#define PUF_TYPE_UNDEF   0

undefined filter type

Definition at line 812 of file options.h.

◆ PULL_DEFINED

#define PULL_DEFINED (   opt)    ((opt)->pull)

Definition at line 770 of file options.h.

◆ PUSH_DEFINED

#define PUSH_DEFINED (   opt)    ((opt)->push_list)

Definition at line 771 of file options.h.

◆ RH_HOST_LEN

#define RH_HOST_LEN   80

Definition at line 231 of file options.h.

◆ RH_PORT_LEN

#define RH_PORT_LEN   20

Definition at line 233 of file options.h.

◆ ROUTE_OPTION_FLAGS

#define ROUTE_OPTION_FLAGS (   o)    ((o)->route_method & ROUTE_METHOD_MASK)

Definition at line 782 of file options.h.

◆ SF_NO_PUSH_ROUTE_GATEWAY

#define SF_NO_PUSH_ROUTE_GATEWAY   (1 << 2)

Definition at line 482 of file options.h.

◆ SF_NOPOOL

#define SF_NOPOOL   (1 << 0)

Definition at line 480 of file options.h.

◆ SF_TCP_NODELAY_HELPER

#define SF_TCP_NODELAY_HELPER   (1 << 1)

Definition at line 481 of file options.h.

◆ SHAPER_DEFINED

#define SHAPER_DEFINED (   opt)    ((opt)->shaper)

Definition at line 787 of file options.h.

◆ streq

#define streq (   x,
 
)    (!strcmp((x), (y)))

Definition at line 730 of file options.h.

Enumeration Type Documentation

◆ genkey_type

Enumerator
GENKEY_SECRET 
GENKEY_TLS_CRYPTV2_CLIENT 
GENKEY_TLS_CRYPTV2_SERVER 
GENKEY_AUTH_TOKEN 

Definition at line 237 of file options.h.

◆ vlan_acceptable_frames

Enumerator
VLAN_ONLY_TAGGED 
VLAN_ONLY_UNTAGGED_OR_PRIORITY 
VLAN_ALL 

Definition at line 222 of file options.h.

Function Documentation

◆ add_option()

void add_option ( struct options options,
char *  p[],
bool  is_inline,
const char *  file,
int  line,
const int  level,
const msglvl_t  msglevel,
const unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es 
)

Definition at line 5582 of file options.c.

References add_client_nat_to_option_list(), add_route_ipv6_to_option_list(), add_route_to_option_list(), connection_entry::af, remote_entry::af, compress_options::alg, ALLOC_ARRAY_GC, alloc_buf_gc(), alloc_connection_entry(), alloc_local_entry(), alloc_pull_filter(), alloc_remote_entry(), options::allow_deprecated_insecure_static_crypto, options::allow_pull_fqdn, options::allow_recursive_routing, ascii2af(), ascii2ipset(), ascii2keydirection(), ascii2proto(), ASSERT, atoi_constrained(), atoi_warn(), atou(), http_proxy_options::auth_file, http_proxy_options::auth_file_up, http_proxy_options::auth_method_string, http_proxy_options::auth_retry, auth_retry_set(), options::auth_token_call_auth, options::auth_token_generate, options::auth_token_lifetime, options::auth_token_renewal, options::auth_token_secret_file, options::auth_token_secret_file_inline, options::auth_user_pass_file, options::auth_user_pass_file_inline, options::auth_user_pass_verify_script, options::auth_user_pass_verify_script_via_file, options::authname, options::backwards_compatible, connection_entry::bind_defined, options::bind_dev, connection_entry::bind_ipv6_only, connection_entry::bind_local, options::block_ipv6, options::block_outside_dns, BOOL_CAST, BSTR, buf_printf(), options::ca_file, options::ca_file_inline, options::ca_path, options::ccd_exclusive, options::cd_dir, options::ce, options::cert_file, options::cert_file_inline, options::cf_initial_max, options::cf_initial_per, options::cf_max, options::cf_per, static_challenge_info::challenge_text, check_dns_option(), check_route6_option(), check_route_option(), options::chroot_dir, options::cipher_list, options::cipher_list_tls13, options::ciphername, options::client, options::client_config_dir, options::client_connect_script, options::client_crresponse_script, options::client_disconnect_script, options::client_nat, cnol_check_alloc(), CO_EPOCH_DATA_KEY_FORMAT, CO_USE_CC_EXIT_NOTIFY, CO_USE_DYNAMIC_TLS_CRYPT, CO_USE_TLS_KEY_MATERIAL_EXPORT, options::comp, COMP_ALG_LZ4, COMP_ALG_LZO, COMP_ALG_STUB, COMP_ALG_UNDEF, COMP_ALGV2_LZ4, COMP_ALGV2_UNCOMPRESSED, COMP_F_ADVERTISE_STUBS_ONLY, COMP_F_ALLOW_ASYM, COMP_F_ALLOW_STUB_ONLY, COMP_F_MIGRATE, COMP_F_SWAP, comp_non_stub_enabled(), options::config, options::connect_retry_max, connection_entry::connect_retry_seconds, connection_entry::connect_retry_seconds_max, connection_entry::connect_timeout, connection_entry_load_re(), constrain_int(), http_custom_header::content, options::crl_file, options::crl_file_inline, options::cryptoapi_cert, http_proxy_options::custom_headers, D_PUSH, D_TLS_DEBUG_MED, options::daemon, options::dev, options::dev_node, options::dev_type, options::dh_file, options::dh_file_inline, tuntap_options::dhcp_lease_time, tuntap_options::dhcp_masq_custom_offset, tuntap_options::dhcp_masq_offset, dhcp_option_address_parse(), dhcp_option_dns6_parse(), tuntap_options::dhcp_options, DHCP_OPTIONS_DHCP_OPTIONAL, DHCP_OPTIONS_DHCP_REQUIRED, tuntap_options::dhcp_pre_release, dhcp_release_by_adapter_index(), tuntap_options::dhcp_renew, dhcp_renew_by_adapter_index(), options::disable, options::disable_dco, tuntap_options::disable_nbt, options::dns_options, DNS_UPDOWN_FORCED, DNS_UPDOWN_NO_FLAGS, DNS_UPDOWN_USER_SET, dns_updown_user_set(), options::down_pre, options::down_script, options::duplicate_cn, options::ecdh_curve, options::enable_c2c, options::enable_ncp_fallback, options::engine, errors_to_stderr(), es, options::exit_event_initial_state, options::exit_event_name, connection_entry::explicit_exit_notification, EXPORT_KEY_DATA_LABEL, options::extra_certs_file, options::extra_certs_file_inline, options::fast_io, compress_options::flags, static_challenge_info::flags, route_option_list::flags, route_ipv6_option_list::flags, options::force_key_material_export, options::forward_compatible, connection_entry::fragment, connection_entry::fragment_encap, dns_options::from_dhcp, options::gc, gc, gc_free(), gc_new(), gc_transfer(), options::genkey, GENKEY_AUTH_TOKEN, options::genkey_extra_data, options::genkey_filename, GENKEY_SECRET, GENKEY_TLS_CRYPTV2_CLIENT, GENKEY_TLS_CRYPTV2_SERVER, options::genkey_type, get_default_gateway(), get_default_gateway_ipv6(), get_ip_addr(), get_ipv6_addr(), get_ipv6_addr_no_netbits(), getaddr(), GETADDR_HOST_ORDER, GETADDR_RESOLVE, options::groupname, options::handshake_window, connection_entry::http_proxy_options, options::http_proxy_override, http_proxy_options::http_version, i, options::ifconfig_ipv6_local, options::ifconfig_ipv6_netbits, options::ifconfig_ipv6_pool_base, options::ifconfig_ipv6_pool_defined, options::ifconfig_ipv6_pool_netbits, options::ifconfig_ipv6_remote, options::ifconfig_local, options::ifconfig_noexec, options::ifconfig_nowarn, options::ifconfig_pool_defined, options::ifconfig_pool_end, options::ifconfig_pool_netmask, options::ifconfig_pool_persist_filename, options::ifconfig_pool_persist_refresh_freq, options::ifconfig_pool_start, ifconfig_pool_verify_range(), options::ifconfig_remote_netmask, options::ignore_unknown_option, options::imported_protocol_flags, options::inactivity_minimum_bytes, options::inactivity_timeout, init_http_proxy_options_once(), init_options(), http_proxy_options::inline_creds, ip_or_dns_addr_safe(), options::ip_remote_hint, tuntap_options::ip_win32_defined, tuntap_options::ip_win32_type, options::ipchange, ipconfig_register_dns(), ipset2ascii_all(), ipv6_addr_safe(), IPW32_SET_ADAPTIVE, IPW32_SET_ADAPTIVE_DELAY_WINDOW, IPW32_SET_DHCP_MASQ, is_special_addr(), options::keepalive_ping, options::keepalive_timeout, connection_entry::key_direction, options::key_direction, KEY_DIRECTION_BIDIRECTIONAL, options::key_pass_file, options::keying_material_exporter_label, options::keying_material_exporter_length, options::learn_address_script, buffer::len, connection_entry::link_mtu, connection_entry::link_mtu_defined, options::lladdr, local_entry::local, connection_entry::local_port, connection_entry::local_port_defined, options::log, M_DEBUG_LEVEL, M_ERR, M_FATAL, M_INFO, M_NOPREFIX, M_USAGE, M_WARN, mac_addr_safe(), options::machine_readable_output, options::management_addr, management_auth_token(), options::management_certificate, options::management_client_group, options::management_client_user, management_echo(), options::management_flags, options::management_log_history_cache, options::management_port, options::management_user_pass, options::mark, options::max_clients, MAX_CUSTOM_HTTP_HEADER, max_int(), MAX_PARMS, MAX_PEER_ID, options::max_routes_per_client, MAX_SEQ_BACKTRACK, MAX_TIME_BACKTRACK, MD_SHA1, MD_SHA256, MF_CLIENT_AUTH, MF_CONNECT_AS_CLIENT, MF_EXTERNAL_CERT, MF_EXTERNAL_KEY, MF_EXTERNAL_KEY_DIGEST, MF_EXTERNAL_KEY_NOPADDING, MF_EXTERNAL_KEY_PKCS1PAD, MF_EXTERNAL_KEY_PSSPAD, MF_FORGET_DISCONNECT, MF_HOLD, MF_QUERY_PASSWORDS, MF_QUERY_PROXY, MF_QUERY_REMOTE, MF_SIGNAL, MF_UNIX_SOCK, MF_UP_DOWN, MIN_SEQ_BACKTRACK, MIN_TIME_BACKTRACK, options::mlock, options::mode, MODE_POINT_TO_POINT, MODE_SERVER, msg, options::msg_channel, msglevel_forward_compatible(), connection_entry::mssfix, connection_entry::mssfix_default, connection_entry::mssfix_encap, connection_entry::mssfix_fixed, connection_entry::mtu_discover_type, options::mtu_test, options::mute, options::mute_replay_warnings, options::n_bcast_buf, N_SEARCH_LIST_LEN, http_custom_header::name, provider_list::names, tuntap_options::nbdd, tuntap_options::nbdd_len, options::ncp_ciphers, net_ctx_init(), tuntap_options::netbios_node_type, tuntap_options::netbios_scope, verify_hash_list::next, options::nice, NM_QUOTE_HINT, no_more_than_n_args(), NS_CERT_CHECK_CLIENT, NS_CERT_CHECK_SERVER, options::ns_cert_type, tuntap_options::ntp, tuntap_options::ntp_len, options::occ, connection_entry::occ_mtu, open_syslog(), OPENVPN_8021Q_MAX_VID, OPENVPN_8021Q_MIN_VID, openvpn_exit(), OPENVPN_EXIT_STATUS_GOOD, OPENVPN_KU_REQUIRED, OPT_P_COMP, OPT_P_CONFIG, OPT_P_CONNECTION, OPT_P_DHCPDNS, OPT_P_ECHO, OPT_P_EXPLICIT_NOTIFY, OPT_P_GENERAL, OPT_P_INHERIT, OPT_P_INLINE, OPT_P_INSTANCE, OPT_P_MESSAGES, OPT_P_MTU, OPT_P_NCP, OPT_P_NICE, OPT_P_PEER_ID, OPT_P_PERSIST, OPT_P_PERSIST_IP, OPT_P_PLUGIN, OPT_P_PULL_MODE, OPT_P_PUSH, OPT_P_PUSH_MTU, OPT_P_ROUTE, OPT_P_ROUTE_EXTRAS, OPT_P_ROUTE_TABLE, OPT_P_SCRIPT, OPT_P_SETENV, OPT_P_SHAPER, OPT_P_SOCKBUF, OPT_P_SOCKFLAGS, OPT_P_TIMER, OPT_P_TLS_PARMS, OPT_P_UP, option_iroute(), option_iroute_ipv6(), OPTION_PARM_SIZE, options::override_username, options::packet_id_file, PAR_ALL, PAR_NCT, parse_hash_fingerprint_multiline(), parse_http_proxy_override(), parse_topology(), pull_filter::pattern, options::peer_id, options::persist_config, options::persist_local_ip, options::persist_mode, options::persist_remote_ip, options::persist_tun, PING_EXIT, options::ping_rec_timeout, options::ping_rec_timeout_action, PING_RESTART, options::ping_send_timeout, options::ping_timer_remote, options::pkcs12_file, options::pkcs12_file_inline, platform_chdir(), options::plugin_list, plugin_option_list_add(), plugin_option_list_new(), local_entry::port, http_proxy_options::port, positive_atoi(), positive_atoll(), print_default_gateway(), options::priv_key_file, options::priv_key_file_inline, local_entry::proto, connection_entry::proto, remote_entry::proto, proto2ascii_all(), options::proto_force, options::providers, PUF_TYPE_ACCEPT, PUF_TYPE_IGNORE, PUF_TYPE_REJECT, options::pull, options::push_continuation, options::push_ifconfig_constraint_defined, options::push_ifconfig_constraint_netmask, options::push_ifconfig_constraint_network, options::push_ifconfig_defined, options::push_ifconfig_ipv6_blocked, options::push_ifconfig_ipv6_defined, options::push_ifconfig_ipv6_local, options::push_ifconfig_ipv6_netbits, options::push_ifconfig_ipv6_remote, options::push_ifconfig_local, options::push_ifconfig_local_alias, options::push_ifconfig_remote_netmask, push_options(), options::push_peer_info, push_remove_option(), push_reset(), options::rcvbuf, read_config_file(), read_config_string(), options::real_hash_size, redirect_stdout_stderr(), tuntap_options::register_dns, remap_redirect_gateway_flags(), options::remap_sigusr1, connection_entry::remote, remote_entry::remote, options::remote_cert_eku, options::remote_cert_ku, connection_entry::remote_float, connection_entry::remote_port, remote_entry::remote_port, options::remote_random, options::renegotiate_bytes, options::renegotiate_packets, options::renegotiate_seconds, options::renegotiate_seconds_min, options::replay_time, options::replay_window, RESOLV_RETRY_INFINITE, options::resolve_in_advance, options::resolve_retry_seconds, RG_AUTO_LOCAL, RG_BLOCK_LOCAL, RG_BYPASS_DHCP, RG_BYPASS_DNS, RG_DEF1, RG_ENABLE, RG_LOCAL, RG_REROUTE_GW, rol6_check_alloc(), rol_check_alloc(), options::route_default_gateway, options::route_default_metric, options::route_default_table_id, options::route_delay, options::route_delay_defined, options::route_delay_window, options::route_gateway_via_dhcp, options::route_ipv6_default_gateway, options::route_method, ROUTE_METHOD_ADAPTIVE, ROUTE_METHOD_EXE, ROUTE_METHOD_IPAPI, ROUTE_METHOD_SERVICE, options::route_noexec, options::route_nopull, options::route_predown_script, options::route_script, options::routes, options::routes_ipv6, SC_CONCAT, SC_ECHO, options::sc_info, script_security_set(), SDL_CONSTRAIN, http_proxy_options::server, options::server_bridge_defined, options::server_bridge_ip, options::server_bridge_netmask, options::server_bridge_pool_end, options::server_bridge_pool_start, options::server_bridge_proxy_dhcp, options::server_defined, options::server_flags, options::server_ipv6_defined, options::server_netbits_ipv6, options::server_netmask, options::server_network, options::server_network_ipv6, options::session_timeout, set_debug_level(), set_machine_readable_output(), set_pause_exit_win32(), set_suppress_timestamps(), set_user_script(), set_win_sys_path(), setenv_int(), setenv_str(), setenv_str_safe(), SF_HOST_RANDOMIZE, SF_NO_PUSH_ROUTE_GATEWAY, SF_NOPOOL, SF_TCP_NODELAY, SF_TCP_NODELAY_HELPER, SF_USE_IP_PKTINFO, SHA256_DIGEST_LENGTH, SHA_DIGEST_LENGTH, options::shaper, SHAPER_MAX, SHAPER_MIN, options::shared_secret_file, options::shared_secret_file_inline, show_adapters(), options::show_ciphers, show_compression_warning(), options::show_curves, options::show_digests, options::show_engines, options::show_net_up, show_routes(), show_tap_win_adapters(), options::show_tls_ciphers, show_valid_win32_tun_subnets(), options::single_session, pull_filter::size, sleep, options::sndbuf, options::sockflags, connection_entry::socks_proxy_authfile, connection_entry::socks_proxy_port, connection_entry::socks_proxy_server, SSEC_NONE, SSEC_PW_ENV, options::ssl_flags, ssl_set_auth_nocache(), ssl_set_auth_token(), ssl_set_auth_token_user(), SSLF_AUTH_USER_PASS_OPTIONAL, SSLF_CLIENT_CERT_NOT_REQUIRED, SSLF_CLIENT_CERT_OPTIONAL, SSLF_CRL_VERIFY_DIR, SSLF_OPT_VERIFY, SSLF_TLS_DEBUG_ENABLED, SSLF_TLS_VERSION_MAX_MASK, SSLF_TLS_VERSION_MAX_SHIFT, SSLF_TLS_VERSION_MIN_MASK, SSLF_TLS_VERSION_MIN_SHIFT, SSLF_USERNAME_AS_COMMON_NAME, options::stale_routes_ageing_time, options::stale_routes_check_interval, options::status_file, options::status_file_update_freq, options::status_file_version, streq, string_substitute(), options::suppress_timestamps, tap_allow_nonadmin_access(), tuntap_options::tap_sleep, options::tcp_queue_limit, options::test_crypto, connection_entry::tls_auth_file, options::tls_auth_file, connection_entry::tls_auth_file_inline, options::tls_auth_file_inline, options::tls_cert_profile, TLS_CHANNEL_BUF_SIZE, TLS_CHANNEL_MTU_MIN, options::tls_client, connection_entry::tls_crypt_file, options::tls_crypt_file, connection_entry::tls_crypt_file_inline, options::tls_crypt_file_inline, connection_entry::tls_crypt_v2_file, options::tls_crypt_v2_file, connection_entry::tls_crypt_v2_file_inline, options::tls_crypt_v2_file_inline, connection_entry::tls_crypt_v2_force_cookie, options::tls_crypt_v2_verify_script, options::tls_exit, options::tls_export_peer_cert_dir, options::tls_groups, connection_entry::tls_mtu, options::tls_server, options::tls_timeout, TLS_VER_1_2, TLS_VER_BAD, options::tls_verify, tls_version_parse(), options::tmp_dir, options::topology, options::transition_window, translate_mtu_discover_type_name(), connection_entry::tun_mtu, connection_entry::tun_mtu_defined, connection_entry::tun_mtu_extra, connection_entry::tun_mtu_extra_defined, connection_entry::tun_mtu_max, TUN_MTU_MAX_MIN, options::tuntap_options, pull_filter::type, uninit_options(), options::up_delay, options::up_restart, options::up_script, dns_options::updown, dns_options::updown_flags, usage(), usage_version(), options::use_peer_id, http_proxy_options::user_agent, USER_PASS_LEN, options::username, valid_integer(), validate_domain(), options::verbosity, options::verify_hash, options::verify_hash_algo, options::verify_hash_depth, VERIFY_PERMISSION, options::verify_x509_name, VERIFY_X509_SUBJECT_DN, VERIFY_X509_SUBJECT_RDN, VERIFY_X509_SUBJECT_RDN_PREFIX, options::verify_x509_type, options::virtual_hash_size, options::vlan_accept, VLAN_ALL, VLAN_ONLY_TAGGED, VLAN_ONLY_UNTAGGED_OR_PRIORITY, options::vlan_pvid, options::vlan_tagging, tuntap_options::wins, tuntap_options::wins_len, options::writepid, options::x509_track, and x509_track_add().

Referenced by apply_push_options(), parse_argv(), read_config_file(), read_config_string(), test_read_config(), and update_option().

◆ apply_push_options()

bool apply_push_options ( struct context c,
struct options options,
struct buffer buf,
unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es,
bool  is_update 
)

◆ auth_retry_get()

int auth_retry_get ( void  )

◆ auth_retry_print()

const char * auth_retry_print ( void  )

Definition at line 4826 of file options.c.

References AR_INTERACT, AR_NOINTERACT, AR_NONE, and global_auth_retry.

Referenced by man_dispatch_command().

◆ auth_retry_set()

bool auth_retry_set ( const msglvl_t  msglevel,
const char *  option 
)

Definition at line 4803 of file options.c.

References AR_INTERACT, AR_NOINTERACT, AR_NONE, global_auth_retry, msg, and streq.

Referenced by add_option(), and man_dispatch_command().

◆ dco_enabled()

static bool dco_enabled ( const struct options o)
inlinestatic

◆ has_udp_in_local_list()

bool has_udp_in_local_list ( const struct options options)

◆ init_options()

void init_options ( struct options o,
const bool  init_gc 
)

Definition at line 807 of file options.c.

References connection_entry::af, options::allow_recursive_routing, options::auth_token_generate, options::authname, connection_entry::bind_ipv6_only, connection_entry::bind_local, options::block_outside_dns, options::ce, options::cf_initial_max, options::cf_initial_per, CLEAR, options::connect_retry_max, connection_entry::connect_retry_seconds, connection_entry::connect_retry_seconds_max, connection_entry::connect_timeout, DEFAULT_SEQ_BACKTRACK, DEFAULT_TIME_BACKTRACK, tuntap_options::dhcp_lease_time, tuntap_options::dhcp_masq_offset, options::disable_dco, options::dns_options, options::ecdh_curve, dns_options::gc, options::gc, gc_init(), options::gc_owned, options::handshake_window, options::ifconfig_pool_persist_refresh_freq, tuntap_options::ip_win32_type, IPW32_SET_ADAPTIVE, IPW32_SET_DHCP_MASQ, options::key_direction, KEY_DIRECTION_BIDIRECTIONAL, connection_entry::link_mtu, LINK_MTU_DEFAULT, connection_entry::local_port, M_USAGE, options::management_echo_buffer_size, options::management_log_history_cache, options::management_state_buffer_size, options::max_clients, options::max_routes_per_client, options::mode, MODE_POINT_TO_POINT, msg, connection_entry::mssfix, connection_entry::mssfix_default, connection_entry::mssfix_encap, connection_entry::mtu_discover_type, options::n_bcast_buf, options::occ, connection_entry::occ_mtu, OPENVPN_PORT, options::persist_mode, connection_entry::proto, options::proto_force, PROTO_UDP, options::real_hash_size, connection_entry::remote_port, options::renegotiate_bytes, options::renegotiate_seconds, options::renegotiate_seconds_min, options::replay_time, options::replay_window, RESOLV_RETRY_INFINITE, options::resolve_in_advance, options::resolve_retry_seconds, options::route_default_table_id, options::route_delay_window, options::route_method, ROUTE_METHOD_ADAPTIVE, options::scheduled_exit_interval, options::stale_routes_check_interval, options::status_file_update_freq, options::status_file_version, options::tcp_queue_limit, options::tls_cert_profile, connection_entry::tls_mtu, TLS_MTU_DEFAULT, options::tls_timeout, options::tmp_dir, TOP_UNDEF, options::topology, options::transition_window, connection_entry::tun_mtu, TUN_MTU_DEFAULT, options::tuntap_options, dns_options::updown, options::verbosity, options::virtual_hash_size, options::vlan_accept, VLAN_ALL, options::vlan_pvid, win_get_tempdir(), options::windows_driver, WINDOWS_DRIVER_UNSPECIFIED, and X509_USERNAME_FIELD_DEFAULT.

Referenced by add_option(), openvpn_main(), options_postprocess_verify_ce(), and usage().

◆ key_is_external()

bool key_is_external ( const struct options options)

Definition at line 5567 of file options.c.

References options::cryptoapi_cert, options::management_flags, and MF_EXTERNAL_KEY.

Referenced by init_ssl().

◆ notnull()

void notnull ( const char *  arg,
const char *  description 
)

Definition at line 4937 of file options.c.

References M_USAGE, and msg.

Referenced by do_persist_tuntap(), and options_postprocess_verify_ce().

◆ options_cmp_equal()

bool options_cmp_equal ( char *  actual,
const char *  expected 
)

Definition at line 4557 of file options.c.

References options_cmp_equal_safe().

Referenced by key_method_2_read().

◆ options_cmp_equal_safe()

bool options_cmp_equal_safe ( char *  actual,
const char *  expected,
size_t  actual_n 
)

Definition at line 4677 of file options.c.

References D_SHOW_OCC, gc, gc_free(), gc_new(), msg, and options_warning_safe_ml().

Referenced by options_cmp_equal(), and process_received_occ_msg().

◆ options_detach()

void options_detach ( struct options o)

◆ options_postprocess()

void options_postprocess ( struct options options,
struct env_set es 
)

◆ options_postprocess_pull()

bool options_postprocess_pull ( struct options o,
struct env_set es 
)

◆ options_server_import()

void options_server_import ( struct options o,
const char *  filename,
msglvl_t  msglevel,
unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es 
)

Definition at line 576 of file options_parse.c.

References D_PUSH, es, buffer::len, msg, and read_config_file().

Referenced by multi_client_connect_post().

◆ options_string()

char * options_string ( const struct options o,
const struct frame frame,
struct tuntap tt,
openvpn_net_ctx_t ctx,
bool  remote,
struct gc_arena gc 
)

◆ options_string_extract_option()

char * options_string_extract_option ( const char *  options_string,
const char *  opt_name,
struct gc_arena gc 
)

Given an OpenVPN options string, extract the value of an option.

Parameters
options_stringZero-terminated, comma-separated options string
opt_nameThe name of the option to extract
gcThe gc to allocate the return value
Returns
gc-allocated value of option with name opt_name if option was found, or NULL otherwise.

Definition at line 4714 of file options.c.

References gc, gc_malloc(), buffer::len, and options_string().

Referenced by key_method_2_read().

◆ options_string_import()

void options_string_import ( struct options options,
const char *  config,
const msglvl_t  msglevel,
const unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es 
)

◆ options_string_version()

const char * options_string_version ( const char *  s,
struct gc_arena gc 
)

Definition at line 4706 of file options.c.

References alloc_buf_gc(), BPTR, BSTR, gc, and strncpynt().

Referenced by do_compute_occ_strings().

◆ options_warning()

void options_warning ( char *  actual,
const char *  expected 
)

Definition at line 4563 of file options.c.

References options_warning_safe().

Referenced by key_method_2_read().

◆ options_warning_safe()

void options_warning_safe ( char *  actual,
const char *  expected,
size_t  actual_n 
)

Definition at line 4700 of file options.c.

References D_SHOW_OCC, and options_warning_safe_ml().

Referenced by options_warning(), and process_received_occ_msg().

◆ parse_argv()

void parse_argv ( struct options options,
const int  argc,
char *  argv[],
const msglvl_t  msglevel,
const unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es 
)

Definition at line 450 of file options_parse.c.

References add_option(), CLEAR, es, i, buffer::len, MAX_PARMS, msg, and usage().

Referenced by openvpn_main().

◆ parse_line()

int parse_line ( const char *  line,
char *  p[],
const int  n,
const char *  file,
const int  line_num,
msglvl_t  msglevel,
struct gc_arena gc 
)

◆ parse_topology()

int parse_topology ( const char *  str,
const msglvl_t  msglevel 
)

Definition at line 4747 of file options.c.

References buffer::len, msg, streq, TOP_NET30, TOP_P2P, TOP_SUBNET, and TOP_UNDEF.

Referenced by add_option().

◆ pre_connect_restore()

void pre_connect_restore ( struct options o,
struct gc_arena gc 
)

Definition at line 3168 of file options.c.

References options_pre_connect::authname, options::authname, options_pre_connect::ciphername, options::ciphername, CLEAR, options_pre_connect::client_nat, options::client_nat, options_pre_connect::client_nat_defined, clone_dns_options(), cnol_check_alloc(), options_pre_connect::comp, options::comp, copy_client_nat_option_list(), copy_route_ipv6_option_list(), copy_route_option_list(), options_pre_connect::dns_options, options::dns_options, options_pre_connect::foreign_option_index, options::foreign_option_index, dns_options::gc, gc, gc_free(), gc_new(), options_pre_connect::ifconfig_ipv6_local, options::ifconfig_ipv6_local, options_pre_connect::ifconfig_local, options::ifconfig_local, options::imported_protocol_flags, options_pre_connect::ping_rec_timeout, options::ping_rec_timeout, options_pre_connect::ping_rec_timeout_action, options::ping_rec_timeout_action, options_pre_connect::ping_send_timeout, options::ping_send_timeout, options::pre_connect, options::push_continuation, options::push_option_types_found, rol6_check_alloc(), rol_check_alloc(), options_pre_connect::route_default_gateway, options::route_default_gateway, options_pre_connect::route_ipv6_default_gateway, options::route_ipv6_default_gateway, options_pre_connect::routes, options::routes, options_pre_connect::routes_defined, options_pre_connect::routes_ipv6, options::routes_ipv6, options_pre_connect::routes_ipv6_defined, options_pre_connect::tuntap_options, options::tuntap_options, and options_pre_connect::tuntap_options_defined.

Referenced by init_instance().

◆ pre_pull_default()

void pre_pull_default ( struct options o)

◆ print_topology()

const char * print_topology ( const int  topology)

Definition at line 4769 of file options.c.

References TOP_NET30, TOP_P2P, TOP_SUBNET, and TOP_UNDEF.

Referenced by do_ifconfig_ipv4(), and print_opt_topology().

◆ read_config_file()

void read_config_file ( struct options options,
const char *  file,
int  level,
const char *  top_file,
const int  top_line,
const msglvl_t  msglevel,
const unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es 
)

◆ read_config_string()

void read_config_string ( const char *  prefix,
struct options options,
const char *  config,
const msglvl_t  msglevel,
const unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es 
)

◆ remove_option()

void remove_option ( struct context c,
struct options options,
char *  p[],
bool  is_inline,
const char *  file,
int  line,
const msglvl_t  msglevel,
const unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es 
)

Resets options found in the PUSH_UPDATE message that are preceded by the - flag.

This function is used in push-updates to reset specified options. The number of parameters p must always be 1. If the permission is verified, all related options are erased or reset to their default values. Upon successful permission verification (by VERIFY_PERMISSION()), option_types_found is filled with the flag corresponding to the option.

Parameters
cThe context structure.
optionsA pointer to the options structure.
pAn array of strings containing the options and their parameters.
is_inlineA boolean indicating if the option is inline.
fileThe file where the function is called.
lineThe line number where the function is called.
msglevelThe message level.
permission_maskThe permission mask used by VERIFY_PERMISSION().
option_types_foundA pointer to the variable where the flags corresponding to the options found are stored.
esThe environment set structure.

Definition at line 5077 of file options.c.

References options::block_ipv6, options::block_outside_dns, context::c1, options::ce, CLEAR, delete_routes_v4(), delete_routes_v6(), tuntap_options::dhcp_options, tuntap_options::disable_nbt, tuntap_options::dns, tuntap_options::dns6, tuntap_options::dns6_len, tuntap_options::dns_len, options::dns_options, tuntap_options::domain, tuntap_options::domain_search_list, tuntap_options::domain_search_list_len, env_set_del(), es, route_option_list::flags, route_ipv6_option_list::flags, dns_options::gc, gc_free(), helper_setdefault_topology(), i, options::ifconfig_ipv6_local, options::ifconfig_ipv6_netbits, options::ifconfig_ipv6_remote, options::ifconfig_local, options::ifconfig_remote_netmask, options::ignore_unknown_option, env_set::list, M_WARN, msg, msglevel_forward_compatible(), tuntap_options::nbdd, tuntap_options::nbdd_len, context::net_ctx, tuntap_options::netbios_node_type, tuntap_options::netbios_scope, tuntap_options::ntp, tuntap_options::ntp_len, connection_entry::occ_mtu, OPT_P_CONNECTION, OPT_P_DHCPDNS, OPT_P_PULL_MODE, OPT_P_PUSH_MTU, OPT_P_ROUTE, OPT_P_ROUTE_EXTRAS, OPT_P_UP, context::options, options::push_continuation, RESET_OPTION_ROUTES, options::route_default_gateway, options::route_default_metric, options::route_gateway_via_dhcp, context_1::route_ipv6_list, context_1::route_list, ROUTE_OPTION_FLAGS, options::routes, options::routes_ipv6, streq, TOP_UNDEF, options::topology, connection_entry::tun_mtu, TUN_MTU_DEFAULT, connection_entry::tun_mtu_defined, context_1::tuntap, options::tuntap_options, VERIFY_PERMISSION, tuntap_options::wins, and tuntap_options::wins_len.

Referenced by apply_push_options().

◆ rol_check_alloc()

void rol_check_alloc ( struct options options)

◆ setenv_settings()

void setenv_settings ( struct env_set es,
const struct options o 
)

◆ show_dco_version()

void show_dco_version ( const unsigned int  flags)

Definition at line 4891 of file options.c.

References dco_version_string(), gc, gc_free(), gc_new(), and msg.

Referenced by openvpn_main(), and usage_version().

◆ show_library_versions()

void show_library_versions ( const unsigned int  flags)

Definition at line 4901 of file options.c.

References get_ssl_library_version(), LZO_LIB_VER_STR, and msg.

Referenced by openvpn_main(), and usage_version().

◆ show_settings()

void show_settings ( const struct options o)

◆ show_windows_version()

void show_windows_version ( const unsigned int  flags)

Definition at line 4882 of file options.c.

References gc, gc_free(), gc_new(), msg, and win32_version_string().

Referenced by openvpn_main(), and usage_version().

◆ string_defined_equal()

bool string_defined_equal ( const char *  s1,
const char *  s2 
)

Definition at line 4946 of file options.c.

Referenced by options_postprocess_verify_ce().

◆ uninit_options()

void uninit_options ( struct options o)

◆ update_option()

void update_option ( struct context c,
struct options options,
char *  p[],
bool  is_inline,
const char *  file,
int  line,
const int  level,
const msglvl_t  msglevel,
const unsigned int  permission_mask,
unsigned int *  option_types_found,
struct env_set es,
unsigned int *  update_options_found 
)

Processes an option to update.

It first checks whether it has already received an option of the same type within the same update message. If the option has already been received, it calls add_option(). Otherwise, it deletes all existing values related to that option before calling add_option().

Parameters
cThe context structure.
optionsA pointer to the options structure.
pAn array of strings containing the options and their parameters.
is_inlineA boolean indicating if the option is inline.
fileThe file where the function is called.
lineThe line number where the function is called.
levelThe level of the option.
msglevelThe message level for logging.
permission_maskThe permission mask used by VERIFY_PERMISSION().
option_types_foundA pointer to the variable where the flags corresponding to the options found are stored.
esThe environment set structure.
update_options_foundA pointer to the variable where the flags corresponding to the update options found are stored, used to check if an option of the same type has already been processed by update_option() within the same push-update message.

Definition at line 5397 of file options.c.

References add_option(), ASSERT, BOOL_CAST, context::c1, check_dns_option(), check_route6_option(), check_route_option(), CLEAR, delete_routes_v4(), delete_routes_v6(), tuntap_options::dhcp_options, tuntap_options::disable_nbt, tuntap_options::dns, tuntap_options::dns6, tuntap_options::dns6_len, tuntap_options::dns_len, options::dns_options, tuntap_options::domain, tuntap_options::domain_search_list, tuntap_options::domain_search_list_len, env_set_del(), es, route_option_list::flags, route_ipv6_option_list::flags, dns_options::from_dhcp, dns_options::gc, gc_free(), env_set::list, MAX_PARMS, msg, tuntap_options::nbdd, tuntap_options::nbdd_len, context::net_ctx, tuntap_options::netbios_node_type, tuntap_options::netbios_scope, tuntap_options::ntp, tuntap_options::ntp_len, OPT_P_DHCPDNS, OPT_P_PULL_MODE, OPT_P_ROUTE, OPT_P_U_DHCP, OPT_P_U_DNS, OPT_P_U_REDIR_GATEWAY, OPT_P_U_ROUTE, OPT_P_U_ROUTE6, context::options, RESET_OPTION_ROUTES, context_1::route_ipv6_list, context_1::route_list, ROUTE_OPTION_FLAGS, options::routes, options::routes_ipv6, streq, context_1::tuntap, options::tuntap_options, VERIFY_PERMISSION, tuntap_options::wins, and tuntap_options::wins_len.

Referenced by apply_push_options().

◆ usage()

void usage ( void  )

◆ usage_small()

void usage_small ( void  )

Definition at line 4874 of file options.c.

References M_NOPREFIX, M_WARN, msg, openvpn_exit(), and OPENVPN_EXIT_STATUS_USAGE.

Referenced by x_msg_va().

Variable Documentation

◆ title_string

const char title_string[]
extern