@@ -389,7 +389,7 @@ DIAG_OFF_BISON_BYACC
389389
390390%token DST SRC HOST GATEWAY
391391%token NET NETMASK PORT PORTRANGE LESS GREATER PROTO PROTOCHAIN CBYTE
392- %token ARP RARP IP SCTP TCP UDP ICMP IGMP IGRP PIM VRRP CARP
392+ %token ARP RARP IP SCTP TCP TCPFLAGS UDP ICMP IGMP IGRP PIM VRRP CARP
393393%token ATALK AARP DECNET LAT SCA MOPRC MOPDL
394394%token TK_BROADCAST TK_MULTICAST
395395%token NUM INBOUND OUTBOUND
@@ -852,7 +852,10 @@ irelop: LEQ { $$ = BPF_JGT; }
852852arth: pnum { CHECK_PTR_VAL(($$ = gen_loadi(cstate, $1))); }
853853 | narth
854854 ;
855- narth: pname '[' arth ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, $3, 1))); }
855+ tcpflags: TCPFLAGS
856+ ;
857+ narth: pname '[' tcpflags ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, gen_loadi(cstate, 12), 2))); }
858+ | pname '[' arth ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, $3, 1))); }
856859 | pname '[' arth ':' NUM ']' { CHECK_PTR_VAL(($$ = gen_load(cstate, $1, $3, $5))); }
857860 | arth '+' arth { CHECK_PTR_VAL(($$ = gen_arth(cstate, BPF_ADD, $1, $3))); }
858861 | arth '-' arth { CHECK_PTR_VAL(($$ = gen_arth(cstate, BPF_SUB, $1, $3))); }
0 commit comments