summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ulogd/ulogd.h15
-rw-r--r--src/ulogd.c45
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