add blobmsg_for_each_attr
[project/libubox.git] / blobmsg.h
index 95732e3..aa1f314 100644 (file)
--- a/blobmsg.h
+++ b/blobmsg.h
@@ -141,4 +141,10 @@ static inline int blobmsg_buf_init(struct blob_buf *buf)
 
 char *blobmsg_format_json(struct blob_attr *attr);
 
+#define blobmsg_for_each_attr(pos, attr, rem) \
+       for (rem = blobmsg_data_len(attr), pos = blobmsg_data(attr); \
+                (blob_pad_len(pos) <= rem) && \
+                (blob_pad_len(pos) >= sizeof(struct blob_attr)); \
+                rem -= blob_pad_len(pos), pos = blob_next(pos))
+
 #endif