mirror of
https://github.com/emqx/neuron.git
synced 2026-10-28 22:59:34 +08:00
Merge pull request #1799 from hxy7yx/main-2
limit the number of groups to a maximum of 512
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#define NEU_TAG_NAME_LEN 64
|
||||
#define NEU_TAG_ADDRESS_LEN 128
|
||||
#define NEU_TAG_DESCRIPTION_LEN 128
|
||||
#define NEU_GROUP_MAX_PER_NODE 512
|
||||
#define NEU_GROUP_NAME_LEN 128
|
||||
#define NEU_GROUP_INTERVAL_LIMIT 100
|
||||
#define NEU_DEFAULT_GROUP_INTERVAL 100
|
||||
|
||||
@@ -70,6 +70,7 @@ typedef enum {
|
||||
NEU_ERR_GROUP_PARAMETER_INVALID = 2105,
|
||||
NEU_ERR_GROUP_NOT_EXIST = 2106,
|
||||
NEU_ERR_GROUP_NAME_TOO_LONG = 2107,
|
||||
NEU_ERR_GROUP_MAX_GROUPS = 2108,
|
||||
|
||||
NEU_ERR_TAG_NOT_EXIST = 2201,
|
||||
NEU_ERR_TAG_NAME_CONFLICT = 2202,
|
||||
|
||||
@@ -1059,6 +1059,12 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
|
||||
if (adapter->module->type != NEU_NA_TYPE_DRIVER) {
|
||||
resp.error = NEU_ERR_GROUP_NOT_ALLOW;
|
||||
} else if (neu_adapter_driver_new_group_count(
|
||||
(neu_adapter_driver_t *) adapter, cmd) +
|
||||
neu_adapter_driver_group_count(
|
||||
(neu_adapter_driver_t *) adapter) >
|
||||
NEU_GROUP_MAX_PER_NODE) {
|
||||
resp.error = NEU_ERR_GROUP_MAX_GROUPS;
|
||||
} else {
|
||||
if (validate_gtags(adapter, cmd, &resp) == 0 &&
|
||||
try_add_gtags(adapter, cmd, &resp) == 0 &&
|
||||
|
||||
@@ -1122,6 +1122,29 @@ int neu_adapter_driver_del_group(neu_adapter_driver_t *driver, const char *name)
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint16_t neu_adapter_driver_group_count(neu_adapter_driver_t *driver)
|
||||
{
|
||||
u_int16_t num_groups = 0;
|
||||
if (driver && driver->groups) {
|
||||
num_groups = HASH_COUNT(driver->groups);
|
||||
}
|
||||
return num_groups;
|
||||
}
|
||||
|
||||
uint16_t neu_adapter_driver_new_group_count(neu_adapter_driver_t *driver,
|
||||
neu_req_add_gtag_t * cmd)
|
||||
{
|
||||
uint16_t new_groups_count = 0;
|
||||
for (int i = 0; i < cmd->n_group; i++) {
|
||||
group_t *group_in_driver;
|
||||
HASH_FIND_STR(driver->groups, cmd->groups[i].group, group_in_driver);
|
||||
if (!group_in_driver) {
|
||||
new_groups_count++;
|
||||
}
|
||||
}
|
||||
return new_groups_count;
|
||||
}
|
||||
|
||||
static group_t *find_group(neu_adapter_driver_t *driver, const char *name)
|
||||
{
|
||||
group_t *find = NULL;
|
||||
|
||||
@@ -51,6 +51,9 @@ int neu_adapter_driver_del_group(neu_adapter_driver_t *driver,
|
||||
int neu_adapter_driver_group_exist(neu_adapter_driver_t *driver,
|
||||
const char * name);
|
||||
UT_array *neu_adapter_driver_get_group(neu_adapter_driver_t *driver);
|
||||
uint16_t neu_adapter_driver_group_count(neu_adapter_driver_t *driver);
|
||||
uint16_t neu_adapter_driver_new_group_count(neu_adapter_driver_t *driver,
|
||||
neu_req_add_gtag_t * cmd);
|
||||
|
||||
int neu_adapter_driver_try_del_tag(neu_adapter_driver_t *driver, int n_tag);
|
||||
int neu_adapter_driver_try_add_tag(neu_adapter_driver_t *driver,
|
||||
|
||||
@@ -354,6 +354,7 @@ int neu_http_response(nng_aio *aio, neu_err_code_e code, char *content)
|
||||
case NEU_ERR_TAG_NAME_TOO_LONG:
|
||||
case NEU_ERR_TAG_ADDRESS_TOO_LONG:
|
||||
case NEU_ERR_TAG_VALUE_INVALID:
|
||||
case NEU_ERR_GROUP_MAX_GROUPS:
|
||||
case NEU_ERR_LICENSE_MAX_TAGS:
|
||||
case NEU_ERR_LICENSE_BAD_CLOCK:
|
||||
case NEU_ERR_LICENSE_MODULE_INVALID:
|
||||
|
||||
Reference in New Issue
Block a user