You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
suricata/src/util-debug-filters.h

137 lines
3.4 KiB
C

/* Copyright (C) 2007-2010 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
/**
* \file
*
* \author Anoop Saldanha <anoopsaldanha@gmail.com>
*/
#ifndef __DEBUG_FILTERS_H__
#define __DEBUG_FILTERS_H__
#include <pthread.h>
#include "threads.h"
#include "util-mem.h"
/**
* \brief Enum that holds the different kinds of filters available
*/
enum {
SC_LOG_FILTER_BL = 0,
SC_LOG_FILTER_WL = 1,
SC_LOG_FILTER_MAX = 2,
};
/**
* \brief Structure used to hold the line_no details of a FG filter
*/
typedef struct SCLogFGFilterLine_ {
int line;
struct SCLogFGFilterLine_ *next;
} SCLogFGFilterLine;
/**
* \brief structure used to hold the function details of a FG filter
*/
typedef struct SCLogFGFilterFunc_ {
char *func;
SCLogFGFilterLine *line;
struct SCLogFGFilterFunc_ *next;
} SCLogFGFilterFunc;
/**
* \brief Structure used to hold FG filters. Encapsulates filename details,
* func details, which inturn encapsulates the line_no details
*/
typedef struct SCLogFGFilterFile_ {
char *file;
SCLogFGFilterFunc *func;
struct SCLogFGFilterFile_ *next;
} SCLogFGFilterFile;
/**
* \brief Structure used to hold the thread_list used by FD filters
*/
typedef struct SCLogFDFilterThreadList_ {
int entered;
pthread_t t;
// pid_t t;
struct SCLogFDFilterThreadList_ *next;
} SCLogFDFilterThreadList;
/**
* \brief Structure that holds the FD filters
*/
typedef struct SCLogFDFilter_ {
char *func;
struct SCLogFDFilter_ *next;
} SCLogFDFilter;
extern int sc_log_fg_filters_present;
extern int sc_log_fd_filters_present;
int SCLogAddFGFilterWL(const char *, const char *, int);
int SCLogAddFGFilterBL(const char *, const char *, int);
int SCLogMatchFGFilterBL(const char *, const char *, int);
int SCLogMatchFGFilterWL(const char *, const char *, int);
void SCLogReleaseFGFilters(void);
int SCLogAddFDFilter(const char *);
int SCLogPrintFDFilters(void);
void SCLogReleaseFDFilters(void);
int SCLogRemoveFDFilter(const char *);
int SCLogCheckFDFilterEntry(const char *);
void SCLogCheckFDFilterExit(const char *);
int SCLogMatchFDFilter(const char *);
int SCLogPrintFGFilters(void);
void SCLogAddToFGFFileList(SCLogFGFilterFile *,
const char *,
const char *, int,
int);
void SCLogAddToFGFFuncList(SCLogFGFilterFile *,
SCLogFGFilterFunc *,
const char *, int);
void SCLogAddToFGFLineList(SCLogFGFilterFunc *,
SCLogFGFilterLine *,
int);
void SCLogReleaseFDFilter(SCLogFDFilter *);
#endif /* __DEBUG_H__ */