]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
libnetlink: add rtattr_for_each_nested() iteration macro
authorJohannes Berg <johannes@sipsolutions.net>
Mon, 24 Aug 2020 17:51:06 +0000 (19:51 +0200)
committerDavid Ahern <dsahern@gmail.com>
Tue, 25 Aug 2020 03:34:29 +0000 (21:34 -0600)
This is useful for iterating elements in a nested attribute,
if they're not parsed with a strict length limit or such.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David Ahern <dsahern@gmail.com>
include/libnetlink.h

index e27516f7648fc59b2859c1ca3e57014b5035ba75..0d4a9f29afbde7020210f4fed2cea479e83b6c71 100644 (file)
@@ -284,4 +284,9 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
  * messages from dump file */
 #define NLMSG_TSTAMP   15
 
+#define rtattr_for_each_nested(attr, nest) \
+       for ((attr) = (void *)RTA_DATA(nest); \
+            RTA_OK(attr, RTA_PAYLOAD(nest) - ((char *)(attr) - (char *)RTA_DATA((nest)))); \
+            (attr) = RTA_TAIL((attr)))
+
 #endif /* __LIBNETLINK_H__ */