}
bool
-do_up(struct context *c, bool pulled_options, unsigned int option_types_found)
+do_up(struct context *c, bool pulled_options, uint64_t option_types_found)
{
int error_flags = 0;
if (!c->c2.do_up_ran)
}
bool
-do_update(struct context *c, unsigned int option_types_found)
+do_update(struct context *c, uint64_t option_types_found)
{
/* Not necessary since to receive the update the openvpn
* instance must be up and running but just in case
}
bool
-do_deferred_options(struct context *c, const unsigned int found, const bool is_update)
+do_deferred_options(struct context *c, const uint64_t found, const bool is_update)
{
if (found & OPT_P_MESSAGES)
{
int i;
for (i = 0; i < config.n; ++i)
{
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
if (config.list[i] && config.list[i]->value)
{
options_string_import(
void context_gc_free(struct context *c);
-bool do_up(struct context *c, bool pulled_options, unsigned int option_types_found);
+bool do_up(struct context *c, bool pulled_options, uint64_t option_types_found);
/**
* @brief A simplified version of the do_up() function. This function is called
* @return true on success.
* @return false on error.
*/
-bool do_update(struct context *c, unsigned int option_types_found);
+bool do_update(struct context *c, uint64_t option_types_found);
unsigned int pull_permission_mask(const struct context *c);
* Handle non-tun-related pulled options.
* Set `is_update` param to true to skip NCP check.
*/
-bool do_deferred_options(struct context *c, const unsigned int found, const bool is_update);
+bool do_deferred_options(struct context *c, const uint64_t found, const bool is_update);
void inherit_context_child(struct context *dest, const struct context *src,
struct link_socket *sock);
*/
static void
multi_client_connect_post(struct multi_context *m, struct multi_instance *mi, const char *dc_file,
- unsigned int *option_types_found)
+ uint64_t *option_types_found)
{
/* Did script generate a dynamic config file? */
if (platform_test_file(dc_file))
*/
static void
multi_client_connect_post_plugin(struct multi_context *m, struct multi_instance *mi,
- const struct plugin_return *pr, unsigned int *option_types_found)
+ const struct plugin_return *pr, uint64_t *option_types_found)
{
struct plugin_return config;
*/
enum client_connect_return
multi_client_connect_mda(struct multi_context *m, struct multi_instance *mi, bool deferred,
- unsigned int *option_types_found)
+ uint64_t *option_types_found)
{
/* We never return CC_RET_DEFERRED */
ASSERT(!deferred);
static enum client_connect_return
multi_client_connect_call_plugin_v1(struct multi_context *m, struct multi_instance *mi,
- bool deferred, unsigned int *option_types_found)
+ bool deferred, uint64_t *option_types_found)
{
enum client_connect_return ret = CC_RET_SKIPPED;
#ifdef ENABLE_PLUGIN
static enum client_connect_return
multi_client_connect_call_plugin_v2(struct multi_context *m, struct multi_instance *mi,
- bool deferred, unsigned int *option_types_found)
+ bool deferred, uint64_t *option_types_found)
{
enum client_connect_return ret = CC_RET_SKIPPED;
#ifdef ENABLE_PLUGIN
static enum client_connect_return
multi_client_connect_script_deferred(struct multi_context *m, struct multi_instance *mi,
- unsigned int *option_types_found)
+ uint64_t *option_types_found)
{
ASSERT(mi);
ASSERT(option_types_found);
*/
static enum client_connect_return
multi_client_connect_call_script(struct multi_context *m, struct multi_instance *mi, bool deferred,
- unsigned int *option_types_found)
+ uint64_t *option_types_found)
{
if (deferred)
{
static void
multi_client_connect_late_setup(struct multi_context *m, struct multi_instance *mi,
- const unsigned int option_types_found)
+ const uint64_t option_types_found)
{
ASSERT(m);
ASSERT(mi);
*/
static enum client_connect_return
multi_client_connect_compress_migrate(struct multi_context *m, struct multi_instance *mi,
- bool deferred, unsigned int *option_types_found)
+ bool deferred, uint64_t *option_types_found)
{
#ifdef USE_COMP
struct options *o = &mi->context.options;
*/
static enum client_connect_return
multi_client_connect_source_ccd(struct multi_context *m, struct multi_instance *mi, bool deferred,
- unsigned int *option_types_found)
+ uint64_t *option_types_found)
{
/* Since we never return a CC_RET_DEFERRED, this indicates a serious
* problem */
typedef enum client_connect_return (*multi_client_connect_handler)(
struct multi_context *m, struct multi_instance *mi, bool from_deferred,
- unsigned int *option_types_found);
+ uint64_t *option_types_found);
static const multi_client_connect_handler client_connect_handlers[] = {
multi_client_connect_compress_migrate,
bool from_deferred = (mi->context.c2.tls_multi->multi_state != CAS_PENDING);
int *cur_handler_index = &mi->client_connect_defer_state.cur_handler_index;
- unsigned int *option_types_found = &mi->client_connect_defer_state.option_types_found;
+ uint64_t *option_types_found = &mi->client_connect_defer_state.option_types_found;
/* We are called for the first time */
if (!from_deferred)
int cur_handler_index;
/* Remember which option classes where processed for delayed option
* handling. */
- unsigned int option_types_found;
+ uint64_t option_types_found;
/**
* The temporary file name that contains the return status of the
}
static bool
-verify_permission(const char *name, const char *file, int line, const unsigned int type,
- const unsigned int allowed, unsigned int *found, const msglvl_t msglevel,
+verify_permission(const char *name, const char *file, int line, const uint64_t type,
+ const uint64_t allowed, uint64_t *found, const msglvl_t msglevel,
struct options *options, bool is_inline)
{
if (!(type & allowed))
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
msglvl_t msglevel_fc = msglevel_forward_compatible(options, msglevel);
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
const bool pull_mode = BOOL_CAST(permission_mask & OPT_P_PULL_MODE);
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)
+ const int level, const msglvl_t msglevel, const uint64_t permission_mask,
+ uint64_t *option_types_found, struct env_set *es)
{
struct gc_arena gc = gc_new();
const bool pull_mode = BOOL_CAST(permission_mask & OPT_P_PULL_MODE);
bool client;
bool pull; /* client pull of config options from server */
int push_continuation;
- unsigned int push_option_types_found;
- unsigned int push_update_options_found; /* tracks which option types have been reset in current PUSH_UPDATE sequence */
+ uint64_t push_option_types_found;
+ uint64_t push_update_options_found; /* tracks which option types have been reset in current PUSH_UPDATE sequence */
const char *auth_user_pass_file;
bool auth_user_pass_file_inline;
struct options_pre_connect *pre_connect;
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,
+ const uint64_t permission_mask, uint64_t *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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es);
/**
*/
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es);
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,
+ const uint64_t permission_mask, uint64_t *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,
+ const uint64_t permission_mask, uint64_t *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);
+ const msglvl_t msglevel, const uint64_t permission_mask,
+ uint64_t *option_types_found, struct env_set *es);
void notnull(const char *arg, const char *description);
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,
+ uint64_t permission_mask, uint64_t *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,
+ uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es);
void pre_pull_default(struct options *o);
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es);
bool key_is_external(const struct options *options);
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
const int max_recursive_levels = 10;
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)
+ const msglvl_t msglevel, const uint64_t permission_mask,
+ uint64_t *option_types_found, struct env_set *es)
{
char line[OPTION_LINE_SIZE];
struct buffer multiline;
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)
+ const uint64_t permission_mask, uint64_t *option_types_found, struct env_set *es)
{
/* usage message */
if (argc <= 1)
bool
apply_push_options(struct context *c, struct options *options, struct buffer *buf,
- unsigned int permission_mask, unsigned int *option_types_found,
+ uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es, bool is_update)
{
char line[OPTION_PARM_SIZE];
char *p[MAX_PARMS + 1];
CLEAR(p);
++line_num;
- unsigned int push_update_option_flags = 0;
+ uint64_t push_update_option_flags = 0;
int i = 0;
/* skip leading spaces matching the behaviour of parse_line */
void
options_server_import(struct options *o, const char *filename, msglvl_t msglevel,
- unsigned int permission_mask, unsigned int *option_types_found,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
msg(D_PUSH, "OPTIONS IMPORT: reading client specific options from: %s", filename);
void
options_string_import(struct options *options, const char *config, const msglvl_t msglevel,
- const unsigned int permission_mask, unsigned int *option_types_found,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
read_config_string("[CONFIG-STRING]", options, config, msglevel, permission_mask,
"tun-mtu", "keepalive" };
bool
-check_push_update_option_flags(char *line, int *i, unsigned int *flags)
+check_push_update_option_flags(char *line, int *i, uint64_t *flags)
{
*flags = 0;
bool opt_is_updatable = false;
* - The `line` parameter is empty or `NULL`.
* - The `?` flag is absent and the option is not updatable.
*/
-bool check_push_update_option_flags(char *line, int *i, unsigned int *flags);
+bool check_push_update_option_flags(char *line, int *i, uint64_t *flags);
#endif /* ifndef OPTIONS_UTIL_H_ */
incoming_push_message(struct context *c, const struct buffer *buffer)
{
struct gc_arena gc = gc_new();
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
msg(D_PUSH, "PUSH: Received control message: '%s'",
sanitize_control_message(BSTR(buffer), &gc));
}
static int
-process_incoming_push_reply(struct context *c, unsigned int permission_mask,
- unsigned int *option_types_found, struct buffer *buf)
+process_incoming_push_reply(struct context *c, uint64_t permission_mask,
+ uint64_t *option_types_found, struct buffer *buf)
{
int ret = PUSH_MSG_ERROR;
const int ch = buf_read_u8(buf);
int
process_incoming_push_msg(struct context *c, const struct buffer *buffer,
- bool honor_received_options, unsigned int permission_mask,
- unsigned int *option_types_found)
+ bool honor_received_options, uint64_t permission_mask,
+ uint64_t *option_types_found)
{
struct buffer buf = *buffer;
* - `PUSH_MSG_ERROR`: An error occurred during message processing, or the message is invalid.
*/
-int process_push_update(struct context *c, struct options *o, unsigned int permission_mask,
- unsigned int *option_types_found, struct buffer *buf, bool msg_sender);
+int process_push_update(struct context *c, struct options *o, uint64_t permission_mask,
+ uint64_t *option_types_found, struct buffer *buf, bool msg_sender);
int process_incoming_push_msg(struct context *c, const struct buffer *buffer,
- bool honor_received_options, unsigned int permission_mask,
- unsigned int *option_types_found);
+ bool honor_received_options, uint64_t permission_mask,
+ uint64_t *option_types_found);
bool send_push_request(struct context *c);
#endif
int
-process_push_update(struct context *c, struct options *o, unsigned int permission_mask,
- unsigned int *option_types_found, struct buffer *buf, bool msg_sender)
+process_push_update(struct context *c, struct options *o, uint64_t permission_mask,
+ uint64_t *option_types_found, struct buffer *buf, bool msg_sender)
{
int ret = PUSH_MSG_ERROR;
const int ch = buf_read_u8(buf);
return false;
}
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
struct context *c = &mi->context;
struct options o;
CLEAR(o);
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
function_called();
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
}
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,
+ const uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es)
{
}
static void
read_single_config(struct options *options, const char *config)
{
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
struct env_set es;
CLEAR(es);
read_config_string("test_options_parse", options, config, M_INFO, OPT_P_DEFAULT,
bool
apply_push_options(struct context *c, struct options *options, struct buffer *buf,
- unsigned int permission_mask, unsigned int *option_types_found,
+ uint64_t permission_mask, uint64_t *option_types_found,
struct env_set *es, bool is_update)
{
char line[OPTION_PARM_SIZE];
while (buf_parse(buf, ',', line, sizeof(line)))
{
- unsigned int push_update_option_flags = 0;
+ uint64_t push_update_option_flags = 0;
int i = 0;
if (is_update || options->pull_filter_list)
int
process_incoming_push_msg(struct context *c, const struct buffer *buffer,
- bool honor_received_options, unsigned int permission_mask,
- unsigned int *option_types_found)
+ bool honor_received_options, uint64_t permission_mask,
+ uint64_t *option_types_found)
{
struct buffer buf = *buffer;
const char *update_msg =
"PUSH_UPDATE,dhcp-option DNS 8.8.8.8, route 0.0.0.0 0.0.0.0 10.10.10.1";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
struct buffer buf = alloc_buf(256);
const char *update_msg = "PUSH_UPDATEerr,dhcp-option DNS 8.8.8.8";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
struct buffer buf = alloc_buf(256);
const char *update_msg = "PUSH_UPDATE ,dhcp-option DNS 8.8.8.8";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
struct buffer buf = alloc_buf(256);
const char *update_msg = "PUSH_UPDATE, -?dns, route something, ?dhcp-option DNS 8.8.8.8";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
struct buffer buf = alloc_buf(256);
const char *update_msg = "PUSH_UPDATE, -dhcp-option, ?-dns";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
struct buffer buf = alloc_buf(256);
const char *update_msg = "PUSH_UPDATE, dev tun";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
const char *update_msg =
"PUSH_UPDATE,-dhcp-option, route 10.10.10.0, dhcp-option DNS 1.1.1.1, route 10.11.12.0, dhcp-option DOMAIN corp.local, keepalive 10 60";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
const char *update_msg =
"PUSH_UPDATE,-dhcp-option,dhcp-option DNS 8.8.8.8,redirect-gateway local,route 192.168.1.0 255.255.255.0";
buf_write(&buf, update_msg, strlen(update_msg));
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
assert_int_equal(process_incoming_push_msg(c, &buf, c->options.pull, pull_permission_mask(c),
&option_types_found),
test_incoming_push_continuation_route_accumulation(void **state)
{
struct context *c = *state;
- unsigned int option_types_found = 0;
+ uint64_t option_types_found = 0;
reset_route_counters();