mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 04:58:17 +00:00 
			
		
		
		
	 cc08619c3c
			
		
	
	
		cc08619c3c
		
	
	
	
	
		
			
			tc-ematch.8 was missing the description of canid() ematch rule, so document this. Signed-off-by: Roman Mashak <mrv@mojatatu.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
		
			
				
	
	
		
			161 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH ematch 8 "6 August 2012" iproute2 Linux
 | ||
| .
 | ||
| .SH NAME
 | ||
| ematch \- extended matches for use with "basic", "cgroup"  or "flow" filters
 | ||
| .
 | ||
| .SH SYNOPSIS
 | ||
| .sp
 | ||
| .ad l
 | ||
| .B "tc filter add .. basic match"
 | ||
| .RI EXPR
 | ||
| .B .. flowid ..
 | ||
| .sp
 | ||
| 
 | ||
| .IR EXPR " := " TERM " [ { "
 | ||
| .B and | or
 | ||
| }
 | ||
| .IR EXPR
 | ||
| ]
 | ||
| 
 | ||
| .IR TERM " := [ " \fBnot " ] { " MATCH " | '(' " EXPR " ')' } "
 | ||
| 
 | ||
| .IR MATCH " := " module " '(' " ARGS " ')' "
 | ||
| 
 | ||
| .IR ARGS " := " ARG1 " " ARG2 " ..
 | ||
| 
 | ||
| .SH MATCHES
 | ||
| 
 | ||
| .SS cmp
 | ||
| Simple comparison ematch: arithmetic compare of packet data to a given value.
 | ||
| 
 | ||
| .IR cmp "( " ALIGN " at " OFFSET " [ " ATTRS " ] { " eq " | " lt " | " gt " } " VALUE " )
 | ||
| 
 | ||
| .IR ALIGN " := { " u8 " | " u16 " | " u32 " } "
 | ||
| 
 | ||
| .IR ATTRS " := [ layer " LAYER " ] [ mask " MASK " ] [ trans ]
 | ||
| 
 | ||
| .IR LAYER " := { " link " | " network " | " transport " | " 0..2 " }
 | ||
| 
 | ||
| .SS meta
 | ||
| Metadata ematch
 | ||
| 
 | ||
| .IR meta "( " OBJECT " { " eq " | " lt " |" gt " } " OBJECT " )
 | ||
| 
 | ||
| .IR OBJECT " := { " META_ID " |  " VALUE " }
 | ||
| 
 | ||
| .IR META_ID " := " id " [ shift " SHIFT " ] [ mask " MASK " ]
 | ||
| 
 | ||
| .TP
 | ||
| meta attributes:
 | ||
| 
 | ||
| \fBrandom\fP 32 bit random value
 | ||
| 
 | ||
| \fBloadavg_1\fP Load average in last 5 minutes
 | ||
| 
 | ||
| \fBnf_mark\fP Netfilter mark
 | ||
| 
 | ||
| \fBvlan\fP Vlan tag
 | ||
| 
 | ||
| \fBsk_rcvbuf\fP Receive buffer size
 | ||
| 
 | ||
| \fBsk_snd_queue\fP Send queue length
 | ||
| 
 | ||
| .PP
 | ||
| A full list of meta attributes can be obtained via
 | ||
| 
 | ||
| # tc filter add dev eth1 basic match 'meta(list)'
 | ||
| 
 | ||
| .SS nbyte
 | ||
| match packet data byte sequence
 | ||
| 
 | ||
| .IR nbyte "( " NEEDLE  " at " OFFSET " [ layer " LAYER " ] )
 | ||
| 
 | ||
| .IR NEEDLE  " := { " string " | " c-escape-sequence "  } "
 | ||
| 
 | ||
| .IR OFFSET  " := " int
 | ||
| 
 | ||
| .IR LAYER " := { " link " | " network " | " transport " | " 0..2 " }
 | ||
| 
 | ||
| .SS u32
 | ||
| u32 ematch
 | ||
| 
 | ||
| .IR u32 "( " ALIGN " " VALUE " " MASK " at [ nexthdr+ ] " OFFSET " )
 | ||
| 
 | ||
| .IR ALIGN " := { " u8 " | " u16 " | " u32 " }
 | ||
| 
 | ||
| .SS ipset
 | ||
| test packet against ipset membership
 | ||
| 
 | ||
| .IR ipset "( " SETNAME " " FLAGS " )
 | ||
| 
 | ||
| .IR SETNAME " := " string
 | ||
| 
 | ||
| .IR FLAGS " := { " FLAG " [, " FLAGS "] }
 | ||
| 
 | ||
| The flag options are the same as those used by the iptables "set" match.
 | ||
| 
 | ||
| When using the ipset ematch with the "ip_set_hash:net,iface" set type,
 | ||
| the interface can be queried using "src,dst (source ip address, outgoing interface) or
 | ||
| "src,src" (source ip address, incoming interface) syntax.
 | ||
| 
 | ||
| .SS ipt
 | ||
| test packet against xtables matches
 | ||
| 
 | ||
| .IR ipt "( " [-6] " "-m " " MATCH_NAME " " FLAGS " )
 | ||
| 
 | ||
| .IR MATCH_NAME " := " string
 | ||
| 
 | ||
| .IR FLAGS " := { " FLAG " [, " FLAGS "] }
 | ||
| 
 | ||
| The flag options are the same as those used by the xtable match used.
 | ||
| 
 | ||
| .SS canid
 | ||
| ematch rule to match CAN frames
 | ||
| 
 | ||
| .IR canid "( " IDLIST " )
 | ||
| 
 | ||
| .IR IDLIST " :=  " IDSPEC [ IDLIST ]
 | ||
| 
 | ||
| .IR IDSPEC " := { ’sff’ " CANID " | ’eff’ " CANID " }
 | ||
| 
 | ||
| .IR CANID " := " ID [ ":MASK" ]
 | ||
| 
 | ||
| .IR ID ", " MASK " := hexadecimal number (i.e. 0x123)
 | ||
| 
 | ||
| .SH CAVEATS
 | ||
| 
 | ||
| The ematch syntax uses '(' and ')' to group expressions. All braces need to be
 | ||
| escaped properly to prevent shell commandline from interpreting these directly.
 | ||
| 
 | ||
| When using the ipset ematch with the "ifb" device, the outgoing device will be the
 | ||
| ifb device itself, e.g. "ifb0".
 | ||
| The original interface (i.e. the device the packet arrived on) is treated as the incoming interface.
 | ||
| 
 | ||
| .SH 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)'
 | ||
| 
 | ||
| Check if packet source ip address is member of set named \fBbulk\fP:
 | ||
| 
 | ||
| # 'ipset(bulk src)'
 | ||
| 
 | ||
| Check if packet source ip and the interface the packet arrived on is member of "hash:net,iface" set named \fBinteractive\fP:
 | ||
| 
 | ||
| # 'ipset(interactive src,src)'
 | ||
| 
 | ||
| Check if packet matches an IPSec state with reqid 1:
 | ||
| 
 | ||
| # 'ipt(-m policy --dir in --pol ipsec --reqid 1)'
 | ||
| 
 | ||
| .SH "AUTHOR"
 | ||
| 
 | ||
| The extended match infrastructure was added by Thomas Graf.
 |