Skip to content

Commit

Permalink
mergesort: unbreak listing with binops
Browse files Browse the repository at this point in the history
tcp flags == {syn, syn|ack}
tcp flags & (fin|syn|rst|psh|ack|urg) == {ack, psh|ack, fin, fin|psh|ack}

results in:

BUG: Unknown expression binop
nft: mergesort.c:47: expr_msort_cmp: Assertion `0' failed.
Aborted (core dumped)

Signed-off-by: Pablo Neira Ayuso <[email protected]>
  • Loading branch information
ummakynes committed Aug 19, 2020
1 parent f8b1bc9 commit 3926a33
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/mergesort.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ static int expr_msort_cmp(const struct expr *e1, const struct expr *e2)
return concat_expr_msort_cmp(e1, e2);
case EXPR_MAPPING:
return expr_msort_cmp(e1->left, e2->left);
case EXPR_BINOP:
return expr_msort_cmp(e1->left, e2->left);
default:
BUG("Unknown expression %s\n", expr_name(e1));
}
Expand Down
2 changes: 2 additions & 0 deletions tests/py/inet/tcp.t
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ tcp flags != cwr;ok
tcp flags == syn;ok
tcp flags & (syn|fin) == (syn|fin);ok;tcp flags & (fin | syn) == fin | syn
tcp flags & (fin | syn | rst | psh | ack | urg | ecn | cwr) == fin | syn | rst | psh | ack | urg | ecn | cwr;ok;tcp flags == 0xff
tcp flags { syn, syn | ack };ok
tcp flags & (fin | syn | rst | psh | ack | urg) == { fin, ack, psh | ack, fin | psh | ack };ok

tcp window 22222;ok
tcp window 22;ok
Expand Down
21 changes: 21 additions & 0 deletions tests/py/inet/tcp.t.payload
Original file line number Diff line number Diff line change
Expand Up @@ -680,3 +680,24 @@ inet test-inet input
[ bitwise reg 1 = (reg=1 & 0x000000f0 ) ^ 0x00000000 ]
[ cmp eq reg 1 0x00000080 ]

# tcp flags & (fin | syn | rst | psh | ack | urg) == { fin, ack, psh | ack, fin | psh | ack }
__set%d test-inet 3
__set%d test-inet 0
element 00000001 : 0 [end] element 00000010 : 0 [end] element 00000018 : 0 [end] element 00000019 : 0 [end]
ip
[ meta load l4proto => reg 1 ]
[ cmp eq reg 1 0x00000006 ]
[ payload load 1b @ transport header + 13 => reg 1 ]
[ bitwise reg 1 = (reg=1 & 0x0000003f ) ^ 0x00000000 ]
[ lookup reg 1 set __set%d ]

# tcp flags { syn, syn | ack }
__set%d test-inet 3
__set%d test-inet 0
element 00000002 : 0 [end] element 00000012 : 0 [end]
inet
[ meta load l4proto => reg 1 ]
[ cmp eq reg 1 0x00000006 ]
[ payload load 1b @ transport header + 13 => reg 1 ]
[ lookup reg 1 set __set%d ]

0 comments on commit 3926a33

Please sign in to comment.