]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
rule: Implement internal iterator for expressions
authorCarlos Falgueras García <carlosfg@riseup.net>
Wed, 10 Aug 2016 09:48:54 +0000 (11:48 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 10 Aug 2016 11:41:53 +0000 (13:41 +0200)
Introduce nftnl_expr_iter_init() to allow stack allocated iterators for
internal use.

Signed-off-by: Carlos Falgueras García <carlosfg@riseup.net>
src/rule.c

index 21039bb854bf6ca098fc4dc16116cda5fa48076b..dada00e1cc99f0b26965fb87267f75acaaa72058 100644 (file)
@@ -1030,6 +1030,17 @@ struct nftnl_expr_iter {
        struct nftnl_expr       *cur;
 };
 
+static void nftnl_expr_iter_init(const struct nftnl_rule *r,
+                                struct nftnl_expr_iter *iter)
+{
+       iter->r = r;
+       if (list_empty(&r->expr_list))
+               iter->cur = NULL;
+       else
+               iter->cur = list_entry(r->expr_list.next, struct nftnl_expr,
+                                      head);
+}
+
 struct nftnl_expr_iter *nftnl_expr_iter_create(const struct nftnl_rule *r)
 {
        struct nftnl_expr_iter *iter;
@@ -1038,12 +1049,7 @@ struct nftnl_expr_iter *nftnl_expr_iter_create(const struct nftnl_rule *r)
        if (iter == NULL)
                return NULL;
 
-       iter->r = r;
-       if (list_empty(&r->expr_list))
-               iter->cur = NULL;
-       else
-               iter->cur = list_entry(r->expr_list.next, struct nftnl_expr,
-                                      head);
+       nftnl_expr_iter_init(r, iter);
 
        return iter;
 }