@@ -105,6 +105,20 @@ tunnel_point_to_point(struct context *c)
#undef PROCESS_SIGNAL_P2P
+void init_early(struct context *c)
+{
+ net_ctx_init(c, &(*c).net_ctx);
+
+ /* init verbosity and mute levels */
+ init_verb_mute(c, IVM_LEVEL_1);
+
+}
+
+static void uninit_early(struct context *c)
+{
+ net_ctx_free(&(*c).net_ctx);
+}
+
/**************************************************************************/
/**
@@ -193,10 +207,9 @@ openvpn_main(int argc, char *argv[])
open_plugins(&c, true, OPENVPN_PLUGIN_INIT_PRE_CONFIG_PARSE);
#endif
- net_ctx_init(&c, &c.net_ctx);
-
- /* init verbosity and mute levels */
- init_verb_mute(&c, IVM_LEVEL_1);
+ /* Early initialisation that need to happen before option
+ * post processing and other early startup but after parsing */
+ init_early(&c);
/* set dev options */
init_options_dev(&c.options);
@@ -308,7 +321,7 @@ openvpn_main(int argc, char *argv[])
env_set_destroy(c.es);
uninit_options(&c.options);
gc_reset(&c.gc);
- net_ctx_free(&c.net_ctx);
+ uninit_early(&c);
}
while (c.sig->signal_received == SIGHUP);
}
This put the early initialisation and uninitialisation that needs to happen between option parsing and post processing into small methods. Signed-off-by: Arne Schwabe <arne@rfc2549.org> --- src/openvpn/openvpn.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-)