profiling: use dynamic number of app-layer protos

Ticket: 5053
pull/12358/head
Philippe Antoine 9 months ago committed by Victor Julien
parent 41dc90776a
commit 3b76c78cb9

@ -72,8 +72,8 @@ SCProfilePacketData packet_profile_data6[257]; /**< all proto's + tunnel */
SCProfilePacketData packet_profile_tmm_data4[TMM_SIZE][257];
SCProfilePacketData packet_profile_tmm_data6[TMM_SIZE][257];
SCProfilePacketData packet_profile_app_data4[ALPROTO_MAX][257];
SCProfilePacketData packet_profile_app_data6[ALPROTO_MAX][257];
SCProfilePacketData *packet_profile_app_data4;
SCProfilePacketData *packet_profile_app_data6;
SCProfilePacketData packet_profile_app_pd_data4[257];
SCProfilePacketData packet_profile_app_pd_data6[257];
@ -158,8 +158,14 @@ SCProfilingInit(void)
memset(&packet_profile_data6, 0, sizeof(packet_profile_data6));
memset(&packet_profile_tmm_data4, 0, sizeof(packet_profile_tmm_data4));
memset(&packet_profile_tmm_data6, 0, sizeof(packet_profile_tmm_data6));
memset(&packet_profile_app_data4, 0, sizeof(packet_profile_app_data4));
memset(&packet_profile_app_data6, 0, sizeof(packet_profile_app_data6));
packet_profile_app_data4 = SCCalloc(ALPROTO_MAX * 257, sizeof(SCProfilePacketData));
if (packet_profile_app_data4 == NULL) {
FatalError("Failed to allocate packet_profile_app_data4");
}
packet_profile_app_data6 = SCCalloc(ALPROTO_MAX * 257, sizeof(SCProfilePacketData));
if (packet_profile_app_data6 == NULL) {
FatalError("Failed to allocate packet_profile_app_data6");
}
memset(&packet_profile_app_pd_data4, 0, sizeof(packet_profile_app_pd_data4));
memset(&packet_profile_app_pd_data6, 0, sizeof(packet_profile_app_pd_data6));
memset(&packet_profile_detect_data4, 0, sizeof(packet_profile_detect_data4));
@ -269,6 +275,15 @@ SCProfilingInit(void)
void
SCProfilingDestroy(void)
{
if (packet_profile_app_data4) {
SCFree(packet_profile_app_data4);
packet_profile_app_data4 = NULL;
}
if (packet_profile_app_data6) {
SCFree(packet_profile_app_data6);
packet_profile_app_data6 = NULL;
}
if (profiling_packets_enabled) {
pthread_mutex_destroy(&packet_profile_lock);
}
@ -490,16 +505,16 @@ void SCProfilingDumpPacketStats(void)
total = 0;
for (AppProto a = 0; a < ALPROTO_MAX; a++) {
for (int p = 0; p < 257; p++) {
SCProfilePacketData *pd = &packet_profile_app_data4[a][p];
SCProfilePacketData *pd = &packet_profile_app_data4[a * 257 + p];
total += pd->tot;
pd = &packet_profile_app_data6[a][p];
pd = &packet_profile_app_data6[a * 257 + p];
total += pd->tot;
}
}
for (AppProto a = 0; a < ALPROTO_MAX; a++) {
for (int p = 0; p < 257; p++) {
SCProfilePacketData *pd = &packet_profile_app_data4[a][p];
SCProfilePacketData *pd = &packet_profile_app_data4[a * 257 + p];
if (pd->cnt == 0) {
continue;
}
@ -518,7 +533,7 @@ void SCProfilingDumpPacketStats(void)
for (AppProto a = 0; a < ALPROTO_MAX; a++) {
for (int p = 0; p < 257; p++) {
SCProfilePacketData *pd = &packet_profile_app_data6[a][p];
SCProfilePacketData *pd = &packet_profile_app_data6[a * 257 + p];
if (pd->cnt == 0) {
continue;
}
@ -918,9 +933,9 @@ static void SCProfilingUpdatePacketAppRecord(int alproto, uint8_t ipproto, PktPr
SCProfilePacketData *pd;
if (ipver == 4)
pd = &packet_profile_app_data4[alproto][ipproto];
pd = &packet_profile_app_data4[alproto * 257 + ipproto];
else
pd = &packet_profile_app_data6[alproto][ipproto];
pd = &packet_profile_app_data6[alproto * 257 + ipproto];
if (pd->min == 0 || pdt->ticks_spent < pd->min) {
pd->min = pdt->ticks_spent;

Loading…
Cancel
Save