diff --git a/server/modules/filter/CMakeLists.txt b/server/modules/filter/CMakeLists.txt index 647d117e8..a4bc9048f 100644 --- a/server/modules/filter/CMakeLists.txt +++ b/server/modules/filter/CMakeLists.txt @@ -1,18 +1,18 @@ +add_subdirectory(binlogfilter) add_subdirectory(cache) -add_subdirectory(maxrows) add_subdirectory(ccrfilter) add_subdirectory(dbfwfilter) add_subdirectory(hintfilter) +add_subdirectory(insertstream) add_subdirectory(luafilter) +add_subdirectory(masking) +add_subdirectory(maxrows) add_subdirectory(mqfilter) add_subdirectory(namedserverfilter) add_subdirectory(nullfilter) add_subdirectory(qlafilter) add_subdirectory(regexfilter) add_subdirectory(tee) +add_subdirectory(throttlefilter) add_subdirectory(topfilter) add_subdirectory(tpmfilter) -add_subdirectory(masking) -add_subdirectory(insertstream) -add_subdirectory(binlogfilter) -add_subdirectory(throttlefilter) diff --git a/server/modules/filter/ccrfilter/CMakeLists.txt b/server/modules/filter/ccrfilter/CMakeLists.txt index 672688725..afcc04f8f 100644 --- a/server/modules/filter/ccrfilter/CMakeLists.txt +++ b/server/modules/filter/ccrfilter/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(ccrfilter SHARED ccrfilter.c) +add_library(ccrfilter SHARED ccrfilter.cc) target_link_libraries(ccrfilter maxscale-common) set_target_properties(ccrfilter PROPERTIES VERSION "1.0.0") install_module(ccrfilter core) diff --git a/server/modules/filter/ccrfilter/ccrfilter.c b/server/modules/filter/ccrfilter/ccrfilter.cc similarity index 97% rename from server/modules/filter/ccrfilter/ccrfilter.c rename to server/modules/filter/ccrfilter/ccrfilter.cc index 75437d8f7..86dc97d66 100644 --- a/server/modules/filter/ccrfilter/ccrfilter.c +++ b/server/modules/filter/ccrfilter/ccrfilter.cc @@ -119,6 +119,9 @@ typedef enum ccr_hint_value_t static CCR_HINT_VALUE search_ccr_hint(GWBUF* buffer); +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -177,6 +180,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } +} + /** * Create an instance of the filter for a particular service * within MaxScale. @@ -190,7 +195,7 @@ MXS_MODULE* MXS_CREATE_MODULE() static MXS_FILTER * 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(MXS_CALLOC(1, sizeof(CCR_INSTANCE))); if (my_instance) { @@ -237,7 +242,7 @@ static MXS_FILTER_SESSION * newSession(MXS_FILTER *instance, MXS_SESSION *session) { CCR_INSTANCE *my_instance = (CCR_INSTANCE *)instance; - CCR_SESSION *my_session = MXS_MALLOC(sizeof(CCR_SESSION)); + CCR_SESSION *my_session = static_cast(MXS_MALLOC(sizeof(CCR_SESSION))); if (my_session) { @@ -490,14 +495,14 @@ static CCR_HINT_VALUE search_ccr_hint(GWBUF* buffer) while (hint && !found_ccr) { - if (hint->type == HINT_PARAMETER && strcasecmp(hint->data, CCR) == 0) + if (hint->type == HINT_PARAMETER && strcasecmp(static_cast(hint->data), CCR) == 0) { found_ccr = true; - if (strcasecmp(hint->value, "match") == 0) + if (strcasecmp(static_cast(hint->value), "match") == 0) { rval = CCR_HINT_MATCH; } - else if (strcasecmp(hint->value, "ignore") == 0) + else if (strcasecmp(static_cast(hint->value), "ignore") == 0) { rval = CCR_HINT_IGNORE; } diff --git a/server/modules/filter/hintfilter/CMakeLists.txt b/server/modules/filter/hintfilter/CMakeLists.txt index 7bd06705b..2b01b8826 100644 --- a/server/modules/filter/hintfilter/CMakeLists.txt +++ b/server/modules/filter/hintfilter/CMakeLists.txt @@ -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") target_link_libraries(hintfilter maxscale-common) install_module(hintfilter core) diff --git a/server/modules/filter/hintfilter/hintfilter.c b/server/modules/filter/hintfilter/hintfilter.cc similarity index 97% rename from server/modules/filter/hintfilter/hintfilter.c rename to server/modules/filter/hintfilter/hintfilter.cc index 87541e148..ea285cc0c 100644 --- a/server/modules/filter/hintfilter/hintfilter.c +++ b/server/modules/filter/hintfilter/hintfilter.cc @@ -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 uint64_t getCapabilities(MXS_FILTER* instance); +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -83,6 +86,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } +} + /** * Create an instance of the filter for a particular service * within MaxScale. @@ -98,7 +103,7 @@ createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params) { HINT_INSTANCE *my_instance; - if ((my_instance = MXS_CALLOC(1, sizeof(HINT_INSTANCE))) != NULL) + if ((my_instance = static_cast(MXS_CALLOC(1, sizeof(HINT_INSTANCE)))) != NULL) { my_instance->sessions = 0; } @@ -118,7 +123,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session) HINT_INSTANCE *my_instance = (HINT_INSTANCE *)instance; HINT_SESSION *my_session; - if ((my_session = MXS_CALLOC(1, sizeof(HINT_SESSION))) != NULL) + if ((my_session = static_cast(MXS_CALLOC(1, sizeof(HINT_SESSION)))) != NULL) { my_session->query_len = 0; my_session->request = NULL; diff --git a/server/modules/filter/hintfilter/hintparser.c b/server/modules/filter/hintfilter/hintparser.cc similarity index 99% rename from server/modules/filter/hintfilter/hintparser.c rename to server/modules/filter/hintfilter/hintparser.cc index f0dd24712..f4936b0a4 100644 --- a/server/modules/filter/hintfilter/hintparser.c +++ b/server/modules/filter/hintfilter/hintparser.cc @@ -33,7 +33,7 @@ */ struct { - char *keyword; + const char *keyword; TOKEN_VALUE token; } keywords[] = { @@ -49,7 +49,7 @@ struct { "master", TOK_MASTER}, { "slave", TOK_SLAVE}, { "server", TOK_SERVER}, - { NULL, 0} + { NULL, static_cast(0)} }; /** HINT_TOKEN kwords[] = { @@ -600,7 +600,7 @@ hint_next_token(GWBUF **buf, char **ptr) if (*ptr > (char *)((*buf)->end) && (*buf)->next) { *buf = (*buf)->next; - *ptr = (*buf)->start; + *ptr = static_cast((*buf)->start); } if (dest - word > 98) diff --git a/server/modules/filter/insertstream/CMakeLists.txt b/server/modules/filter/insertstream/CMakeLists.txt index 54dd18349..88044a863 100644 --- a/server/modules/filter/insertstream/CMakeLists.txt +++ b/server/modules/filter/insertstream/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(insertstream SHARED insertstream.c) +add_library(insertstream SHARED insertstream.cc) target_link_libraries(insertstream maxscale-common mysqlcommon) set_target_properties(insertstream PROPERTIES VERSION "1.0.0") install_module(insertstream core) diff --git a/server/modules/filter/insertstream/insertstream.c b/server/modules/filter/insertstream/insertstream.cc similarity index 98% rename from server/modules/filter/insertstream/insertstream.c rename to server/modules/filter/insertstream/insertstream.cc index 86b6a35ec..6805842e2 100644 --- a/server/modules/filter/insertstream/insertstream.c +++ b/server/modules/filter/insertstream/insertstream.cc @@ -78,6 +78,9 @@ typedef struct char target[MYSQL_TABLE_MAXLEN + MYSQL_DATABASE_MAXLEN + 1]; /**< Current target table */ } DS_SESSION; +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -128,6 +131,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } +} + /** * Free a insertstream instance. * @param instance instance to free @@ -162,7 +167,7 @@ createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params) { DS_INSTANCE *my_instance; - if ((my_instance = MXS_CALLOC(1, sizeof(DS_INSTANCE))) != NULL) + if ((my_instance = static_cast(MXS_CALLOC(1, sizeof(DS_INSTANCE)))) != NULL) { my_instance->source = config_copy_string(params, "source"); 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_SESSION *my_session; - if ((my_session = MXS_CALLOC(1, sizeof(DS_SESSION))) != NULL) + if ((my_session = static_cast(MXS_CALLOC(1, sizeof(DS_SESSION)))) != NULL) { my_session->target[0] = '\0'; 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) { - char empty_packet[] = {0, 0, 0, packet_num}; + char empty_packet[] = {0, 0, 0, static_cast(packet_num)}; 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); char* header_start = (char*)GWBUF_DATA(buffer); char* store_end = dataptr = header_start + MYSQL_HEADER_LEN; - char* end = buffer->end; + char* end = static_cast(buffer->end); char* value; uint32_t valuesize; @@ -622,7 +627,7 @@ static bool extract_insert_target(GWBUF *buffer, char* target, int len) if (tables) { - for (int i = 0; i < (size_t)n_tables; ++i) + for (int i = 0; i < n_tables; ++i) { MXS_FREE(tables[i]); } diff --git a/server/modules/filter/luafilter/CMakeLists.txt b/server/modules/filter/luafilter/CMakeLists.txt index 70993a027..673eb0b43 100644 --- a/server/modules/filter/luafilter/CMakeLists.txt +++ b/server/modules/filter/luafilter/CMakeLists.txt @@ -2,7 +2,7 @@ if (BUILD_LUAFILTER) find_package(Lua) if(LUA_FOUND) 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") target_link_libraries(luafilter maxscale-common ${LUA_LIBRARIES}) install_module(luafilter experimental) diff --git a/server/modules/filter/luafilter/luafilter.c b/server/modules/filter/luafilter/luafilter.cc similarity index 99% rename from server/modules/filter/luafilter/luafilter.c rename to server/modules/filter/luafilter/luafilter.cc index 7f85850d7..4ceba5e40 100644 --- a/server/modules/filter/luafilter/luafilter.c +++ b/server/modules/filter/luafilter/luafilter.cc @@ -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 uint64_t getCapabilities(MXS_FILTER *instance); +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -116,6 +119,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } +} + static int id_pool = 0; static GWBUF *current_global_query = NULL; diff --git a/server/modules/filter/maxrows/CMakeLists.txt b/server/modules/filter/maxrows/CMakeLists.txt index 6dee7a01e..256a43303 100644 --- a/server/modules/filter/maxrows/CMakeLists.txt +++ b/server/modules/filter/maxrows/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(maxrows SHARED maxrows.c) +add_library(maxrows SHARED maxrows.cc) target_link_libraries(maxrows maxscale-common) set_target_properties(maxrows PROPERTIES VERSION "1.0.0") set_target_properties(maxrows PROPERTIES LINK_FLAGS -Wl,-z,defs) diff --git a/server/modules/filter/maxrows/maxrows.c b/server/modules/filter/maxrows/maxrows.cc similarity index 98% rename from server/modules/filter/maxrows/maxrows.c rename to server/modules/filter/maxrows/maxrows.cc index 15868bbc5..b0a1c6cbc 100644 --- a/server/modules/filter/maxrows/maxrows.c +++ b/server/modules/filter/maxrows/maxrows.cc @@ -82,6 +82,9 @@ static const MXS_ENUM_VALUE return_option_values[] = /* Global symbols of the Module */ +extern "C" +{ + /** * The module entry point function, called when the module is loaded. * @@ -148,6 +151,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; }; +} + /* Implementation */ typedef struct maxrows_config @@ -233,7 +238,7 @@ static MXS_FILTER *createInstance(const char *name, char **options, MXS_CONFIG_PARAMETER *params) { - MAXROWS_INSTANCE *cinstance = MXS_CALLOC(1, sizeof(MAXROWS_INSTANCE)); + MAXROWS_INSTANCE *cinstance = static_cast(MXS_CALLOC(1, sizeof(MAXROWS_INSTANCE))); if (cinstance) { @@ -242,9 +247,10 @@ static MXS_FILTER *createInstance(const char *name, "max_resultset_rows"); cinstance->config.max_resultset_size = config_get_size(params, "max_resultset_size"); - cinstance->config.m_return = config_get_enum(params, - "max_resultset_return", - return_option_values); + cinstance->config.m_return = + static_cast(config_get_enum(params, + "max_resultset_return", + return_option_values)); 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. int command = (int)MYSQL_GET_COMMAND(header); + int flags = 0; switch (command) { @@ -933,7 +940,7 @@ static int handle_rows(MAXROWS_SESSION_DATA *csdata, GWBUF* buffer, size_t extra 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 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); /* Data to send + added EOF */ - uint8_t *new_result = MXS_MALLOC(offset + MYSQL_EOF_PACKET_LEN); + uint8_t *new_result = static_cast(MXS_MALLOC(offset + MYSQL_EOF_PACKET_LEN)); if (new_result) { @@ -1197,7 +1204,7 @@ static int send_error_upstream(MAXROWS_SESSION_DATA *csdata) GWBUF *err_pkt; uint8_t hdr_err[MYSQL_ERR_PACKET_MIN_LEN]; 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); unsigned long pkt_len = MYSQL_ERR_PACKET_MIN_LEN + err_prefix_len; unsigned long sql_len = gwbuf_length(csdata->input_sql) - diff --git a/server/modules/filter/mqfilter/CMakeLists.txt b/server/modules/filter/mqfilter/CMakeLists.txt index 283663a6d..deac6b43a 100644 --- a/server/modules/filter/mqfilter/CMakeLists.txt +++ b/server/modules/filter/mqfilter/CMakeLists.txt @@ -1,7 +1,7 @@ find_package(RabbitMQ) if(RABBITMQ_FOUND) include_directories(${RABBITMQ_HEADERS}) - add_library(mqfilter SHARED mqfilter.c) + add_library(mqfilter SHARED mqfilter.cc) target_link_libraries(mqfilter maxscale-common ${RABBITMQ_LIBRARIES}) add_dependencies(mqfilter pcre2) set_target_properties(mqfilter PROPERTIES VERSION "1.0.2") diff --git a/server/modules/filter/mqfilter/mqfilter.c b/server/modules/filter/mqfilter/mqfilter.cc similarity index 97% rename from server/modules/filter/mqfilter/mqfilter.c rename to server/modules/filter/mqfilter/mqfilter.cc index 477d420fb..ad6b6db40 100644 --- a/server/modules/filter/mqfilter/mqfilter.c +++ b/server/modules/filter/mqfilter/mqfilter.cc @@ -249,6 +249,9 @@ static const MXS_ENUM_VALUE trigger_values[] = {NULL} }; +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -315,6 +318,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } +} + /** * Internal function used to initialize the connection to * 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++; } - char **arr = MXS_MALLOC(sizeof(char*) * size); + char **arr = static_cast(MXS_MALLOC(sizeof(char*) * size)); MXS_ABORT_IF_NULL(arr); *szstore = size; @@ -523,7 +528,7 @@ char** parse_optstr(const char* str, const char* tok, int* szstore) static MXS_FILTER * 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(MXS_CALLOC(1, sizeof(MQ_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->port = config_get_integer(params, "port"); - my_instance->trgtype = config_get_enum(params, "logging_trigger", trigger_values); + my_instance->trgtype = + static_cast(config_get_enum(params, "logging_trigger", trigger_values)); my_instance->log_all = config_get_bool(params, "logging_log_all"); my_instance->strict_logging = config_get_bool(params, "logging_strict"); 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) { - mqmessage* newmsg = MXS_CALLOC(1, sizeof(mqmessage)); + mqmessage* newmsg = static_cast(MXS_CALLOC(1, sizeof(mqmessage))); if (newmsg) { newmsg->msg = msg; @@ -823,7 +829,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session) MQ_SESSION *my_session; - if ((my_session = MXS_CALLOC(1, sizeof(MQ_SESSION))) != NULL) + if ((my_session = static_cast(MXS_CALLOC(1, sizeof(MQ_SESSION)))) != NULL) { my_session->was_query = false; my_session->uid = NULL; @@ -945,16 +951,16 @@ routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue) amqp_basic_properties_t *prop; /**The user is changing databases*/ - if (*((char*) (queue->start + 4)) == 0x02) + if (*(static_cast(queue->start) + 4) == 0x02) { if (my_session->db) { MXS_FREE(my_session->db); } plen = pktlen(queue->start); - my_session->db = MXS_CALLOC(plen, sizeof(char)); + my_session->db = static_cast(MXS_CALLOC(plen, sizeof(char))); MXS_ABORT_IF_NULL(my_session->db); - memcpy(my_session->db, queue->start + 5, plen - 1); + memcpy(my_session->db, static_cast(queue->start) + 5, plen - 1); } if (modutil_is_SQL(queue)) @@ -1167,7 +1173,7 @@ routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue) if (my_session->uid == NULL) { - my_session->uid = MXS_CALLOC(33, sizeof(char)); + my_session->uid = static_cast(MXS_CALLOC(33, sizeof(char))); if (my_session->uid) { @@ -1179,8 +1185,8 @@ routeQuery(MXS_FILTER *instance, MXS_FILTER_SESSION *session, GWBUF *queue) { my_session->was_query = true; - - if ((prop = MXS_MALLOC(sizeof(amqp_basic_properties_t)))) + prop = static_cast(MXS_MALLOC(sizeof(amqp_basic_properties_t))); + if (prop) { prop->_flags = AMQP_BASIC_CONTENT_TYPE_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)); int qlen = strnlen(canon_q, length) + strnlen(t_buf, 128); - combined = MXS_MALLOC((qlen + 1) * sizeof(char)); + combined = static_cast(MXS_MALLOC((qlen + 1) * sizeof(char))); MXS_ABORT_IF_NULL(combined); strcpy(combined, t_buf); strncat(combined, canon_q, length); @@ -1303,7 +1309,7 @@ unsigned int consume_leitoi(unsigned char** c) char* consume_lestr(unsigned char** c) { unsigned int slen = consume_leitoi(c); - char *str = MXS_CALLOC((slen + 1), sizeof(char)); + char *str = static_cast(MXS_CALLOC((slen + 1), sizeof(char))); if (str) { memcpy(str, *c, slen); @@ -1354,7 +1360,7 @@ static int clientReply(MXS_FILTER* instance, MXS_FILTER_SESSION *session, GWBUF if (pkt_len > 0) { - if ((prop = MXS_MALLOC(sizeof(amqp_basic_properties_t)))) + if ((prop = static_cast(MXS_MALLOC(sizeof(amqp_basic_properties_t))))) { prop->_flags = AMQP_BASIC_CONTENT_TYPE_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"); } - combined = MXS_CALLOC(GWBUF_LENGTH(reply) + 256, sizeof(char)); + combined = static_cast(MXS_CALLOC(GWBUF_LENGTH(reply) + 256, sizeof(char))); MXS_ABORT_IF_NULL(combined); memset(t_buf, 0, 128); @@ -1412,7 +1418,7 @@ static int clientReply(MXS_FILTER* instance, MXS_FILTER_SESSION *session, GWBUF { /**ERR packet*/ sprintf(combined + offset, "ERROR - message: %.*s", - (int) (reply->end - ((void*) (reply->sbuf->data + 13))), + (int) (static_cast(reply->end) - (reply->sbuf->data + 13)), (char *) reply->sbuf->data + 13); packet_ok = 1; was_last = 1; @@ -1435,7 +1441,7 @@ static int clientReply(MXS_FILTER* instance, MXS_FILTER_SESSION *session, GWBUF char *tmp; unsigned int col_cnt = consume_leitoi(&rset); - tmp = MXS_CALLOC(256, sizeof(char)); + tmp = static_cast(MXS_CALLOC(256, sizeof(char))); MXS_ABORT_IF_NULL(tmp); sprintf(tmp, "Columns: %d", col_cnt); memcpy(combined + offset, tmp, strnlen(tmp, 256)); diff --git a/server/modules/filter/regexfilter/CMakeLists.txt b/server/modules/filter/regexfilter/CMakeLists.txt index bf148b590..a6fc514ec 100644 --- a/server/modules/filter/regexfilter/CMakeLists.txt +++ b/server/modules/filter/regexfilter/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(regexfilter SHARED regexfilter.c) +add_library(regexfilter SHARED regexfilter.cc) target_link_libraries(regexfilter maxscale-common) add_dependencies(regexfilter pcre2) set_target_properties(regexfilter PROPERTIES VERSION "1.1.0") diff --git a/server/modules/filter/regexfilter/regexfilter.c b/server/modules/filter/regexfilter/regexfilter.cc similarity index 97% rename from server/modules/filter/regexfilter/regexfilter.c rename to server/modules/filter/regexfilter/regexfilter.cc index 525b0e9d3..0e7f5649a 100644 --- a/server/modules/filter/regexfilter/regexfilter.c +++ b/server/modules/filter/regexfilter/regexfilter.cc @@ -82,7 +82,7 @@ typedef struct int active; /* Is filter active */ } 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); static const MXS_ENUM_VALUE option_values[] = @@ -92,6 +92,9 @@ static const MXS_ENUM_VALUE option_values[] = {NULL} }; +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -146,6 +149,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } +} + /** * Free a regexfilter instance. * @param instance instance to free @@ -185,7 +190,7 @@ void free_instance(REGEX_INSTANCE *instance) static MXS_FILTER * 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(MXS_CALLOC(1, sizeof(REGEX_INSTANCE))); if (my_instance) { @@ -256,7 +261,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session) REGEX_SESSION *my_session; const char *remote, *user; - if ((my_session = MXS_CALLOC(1, sizeof(REGEX_SESSION))) != NULL) + if ((my_session = static_cast(MXS_CALLOC(1, sizeof(REGEX_SESSION)))) != NULL) { my_session->no_change = 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) { result_size = strlen(sql) + strlen(replace); - result = MXS_MALLOC(result_size); + result = static_cast(MXS_MALLOC(result_size)); size_t result_size_tmp = result_size; 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; char *tmp; - if ((tmp = MXS_REALLOC(result, result_size_tmp)) == NULL) + if ((tmp = static_cast(MXS_REALLOC(result, result_size_tmp))) == NULL) { MXS_FREE(result); 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 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) { - 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); } if (inst->log_trace) { - MXS_INFO("Match %s: [%s] -> [%s]", re, old, new); + MXS_INFO("Match %s: [%s] -> [%s]", re, old, newsql); } } diff --git a/server/modules/filter/topfilter/CMakeLists.txt b/server/modules/filter/topfilter/CMakeLists.txt index 668937c8d..39900bd5e 100644 --- a/server/modules/filter/topfilter/CMakeLists.txt +++ b/server/modules/filter/topfilter/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(topfilter SHARED topfilter.c) +add_library(topfilter SHARED topfilter.cc) target_link_libraries(topfilter maxscale-common) set_target_properties(topfilter PROPERTIES VERSION "1.0.1") install_module(topfilter core) diff --git a/server/modules/filter/topfilter/topfilter.c b/server/modules/filter/topfilter/topfilter.cc similarity index 99% rename from server/modules/filter/topfilter/topfilter.c rename to server/modules/filter/topfilter/topfilter.cc index c0e8fd8f8..b8df0ae10 100644 --- a/server/modules/filter/topfilter/topfilter.c +++ b/server/modules/filter/topfilter/topfilter.cc @@ -126,6 +126,9 @@ static const MXS_ENUM_VALUE option_values[] = {NULL} }; +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -185,6 +188,9 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } + +} + /** * Create an instance of the filter for a particular service * within MaxScale. @@ -276,7 +282,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session) int i; const char *remote, *user; - if ((my_session = MXS_CALLOC(1, sizeof(TOPN_SESSION))) != NULL) + if ((my_session = static_cast(MXS_CALLOC(1, sizeof(TOPN_SESSION)))) != NULL) { if ((my_session->filename = (char *) MXS_MALLOC(strlen(my_instance->filebase) + 20)) diff --git a/server/modules/filter/tpmfilter/CMakeLists.txt b/server/modules/filter/tpmfilter/CMakeLists.txt index 6a737b10b..5ac7490ff 100644 --- a/server/modules/filter/tpmfilter/CMakeLists.txt +++ b/server/modules/filter/tpmfilter/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(tpmfilter SHARED tpmfilter.c) +add_library(tpmfilter SHARED tpmfilter.cc) target_link_libraries(tpmfilter maxscale-common) set_target_properties(tpmfilter PROPERTIES VERSION "1.0.0") install_module(tpmfilter experimental) diff --git a/server/modules/filter/tpmfilter/tpmfilter.c b/server/modules/filter/tpmfilter/tpmfilter.cc similarity index 98% rename from server/modules/filter/tpmfilter/tpmfilter.c rename to server/modules/filter/tpmfilter/tpmfilter.cc index 5bfa61113..ebfc908c9 100644 --- a/server/modules/filter/tpmfilter/tpmfilter.c +++ b/server/modules/filter/tpmfilter/tpmfilter.cc @@ -67,7 +67,7 @@ /* The maximum size for query statements in a transaction (64MB) */ static size_t sql_size_limit = 64 * 1024 * 1024; /* 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; #define DEFAULT_QUERY_DELIMITER "@@@" @@ -140,6 +140,9 @@ typedef struct size_t max_sql_size; } TPM_SESSION; +extern "C" +{ + /** * The module entry point routine. It is this routine that * must populate the structure that is referred to as the @@ -193,6 +196,8 @@ MXS_MODULE* MXS_CREATE_MODULE() return &info; } +} + /** * Create an instance of the filter for a particular service * within MaxScale. @@ -205,7 +210,7 @@ MXS_MODULE* MXS_CREATE_MODULE() static MXS_FILTER * 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(MXS_CALLOC(1, sizeof(TPM_INSTANCE))); if (my_instance) { @@ -310,7 +315,7 @@ newSession(MXS_FILTER *instance, MXS_SESSION *session) int i; const char *remote, *user; - if ((my_session = MXS_CALLOC(1, sizeof(TPM_SESSION))) != NULL) + if ((my_session = static_cast(MXS_CALLOC(1, sizeof(TPM_SESSION)))) != NULL) { atomic_add(&my_instance->sessions, 1);