📄 ulogd.h
字号:
#ifndef _ULOGD_H#define _ULOGD_H/* ulogd, Version $Revision: 5369 $ * * userspace logging daemon for netfilter ULOG target * of the linux 2.4 netfilter subsystem. * * (C) 2000 by Harald Welte <laforge@gnumonks.org> * * this code is released under the terms of GNU GPL * * $Id: ulogd.h 5369 2005-05-04 01:16:57Z laforge $ */#include <libipulog/libipulog.h>#include <stdio.h>#include <signal.h> /* need this because of extension-sighandler *//* All types with MSB = 1 make use of value.ptr * other types use one of the union's member *//* types without length */#define ULOGD_RET_NONE 0x0000#define ULOGD_RET_INT8 0x0001#define ULOGD_RET_INT16 0x0002#define ULOGD_RET_INT32 0x0003#define ULOGD_RET_INT64 0x0004#define ULOGD_RET_UINT8 0x0011#define ULOGD_RET_UINT16 0x0012#define ULOGD_RET_UINT32 0x0013#define ULOGD_RET_UINT64 0x0014#define ULOGD_RET_BOOL 0x0050#define ULOGD_RET_IPADDR 0x0100/* types with length field */#define ULOGD_RET_STRING 0x8020#define ULOGD_RET_RAW 0x8030/* FLAGS */#define ULOGD_RETF_NONE 0x0000#define ULOGD_RETF_VALID 0x0001 /* contains a valid result */#define ULOGD_RETF_FREE 0x0002 /* ptr needs to be free()d *//* maximum length of ulogd key */#define ULOGD_MAX_KEYLEN 32#define ULOGD_DEBUG 1 /* debugging information */#define ULOGD_INFO 3#define ULOGD_NOTICE 5 /* abnormal/unexpected condition */#define ULOGD_ERROR 7 /* error condition, requires user action */#define ULOGD_FATAL 8 /* fatal, program aborted */typedef struct ulog_iret { /* next interpreter return (key) in the global list */ struct ulog_iret *next; /* next interpreter in linked list for current result */ struct ulog_iret *cur_next; /* length of the returned value (only for lengthed types */ u_int32_t len; /* type of the returned value (ULOGD_IRET_...) */ u_int16_t type; /* flags (i.e. free, ...) */ u_int16_t flags; /* name of this key */ char key[ULOGD_MAX_KEYLEN]; /* and finally the returned value */ union { u_int8_t b; u_int8_t ui8; u_int16_t ui16; u_int32_t ui32; u_int64_t ui64; int8_t i8; int16_t i16; int32_t i32; int64_t i64; void *ptr; } value;} ulog_iret_t;typedef struct ulog_interpreter { /* next interpreter in old-style linked list */ struct ulog_interpreter *next; /* name of this interpreter (predefined by plugin) */ char name[ULOGD_MAX_KEYLEN]; /* ID for this interpreter (dynamically assigned) */ unsigned int id; /* function to call for each packet */ ulog_iret_t* (*interp)(struct ulog_interpreter *ip, ulog_packet_msg_t *pkt); /* number of keys this interpreter has */ unsigned int key_num; /* keys of this particular interpreter */ ulog_iret_t *result;} ulog_interpreter_t;typedef struct ulog_output { /* next output in the linked list */ struct ulog_output *next; /* name of this ouput plugin */ char name[ULOGD_MAX_KEYLEN]; /* callback for initialization */ int (*init)(void); /* callback for de-initialization */ void (*fini)(void); /* callback function */ int (*output)(ulog_iret_t *ret); /* callback function for signals (SIGHUP, ..) */ void (*signal)(int signal);} ulog_output_t;/* entries of the key hash */struct ulogd_keyh_entry { ulog_interpreter_t *interp; /* interpreter for this key */ unsigned int offset; /* offset within interpreter */ const char *name; /* name of this particular key */};/*********************************************************************** * PUBLIC INTERFACE ***********************************************************************//* register a new interpreter plugin */void register_interpreter(ulog_interpreter_t *me);/* register a new output target */void register_output(ulog_output_t *me);/* allocate a new ulog_iret_t */ulog_iret_t *alloc_ret(const u_int16_t type, const char*);/* write a message to the daemons' logfile */void __ulogd_log(int level, char *file, int line, const char *message, ...);/* macro for logging including filename and line number */#define ulogd_log(level, format, args...) \ __ulogd_log(level, __FILE__, __LINE__, format, ## args)/* backwards compatibility */#define ulogd_error(format, args...) ulogd_log(ULOGD_ERROR, format, ## args)/* get an interpreter hash id by name */unsigned int interh_getid(const char *name);/* get a key id if you have the name */unsigned int keyh_getid(const char *name);/* get a result for a given key id */ulog_iret_t *keyh_getres(unsigned int id);/* the key hash itself */extern struct ulogd_keyh_entry *ulogd_keyh;#define IS_VALID(x) (x.flags & ULOGD_RETF_VALID)#define SET_VALID(x) (x.flags |= ULOGD_RETF_VALID)#endif /* _ULOGD_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -