1struct st_mysql_client_plugin 2{ 3 int type; unsigned int interface_version; const char *name; const char *author; const char *desc; unsigned int version[3]; const char *license; void *mysql_api; int (*init)(char *, size_t, int, va_list); int (*deinit)(); int (*options)(const char *option, const void *); 4}; 5struct st_mysql; 6typedef struct st_plugin_vio_info 7{ 8 enum { MYSQL_VIO_INVALID, MYSQL_VIO_TCP, MYSQL_VIO_SOCKET, 9 MYSQL_VIO_PIPE, MYSQL_VIO_MEMORY } protocol; 10 int socket; 11} MYSQL_PLUGIN_VIO_INFO; 12typedef struct st_plugin_vio 13{ 14 int (*read_packet)(struct st_plugin_vio *vio, 15 unsigned char **buf); 16 int (*write_packet)(struct st_plugin_vio *vio, 17 const unsigned char *packet, 18 int packet_len); 19 void (*info)(struct st_plugin_vio *vio, struct st_plugin_vio_info *info); 20} MYSQL_PLUGIN_VIO; 21struct st_mysql_client_plugin_AUTHENTICATION 22{ 23 int type; unsigned int interface_version; const char *name; const char *author; const char *desc; unsigned int version[3]; const char *license; void *mysql_api; int (*init)(char *, size_t, int, va_list); int (*deinit)(); int (*options)(const char *option, const void *); 24 int (*authenticate_user)(MYSQL_PLUGIN_VIO *vio, struct st_mysql *mysql); 25}; 26struct st_mysql; 27typedef char *(*mysql_authentication_dialog_ask_t)(struct st_mysql *mysql, 28 int type, const char *prompt, char *buf, int buf_len); 29struct st_mysql_client_plugin * 30mysql_load_plugin(struct st_mysql *mysql, const char *name, int type, 31 int argc, ...); 32struct st_mysql_client_plugin * 33mysql_load_plugin_v(struct st_mysql *mysql, const char *name, int type, 34 int argc, va_list args); 35struct st_mysql_client_plugin * 36mysql_client_find_plugin(struct st_mysql *mysql, const char *name, int type); 37struct st_mysql_client_plugin * 38mysql_client_register_plugin(struct st_mysql *mysql, 39 struct st_mysql_client_plugin *plugin); 40int mysql_plugin_options(struct st_mysql_client_plugin *plugin, 41 const char *option, const void *value); 42