Take static module capabilities into use
The static module capabilities are now used to query the capabilities of filters and routers. The new RCAP_TYPE_NOAUTH capability is also taken into use. These changes removes the need for the `is_internal_service` function.
This commit is contained in:
parent
1736aca7f7
commit
039f6e3487
@ -607,7 +607,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION, /* Implemented module API version */
|
||||
"A simple round robin router", /* Description */
|
||||
"V1.1.0", /* Module version */
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT | RCAP_TYPE_RESULTSET_OUTPUT,
|
||||
&entryPoints, /* Defined above */
|
||||
process_init, /* Process init, can be null */
|
||||
process_finish, /* Process finish, can be null */
|
||||
@ -820,7 +820,7 @@ static uint64_t getCapabilities(MXS_ROUTER *instance)
|
||||
* For output, parsing is not required but counting SQL replies is. RCAP_TYPE_RESULTSET_OUTPUT
|
||||
* should be sufficient.
|
||||
*/
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT | RCAP_TYPE_RESULTSET_OUTPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -152,7 +152,7 @@ diagnostic(MXS_ROUTER *instance, DCB *dcb)
|
||||
|
||||
static uint64_t getCapabilities(MXS_ROUTER* instance)
|
||||
{
|
||||
return 0;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -294,10 +294,6 @@ void config_enable_feedback_task(void);
|
||||
*/
|
||||
void config_disable_feedback_task(void);
|
||||
|
||||
|
||||
/** TODO: Add new capability that allows skipping of permission checks */
|
||||
bool is_internal_service(const char *router);
|
||||
|
||||
/**
|
||||
* @brief Reload the configuration
|
||||
*
|
||||
|
@ -72,6 +72,7 @@
|
||||
#include "maxscale/service.h"
|
||||
#include "maxscale/monitor.h"
|
||||
#include "maxscale/modules.h"
|
||||
#include "maxscale/router.h"
|
||||
|
||||
typedef struct duplicate_context
|
||||
{
|
||||
@ -2012,38 +2013,6 @@ config_truth_value(const char *str)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static char *InternalRouters[] =
|
||||
{
|
||||
"debugcli",
|
||||
"cli",
|
||||
"maxinfo",
|
||||
"binlogrouter",
|
||||
"testroute",
|
||||
"avrorouter",
|
||||
NULL
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if the router is one of the special internal services that
|
||||
* MaxScale offers.
|
||||
*
|
||||
* @param router The router name
|
||||
* @return Non-zero if the router is in the InternalRouters table
|
||||
*/
|
||||
bool is_internal_service(const char *router)
|
||||
{
|
||||
if (router)
|
||||
{
|
||||
for (int i = 0; InternalRouters[i]; i++)
|
||||
{
|
||||
if (strcmp(router, InternalRouters[i]) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Get the MAC address of first network interface
|
||||
*
|
||||
@ -2638,7 +2607,7 @@ int create_new_service(CONFIG_CONTEXT *obj)
|
||||
{
|
||||
serviceSetUser(obj->element, user, auth);
|
||||
}
|
||||
else if (!is_internal_service(router))
|
||||
else if (!rcap_type_required(service_get_capabilities(service), RCAP_TYPE_NO_AUTH))
|
||||
{
|
||||
error_count++;
|
||||
MXS_ERROR("Service '%s' is missing %s%s%s.",
|
||||
|
@ -142,7 +142,10 @@ SERVICE* service_alloc(const char *name, const char *router)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
service->capabilities = 0;
|
||||
const MXS_MODULE* module = get_module(my_router, MODULE_ROUTER);
|
||||
ss_dassert(module);
|
||||
|
||||
service->capabilities = module->module_capabilities;
|
||||
service->client_count = 0;
|
||||
service->n_dbref = 0;
|
||||
service->name = my_name;
|
||||
@ -1239,6 +1242,9 @@ serviceSetFilters(SERVICE *service, char *filters)
|
||||
{
|
||||
if (filter_load(flist[n - 1]))
|
||||
{
|
||||
const MXS_MODULE* module = get_module(flist[n - 1]->module, MODULE_FILTER);
|
||||
ss_dassert(module);
|
||||
capabilities |= module->module_capabilities;
|
||||
capabilities |= flist[n - 1]->obj->getCapabilities(flist[n - 1]->filter);
|
||||
}
|
||||
else
|
||||
|
@ -627,7 +627,7 @@ static bool check_server_permissions(SERVICE *service, SERVER* server,
|
||||
|
||||
bool check_service_permissions(SERVICE* service)
|
||||
{
|
||||
if (is_internal_service(service->routerModule) ||
|
||||
if (rcap_type_required(service_get_capabilities(service), RCAP_TYPE_NO_AUTH) ||
|
||||
config_get_global_options()->skip_permission_checks ||
|
||||
service->dbref == NULL) // No servers to check
|
||||
{
|
||||
|
4
server/modules/filter/cache/cachefilter.cc
vendored
4
server/modules/filter/cache/cachefilter.cc
vendored
@ -134,7 +134,7 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A caching filter that is capable of caching and returning cached data.",
|
||||
VERSION_STRING,
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_TRANSACTION_TRACKING,
|
||||
&CacheFilter::s_object,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -274,7 +274,7 @@ void CacheFilter::diagnostics(DCB* pDcb)
|
||||
|
||||
uint64_t CacheFilter::getCapabilities()
|
||||
{
|
||||
return RCAP_TYPE_TRANSACTION_TRACKING;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
// static
|
||||
|
@ -134,7 +134,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A routing hint filter that send queries to the master after data modification",
|
||||
"V1.1.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -389,5 +389,5 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -827,7 +827,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"Firewall Filter",
|
||||
"V1.2.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_STMT_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -2506,5 +2506,5 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_STMT_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A hint parsing filter",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -241,5 +241,5 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"Data streaming filter",
|
||||
"1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_TRANSACTION_TRACKING,
|
||||
&MyObject,
|
||||
NULL,
|
||||
NULL,
|
||||
@ -520,7 +520,7 @@ static void diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_TRANSACTION_TRACKING;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -98,7 +98,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"Lua Filter",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -671,5 +671,5 @@ static void diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER *instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A masking filter that is capable of masking/obfuscating returned column values.",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_STMT_INPUT | RCAP_TYPE_CONTIGUOUS_OUTPUT,
|
||||
&MaskingFilter::s_object,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -146,7 +146,7 @@ void MaskingFilter::diagnostics(DCB* pDcb)
|
||||
// static
|
||||
uint64_t MaskingFilter::getCapabilities()
|
||||
{
|
||||
return RCAP_TYPE_STMT_INPUT | RCAP_TYPE_CONTIGUOUS_OUTPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
std::tr1::shared_ptr<MaskingRules> MaskingFilter::rules() const
|
||||
|
@ -88,7 +88,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A filter that is capable of limiting the resultset number of rows.",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_STMT_INPUT | RCAP_TYPE_STMT_OUTPUT,
|
||||
&object,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -423,7 +423,7 @@ static void diagnostics(MXS_FILTER *instance, MXS_FILTER_SESSION *sdata, DCB *dc
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_STMT_INPUT | RCAP_TYPE_STMT_OUTPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/* API END */
|
||||
|
@ -281,7 +281,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A RabbitMQ query logging filter",
|
||||
"V1.0.2",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -1513,5 +1513,5 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ RegexHintFilter::find_servers(char* sql, int sql_len, pcre2_match_data* match_da
|
||||
*/
|
||||
uint64_t RegexHintFilter::getCapabilities()
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -780,7 +780,7 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A routing hint filter that uses regular expressions to direct queries",
|
||||
"V1.1.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
|
@ -193,7 +193,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A simple query logging filter",
|
||||
"V1.1.1",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -620,7 +620,7 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
/**
|
||||
* Open the log file and print a header if appropriate.
|
||||
|
@ -123,7 +123,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A query rewrite filter that uses regular expressions to rewrite queries",
|
||||
"V1.1.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -493,5 +493,5 @@ void log_nomatch(REGEX_INSTANCE* inst, char* re, char* old)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -326,7 +326,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A tee piece in the filter plumbing",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -743,7 +743,7 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -157,7 +157,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"A top N query logging filter",
|
||||
"V1.0.1",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -631,5 +631,5 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_FILTER_VERSION,
|
||||
"Transaction Performance Monitoring filter",
|
||||
"V1.0.1",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -605,7 +605,7 @@ diagnostic(MXS_FILTER *instance, MXS_FILTER_SESSION *fsession, DCB *dcb)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_FILTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
static void checkNamedPipe(void *args)
|
||||
|
@ -170,7 +170,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION,
|
||||
"Binlogrouter",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_NO_RSESSION | RCAP_TYPE_NO_AUTH,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -1019,7 +1019,7 @@ errorReply(MXS_ROUTER *instance, MXS_ROUTER_SESSION *router_session, GWBUF *mess
|
||||
|
||||
static uint64_t getCapabilities(MXS_ROUTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_NO_RSESSION;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -171,7 +171,8 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION,
|
||||
"Binlogrouter",
|
||||
"V2.1.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_NO_RSESSION | RCAP_TYPE_CONTIGUOUS_OUTPUT |
|
||||
RCAP_TYPE_RESULTSET_OUTPUT | RCAP_TYPE_NO_AUTH,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -1891,7 +1892,7 @@ static void rses_end_locked_router_action(ROUTER_SLAVE *rses)
|
||||
|
||||
static uint64_t getCapabilities(MXS_ROUTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_NO_RSESSION | RCAP_TYPE_CONTIGUOUS_OUTPUT | RCAP_TYPE_RESULTSET_OUTPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -91,7 +91,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION,
|
||||
"The admin user interface",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_NO_AUTH,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -290,5 +290,5 @@ diagnostics(MXS_ROUTER *instance, DCB *dcb)
|
||||
|
||||
static uint64_t getCapabilities(MXS_ROUTER *instance)
|
||||
{
|
||||
return 0;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION,
|
||||
"The debug user interface",
|
||||
"V1.1.1",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_NO_AUTH,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -295,5 +295,5 @@ diagnostics(MXS_ROUTER *instance, DCB *dcb)
|
||||
|
||||
static uint64_t getCapabilities(MXS_ROUTER* instance)
|
||||
{
|
||||
return 0;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ void HintRouter::diagnostics(DCB* pOut)
|
||||
uint64_t HintRouter::getCapabilities()
|
||||
{
|
||||
HR_ENTRY();
|
||||
return RCAP_TYPE_STMT_OUTPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
|
||||
@ -95,7 +95,7 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION, /* Implemented module API version */
|
||||
"A hint router", /* Description */
|
||||
"V1.0.0", /* Module version */
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_STMT_OUTPUT,
|
||||
&HintRouter::s_object,
|
||||
NULL, /* Process init, can be null */
|
||||
NULL, /* Process finish, can be null */
|
||||
|
@ -116,7 +116,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION,
|
||||
"The MaxScale Information Schema",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_NO_AUTH,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -382,7 +382,7 @@ diagnostics(MXS_ROUTER *instance, DCB *dcb)
|
||||
static uint64_t
|
||||
getCapabilities(MXS_ROUTER* instance)
|
||||
{
|
||||
return 0;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -161,7 +161,7 @@ MXS_MODULE *MXS_CREATE_MODULE()
|
||||
MXS_MODULE_API_ROUTER, MXS_MODULE_GA, MXS_ROUTER_VERSION,
|
||||
"A Read/Write splitting router for enhancement read scalability",
|
||||
"V1.1.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_STMT_INPUT | RCAP_TYPE_TRANSACTION_TRACKING,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -821,7 +821,7 @@ static void clientReply(MXS_ROUTER *instance,
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_ROUTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_STMT_INPUT | RCAP_TYPE_TRANSACTION_TRACKING;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -618,7 +618,7 @@ MXS_MODULE* MXS_CREATE_MODULE()
|
||||
MXS_ROUTER_VERSION,
|
||||
"A database sharding router for simple sharding",
|
||||
"V1.0.0",
|
||||
MXS_NO_MODULE_CAPABILITIES,
|
||||
RCAP_TYPE_CONTIGUOUS_INPUT,
|
||||
&MyObject,
|
||||
NULL, /* Process init. */
|
||||
NULL, /* Process finish. */
|
||||
@ -3099,7 +3099,7 @@ static rses_property_t* mysql_sescmd_get_property(mysql_sescmd_t* scmd)
|
||||
*/
|
||||
static uint64_t getCapabilities(MXS_ROUTER* instance)
|
||||
{
|
||||
return RCAP_TYPE_CONTIGUOUS_INPUT;
|
||||
return RCAP_TYPE_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user