memcap/socket: Improve memcap array support

Remove hard-coded value for the memcap array and substitute compile-time
value for array sizing.

Issue: 845
pull/12117/head
Jeff Lucovsky 2 years ago committed by Victor Julien
parent 278dc24cd0
commit f23fec0c64

@ -86,50 +86,20 @@ const char *RunModeUnixSocketGetDefaultMode(void)
return "autofp"; return "autofp";
} }
#define MEMCAPS_MAX 7 static MemcapCommand memcaps[] = {
static MemcapCommand memcaps[MEMCAPS_MAX] = {
{ {
"stream", "stream",
StreamTcpSetMemcap, StreamTcpSetMemcap,
StreamTcpGetMemcap, StreamTcpGetMemcap,
StreamTcpMemuseCounter, StreamTcpMemuseCounter,
}, },
{ { "stream-reassembly", StreamTcpReassembleSetMemcap, StreamTcpReassembleGetMemcap,
"stream-reassembly", StreamTcpReassembleMemuseGlobalCounter },
StreamTcpReassembleSetMemcap, { "flow", FlowSetMemcap, FlowGetMemcap, FlowGetMemuse },
StreamTcpReassembleGetMemcap, { "applayer-proto-http", HTPSetMemcap, HTPGetMemcap, HTPMemuseGlobalCounter },
StreamTcpReassembleMemuseGlobalCounter { "defrag", DefragTrackerSetMemcap, DefragTrackerGetMemcap, DefragTrackerGetMemuse },
}, { "ippair", IPPairSetMemcap, IPPairGetMemcap, IPPairGetMemuse },
{ { "host", HostSetMemcap, HostGetMemcap, HostGetMemuse },
"flow",
FlowSetMemcap,
FlowGetMemcap,
FlowGetMemuse
},
{
"applayer-proto-http",
HTPSetMemcap,
HTPGetMemcap,
HTPMemuseGlobalCounter
},
{
"defrag",
DefragTrackerSetMemcap,
DefragTrackerGetMemcap,
DefragTrackerGetMemuse
},
{
"ippair",
IPPairSetMemcap,
IPPairGetMemcap,
IPPairGetMemuse
},
{
"host",
HostSetMemcap,
HostGetMemcap,
HostGetMemuse
},
}; };
float MemcapsGetPressure(void) float MemcapsGetPressure(void)
@ -1523,7 +1493,6 @@ TmEcode UnixSocketSetMemcap(json_t *cmd, json_t* answer, void *data)
char *memcap = NULL; char *memcap = NULL;
char *value_str = NULL; char *value_str = NULL;
uint64_t value; uint64_t value;
int i;
json_t *jarg = json_object_get(cmd, "config"); json_t *jarg = json_object_get(cmd, "config");
if (!json_is_string(jarg)) { if (!json_is_string(jarg)) {
@ -1549,7 +1518,7 @@ TmEcode UnixSocketSetMemcap(json_t *cmd, json_t* answer, void *data)
return TM_ECODE_FAILED; return TM_ECODE_FAILED;
} }
for (i = 0; i < MEMCAPS_MAX; i++) { for (size_t i = 0; i < ARRAY_SIZE(memcaps); i++) {
if (strcmp(memcaps[i].name, memcap) == 0 && memcaps[i].SetFunc) { if (strcmp(memcaps[i].name, memcap) == 0 && memcaps[i].SetFunc) {
int updated = memcaps[i].SetFunc(value); int updated = memcaps[i].SetFunc(value);
char message[150]; char message[150];
@ -1592,7 +1561,6 @@ TmEcode UnixSocketSetMemcap(json_t *cmd, json_t* answer, void *data)
TmEcode UnixSocketShowMemcap(json_t *cmd, json_t *answer, void *data) TmEcode UnixSocketShowMemcap(json_t *cmd, json_t *answer, void *data)
{ {
char *memcap = NULL; char *memcap = NULL;
int i;
json_t *jarg = json_object_get(cmd, "config"); json_t *jarg = json_object_get(cmd, "config");
if (!json_is_string(jarg)) { if (!json_is_string(jarg)) {
@ -1601,7 +1569,7 @@ TmEcode UnixSocketShowMemcap(json_t *cmd, json_t *answer, void *data)
} }
memcap = (char *)json_string_value(jarg); memcap = (char *)json_string_value(jarg);
for (i = 0; i < MEMCAPS_MAX; i++) { for (size_t i = 0; i < ARRAY_SIZE(memcaps); i++) {
if (strcmp(memcaps[i].name, memcap) == 0 && memcaps[i].GetFunc) { if (strcmp(memcaps[i].name, memcap) == 0 && memcaps[i].GetFunc) {
char str[50]; char str[50];
uint64_t val = memcaps[i].GetFunc(); uint64_t val = memcaps[i].GetFunc();
@ -1632,7 +1600,6 @@ TmEcode UnixSocketShowMemcap(json_t *cmd, json_t *answer, void *data)
TmEcode UnixSocketShowAllMemcap(json_t *cmd, json_t *answer, void *data) TmEcode UnixSocketShowAllMemcap(json_t *cmd, json_t *answer, void *data)
{ {
json_t *jmemcaps = json_array(); json_t *jmemcaps = json_array();
int i;
if (jmemcaps == NULL) { if (jmemcaps == NULL) {
json_object_set_new(answer, "message", json_object_set_new(answer, "message",
@ -1640,7 +1607,7 @@ TmEcode UnixSocketShowAllMemcap(json_t *cmd, json_t *answer, void *data)
return TM_ECODE_FAILED; return TM_ECODE_FAILED;
} }
for (i = 0; i < MEMCAPS_MAX; i++) { for (size_t i = 0; i < ARRAY_SIZE(memcaps); i++) {
json_t *jobj = json_object(); json_t *jobj = json_object();
if (jobj == NULL) { if (jobj == NULL) {
json_decref(jmemcaps); json_decref(jmemcaps);

Loading…
Cancel
Save