summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Graf <tgraf@suug.ch>2013-02-05 21:31:31 (GMT)
committerThomas Graf <tgraf@suug.ch>2013-02-05 21:31:31 (GMT)
commit9f8548b5513a9e9aba52b417c4e36e817d68781f (patch)
treeb9614e2a8236bd16ab5ed2144b809dd7427d9778
parent8026fe2e3a9089eff3f5a06ee6e3cc78d96334ed (diff)
downloadlibnl-9f8548b5513a9e9aba52b417c4e36e817d68781f.zip
libnl-9f8548b5513a9e9aba52b417c4e36e817d68781f.tar.gz
libnl-9f8548b5513a9e9aba52b417c4e36e817d68781f.tar.bz2
attr: Provide nla_is_nested() function
Signed-off-by: Thomas Graf <tgraf@suug.ch>
-rw-r--r--include/netlink/attr.h3
-rw-r--r--lib/attr.c13
2 files changed, 14 insertions, 2 deletions
diff --git a/include/netlink/attr.h b/include/netlink/attr.h
index 4d32113..69ecb08 100644
--- a/include/netlink/attr.h
+++ b/include/netlink/attr.h
@@ -6,7 +6,7 @@
* License as published by the Free Software Foundation version 2.1
* of the License.
*
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2013 Thomas Graf <tgraf@suug.ch>
*/
#ifndef NETLINK_ATTR_H_
@@ -126,6 +126,7 @@ extern struct nlattr * nla_nest_start(struct nl_msg *, int);
extern int nla_nest_end(struct nl_msg *, struct nlattr *);
extern int nla_parse_nested(struct nlattr **, int, struct nlattr *,
struct nla_policy *);
+extern int nla_is_nested(struct nlattr *);
/**
* @name Attribute Construction (Exception Based)
diff --git a/lib/attr.c b/lib/attr.c
index 10ea682..26bece3 100644
--- a/lib/attr.c
+++ b/lib/attr.c
@@ -6,7 +6,7 @@
* License as published by the Free Software Foundation version 2.1
* of the License.
*
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2013 Thomas Graf <tgraf@suug.ch>
*/
#include <netlink-private/netlink.h>
@@ -868,6 +868,17 @@ int nla_parse_nested(struct nlattr *tb[], int maxtype, struct nlattr *nla,
return nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy);
}
+/**
+ * Return true if attribute has NLA_F_NESTED flag set
+ * @arg attr Netlink attribute
+ *
+ * @return True if attribute has NLA_F_NESTED flag set, oterhwise False.
+ */
+int nla_is_nested(struct nlattr *attr)
+{
+ return !!(nla_type(attr) & NLA_F_NESTED);
+}
+
/** @} */
/** @} */