diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2011-01-06 23:24:52 +0100 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2011-03-25 09:38:48 +0100 |
commit | dc299b6e7d0413d0a311c33ffb14591b5c8d1d96 (patch) | |
tree | d669e2c6714c7371b2c46f67a1b3ba89306407f6 | |
parent | 10960e3cd32c156ef2d4c1c4209a5ef27421bb70 (diff) | |
download | openvpn-dc299b6e7d0413d0a311c33ffb14591b5c8d1d96.tar.gz openvpn-dc299b6e7d0413d0a311c33ffb14591b5c8d1d96.tar.xz openvpn-dc299b6e7d0413d0a311c33ffb14591b5c8d1d96.zip |
Separate the general plug-in version constant and v3 plug-in structs version
After a review of the second round of the the v3 plug-in implementation, it
was decided to use a separate constant defining the version of the structs
used for argument and return value passing, instead of OPENVPN_PLUGIN_VERSION.
To not make it too complex, this patch uses a shared version constant for all
the v3 structures. It is not expected that these strucutures will change too
much and too often.
Signed-off-by: David Sommerseth <dazo@users.sourceforge.net>
Acked-by: James Yonan <james@openvpn.net>
-rw-r--r-- | openvpn-plugin.h | 14 | ||||
-rw-r--r-- | plugin.c | 4 | ||||
-rw-r--r-- | plugin/examples/log_v3.c | 4 |
3 files changed, 18 insertions, 4 deletions
diff --git a/openvpn-plugin.h b/openvpn-plugin.h index 13913a8..5c82daf 100644 --- a/openvpn-plugin.h +++ b/openvpn-plugin.h @@ -168,6 +168,20 @@ struct openvpn_plugin_string_list /* openvpn_plugin_{open,func}_v3() related structs */ +/* Defines version of the v3 plugin argument structs + * + * Whenever one or more of these structs are modified, this constant + * must be updated. A changelog should be appended in this comment + * as well, to make it easier to see what information is available + * in the different versions. + * + * Version Comment + * 1 Initial plugin v3 structures providing the same API as + * the v2 plugin interface + X509 certificate information. + * + */ +#define OPENVPN_PLUGINv3_STRUCTVER 1 + /** * Arguments used to transport variables to the plug-in. * The struct openvpn_plugin_args_open_in is only used @@ -305,7 +305,7 @@ plugin_open_item (struct plugin *p, struct openvpn_plugin_args_open_return retargs; CLEAR(retargs); - if ((*p->open3)(OPENVPN_PLUGIN_VERSION, &args, &retargs) == OPENVPN_PLUGIN_FUNC_SUCCESS) { + if ((*p->open3)(OPENVPN_PLUGINv3_STRUCTVER, &args, &retargs) == OPENVPN_PLUGIN_FUNC_SUCCESS) { p->plugin_type_mask = retargs.type_mask; p->plugin_handle = retargs.handle; retlist = retargs.return_list; @@ -377,7 +377,7 @@ plugin_call_item (const struct plugin *p, struct openvpn_plugin_args_func_return retargs; CLEAR(retargs); - status = (*p->func3)(OPENVPN_PLUGIN_VERSION, &args, &retargs); + status = (*p->func3)(OPENVPN_PLUGINv3_STRUCTVER, &args, &retargs); retlist = retargs.return_list; } else if (p->func2) status = (*p->func2)(p->plugin_handle, type, (const char **)a.argv, envp, per_client_context, retlist); diff --git a/plugin/examples/log_v3.c b/plugin/examples/log_v3.c index 4974ef2..bf2f1dc 100644 --- a/plugin/examples/log_v3.c +++ b/plugin/examples/log_v3.c @@ -72,14 +72,14 @@ get_env (const char *name, const char *envp[]) } OPENVPN_EXPORT int -openvpn_plugin_open_v3 (const int apiver, +openvpn_plugin_open_v3 (const int v3structver, struct openvpn_plugin_args_open_in const *args, struct openvpn_plugin_args_open_return *ret) { struct plugin_context *context = NULL; /* Check that we are API compatible */ - if( apiver != OPENVPN_PLUGIN_VERSION ) { + if( v3structver != OPENVPN_PLUGINv3_STRUCTVER ) { return OPENVPN_PLUGIN_FUNC_ERROR; } |