]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: Honor obligatory stateless printing of flow tables
authorElise Lennion <elise.lennion@gmail.com>
Wed, 18 Jan 2017 23:06:47 +0000 (21:06 -0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 23 Jan 2017 13:26:16 +0000 (14:26 +0100)
Always print flow statement as stateless expressions, given that this
just defines the flow table statement instance that is allocated per
entry.

Signed-off-by: Elise Lennion <elise.lennion@gmail.com>
include/nftables.h
src/main.c
src/statement.c

index 760bbff5291eea7ebce45a322fa32092ae3409a7..6f541557364bae287bcf92e0f3ab2ed2942ff206 100644 (file)
@@ -26,10 +26,10 @@ enum debug_level {
 
 extern unsigned int max_errors;
 extern unsigned int numeric_output;
+extern unsigned int stateless_output;
 extern unsigned int ip2name_output;
 extern unsigned int handle_output;
 extern unsigned int debug_level;
-extern bool stateless_output;
 extern const char *include_paths[INCLUDE_PATHS_MAX];
 
 enum nftables_exit_codes {
index 6d073d5c79f9037bef19f642ee5c8bf31c688439..6ba752b1e5b392043d8dfdeb18646dad36b8e76a 100644 (file)
 
 unsigned int max_errors = 10;
 unsigned int numeric_output;
+unsigned int stateless_output;
 unsigned int ip2name_output;
 unsigned int handle_output;
 #ifdef DEBUG
 unsigned int debug_level;
 #endif
-bool stateless_output;
 
 const char *include_paths[INCLUDE_PATHS_MAX] = { DEFAULT_INCLUDE_PATH };
 static unsigned int num_include_paths = 1;
@@ -291,7 +291,7 @@ int main(int argc, char * const *argv)
                        numeric_output++;
                        break;
                case OPT_STATELESS:
-                       stateless_output = true;
+                       stateless_output++;
                        break;
                case OPT_IP2NAME:
                        ip2name_output++;
index 25bed65f79514402de9b4c535dfbec02921b697f..9cdabbb979e86bf1fe6831a830bb6c8ea4359848 100644 (file)
@@ -117,8 +117,13 @@ static void flow_stmt_print(const struct stmt *stmt)
        printf("{ ");
        expr_print(stmt->flow.key);
        printf(" ");
+
+       stateless_output++;
        stmt_print(stmt->flow.stmt);
+       stateless_output--;
+
        printf("} ");
+
 }
 
 static void flow_stmt_destroy(struct stmt *stmt)