MXS-1841 Compile all filters as C++

Minimal changes to make the files compile with a C++ compiler.
This commit is contained in:
Johan Wikman
2018-05-02 15:11:04 +03:00
parent 658329b648
commit aa1c956aa7
20 changed files with 114 additions and 65 deletions

View File

@ -1,18 +1,18 @@
add_subdirectory(binlogfilter)
add_subdirectory(cache) add_subdirectory(cache)
add_subdirectory(maxrows)
add_subdirectory(ccrfilter) add_subdirectory(ccrfilter)
add_subdirectory(dbfwfilter) add_subdirectory(dbfwfilter)
add_subdirectory(hintfilter) add_subdirectory(hintfilter)
add_subdirectory(insertstream)
add_subdirectory(luafilter) add_subdirectory(luafilter)
add_subdirectory(masking)
add_subdirectory(maxrows)
add_subdirectory(mqfilter) add_subdirectory(mqfilter)
add_subdirectory(namedserverfilter) add_subdirectory(namedserverfilter)
add_subdirectory(nullfilter) add_subdirectory(nullfilter)
add_subdirectory(qlafilter) add_subdirectory(qlafilter)
add_subdirectory(regexfilter) add_subdirectory(regexfilter)
add_subdirectory(tee) add_subdirectory(tee)
add_subdirectory(throttlefilter)
add_subdirectory(topfilter) add_subdirectory(topfilter)
add_subdirectory(tpmfilter) add_subdirectory(tpmfilter)
add_subdirectory(masking)
add_subdirectory(insertstream)
add_subdirectory(binlogfilter)
add_subdirectory(throttlefilter)

View File

@ -1,4 +1,4 @@
add_library(ccrfilter SHARED ccrfilter.c) add_library(ccrfilter SHARED ccrfilter.cc)
target_link_libraries(ccrfilter maxscale-common) target_link_libraries(ccrfilter maxscale-common)
set_target_properties(ccrfilter PROPERTIES VERSION "1.0.0") set_target_properties(ccrfilter PROPERTIES VERSION "1.0.0")
install_module(ccrfilter core) install_module(ccrfilter core)

View File

@ -119,6 +119,9 @@ typedef enum ccr_hint_value_t
static CCR_HINT_VALUE search_ccr_hint(GWBUF* buffer); static CCR_HINT_VALUE search_ccr_hint(GWBUF* buffer);
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -177,6 +180,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
/** /**
* Create an instance of the filter for a particular service * Create an instance of the filter for a particular service
* within MaxScale. * within MaxScale.
@ -190,7 +195,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
static MXS_FILTER * static MXS_FILTER *
createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params) createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params)
{ {
CCR_INSTANCE *my_instance = MXS_CALLOC(1, sizeof(CCR_INSTANCE)); CCR_INSTANCE *my_instance = static_cast<CCR_INSTANCE*>(MXS_CALLOC(1, sizeof(CCR_INSTANCE)));
if (my_instance) if (my_instance)
{ {
@ -237,7 +242,7 @@ static MXS_FILTER_SESSION *
newSession(MXS_FILTER *instance, MXS_SESSION *session) newSession(MXS_FILTER *instance, MXS_SESSION *session)
{ {
CCR_INSTANCE *my_instance = (CCR_INSTANCE *)instance; CCR_INSTANCE *my_instance = (CCR_INSTANCE *)instance;
CCR_SESSION *my_session = MXS_MALLOC(sizeof(CCR_SESSION)); CCR_SESSION *my_session = static_cast<CCR_SESSION*>(MXS_MALLOC(sizeof(CCR_SESSION)));
if (my_session) if (my_session)
{ {
@ -490,14 +495,14 @@ static CCR_HINT_VALUE search_ccr_hint(GWBUF* buffer)
while (hint && !found_ccr) while (hint && !found_ccr)
{ {
if (hint->type == HINT_PARAMETER && strcasecmp(hint->data, CCR) == 0) if (hint->type == HINT_PARAMETER && strcasecmp(static_cast<char*>(hint->data), CCR) == 0)
{ {
found_ccr = true; found_ccr = true;
if (strcasecmp(hint->value, "match") == 0) if (strcasecmp(static_cast<char*>(hint->value), "match") == 0)
{ {
rval = CCR_HINT_MATCH; rval = CCR_HINT_MATCH;
} }
else if (strcasecmp(hint->value, "ignore") == 0) else if (strcasecmp(static_cast<char*>(hint->value), "ignore") == 0)
{ {
rval = CCR_HINT_IGNORE; rval = CCR_HINT_IGNORE;
} }

View File

@ -1,4 +1,4 @@
add_library(hintfilter SHARED hintfilter.c hintparser.c) add_library(hintfilter SHARED hintfilter.cc hintparser.cc)
set_target_properties(hintfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${MAXSCALE_LIBDIR} VERSION "1.0.0") set_target_properties(hintfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${MAXSCALE_LIBDIR} VERSION "1.0.0")
target_link_libraries(hintfilter maxscale-common) target_link_libraries(hintfilter maxscale-common)
install_module(hintfilter core) install_module(hintfilter core)

View File

@ -36,6 +36,9 @@ static void diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *
static json_t* diagnostic_json(const MXS_FILTER *instance, const MXS_FILTER_SESSION *fsession); static json_t* diagnostic_json(const MXS_FILTER *instance, const MXS_FILTER_SESSION *fsession);
static uint64_t getCapabilities(MXS_FILTER* instance); static uint64_t getCapabilities(MXS_FILTER* instance);
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -83,6 +86,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
/** /**
* Create an instance of the filter for a particular service * Create an instance of the filter for a particular service
* within MaxScale. * within MaxScale.
@ -98,7 +103,7 @@ createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params)
{ {
HINT_INSTANCE *my_instance; HINT_INSTANCE *my_instance;
if ((my_instance = MXS_CALLOC(1, sizeof(HINT_INSTANCE))) != NULL) if ((my_instance = static_cast<HINT_INSTANCE*>(MXS_CALLOC(1, sizeof(HINT_INSTANCE)))) != NULL)
{ {
my_instance->sessions = 0; my_instance->sessions = 0;
} }
@ -118,7 +123,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session)
HINT_INSTANCE *my_instance = (HINT_INSTANCE *)instance; HINT_INSTANCE *my_instance = (HINT_INSTANCE *)instance;
HINT_SESSION *my_session; HINT_SESSION *my_session;
if ((my_session = MXS_CALLOC(1, sizeof(HINT_SESSION))) != NULL) if ((my_session = static_cast<HINT_SESSION*>(MXS_CALLOC(1, sizeof(HINT_SESSION)))) != NULL)
{ {
my_session->query_len = 0; my_session->query_len = 0;
my_session->request = NULL; my_session->request = NULL;

View File

@ -33,7 +33,7 @@
*/ */
struct struct
{ {
char *keyword; const char *keyword;
TOKEN_VALUE token; TOKEN_VALUE token;
} keywords[] = } keywords[] =
{ {
@ -49,7 +49,7 @@ struct
{ "master", TOK_MASTER}, { "master", TOK_MASTER},
{ "slave", TOK_SLAVE}, { "slave", TOK_SLAVE},
{ "server", TOK_SERVER}, { "server", TOK_SERVER},
{ NULL, 0} { NULL, static_cast<TOKEN_VALUE>(0)}
}; };
/** /**
HINT_TOKEN kwords[] = { HINT_TOKEN kwords[] = {
@ -600,7 +600,7 @@ hint_next_token(GWBUF **buf, char **ptr)
if (*ptr > (char *)((*buf)->end) && (*buf)->next) if (*ptr > (char *)((*buf)->end) && (*buf)->next)
{ {
*buf = (*buf)->next; *buf = (*buf)->next;
*ptr = (*buf)->start; *ptr = static_cast<char*>((*buf)->start);
} }
if (dest - word > 98) if (dest - word > 98)

View File

@ -1,4 +1,4 @@
add_library(insertstream SHARED insertstream.c) add_library(insertstream SHARED insertstream.cc)
target_link_libraries(insertstream maxscale-common mysqlcommon) target_link_libraries(insertstream maxscale-common mysqlcommon)
set_target_properties(insertstream PROPERTIES VERSION "1.0.0") set_target_properties(insertstream PROPERTIES VERSION "1.0.0")
install_module(insertstream core) install_module(insertstream core)

View File

@ -78,6 +78,9 @@ typedef struct
char target[MYSQL_TABLE_MAXLEN + MYSQL_DATABASE_MAXLEN + 1]; /**< Current target table */ char target[MYSQL_TABLE_MAXLEN + MYSQL_DATABASE_MAXLEN + 1]; /**< Current target table */
} DS_SESSION; } DS_SESSION;
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -128,6 +131,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
/** /**
* Free a insertstream instance. * Free a insertstream instance.
* @param instance instance to free * @param instance instance to free
@ -162,7 +167,7 @@ createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params)
{ {
DS_INSTANCE *my_instance; DS_INSTANCE *my_instance;
if ((my_instance = MXS_CALLOC(1, sizeof(DS_INSTANCE))) != NULL) if ((my_instance = static_cast<DS_INSTANCE*>(MXS_CALLOC(1, sizeof(DS_INSTANCE)))) != NULL)
{ {
my_instance->source = config_copy_string(params, "source"); my_instance->source = config_copy_string(params, "source");
my_instance->user = config_copy_string(params, "user"); my_instance->user = config_copy_string(params, "user");
@ -184,7 +189,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session)
DS_INSTANCE *my_instance = (DS_INSTANCE *) instance; DS_INSTANCE *my_instance = (DS_INSTANCE *) instance;
DS_SESSION *my_session; DS_SESSION *my_session;
if ((my_session = MXS_CALLOC(1, sizeof(DS_SESSION))) != NULL) if ((my_session = static_cast<DS_SESSION*>(MXS_CALLOC(1, sizeof(DS_SESSION)))) != NULL)
{ {
my_session->target[0] = '\0'; my_session->target[0] = '\0';
my_session->state = DS_STREAM_CLOSED; my_session->state = DS_STREAM_CLOSED;
@ -354,7 +359,7 @@ static int32_t routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWB
if (send_empty) if (send_empty)
{ {
char empty_packet[] = {0, 0, 0, packet_num}; char empty_packet[] = {0, 0, 0, static_cast<char>(packet_num)};
queue = gwbuf_alloc_and_load(sizeof(empty_packet), &empty_packet[0]); queue = gwbuf_alloc_and_load(sizeof(empty_packet), &empty_packet[0]);
} }
} }
@ -418,7 +423,7 @@ static GWBUF* convert_to_stream(GWBUF* buffer, uint8_t packet_num)
buffer = gwbuf_consume(buffer, (modptr - dataptr) - MYSQL_HEADER_LEN); buffer = gwbuf_consume(buffer, (modptr - dataptr) - MYSQL_HEADER_LEN);
char* header_start = (char*)GWBUF_DATA(buffer); char* header_start = (char*)GWBUF_DATA(buffer);
char* store_end = dataptr = header_start + MYSQL_HEADER_LEN; char* store_end = dataptr = header_start + MYSQL_HEADER_LEN;
char* end = buffer->end; char* end = static_cast<char*>(buffer->end);
char* value; char* value;
uint32_t valuesize; uint32_t valuesize;
@ -622,7 +627,7 @@ static bool extract_insert_target(GWBUF *buffer, char* target, int len)
if (tables) if (tables)
{ {
for (int i = 0; i < (size_t)n_tables; ++i) for (int i = 0; i < n_tables; ++i)
{ {
MXS_FREE(tables[i]); MXS_FREE(tables[i]);
} }

View File

@ -2,7 +2,7 @@ if (BUILD_LUAFILTER)
find_package(Lua) find_package(Lua)
if(LUA_FOUND) if(LUA_FOUND)
include_directories(${LUA_INCLUDE_DIR}) include_directories(${LUA_INCLUDE_DIR})
add_library(luafilter SHARED luafilter.c) add_library(luafilter SHARED luafilter.cc)
set_target_properties(luafilter PROPERTIES VERSION "1.0.0") set_target_properties(luafilter PROPERTIES VERSION "1.0.0")
target_link_libraries(luafilter maxscale-common ${LUA_LIBRARIES}) target_link_libraries(luafilter maxscale-common ${LUA_LIBRARIES})
install_module(luafilter experimental) install_module(luafilter experimental)

View File

@ -67,6 +67,9 @@ static void diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *
static json_t* diagnostic_json(const MXS_FILTER *instance, const MXS_FILTER_SESSION *fsession); static json_t* diagnostic_json(const MXS_FILTER *instance, const MXS_FILTER_SESSION *fsession);
static uint64_t getCapabilities(MXS_FILTER *instance); static uint64_t getCapabilities(MXS_FILTER *instance);
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -116,6 +119,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
static int id_pool = 0; static int id_pool = 0;
static GWBUF *current_global_query = NULL; static GWBUF *current_global_query = NULL;

View File

@ -1,4 +1,4 @@
add_library(maxrows SHARED maxrows.c) add_library(maxrows SHARED maxrows.cc)
target_link_libraries(maxrows maxscale-common) target_link_libraries(maxrows maxscale-common)
set_target_properties(maxrows PROPERTIES VERSION "1.0.0") set_target_properties(maxrows PROPERTIES VERSION "1.0.0")
set_target_properties(maxrows PROPERTIES LINK_FLAGS -Wl,-z,defs) set_target_properties(maxrows PROPERTIES LINK_FLAGS -Wl,-z,defs)

View File

@ -82,6 +82,9 @@ static const MXS_ENUM_VALUE return_option_values[] =
/* Global symbols of the Module */ /* Global symbols of the Module */
extern "C"
{
/** /**
* The module entry point function, called when the module is loaded. * The module entry point function, called when the module is loaded.
* *
@ -148,6 +151,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
}; };
}
/* Implementation */ /* Implementation */
typedef struct maxrows_config typedef struct maxrows_config
@ -233,7 +238,7 @@ static MXS_FILTER *createInstance(const char *name,
char **options, char **options,
MXS_CONFIG_PARAMETER *params) MXS_CONFIG_PARAMETER *params)
{ {
MAXROWS_INSTANCE *cinstance = MXS_CALLOC(1, sizeof(MAXROWS_INSTANCE)); MAXROWS_INSTANCE *cinstance = static_cast<MAXROWS_INSTANCE*>(MXS_CALLOC(1, sizeof(MAXROWS_INSTANCE)));
if (cinstance) if (cinstance)
{ {
@ -242,9 +247,10 @@ static MXS_FILTER *createInstance(const char *name,
"max_resultset_rows"); "max_resultset_rows");
cinstance->config.max_resultset_size = config_get_size(params, cinstance->config.max_resultset_size = config_get_size(params,
"max_resultset_size"); "max_resultset_size");
cinstance->config.m_return = config_get_enum(params, cinstance->config.m_return =
static_cast<maxrows_return_mode>(config_get_enum(params,
"max_resultset_return", "max_resultset_return",
return_option_values); return_option_values));
cinstance->config.debug = config_get_integer(params, "debug"); cinstance->config.debug = config_get_integer(params, "debug");
} }
@ -873,6 +879,7 @@ static int handle_rows(MAXROWS_SESSION_DATA *csdata, GWBUF* buffer, size_t extra
// We have at least one complete packet and we can process the command byte. // We have at least one complete packet and we can process the command byte.
int command = (int)MYSQL_GET_COMMAND(header); int command = (int)MYSQL_GET_COMMAND(header);
int flags = 0;
switch (command) switch (command)
{ {
@ -933,7 +940,7 @@ static int handle_rows(MAXROWS_SESSION_DATA *csdata, GWBUF* buffer, size_t extra
break; break;
} }
int flags = gw_mysql_get_byte2(header + MAXROWS_MYSQL_EOF_PACKET_FLAGS_OFFSET); flags = gw_mysql_get_byte2(header + MAXROWS_MYSQL_EOF_PACKET_FLAGS_OFFSET);
// Check whether the EOF terminates the resultset or indicates MORE_RESULTS // Check whether the EOF terminates the resultset or indicates MORE_RESULTS
if (!(flags & SERVER_MORE_RESULTS_EXIST)) if (!(flags & SERVER_MORE_RESULTS_EXIST))
@ -1093,7 +1100,7 @@ static int send_eof_upstream(MAXROWS_SESSION_DATA *csdata)
size_t offset = gwbuf_length(csdata->res.column_defs); size_t offset = gwbuf_length(csdata->res.column_defs);
/* Data to send + added EOF */ /* Data to send + added EOF */
uint8_t *new_result = MXS_MALLOC(offset + MYSQL_EOF_PACKET_LEN); uint8_t *new_result = static_cast<uint8_t*>(MXS_MALLOC(offset + MYSQL_EOF_PACKET_LEN));
if (new_result) if (new_result)
{ {
@ -1197,7 +1204,7 @@ static int send_error_upstream(MAXROWS_SESSION_DATA *csdata)
GWBUF *err_pkt; GWBUF *err_pkt;
uint8_t hdr_err[MYSQL_ERR_PACKET_MIN_LEN]; uint8_t hdr_err[MYSQL_ERR_PACKET_MIN_LEN];
unsigned long bytes_copied; unsigned long bytes_copied;
char *err_msg_prefix = "Row limit/size exceeded for query: "; const char *err_msg_prefix = "Row limit/size exceeded for query: ";
int err_prefix_len = strlen(err_msg_prefix); int err_prefix_len = strlen(err_msg_prefix);
unsigned long pkt_len = MYSQL_ERR_PACKET_MIN_LEN + err_prefix_len; unsigned long pkt_len = MYSQL_ERR_PACKET_MIN_LEN + err_prefix_len;
unsigned long sql_len = gwbuf_length(csdata->input_sql) - unsigned long sql_len = gwbuf_length(csdata->input_sql) -

View File

@ -1,7 +1,7 @@
find_package(RabbitMQ) find_package(RabbitMQ)
if(RABBITMQ_FOUND) if(RABBITMQ_FOUND)
include_directories(${RABBITMQ_HEADERS}) include_directories(${RABBITMQ_HEADERS})
add_library(mqfilter SHARED mqfilter.c) add_library(mqfilter SHARED mqfilter.cc)
target_link_libraries(mqfilter maxscale-common ${RABBITMQ_LIBRARIES}) target_link_libraries(mqfilter maxscale-common ${RABBITMQ_LIBRARIES})
add_dependencies(mqfilter pcre2) add_dependencies(mqfilter pcre2)
set_target_properties(mqfilter PROPERTIES VERSION "1.0.2") set_target_properties(mqfilter PROPERTIES VERSION "1.0.2")

View File

@ -249,6 +249,9 @@ static const MXS_ENUM_VALUE trigger_values[] =
{NULL} {NULL}
}; };
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -315,6 +318,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
/** /**
* Internal function used to initialize the connection to * Internal function used to initialize the connection to
* the RabbitMQ server. Also used to reconnect to the server * the RabbitMQ server. Also used to reconnect to the server
@ -495,7 +500,7 @@ char** parse_optstr(const char* str, const char* tok, int* szstore)
size++; size++;
} }
char **arr = MXS_MALLOC(sizeof(char*) * size); char **arr = static_cast<char**>(MXS_MALLOC(sizeof(char*) * size));
MXS_ABORT_IF_NULL(arr); MXS_ABORT_IF_NULL(arr);
*szstore = size; *szstore = size;
@ -523,7 +528,7 @@ char** parse_optstr(const char* str, const char* tok, int* szstore)
static MXS_FILTER * static MXS_FILTER *
createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params) createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params)
{ {
MQ_INSTANCE *my_instance = MXS_CALLOC(1, sizeof(MQ_INSTANCE)); MQ_INSTANCE *my_instance = static_cast<MQ_INSTANCE*>(MXS_CALLOC(1, sizeof(MQ_INSTANCE)));
if (my_instance) if (my_instance)
{ {
@ -543,7 +548,8 @@ createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params)
my_instance->rconn_intv = 1; my_instance->rconn_intv = 1;
my_instance->port = config_get_integer(params, "port"); my_instance->port = config_get_integer(params, "port");
my_instance->trgtype = config_get_enum(params, "logging_trigger", trigger_values); my_instance->trgtype =
static_cast<log_trigger_t>(config_get_enum(params, "logging_trigger", trigger_values));
my_instance->log_all = config_get_bool(params, "logging_log_all"); my_instance->log_all = config_get_bool(params, "logging_log_all");
my_instance->strict_logging = config_get_bool(params, "logging_strict"); my_instance->strict_logging = config_get_bool(params, "logging_strict");
my_instance->hostname = MXS_STRDUP_A(config_get_string(params, "hostname")); my_instance->hostname = MXS_STRDUP_A(config_get_string(params, "hostname"));
@ -773,7 +779,7 @@ bool sendMessage(void* data)
void pushMessage(MQ_INSTANCE *instance, amqp_basic_properties_t* prop, char* msg) void pushMessage(MQ_INSTANCE *instance, amqp_basic_properties_t* prop, char* msg)
{ {
mqmessage* newmsg = MXS_CALLOC(1, sizeof(mqmessage)); mqmessage* newmsg = static_cast<mqmessage*>(MXS_CALLOC(1, sizeof(mqmessage)));
if (newmsg) if (newmsg)
{ {
newmsg->msg = msg; newmsg->msg = msg;
@ -823,7 +829,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session)
MQ_SESSION *my_session; MQ_SESSION *my_session;
if ((my_session = MXS_CALLOC(1, sizeof(MQ_SESSION))) != NULL) if ((my_session = static_cast<MQ_SESSION*>(MXS_CALLOC(1, sizeof(MQ_SESSION)))) != NULL)
{ {
my_session->was_query = false; my_session->was_query = false;
my_session->uid = NULL; my_session->uid = NULL;
@ -945,16 +951,16 @@ routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue)
amqp_basic_properties_t *prop; amqp_basic_properties_t *prop;
/**The user is changing databases*/ /**The user is changing databases*/
if (*((char*) (queue->start + 4)) == 0x02) if (*(static_cast<char*>(queue->start) + 4) == 0x02)
{ {
if (my_session->db) if (my_session->db)
{ {
MXS_FREE(my_session->db); MXS_FREE(my_session->db);
} }
plen = pktlen(queue->start); plen = pktlen(queue->start);
my_session->db = MXS_CALLOC(plen, sizeof(char)); my_session->db = static_cast<char*>(MXS_CALLOC(plen, sizeof(char)));
MXS_ABORT_IF_NULL(my_session->db); MXS_ABORT_IF_NULL(my_session->db);
memcpy(my_session->db, queue->start + 5, plen - 1); memcpy(my_session->db, static_cast<char*>(queue->start) + 5, plen - 1);
} }
if (modutil_is_SQL(queue)) if (modutil_is_SQL(queue))
@ -1167,7 +1173,7 @@ routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue)
if (my_session->uid == NULL) if (my_session->uid == NULL)
{ {
my_session->uid = MXS_CALLOC(33, sizeof(char)); my_session->uid = static_cast<char*>(MXS_CALLOC(33, sizeof(char)));
if (my_session->uid) if (my_session->uid)
{ {
@ -1179,8 +1185,8 @@ routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue)
{ {
my_session->was_query = true; my_session->was_query = true;
prop = static_cast<amqp_basic_properties_t*>(MXS_MALLOC(sizeof(amqp_basic_properties_t)));
if ((prop = MXS_MALLOC(sizeof(amqp_basic_properties_t)))) if (prop)
{ {
prop->_flags = AMQP_BASIC_CONTENT_TYPE_FLAG | prop->_flags = AMQP_BASIC_CONTENT_TYPE_FLAG |
AMQP_BASIC_DELIVERY_MODE_FLAG | AMQP_BASIC_DELIVERY_MODE_FLAG |
@ -1207,7 +1213,7 @@ routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue)
sprintf(t_buf, "%lu|", (unsigned long) time(NULL)); sprintf(t_buf, "%lu|", (unsigned long) time(NULL));
int qlen = strnlen(canon_q, length) + strnlen(t_buf, 128); int qlen = strnlen(canon_q, length) + strnlen(t_buf, 128);
combined = MXS_MALLOC((qlen + 1) * sizeof(char)); combined = static_cast<char*>(MXS_MALLOC((qlen + 1) * sizeof(char)));
MXS_ABORT_IF_NULL(combined); MXS_ABORT_IF_NULL(combined);
strcpy(combined, t_buf); strcpy(combined, t_buf);
strncat(combined, canon_q, length); strncat(combined, canon_q, length);
@ -1303,7 +1309,7 @@ unsigned int consume_leitoi(unsigned char** c)
char* consume_lestr(unsigned char** c) char* consume_lestr(unsigned char** c)
{ {
unsigned int slen = consume_leitoi(c); unsigned int slen = consume_leitoi(c);
char *str = MXS_CALLOC((slen + 1), sizeof(char)); char *str = static_cast<char*>(MXS_CALLOC((slen + 1), sizeof(char)));
if (str) if (str)
{ {
memcpy(str, *c, slen); memcpy(str, *c, slen);
@ -1354,7 +1360,7 @@ static int clientReply(MXS_FILTER* instance, MXS_FILTER_SESSION *session, GWBUF
if (pkt_len > 0) if (pkt_len > 0)
{ {
if ((prop = MXS_MALLOC(sizeof(amqp_basic_properties_t)))) if ((prop = static_cast<amqp_basic_properties_t*>(MXS_MALLOC(sizeof(amqp_basic_properties_t)))))
{ {
prop->_flags = AMQP_BASIC_CONTENT_TYPE_FLAG | prop->_flags = AMQP_BASIC_CONTENT_TYPE_FLAG |
AMQP_BASIC_DELIVERY_MODE_FLAG | AMQP_BASIC_DELIVERY_MODE_FLAG |
@ -1366,7 +1372,7 @@ static int clientReply(MXS_FILTER* instance, MXS_FILTER_SESSION *session, GWBUF
prop->message_id = amqp_cstring_bytes("reply"); prop->message_id = amqp_cstring_bytes("reply");
} }
combined = MXS_CALLOC(GWBUF_LENGTH(reply) + 256, sizeof(char)); combined = static_cast<char*>(MXS_CALLOC(GWBUF_LENGTH(reply) + 256, sizeof(char)));
MXS_ABORT_IF_NULL(combined); MXS_ABORT_IF_NULL(combined);
memset(t_buf, 0, 128); memset(t_buf, 0, 128);
@ -1412,7 +1418,7 @@ static int clientReply(MXS_FILTER* instance, MXS_FILTER_SESSION *session, GWBUF
{ {
/**ERR packet*/ /**ERR packet*/
sprintf(combined + offset, "ERROR - message: %.*s", sprintf(combined + offset, "ERROR - message: %.*s",
(int) (reply->end - ((void*) (reply->sbuf->data + 13))), (int) (static_cast<unsigned char*>(reply->end) - (reply->sbuf->data + 13)),
(char *) reply->sbuf->data + 13); (char *) reply->sbuf->data + 13);
packet_ok = 1; packet_ok = 1;
was_last = 1; was_last = 1;
@ -1435,7 +1441,7 @@ static int clientReply(MXS_FILTER* instance, MXS_FILTER_SESSION *session, GWBUF
char *tmp; char *tmp;
unsigned int col_cnt = consume_leitoi(&rset); unsigned int col_cnt = consume_leitoi(&rset);
tmp = MXS_CALLOC(256, sizeof(char)); tmp = static_cast<char*>(MXS_CALLOC(256, sizeof(char)));
MXS_ABORT_IF_NULL(tmp); MXS_ABORT_IF_NULL(tmp);
sprintf(tmp, "Columns: %d", col_cnt); sprintf(tmp, "Columns: %d", col_cnt);
memcpy(combined + offset, tmp, strnlen(tmp, 256)); memcpy(combined + offset, tmp, strnlen(tmp, 256));

View File

@ -1,4 +1,4 @@
add_library(regexfilter SHARED regexfilter.c) add_library(regexfilter SHARED regexfilter.cc)
target_link_libraries(regexfilter maxscale-common) target_link_libraries(regexfilter maxscale-common)
add_dependencies(regexfilter pcre2) add_dependencies(regexfilter pcre2)
set_target_properties(regexfilter PROPERTIES VERSION "1.1.0") set_target_properties(regexfilter PROPERTIES VERSION "1.1.0")

View File

@ -82,7 +82,7 @@ typedef struct
int active; /* Is filter active */ int active; /* Is filter active */
} REGEX_SESSION; } REGEX_SESSION;
void log_match(REGEX_INSTANCE* inst, char* re, char* old, char* new); void log_match(REGEX_INSTANCE* inst, char* re, char* old, char* newsql);
void log_nomatch(REGEX_INSTANCE* inst, char* re, char* old); void log_nomatch(REGEX_INSTANCE* inst, char* re, char* old);
static const MXS_ENUM_VALUE option_values[] = static const MXS_ENUM_VALUE option_values[] =
@ -92,6 +92,9 @@ static const MXS_ENUM_VALUE option_values[] =
{NULL} {NULL}
}; };
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -146,6 +149,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
/** /**
* Free a regexfilter instance. * Free a regexfilter instance.
* @param instance instance to free * @param instance instance to free
@ -185,7 +190,7 @@ void free_instance(REGEX_INSTANCE *instance)
static MXS_FILTER * static MXS_FILTER *
createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params) createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params)
{ {
REGEX_INSTANCE *my_instance = MXS_CALLOC(1, sizeof(REGEX_INSTANCE)); REGEX_INSTANCE *my_instance = static_cast<REGEX_INSTANCE*>(MXS_CALLOC(1, sizeof(REGEX_INSTANCE)));
if (my_instance) if (my_instance)
{ {
@ -256,7 +261,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session)
REGEX_SESSION *my_session; REGEX_SESSION *my_session;
const char *remote, *user; const char *remote, *user;
if ((my_session = MXS_CALLOC(1, sizeof(REGEX_SESSION))) != NULL) if ((my_session = static_cast<REGEX_SESSION*>(MXS_CALLOC(1, sizeof(REGEX_SESSION)))) != NULL)
{ {
my_session->no_change = 0; my_session->no_change = 0;
my_session->replacements = 0; my_session->replacements = 0;
@ -467,7 +472,7 @@ regex_replace(const char *sql, pcre2_code *re, pcre2_match_data *match_data, con
if (pcre2_match(re, (PCRE2_SPTR) sql, PCRE2_ZERO_TERMINATED, 0, 0, match_data, NULL) > 0) if (pcre2_match(re, (PCRE2_SPTR) sql, PCRE2_ZERO_TERMINATED, 0, 0, match_data, NULL) > 0)
{ {
result_size = strlen(sql) + strlen(replace); result_size = strlen(sql) + strlen(replace);
result = MXS_MALLOC(result_size); result = static_cast<char*>(MXS_MALLOC(result_size));
size_t result_size_tmp = result_size; size_t result_size_tmp = result_size;
while (result && while (result &&
@ -478,7 +483,7 @@ regex_replace(const char *sql, pcre2_code *re, pcre2_match_data *match_data, con
{ {
result_size_tmp = 1.5 * result_size; result_size_tmp = 1.5 * result_size;
char *tmp; char *tmp;
if ((tmp = MXS_REALLOC(result, result_size_tmp)) == NULL) if ((tmp = static_cast<char*>(MXS_REALLOC(result, result_size_tmp))) == NULL)
{ {
MXS_FREE(result); MXS_FREE(result);
result = NULL; result = NULL;
@ -498,16 +503,16 @@ regex_replace(const char *sql, pcre2_code *re, pcre2_match_data *match_data, con
* @param old Old SQL statement * @param old Old SQL statement
* @param new New SQL statement * @param new New SQL statement
*/ */
void log_match(REGEX_INSTANCE* inst, char* re, char* old, char* new) void log_match(REGEX_INSTANCE* inst, char* re, char* old, char* newsql)
{ {
if (inst->logfile) if (inst->logfile)
{ {
fprintf(inst->logfile, "Matched %s: [%s] -> [%s]\n", re, old, new); fprintf(inst->logfile, "Matched %s: [%s] -> [%s]\n", re, old, newsql);
fflush(inst->logfile); fflush(inst->logfile);
} }
if (inst->log_trace) if (inst->log_trace)
{ {
MXS_INFO("Match %s: [%s] -> [%s]", re, old, new); MXS_INFO("Match %s: [%s] -> [%s]", re, old, newsql);
} }
} }

View File

@ -1,4 +1,4 @@
add_library(topfilter SHARED topfilter.c) add_library(topfilter SHARED topfilter.cc)
target_link_libraries(topfilter maxscale-common) target_link_libraries(topfilter maxscale-common)
set_target_properties(topfilter PROPERTIES VERSION "1.0.1") set_target_properties(topfilter PROPERTIES VERSION "1.0.1")
install_module(topfilter core) install_module(topfilter core)

View File

@ -126,6 +126,9 @@ static const MXS_ENUM_VALUE option_values[] =
{NULL} {NULL}
}; };
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -185,6 +188,9 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
/** /**
* Create an instance of the filter for a particular service * Create an instance of the filter for a particular service
* within MaxScale. * within MaxScale.
@ -276,7 +282,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session)
int i; int i;
const char *remote, *user; const char *remote, *user;
if ((my_session = MXS_CALLOC(1, sizeof(TOPN_SESSION))) != NULL) if ((my_session = static_cast<TOPN_SESSION*>(MXS_CALLOC(1, sizeof(TOPN_SESSION)))) != NULL)
{ {
if ((my_session->filename = if ((my_session->filename =
(char *) MXS_MALLOC(strlen(my_instance->filebase) + 20)) (char *) MXS_MALLOC(strlen(my_instance->filebase) + 20))

View File

@ -1,4 +1,4 @@
add_library(tpmfilter SHARED tpmfilter.c) add_library(tpmfilter SHARED tpmfilter.cc)
target_link_libraries(tpmfilter maxscale-common) target_link_libraries(tpmfilter maxscale-common)
set_target_properties(tpmfilter PROPERTIES VERSION "1.0.0") set_target_properties(tpmfilter PROPERTIES VERSION "1.0.0")
install_module(tpmfilter experimental) install_module(tpmfilter experimental)

View File

@ -67,7 +67,7 @@
/* The maximum size for query statements in a transaction (64MB) */ /* The maximum size for query statements in a transaction (64MB) */
static size_t sql_size_limit = 64 * 1024 * 1024; static size_t sql_size_limit = 64 * 1024 * 1024;
/* The size of the buffer for recording latency of individual statements */ /* The size of the buffer for recording latency of individual statements */
static size_t latency_buf_size = 64 * 1024; static int latency_buf_size = 64 * 1024;
static const int default_sql_size = 4 * 1024; static const int default_sql_size = 4 * 1024;
#define DEFAULT_QUERY_DELIMITER "@@@" #define DEFAULT_QUERY_DELIMITER "@@@"
@ -140,6 +140,9 @@ typedef struct
size_t max_sql_size; size_t max_sql_size;
} TPM_SESSION; } TPM_SESSION;
extern "C"
{
/** /**
* The module entry point routine. It is this routine that * The module entry point routine. It is this routine that
* must populate the structure that is referred to as the * must populate the structure that is referred to as the
@ -193,6 +196,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
return &info; return &info;
} }
}
/** /**
* Create an instance of the filter for a particular service * Create an instance of the filter for a particular service
* within MaxScale. * within MaxScale.
@ -205,7 +210,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
static MXS_FILTER * static MXS_FILTER *
createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params) createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params)
{ {
TPM_INSTANCE *my_instance = MXS_CALLOC(1, sizeof(TPM_INSTANCE)); TPM_INSTANCE *my_instance = static_cast<TPM_INSTANCE*>(MXS_CALLOC(1, sizeof(TPM_INSTANCE)));
if (my_instance) if (my_instance)
{ {
@ -310,7 +315,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session)
int i; int i;
const char *remote, *user; const char *remote, *user;
if ((my_session = MXS_CALLOC(1, sizeof(TPM_SESSION))) != NULL) if ((my_session = static_cast<TPM_SESSION*>(MXS_CALLOC(1, sizeof(TPM_SESSION)))) != NULL)
{ {
atomic_add(&my_instance->sessions, 1); atomic_add(&my_instance->sessions, 1);