diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ulogd.c | 45 |
1 files changed, 45 insertions, 0 deletions
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 |