static int lua_proto_get_err_packet (lua_State *L) { size_t packet_len; const char *packet_str = luaL_checklstring(L, 1, &packet_len); network_mysqld_err_packet_t *err_packet; network_packet packet; GString s; int err = 0; s.str = (char *)packet_str; s.len = packet_len; packet.data = &s; packet.offset = 0; err_packet = network_mysqld_err_packet_new(); err = err || network_mysqld_proto_get_err_packet(&packet, err_packet); if (err) { network_mysqld_err_packet_free(err_packet); luaL_error(L, "%s: network_mysqld_proto_get_err_packet() failed", G_STRLOC); return 0; } lua_newtable(L); LUA_EXPORT_STR(err_packet, errmsg); LUA_EXPORT_STR(err_packet, sqlstate); LUA_EXPORT_INT(err_packet, errcode); network_mysqld_err_packet_free(err_packet); return 1; }
static int lua_sigar_netif_get_info(lua_State *L) { lua_sigar_netif_t *netif = (lua_sigar_netif_t *)luaL_checkudata(L, 1, "sigar_netif"); int err; const char *if_name = netif->netifs->netifs.data[netif->ndx]; sigar_net_interface_config_t usage; if (SIGAR_OK != (err = sigar_net_interface_config_get(netif->netifs->sigar, if_name, &usage))) { lua_pushnil(L); lua_pushstring(L, strerror(err)); return 2; } lua_newtable(L); #define DATA \ (&(usage)) LUA_EXPORT_STR(DATA, name); LUA_EXPORT_STR(DATA, type); LUA_EXPORT_ADDRESS(DATA, hwaddr); LUA_EXPORT_ADDRESS(DATA, address); LUA_EXPORT_ADDRESS(DATA, destination); LUA_EXPORT_ADDRESS(DATA, broadcast); LUA_EXPORT_ADDRESS(DATA, netmask); LUA_EXPORT_INT(DATA, flags); LUA_EXPORT_INT(DATA, mtu); LUA_EXPORT_INT(DATA, metric); #undef DATA return 1; }
static int lua_proto_get_stmt_prepare_packet (lua_State *L) { size_t packet_len; const char *packet_str = luaL_checklstring(L, 1, &packet_len); network_mysqld_stmt_prepare_packet_t *cmd; network_packet packet; GString s; int err = 0; s.str = (char *)packet_str; s.len = packet_len; packet.data = &s; packet.offset = 0; cmd = network_mysqld_stmt_prepare_packet_new(); err = err || network_mysqld_proto_get_stmt_prepare_packet(&packet, cmd); if (err) { network_mysqld_stmt_prepare_packet_free(cmd); luaL_error(L, "%s: network_mysqld_proto_get_stmt_prepare_packet() failed", G_STRLOC); return 0; } lua_newtable(L); LUA_EXPORT_STR(cmd, stmt_text); network_mysqld_stmt_prepare_packet_free(cmd); return 1; }
static int lua_proto_get_masterinfo_string (lua_State *L) { size_t packet_len; const char *packet_str = luaL_checklstring(L, 1, &packet_len); network_mysqld_masterinfo_t *info; network_packet packet; GString s; int err = 0; s.str = (char *)packet_str; s.len = packet_len; packet.data = &s; packet.offset = 0; info = network_mysqld_masterinfo_new(); err = err || network_mysqld_masterinfo_get(&packet, info); if (err) { network_mysqld_masterinfo_free(info); luaL_error(L, "%s: network_mysqld_masterinfo_get() failed", G_STRLOC); return 0; } lua_newtable(L); LUA_EXPORT_INT(info, master_lines); LUA_EXPORT_STR(info, master_log_file); LUA_EXPORT_INT(info, master_log_pos); LUA_EXPORT_STR(info, master_host); LUA_EXPORT_STR(info, master_user); LUA_EXPORT_STR(info, master_password); LUA_EXPORT_INT(info, master_port); LUA_EXPORT_INT(info, master_connect_retry); LUA_EXPORT_INT(info, master_ssl); LUA_EXPORT_STR(info, master_ssl_ca); LUA_EXPORT_STR(info, master_ssl_capath); LUA_EXPORT_STR(info, master_ssl_cert); LUA_EXPORT_STR(info, master_ssl_cipher); LUA_EXPORT_STR(info, master_ssl_key); if (info->master_lines >= 15) { LUA_EXPORT_INT(info, master_ssl_verify_server_cert); } network_mysqld_masterinfo_free(info); return 1; }
static int lua_sigar_who_get_who(lua_State *L) { lua_sigar_who_t *who = (lua_sigar_who_t *)luaL_checkudata(L, 1, "sigar_who"); int ndx = luaL_checkint(L, 2); if (ndx - 1 < 0 || ndx - 1 >= who->who.number) { luaL_error(L, ".who[%d] out of range: 1..%d", ndx, who->who.number); } lua_newtable(L); #define DATA \ (&(who->who.data[ndx - 1])) LUA_EXPORT_STR(DATA, user); LUA_EXPORT_STR(DATA, device); LUA_EXPORT_STR(DATA, host); LUA_EXPORT_INT(DATA, time); #undef DATA return 1; }
static int lua_proto_get_response_packet (lua_State *L) { size_t packet_len; const char *packet_str = luaL_checklstring(L, 1, &packet_len); guint32 server_capabilities = luaL_checkint(L, 2); network_mysqld_auth_response *auth_response; network_packet packet; GString s; int err = 0; s.str = (char *)packet_str; s.len = packet_len; packet.data = &s; packet.offset = 0; auth_response = network_mysqld_auth_response_new(server_capabilities); err = err || network_mysqld_proto_get_auth_response(&packet, auth_response); if (err) { network_mysqld_auth_response_free(auth_response); luaL_error(L, "%s: network_mysqld_proto_get_auth_response() failed", G_STRLOC); return 0; } lua_newtable(L); LUA_EXPORT_INT_TO(auth_response, client_capabilities, "capabilities"); LUA_EXPORT_INT(auth_response, server_capabilities); LUA_EXPORT_INT(auth_response, max_packet_size); LUA_EXPORT_INT(auth_response, charset); LUA_EXPORT_STR(auth_response, username); LUA_EXPORT_STR_TO(auth_response, auth_plugin_data, "response"); LUA_EXPORT_STR(auth_response, auth_plugin_name); LUA_EXPORT_STR(auth_response, database); network_mysqld_auth_response_free(auth_response); return 1; }
static int lua_proto_get_challenge_packet (lua_State *L) { size_t packet_len; const char *packet_str = luaL_checklstring(L, 1, &packet_len); network_mysqld_auth_challenge *auth_challenge; network_packet packet; GString s; int err = 0; s.str = (char *)packet_str; s.len = packet_len; packet.data = &s; packet.offset = 0; auth_challenge = network_mysqld_auth_challenge_new(); err = err || network_mysqld_proto_get_auth_challenge(&packet, auth_challenge); if (err) { network_mysqld_auth_challenge_free(auth_challenge); luaL_error(L, "%s: network_mysqld_proto_get_auth_challenge() failed", G_STRLOC); return 0; } lua_newtable(L); LUA_EXPORT_INT(auth_challenge, protocol_version); LUA_EXPORT_INT(auth_challenge, server_version); LUA_EXPORT_INT(auth_challenge, thread_id); LUA_EXPORT_INT(auth_challenge, capabilities); LUA_EXPORT_INT(auth_challenge, charset); LUA_EXPORT_INT(auth_challenge, server_status); LUA_EXPORT_STR_TO(auth_challenge, auth_plugin_data, "challenge"); LUA_EXPORT_STR(auth_challenge, auth_plugin_name); network_mysqld_auth_challenge_free(auth_challenge); return 1; }