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 --- src/ulogd.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src') 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