summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/db.c19
-rw-r--r--util/printpkt.c5
2 files changed, 18 insertions, 6 deletions
diff --git a/util/db.c b/util/db.c
index ebd9f15..749a45f 100644
--- a/util/db.c
+++ b/util/db.c
@@ -344,6 +344,9 @@ static void __format_query_db(struct ulogd_pluginstance *upi, char *start)
}
switch (res->type) {
+ case ULOGD_RET_BOOL:
+ sprintf(stmt_ins, "'%d',", res->u.value.b);
+ break;
case ULOGD_RET_INT8:
sprintf(stmt_ins, "%d,", res->u.value.i8);
break;
@@ -363,16 +366,24 @@ static void __format_query_db(struct ulogd_pluginstance *upi, char *start)
sprintf(stmt_ins, "%u,", res->u.value.ui16);
break;
case ULOGD_RET_IPADDR:
- /* fallthrough when logging IP as uint32_t */
+ if (res->len == sizeof(struct in_addr))
+ sprintf(stmt_ins, "%u,", res->u.value.ui32);
+ else {
+ struct in6_addr ipv6;
+ char addrbuf[2 + sizeof(ipv6) * 2 + 1];
+
+ memcpy(ipv6.s6_addr, res->u.value.ui128,
+ sizeof(ipv6.s6_addr));
+ format_ipv6(addrbuf, sizeof(addrbuf), &ipv6);
+ sprintf(stmt_ins, "%s,", addrbuf);
+ }
+ break;
case ULOGD_RET_UINT32:
sprintf(stmt_ins, "%u,", res->u.value.ui32);
break;
case ULOGD_RET_UINT64:
sprintf(stmt_ins, "%" PRIu64 ",", res->u.value.ui64);
break;
- case ULOGD_RET_BOOL:
- sprintf(stmt_ins, "'%d',", res->u.value.b);
- break;
case ULOGD_RET_STRING:
*(stmt_ins++) = '\'';
if (res->u.value.ptr) {
diff --git a/util/printpkt.c b/util/printpkt.c
index b9b47b2..09a2194 100644
--- a/util/printpkt.c
+++ b/util/printpkt.c
@@ -260,11 +260,12 @@ static int printpkt_ipv4(struct ulogd_key *res, char *buf)
ikey_get_u16(&res[KEY_ICMP_ECHOSEQ]));
break;
case ICMP_PARAMETERPROB:
+ paddr = ikey_get_u32(&res[KEY_ICMP_GATEWAY]);
buf_cur += sprintf(buf_cur, "PARAMETER=%u ",
- ikey_get_u32(&res[KEY_ICMP_GATEWAY]) >> 24);
+ *(uint8_t *) &paddr);
break;
case ICMP_REDIRECT:
- paddr = ikey_get_u32(&res[KEY_ICMP_GATEWAY]),
+ paddr = ikey_get_u32(&res[KEY_ICMP_GATEWAY]);
buf_cur += sprintf(buf_cur, "GATEWAY=%s ",
inet_ntop(AF_INET,
&paddr,