tc-ematch(8) Linux tc-ematch(8) (NAME) tc-ematch - "basic" "cgroup" "flow" (SYNOPSIS) tc filter add .. basic match EXPR .. flowid .. EXPR := TERM [ { and | or } EXPR ] TERM := [ not ] { MATCH | '(' EXPR ')' } MATCH := module '(' ARGS ')' ARGS := ARG1 ARG2 .. (MATCHES) cmp : . cmp( ALIGN at OFFSET [ ATTRS ] { eq | lt | gt } VALUE ) ALIGN := { u8 | u16 | u32 } ATTRS := [ layer LAYER ] [ mask MASK ] [ trans ] LAYER := { link | network | transport | 0..2 } meta (Metadata) meta( OBJECT { eq | lt |gt } OBJECT ) OBJECT := { META_ID | VALUE } META_ID := id [ shift SHIFT ] [ mask MASK ] : random loadavg_1 nf_mark (Netfilter mark) vlan (VLAN tag) sk_rcvbuf sk_snd_queue : # tc filter add dev eth1 basic match 'meta(list)' nbyte nbyte( NEEDLE at OFFSET [ layer LAYER ] ) NEEDLE := { string | c-escape-sequence } OFFSET := int LAYER := { link | network | transport | 0..2 } u32 u32 u32( ALIGN VALUE MASK at [ nexthdr+ ] OFFSET ) ALIGN := { u8 | u16 | u32 } ipset ipset ipset( SETNAME FLAGS ) SETNAME := string FLAGS := { FLAG [, FLAGS] } <> iptables . ematch ipset <> <> ( IP ) <> ( IP ) . ipt xtables ipt( [-6] -m MATCH_NAME FLAGS ) MATCH_NAME := string FLAGS := { FLAG [, FLAGS] } xtable . canid ematch CAN canid( IDLIST ) IDLIST := IDSPEC[IDLIST] IDSPEC := { 'sff' CANID | 'eff' CANID } CANID := ID[:MASK] ID, MASK := ( 0x123) (CAVEATS) ematch <<(>> <<)>> . (escape) . ematch ipset <> ifb ( <>). ( ) . (EXAMPLE & USAGE) # tc filter add .. basic match ... # 'cmp(u16 at 3 layer 2 mask 0xff00 gt 20)' # 'meta(nfmark gt 24)' and 'meta(tcindex mask 0xf0 eq 0xf0)' # 'nbyte("ababa" at 12 layer 1)' # 'u32(u16 0x1122 0xffff at nexthdr+4)' IP bulk : # 'ipset(bulk src)' IP <> interactive : # 'ipset(interactive src,src)' IPSec reqid 1 : # 'ipt(-m policy --dir in --pol ipsec --reqid 1)' (AUTHOR) Thomas Graf . iproute2 6 August 2012 tc-ematch(8)