summaryrefslogtreecommitdiff
path: root/include/openvswitch/list.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/openvswitch/list.h')
-rw-r--r--include/openvswitch/list.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/openvswitch/list.h b/include/openvswitch/list.h
index ea5b3dbbb..2bc294c5f 100644
--- a/include/openvswitch/list.h
+++ b/include/openvswitch/list.h
@@ -80,6 +80,12 @@ static inline bool ovs_list_is_short(const struct ovs_list *);
for (INIT_CONTAINER(ITER, (LIST)->prev, MEMBER); \
&(ITER)->MEMBER != (LIST); \
ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.prev, MEMBER))
+#define LIST_FOR_EACH_REVERSE_SAFE(ITER, PREV, MEMBER, LIST) \
+ for (INIT_CONTAINER(ITER, (LIST)->prev, MEMBER); \
+ (&(ITER)->MEMBER != (LIST) \
+ ? INIT_CONTAINER(PREV, (ITER)->MEMBER.prev, MEMBER), 1 \
+ : 0); \
+ (ITER) = (PREV))
#define LIST_FOR_EACH_REVERSE_CONTINUE(ITER, MEMBER, LIST) \
for (ASSIGN_CONTAINER(ITER, (ITER)->MEMBER.prev, MEMBER); \
&(ITER)->MEMBER != (LIST); \