summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChen Jingpiao <chenjingpiao@gmail.com>2018-03-11 20:14:56 +0800
committerDmitry V. Levin <ldv@altlinux.org>2018-03-11 15:35:19 +0000
commit073d93827f77e8787cdb7ec1ae28b60866334482 (patch)
treeb4a005253dfc785a4fb7aaaebd2ff23d9873382c
parent547b90e239fd85338fe70f690d52bbc1f47b90bf (diff)
downloadstrace-073d93827f77e8787cdb7ec1ae28b60866334482.tar.gz
nfnetlink: introduce generic netfilter subsystem decoder
* netlink_netfilter.c: Include "nlattr.h". (decode_netlink_netfilter): Call decode_nlattr.
-rw-r--r--netlink_netfilter.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/netlink_netfilter.c b/netlink_netfilter.c
index eb361ed77..1d59ae33a 100644
--- a/netlink_netfilter.c
+++ b/netlink_netfilter.c
@@ -31,6 +31,7 @@
#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_H
# include "print_fields.h"
+# include "nlattr.h"
# include <netinet/in.h>
# include <arpa/inet.h>
@@ -80,8 +81,14 @@ decode_netlink_netfilter(struct tcb *const tcp,
const size_t offset = NLMSG_ALIGN(sizeof(nfmsg));
if (len > offset) {
tprints(", ");
- printstr_ex(tcp, addr + offset,
- len - offset, QUOTE_FORCE_HEX);
+ if ((nlmsghdr->nlmsg_type >= NFNL_MSG_BATCH_BEGIN
+ && nlmsghdr->nlmsg_type <= NFNL_MSG_BATCH_END)
+ || nlmsghdr->nlmsg_type < NLMSG_MIN_TYPE)
+ printstr_ex(tcp, addr + offset,
+ len - offset, QUOTE_FORCE_HEX);
+ else
+ decode_nlattr(tcp, addr + offset, len - offset,
+ NULL, NULL, NULL, 0, NULL);
}
}