diff options
-rw-r--r-- | src/netlink_linearize.c | 6 | ||||
-rw-r--r-- | tests/py/ip6/flowtable.t | 6 | ||||
-rw-r--r-- | tests/py/ip6/flowtable.t.payload | 16 |
3 files changed, 25 insertions, 3 deletions
diff --git a/src/netlink_linearize.c b/src/netlink_linearize.c index b5967d49..0458af95 100644 --- a/src/netlink_linearize.c +++ b/src/netlink_linearize.c @@ -1124,9 +1124,9 @@ static void netlink_gen_flow_stmt(struct netlink_linearize_ctx *ctx, enum nft_dynset_ops op; struct set *set; - sreg_key = get_register(ctx, stmt->flow.key); - netlink_gen_expr(ctx, stmt->flow.key, sreg_key); - release_register(ctx, stmt->flow.key); + sreg_key = get_register(ctx, stmt->flow.key->key); + netlink_gen_expr(ctx, stmt->flow.key->key, sreg_key); + release_register(ctx, stmt->flow.key->key); set = stmt->flow.set->set; if (stmt->flow.key->timeout) diff --git a/tests/py/ip6/flowtable.t b/tests/py/ip6/flowtable.t new file mode 100644 index 00000000..ae408b78 --- /dev/null +++ b/tests/py/ip6/flowtable.t @@ -0,0 +1,6 @@ +:input;type filter hook input priority 0 + +*ip6;test-ip6;input + +flow table acct_out { meta iif . ip6 saddr timeout 600s counter };ok;flow table acct_out { iif . ip6 saddr timeout 10m counter packets 0 bytes 0} +flow table acct_out { ip6 saddr . meta iif timeout 600s counter };ok;flow table acct_out { ip6 saddr . iif timeout 10m counter packets 0 bytes 0} diff --git a/tests/py/ip6/flowtable.t.payload b/tests/py/ip6/flowtable.t.payload new file mode 100644 index 00000000..d3da5bad --- /dev/null +++ b/tests/py/ip6/flowtable.t.payload @@ -0,0 +1,16 @@ +# flow table acct_out { meta iif . ip6 saddr timeout 600s counter } +acct_out test-ip6 31 +acct_out test-ip6 0 +ip6 test-ip6 input + [ meta load iif => reg 1 ] + [ payload load 16b @ network header + 8 => reg 9 ] + [ dynset update reg_key 1 set acct_out timeout 600000ms expr [ counter pkts 0 bytes 0 ] ] + +# flow table acct_out { ip6 saddr . meta iif timeout 600s counter } +acct_out test-ip6 31 +acct_out test-ip6 0 +ip6 test-ip6 input + [ payload load 16b @ network header + 8 => reg 1 ] + [ meta load iif => reg 2 ] + [ dynset update reg_key 1 set acct_out timeout 600000ms expr [ counter pkts 0 bytes 0 ] ] + |