datasets: add dataset-clear command

Ticket: #5184
pull/8097/head
Eric Leblond 5 years ago committed by Victor Julien
parent c5559cb68f
commit 2f25e48897

@ -772,6 +772,42 @@ TmEcode UnixSocketDatasetDump(json_t *cmd, json_t *answer, void *data)
SCReturnInt(TM_ECODE_OK);
}
TmEcode UnixSocketDatasetClear(json_t *cmd, json_t *answer, void *data)
{
/* 1 get dataset name */
json_t *narg = json_object_get(cmd, "setname");
if (!json_is_string(narg)) {
json_object_set_new(answer, "message", json_string("setname is not a string"));
return TM_ECODE_FAILED;
}
const char *set_name = json_string_value(narg);
/* 2 get the data type */
json_t *targ = json_object_get(cmd, "settype");
if (!json_is_string(targ)) {
json_object_set_new(answer, "message", json_string("settype is not a string"));
return TM_ECODE_FAILED;
}
const char *type = json_string_value(targ);
enum DatasetTypes t = DatasetGetTypeFromString(type);
if (t == DATASET_TYPE_NOTSET) {
json_object_set_new(answer, "message", json_string("unknown settype"));
return TM_ECODE_FAILED;
}
Dataset *set = DatasetFind(set_name, t);
if (set == NULL) {
json_object_set_new(answer, "message", json_string("set not found or wrong type"));
return TM_ECODE_FAILED;
}
THashCleanup(set->hash);
json_object_set_new(answer, "message", json_string("dataset cleared"));
return TM_ECODE_OK;
}
/**
* \brief Command to add a tenant handler
*

@ -36,6 +36,7 @@ float MemcapsGetPressure(void);
TmEcode UnixSocketDatasetAdd(json_t *cmd, json_t* answer, void *data);
TmEcode UnixSocketDatasetRemove(json_t *cmd, json_t* answer, void *data);
TmEcode UnixSocketDatasetDump(json_t *cmd, json_t *answer, void *data);
TmEcode UnixSocketDatasetClear(json_t *cmd, json_t *answer, void *data);
TmEcode UnixSocketRegisterTenantHandler(json_t *cmd, json_t* answer, void *data);
TmEcode UnixSocketUnregisterTenantHandler(json_t *cmd, json_t* answer, void *data);
TmEcode UnixSocketRegisterTenant(json_t *cmd, json_t* answer, void *data);

@ -1089,6 +1089,8 @@ int UnixManagerInit(void)
UnixManagerRegisterCommand(
"get-flow-stats-by-id", UnixSocketGetFlowStatsById, &command, UNIX_CMD_TAKE_ARGS);
UnixManagerRegisterCommand("dataset-dump", UnixSocketDatasetDump, NULL, 0);
UnixManagerRegisterCommand(
"dataset-clear", UnixSocketDatasetClear, &command, UNIX_CMD_TAKE_ARGS);
return 0;
}

Loading…
Cancel
Save