@@ -391,7 +391,7 @@ DIAG_OFF_BISON_BYACC
391391
392392%token DST SRC HOST GATEWAY
393393%token NET NETMASK PORT PORTRANGE LESS GREATER PROTO PROTOCHAIN CBYTE
394- %token ARP RARP IP SCTP TCP UDP ICMP IGMP IGRP PIM VRRP CARP
394+ %token ARP RARP IP SCTP TCP TCPFLAGS UDP ICMP IGMP IGRP PIM VRRP CARP
395395%token ATALK AARP DECNET LAT SCA MOPRC MOPDL
396396%token TK_BROADCAST TK_MULTICAST
397397%token NUM INBOUND OUTBOUND
@@ -854,7 +854,10 @@ irelop: LEQ { $$ = BPF_JGT; }
854854arth: pnum { CHECK_PTR_VAL(($$ = gen_loadi(cstate, $1))); }
855855 | narth
856856 ;
857- narth: pname '[' arth ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, $3, 1))); }
857+ tcpflags: TCPFLAGS
858+ ;
859+ narth: pname '[' tcpflags ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, gen_loadi(cstate, 12), 2))); }
860+ | pname '[' arth ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, $3, 1))); }
858861 | pname '[' arth ':' NUM ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, $3, $5))); }
859862 | arth '+' arth { CHECK_PTR_VAL(($$ = gen_arth(cstate, BPF_ADD, $1, $3))); }
860863 | arth '-' arth { CHECK_PTR_VAL(($$ = gen_arth(cstate, BPF_SUB, $1, $3))); }
0 commit comments