summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ulogd.c45
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