1#ifndef MYSQL_CLIENT_PLUGIN_INCLUDED
35#define MYSQL_CLIENT_PLUGIN_INCLUDED
37#ifndef MYSQL_ABI_CHECK
50#if defined(MYSQL_DYNAMIC_CLIENT_PLUGIN)
52#define MYSQL_CLIENT_PLUGIN_EXPORT extern "C" __declspec(dllexport)
54#define MYSQL_CLIENT_PLUGIN_EXPORT __declspec(dllexport)
58#define MYSQL_CLIENT_PLUGIN_EXPORT extern "C"
60#define MYSQL_CLIENT_PLUGIN_EXPORT
65#if defined(MYSQL_DYNAMIC_CLIENT_PLUGIN)
66#define MYSQL_CLIENT_PLUGIN_EXPORT MY_ATTRIBUTE((visibility("default")))
68#define MYSQL_CLIENT_PLUGIN_EXPORT
78#define MYSQL_CLIENT_reserved1 0
79#define MYSQL_CLIENT_reserved2 1
80#define MYSQL_CLIENT_AUTHENTICATION_PLUGIN 2
81#define MYSQL_CLIENT_TRACE_PLUGIN 3
82#define MYSQL_CLIENT_TELEMETRY_PLUGIN 4
84#define MYSQL_CLIENT_AUTHENTICATION_PLUGIN_INTERFACE_VERSION 0x0200
85#define MYSQL_CLIENT_TRACE_PLUGIN_INTERFACE_VERSION 0x0200
86#define MYSQL_CLIENT_TELEMETRY_PLUGIN_INTERFACE_VERSION 0x0200
88#define MYSQL_CLIENT_MAX_PLUGINS 5
90#define MYSQL_CLIENT_PLUGIN_AUTHOR_ORACLE "Oracle Corporation"
92#define mysql_declare_client_plugin(X) \
93 MYSQL_CLIENT_PLUGIN_EXPORT st_mysql_client_plugin_##X \
94 _mysql_client_plugin_declaration_ = { \
95 MYSQL_CLIENT_##X##_PLUGIN, \
96 MYSQL_CLIENT_##X##_PLUGIN_INTERFACE_VERSION,
97#define mysql_end_client_plugin }
100#define MYSQL_CLIENT_PLUGIN_HEADER \
102 unsigned int interface_version; \
104 const char *author; \
106 unsigned int version[3]; \
107 const char *license; \
109 int (*init)(char *, size_t, int, va_list); \
110 int (*deinit)(void); \
111 int (*options)(const char *option, const void *); \
112 int (*get_options)(const char *option, void *);
171 int argc, va_list args);
217 const char *option,
const void *value);
232 const char *option,
void *value);
struct st_mysql_client_plugin * mysql_load_plugin(struct MYSQL *mysql, const char *name, int type, int argc,...)
loads a plugin and initializes it
Definition: client_plugin.cc:619
struct st_mysql_client_plugin * mysql_load_plugin_v(struct MYSQL *mysql, const char *name, int type, int argc, va_list args)
loads a plugin and initializes it, taking va_list as an argument
Definition: client_plugin.cc:475
int mysql_plugin_get_option(struct st_mysql_client_plugin *plugin, const char *option, void *value)
get plugin options
Definition: client_plugin.cc:666
struct st_mysql_client_plugin * mysql_client_register_plugin(struct MYSQL *mysql, struct st_mysql_client_plugin *plugin)
adds a plugin structure to the list of loaded plugins
Definition: client_plugin.cc:397
int mysql_plugin_options(struct st_mysql_client_plugin *plugin, const char *option, const void *value)
set plugin options
Definition: client_plugin.cc:657
struct st_mysql_client_plugin * mysql_client_find_plugin(struct MYSQL *mysql, const char *name, int type)
finds an already loaded plugin by name, or loads it, if necessary
Definition: client_plugin.cc:630
#define MYSQL_CLIENT_PLUGIN_HEADER
Definition: client_plugin.h:100
static MYSQL * mysql
Definition: mysqldump.cc:147
Definition: instrumented_condition_variable.h:32
struct result result
Definition: result.h:34
This file defines constants and data structures that are the same for both client- and server-side au...
net_async_status
Definition: plugin_auth_common.h:136
required string type
Definition: replication_group_member_actions.proto:34
case opt name
Definition: sslopt-case.h:29
Provides plugin access to communication channel.
Definition: plugin_auth_common.h:146
Definition: client_plugin.h:123
enum net_async_status(* authenticate_user_nonblocking)(MYSQL_PLUGIN_VIO *vio, struct MYSQL *mysql, int *result)
Definition: client_plugin.h:126
MYSQL_CLIENT_PLUGIN_HEADER int(* authenticate_user)(MYSQL_PLUGIN_VIO *vio, struct MYSQL *mysql)
Definition: client_plugin.h:125
Definition: client_plugin.h:114