From 00b82dd6c9ad4765ebc2f59e395a6749acc0738a Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Fri, 13 Apr 2012 16:30:44 +0200 Subject: parse: add mnl_attr_for_each_payload This function allows you to parse the payload of the Netlink message. Thus, you can skip the headers and go down to the part of the message you want to parse. This patch has updated the LIBVERSION and it also bumps the version to 1.0.3, in case that someone wants to package some snapshot, not to mess with the new symbol we have added. Signed-off-by: Pablo Neira Ayuso --- include/libmnl/libmnl.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include') diff --git a/include/libmnl/libmnl.h b/include/libmnl/libmnl.h index 1e170a9..a647fd9 100644 --- a/include/libmnl/libmnl.h +++ b/include/libmnl/libmnl.h @@ -156,11 +156,17 @@ extern struct nlattr *mnl_attr_next(const struct nlattr *attr); mnl_attr_ok((attr), (char *)mnl_attr_get_payload(nest) + mnl_attr_get_payload_len(nest) - (char *)(attr)); \ (attr) = mnl_attr_next(attr)) +#define mnl_attr_for_each_payload(payload, payload_size) \ + for ((attr) = (payload); \ + mnl_attr_ok((attr), (char *)(payload) + payload_size - (char *)(attr)); \ + (attr) = mnl_attr_next(attr)) + /* TLV callback-based attribute parsers */ typedef int (*mnl_attr_cb_t)(const struct nlattr *attr, void *data); extern int mnl_attr_parse(const struct nlmsghdr *nlh, unsigned int offset, mnl_attr_cb_t cb, void *data); extern int mnl_attr_parse_nested(const struct nlattr *attr, mnl_attr_cb_t cb, void *data); +extern int mnl_attr_parse_payload(const void *payload, size_t payload_len, mnl_attr_cb_t cb, void *data); /* * callback API -- cgit v1.2.3