diff options
-rw-r--r-- | src/parser_bison.y | 1 | ||||
-rw-r--r-- | src/parser_json.c | 2 | ||||
-rw-r--r-- | tests/py/inet/fib.t | 2 | ||||
-rw-r--r-- | tests/py/inet/fib.t.json | 45 | ||||
-rw-r--r-- | tests/py/inet/fib.t.payload | 8 |
5 files changed, 57 insertions, 1 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y index e1afbbb6..f9cc9098 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -3873,6 +3873,7 @@ primary_stmt_expr : symbol_expr { $$ = $1; } | payload_expr { $$ = $1; } | keyword_expr { $$ = $1; } | socket_expr { $$ = $1; } + | fib_expr { $$ = $1; } | osf_expr { $$ = $1; } | '(' basic_stmt_expr ')' { $$ = $2; } ; diff --git a/src/parser_json.c b/src/parser_json.c index ce944740..08657f28 100644 --- a/src/parser_json.c +++ b/src/parser_json.c @@ -1627,7 +1627,7 @@ static struct expr *json_parse_expr(struct json_ctx *ctx, json_t *root) /* below two are hash expr */ { "jhash", json_parse_hash_expr, CTX_F_STMT | CTX_F_PRIMARY | CTX_F_SET_RHS | CTX_F_SES | CTX_F_MAP | CTX_F_CONCAT }, { "symhash", json_parse_hash_expr, CTX_F_STMT | CTX_F_PRIMARY | CTX_F_SET_RHS | CTX_F_SES | CTX_F_MAP | CTX_F_CONCAT }, - { "fib", json_parse_fib_expr, CTX_F_PRIMARY | CTX_F_SET_RHS | CTX_F_SES | CTX_F_MAP | CTX_F_CONCAT }, + { "fib", json_parse_fib_expr, CTX_F_STMT | CTX_F_PRIMARY | CTX_F_SET_RHS | CTX_F_SES | CTX_F_MAP | CTX_F_CONCAT }, { "|", json_parse_binop_expr, CTX_F_RHS | CTX_F_STMT | CTX_F_PRIMARY | CTX_F_SET_RHS | CTX_F_SES | CTX_F_MAP | CTX_F_CONCAT }, { "^", json_parse_binop_expr, CTX_F_RHS | CTX_F_STMT | CTX_F_PRIMARY | CTX_F_SET_RHS | CTX_F_SES | CTX_F_MAP | CTX_F_CONCAT }, { "&", json_parse_binop_expr, CTX_F_RHS | CTX_F_STMT | CTX_F_PRIMARY | CTX_F_SET_RHS | CTX_F_SES | CTX_F_MAP | CTX_F_CONCAT }, diff --git a/tests/py/inet/fib.t b/tests/py/inet/fib.t index f9c03b3a..60b77a4a 100644 --- a/tests/py/inet/fib.t +++ b/tests/py/inet/fib.t @@ -17,3 +17,5 @@ fib daddr check missing;ok fib daddr oif exists;ok;fib daddr check exists fib daddr check vmap { missing : drop, exists : accept };ok + +meta mark set fib daddr check . ct mark map { exists . 0x00000000 : 0x00000001 };ok diff --git a/tests/py/inet/fib.t.json b/tests/py/inet/fib.t.json index c2e9d454..14a6249a 100644 --- a/tests/py/inet/fib.t.json +++ b/tests/py/inet/fib.t.json @@ -159,3 +159,48 @@ } } ] + +# meta mark set fib daddr check . ct mark map { exists . 0x00000000 : 0x00000001 } +[ + { + "mangle": { + "key": { + "meta": { + "key": "mark" + } + }, + "value": { + "map": { + "data": { + "set": [ + [ + { + "concat": [ + true, + 0 + ] + }, + 1 + ] + ] + }, + "key": { + "concat": [ + { + "fib": { + "flags": "daddr", + "result": "check" + } + }, + { + "ct": { + "key": "mark" + } + } + ] + } + } + } + } + } +] diff --git a/tests/py/inet/fib.t.payload b/tests/py/inet/fib.t.payload index e09a260c..02d92b57 100644 --- a/tests/py/inet/fib.t.payload +++ b/tests/py/inet/fib.t.payload @@ -36,3 +36,11 @@ ip test-ip prerouting ip test-ip prerouting [ fib daddr oif present => reg 1 ] [ lookup reg 1 set __map%d dreg 0 ] + +# meta mark set fib daddr check . ct mark map { exists . 0x00000000 : 0x00000001 } + element 00000001 00000000 : 00000001 0 [end] +ip test-ip prerouting + [ fib daddr oif present => reg 1 ] + [ ct load mark => reg 9 ] + [ lookup reg 1 set __map%d dreg 1 ] + [ meta set mark with reg 1 ] |