stats: use unshortened interface names in counters

pull/2941/head
Sascha Steinbiss 8 years ago committed by Victor Julien
parent 4d25593b4a
commit d9c7f9bb17

@ -905,7 +905,7 @@ void StatsSpawnThreads(void)
uint16_t StatsRegisterCounter(const char *name, struct ThreadVars_ *tv)
{
uint16_t id = StatsRegisterQualifiedCounter(name,
(tv->thread_group_name != NULL) ? tv->thread_group_name : tv->name,
(tv->thread_group_name != NULL) ? tv->thread_group_name : tv->printable_name,
&tv->perf_public_ctx,
STATS_TYPE_NORMAL, NULL);
@ -926,7 +926,7 @@ uint16_t StatsRegisterCounter(const char *name, struct ThreadVars_ *tv)
uint16_t StatsRegisterAvgCounter(const char *name, struct ThreadVars_ *tv)
{
uint16_t id = StatsRegisterQualifiedCounter(name,
(tv->thread_group_name != NULL) ? tv->thread_group_name : tv->name,
(tv->thread_group_name != NULL) ? tv->thread_group_name : tv->printable_name,
&tv->perf_public_ctx,
STATS_TYPE_AVERAGE, NULL);
@ -947,7 +947,7 @@ uint16_t StatsRegisterAvgCounter(const char *name, struct ThreadVars_ *tv)
uint16_t StatsRegisterMaxCounter(const char *name, struct ThreadVars_ *tv)
{
uint16_t id = StatsRegisterQualifiedCounter(name,
(tv->thread_group_name != NULL) ? tv->thread_group_name : tv->name,
(tv->thread_group_name != NULL) ? tv->thread_group_name : tv->printable_name,
&tv->perf_public_ctx,
STATS_TYPE_MAXIMUM, NULL);
@ -1168,7 +1168,8 @@ int StatsSetupPrivate(ThreadVars *tv)
{
StatsGetAllCountersArray(&(tv)->perf_public_ctx, &(tv)->perf_private_ctx);
StatsThreadRegister(tv->name, &(tv)->perf_public_ctx);
StatsThreadRegister(tv->printable_name ? tv->printable_name : tv->name,
&(tv)->perf_public_ctx);
return 0;
}

@ -68,8 +68,10 @@ static json_t *OutputStats2Json(json_t *js, const char *key)
const char *dot = index(key, '.');
if (dot == NULL)
return NULL;
if (*(dot + 1) == '.' && *(dot + 2) != '\0')
dot = index(dot + 2, '.');
if (strlen(dot) > 2) {
if (*(dot + 1) == '.' && *(dot + 2) != '\0')
dot = index(dot + 2, '.');
}
size_t predot_len = (dot - key) + 1;
char s[predot_len];

@ -57,6 +57,7 @@ struct TmSlot_;
typedef struct ThreadVars_ {
pthread_t t;
char name[16];
char *printable_name;
char *thread_group_name;
SC_ATOMIC_DECLARE(unsigned int, flags);
@ -117,4 +118,3 @@ typedef struct ThreadVars_ {
#define THREAD_SET_AFFTYPE 0x04 /** Priority and affinity */
#endif /* __THREADVARS_H__ */

@ -1833,6 +1833,10 @@ static void TmThreadFree(ThreadVars *tv)
SCFree(tv->thread_group_name);
}
if (tv->printable_name) {
SCFree(tv->printable_name);
}
s = (TmSlot *)tv->tm_slots;
while (s) {
ps = s;

@ -192,8 +192,16 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
threads_count = ModThreadsCount(aconf);
for (int thread = 0; thread < threads_count; thread++) {
char *printable_threadname = SCMalloc(sizeof(char) * (strlen(thread_name)+5+strlen(dev)));
if (unlikely(printable_threadname == NULL)) {
SCLogError(SC_ERR_MEM_ALLOC, "failed to alloc printable thread name: %s", strerror(errno));
exit(EXIT_FAILURE);
}
snprintf(tname, sizeof(tname), "%s#%02d-%s", thread_name,
thread+1, visual_devname);
snprintf(printable_threadname, strlen(thread_name)+5+strlen(dev),
"%s#%02d-%s", thread_name, thread+1,
dev);
ThreadVars *tv_receive =
TmThreadCreatePacketHandler(tname,
@ -203,6 +211,7 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
SCLogError(SC_ERR_RUNMODE, "TmThreadsCreate failed");
exit(EXIT_FAILURE);
}
tv_receive->printable_name = printable_threadname;
TmModule *tm_module = TmModuleGetByName(recv_mod_name);
if (tm_module == NULL) {
SCLogError(SC_ERR_RUNMODE, "TmModuleGetByName failed for %s", recv_mod_name);
@ -293,12 +302,21 @@ static int RunModeSetLiveCaptureWorkersForDevice(ConfigIfaceThreadsCountFunc Mod
ThreadVars *tv = NULL;
TmModule *tm_module = NULL;
const char *visual_devname = LiveGetShortName(live_dev);
char *printable_threadname = SCMalloc(sizeof(char) * (strlen(thread_name)+5+strlen(live_dev)));
if (unlikely(printable_threadname == NULL)) {
SCLogError(SC_ERR_MEM_ALLOC, "failed to alloc printable thread name: %s", strerror(errno));
exit(EXIT_FAILURE);
}
if (single_mode) {
snprintf(tname, sizeof(tname), "%s#01-%s", thread_name, visual_devname);
snprintf(printable_threadname, strlen(thread_name)+5+strlen(live_dev), "%s#01-%s",
thread_name, live_dev);
} else {
snprintf(tname, sizeof(tname), "%s#%02d-%s", thread_name,
thread+1, visual_devname);
snprintf(printable_threadname, strlen(thread_name)+5+strlen(live_dev), "%s#%02d-%s",
thread_name, thread+1, live_dev);
}
tv = TmThreadCreatePacketHandler(tname,
"packetpool", "packetpool",
@ -308,6 +326,7 @@ static int RunModeSetLiveCaptureWorkersForDevice(ConfigIfaceThreadsCountFunc Mod
SCLogError(SC_ERR_THREAD_CREATE, "TmThreadsCreate failed");
exit(EXIT_FAILURE);
}
tv->printable_name = printable_threadname;
tm_module = TmModuleGetByName(recv_mod_name);
if (tm_module == NULL) {

Loading…
Cancel
Save