Set threads name. Fix bug #83

remotes/origin/master-1.0.x
Gerardo Iglesias Galvan 16 years ago committed by Victor Julien
parent 59c5e819b1
commit 9f35a24a1f

@ -64,7 +64,7 @@ AC_INIT(configure.in)
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([arpa/inet.h inttypes.h limits.h netdb.h netinet/in.h poll.h signal.h stdint.h stdlib.h string.h syslog.h sys/socket.h sys/syscall.h sys/time.h unistd.h windows.h winsock2.h ws2tcpip.h])
AC_CHECK_HEADERS([arpa/inet.h inttypes.h limits.h netdb.h netinet/in.h poll.h signal.h stdint.h stdlib.h string.h syslog.h sys/prctl.h sys/socket.h sys/syscall.h sys/time.h unistd.h windows.h winsock2.h ws2tcpip.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE

@ -174,6 +174,7 @@ TmEcode AlertDebugLogIPv6(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq
TmEcode AlertDebugLog (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
if (PKT_IS_IPV4(p)) {
return AlertDebugLogIPv4(tv, p, data, pq);
} else if (PKT_IS_IPV6(p)) {

@ -182,6 +182,7 @@ TmEcode AlertFastLogIPv6(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
TmEcode AlertFastLog (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
if (PKT_IS_IPV4(p)) {
return AlertFastLogIPv4(tv, p, data, pq);
} else if (PKT_IS_IPV6(p)) {

@ -607,6 +607,7 @@ static int EventToReference(PacketAlert *pa, Packet *p, idmef_classification_t *
*/
TmEcode AlertPrelude (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
AlertPreludeThread *apn = (AlertPreludeThread *)data;
uint8_t ethh_offset = 0;
int ret;

@ -174,6 +174,7 @@ int AlertUnifiedAlertRotateFile(ThreadVars *t, AlertUnifiedAlertThread *aun) {
TmEcode AlertUnifiedAlert (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
AlertUnifiedAlertThread *aun = (AlertUnifiedAlertThread *)data;
AlertUnifiedAlertPacketHeader hdr;

@ -172,6 +172,7 @@ int AlertUnifiedLogRotateFile(ThreadVars *t, AlertUnifiedLogThread *aun) {
TmEcode AlertUnifiedLog (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
AlertUnifiedLogThread *aun = (AlertUnifiedLogThread *)data;
AlertUnifiedLogPacketHeader hdr;
int ret;

@ -183,6 +183,7 @@ int Unified2AlertRotateFile(ThreadVars *t, Unified2AlertThread *aun) {
TmEcode Unified2Alert (ThreadVars *t, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(t->name);
int ret = 0;
if(PKT_IS_IPV4(p)) {

@ -141,6 +141,7 @@ static void SCPerfReleaseOPCtx()
static void *SCPerfMgmtThread(void *arg)
{
ThreadVars *tv_local = (ThreadVars *)arg;
SCSetThreadName(tv_local->name);
uint8_t run = 1;
struct timespec cond_time;
@ -183,6 +184,7 @@ static void *SCPerfMgmtThread(void *arg)
static void *SCPerfWakeupThread(void *arg)
{
ThreadVars *tv_local = (ThreadVars *)arg;
SCSetThreadName(tv_local->name);
uint8_t run = 1;
ThreadVars *tv = NULL;
PacketQueue *q = NULL;

@ -807,6 +807,8 @@ end:
*/
TmEcode Detect(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCSetThreadName(tv->name);
/*No need to perform any detection on this packet, if the the given flag is set.*/
if (p->flags & PKT_NOPACKET_INSPECTION)
return 0;

@ -639,6 +639,7 @@ void FlowShutdown(void) {
void *FlowManagerThread(void *td)
{
ThreadVars *th_v = (ThreadVars *)td;
SCSetThreadName(th_v->name);
struct timeval ts;
struct timeval tsdiff;
uint32_t established_cnt = 0, new_cnt = 0, closing_cnt = 0, nowcnt;

@ -306,6 +306,7 @@ end:
TmEcode LogHttpLog (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCEnter();
SCSetThreadName(tv->name);
/* no flow, no htp state */
if (p->flow == NULL) {

@ -40,6 +40,8 @@ void TmModuleRespondRejectRegister (void) {
}
TmEcode RespondRejectFunc(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCSetThreadName(tv->name);
int ret = 0;
/* ACTION_REJECT defaults to rejecting the SRC */

@ -163,6 +163,7 @@ void TmModuleDecodeIPFWRegister (void) {
* \retval TM_ECODE_FAILED on failure and TM_ECODE_OK on success
*/
TmEcode ReceiveIPFW(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCSetThreadName(tv->name);
IPFWThreadVars *ptv = (IPFWThreadVars *)data;
char pkt[IP_MAXPACKET];
int pktlen=0;
@ -385,6 +386,7 @@ TmEcode ReceiveIPFWThreadDeinit(ThreadVars *tv, void *data) {
*/
TmEcode DecodeIPFW(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
IPV4Hdr *ip4h = (IPV4Hdr *)p->pkt;
IPV6Hdr *ip6h = (IPV6Hdr *)p->pkt;
DecodeThreadVars *dtv = (DecodeThreadVars *)data;
@ -521,6 +523,7 @@ TmEcode IPFWSetVerdict(ThreadVars *tv, IPFWThreadVars *ptv, Packet *p) {
* \param pq pointer for the Packet Queue access (Not used)
*/
TmEcode VerdictIPFW(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCSetThreadName(tv->name);
IPFWThreadVars *ptv = (IPFWThreadVars *)data;
TmEcode retval = TM_ECODE_OK;

@ -385,6 +385,7 @@ void NFQRecvPkt(NFQThreadVars *t) {
}
TmEcode ReceiveNFQ(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCSetThreadName(tv->name);
NFQThreadVars *ntv = (NFQThreadVars *)data;
//printf("%p receiving on queue %" PRIu32 "\n", ntv, ntv->queue_num);
@ -447,6 +448,7 @@ void NFQSetVerdict(NFQThreadVars *t, Packet *p) {
}
TmEcode VerdictNFQ(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCSetThreadName(tv->name);
NFQThreadVars *ntv = (NFQThreadVars *)data;
/* if this is a tunnel packet we check if we are ready to verdict
@ -486,6 +488,7 @@ TmEcode VerdictNFQ(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
*/
TmEcode DecodeNFQ(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
IPV4Hdr *ip4h = (IPV4Hdr *)p->pkt;
IPV6Hdr *ip6h = (IPV6Hdr *)p->pkt;
DecodeThreadVars *dtv = (DecodeThreadVars *)data;

@ -111,6 +111,7 @@ void PcapFileCallback(char *user, struct pcap_pkthdr *h, u_char *pkt) {
*/
TmEcode ReceivePcapFile(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCEnter();
SCSetThreadName(tv->name);
PcapFileThreadVars *ptv = (PcapFileThreadVars *)data;
ptv->in_p = p;
@ -222,6 +223,7 @@ TmEcode ReceivePcapFileThreadDeinit(ThreadVars *tv, void *data) {
TmEcode DecodePcapFile(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCEnter();
SCSetThreadName(tv->name);
DecodeThreadVars *dtv = (DecodeThreadVars *)data;
/* update counters */

@ -128,6 +128,7 @@ void PcapCallback(char *user, struct pcap_pkthdr *h, u_char *pkt) {
*/
TmEcode ReceivePcap(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCEnter();
SCSetThreadName(tv->name);
PcapThreadVars *ptv = (PcapThreadVars *)data;
/* Just read one packet at a time for now. */
@ -363,6 +364,7 @@ TmEcode ReceivePcapThreadDeinit(ThreadVars *tv, void *data) {
TmEcode DecodePcap(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCEnter();
SCSetThreadName(tv->name);
DecodeThreadVars *dtv = (DecodeThreadVars *)data;
/* update counters */

@ -164,6 +164,7 @@ void PfringProcessPacket(void *user, struct pfring_pkthdr *h, u_char *pkt, Packe
* \retval TM_ECODE_FAILED on failure
*/
TmEcode ReceivePfring(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
SCSetThreadName(tv->name);
PfringThreadVars *ptv = (PfringThreadVars *)data;
struct pfring_pkthdr hdr;
@ -323,6 +324,7 @@ TmEcode ReceivePfringThreadDeinit(ThreadVars *tv, void *data) {
*/
TmEcode DecodePfring(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
DecodeThreadVars *dtv = (DecodeThreadVars *)data;
/* update counters */

@ -2535,6 +2535,7 @@ static int StreamTcpPacket (ThreadVars *tv, Packet *p, StreamTcpThread *stt)
TmEcode StreamTcp (ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
{
SCSetThreadName(tv->name);
StreamTcpThread *stt = (StreamTcpThread *)data;
TmEcode ret = TM_ECODE_OK;

@ -33,6 +33,10 @@
#if HAVE_SYS_SYSCALL_H
#include <sys/syscall.h>
#endif
#if HAVE_SYS_PRCTL_H
#include <sys/prctl.h>
#define THREAD_NAME_LEN 16
#endif
#define PRIO_LOW 2
#define PRIO_MEDIUM 0
#define PRIO_HIGH -2
@ -319,6 +323,24 @@
#define SCSpinDestroy(spin) pthread_spin_destroy(spin)
#endif /* DBG_THREADS */
#ifdef OS_FREEBSD
/* TODO Add implementation for FreeBSD */
#elif OS_WIN32
/* TODO Add implementation for Windows */
#elif OS_DARWIN
/* TODO Add implementation for MacOS */
#else
#define SCSetThreadName(n) ({ \
char tname[THREAD_NAME_LEN + 1] = {'\0'}; \
if (strlen(n) > THREAD_NAME_LEN) \
SCLogDebug("Thread name is too long, truncating it..."); \
strncpy(tname, n, THREAD_NAME_LEN); \
int ret; \
if ((ret = prctl(PR_SET_NAME, tname, 0, 0, 0)) < 0) \
SCLogDebug("Error setting thread name \"%s\": %s", tname, strerror(errno)); \
ret; \
})
#endif
void ThreadMacrosRegisterTests(void);
#endif /* __THREADS_H__ */

Loading…
Cancel
Save