From e9a1e70d11c8375f184b3e84c86d4ea67d2554c4 Mon Sep 17 00:00:00 2001 From: "/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org" Date: Thu, 15 Dec 2005 13:15:26 +0000 Subject: add new 'ulogd_key_size()' function --- include/ulogd/ulogd.h | 15 +++------------ src/ulogd.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 12 deletions(-) diff --git a/include/ulogd/ulogd.h b/include/ulogd/ulogd.h index 727d682..7e71ca7 100644 --- a/include/ulogd/ulogd.h +++ b/include/ulogd/ulogd.h @@ -42,6 +42,7 @@ #define ULOGD_RET_BOOL 0x0050 #define ULOGD_RET_IPADDR 0x0100 +#define ULOGD_RET_IP6ADDR 0x0200 /* types with length field */ #define ULOGD_RET_STRING 0x8020 @@ -210,23 +211,13 @@ void __ulogd_log(int level, char *file, int line, const char *message, ...); /* 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 */ -struct ulogd_key *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) #define IS_NEEDED(x) (x.flags & ULOGD_RETF_NEEDED) #define SET_NEEDED(x) (x.flags |= ULOGD_RETF_NEEDED) +int ulogd_key_size(struct ulogd_key *key); + /*********************************************************************** * file descriptor handling ***********************************************************************/ diff --git a/src/ulogd.c b/src/ulogd.c index f05f9e7..f10a008 100644 --- a/src/ulogd.c +++ b/src/ulogd.c @@ -134,6 +134,51 @@ static struct config_keyset ulogd_kset = { #define loglevel_ce ulogd_kset.ces[2] #define stack_ce ulogd_kset.ces[3] +/*********************************************************************** + * UTILITY FUNCTIONS FOR PLUGINS + ***********************************************************************/ + +int ulogd_key_size(struct ulogd_key *key) +{ + int ret; + + switch (key->type) { + case ULOGD_RET_INT8: + case ULOGD_RET_UINT8: + case ULOGD_RET_BOOL: + ret = 1; + break; + case ULOGD_RET_INT16: + case ULOGD_RET_UINT16: + ret = 2; + break; + case ULOGD_RET_INT32: + case ULOGD_RET_UINT32: + case ULOGD_RET_IPADDR: + ret = 4; + break; + case ULOGD_RET_INT64: + case ULOGD_RET_UINT64: + ret = 8; + break; + case ULOGD_RET_IP6ADDR: + ret = 16; + break; + case ULOGD_RET_STRING: + ret = strlen(key->u.value.ptr); + break; + case ULOGD_RET_RAW: + ret = key->len; + break; + default: + ulogd_log(ULOGD_ERROR, "don't know sizeo f unknown key " + "`%s' type 0x%x\n", key->name, key->type); + ret = -1; + break; + } + + return ret; +} /*********************************************************************** * PLUGIN MANAGEMENT -- cgit v1.2.3