mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 00:42:48 +00:00 
			
		
		
		
	 5e4dc1951e
			
		
	
	
		5e4dc1951e
		
	
	
	
	
		
			
			Signed-off-by: Lucas Bates <lucasb@mojatatu.com> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: Roman Mashak <mrv@mojatatu.com> Reviewed-by: Simon Horman <simon.horman@netronome.com>
		
			
				
	
	
		
			138 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH "skbmod action in tc" 8 "21 Sep 2016" "iproute2" "Linux"
 | |
| 
 | |
| .SH NAME
 | |
| skbmod - user-friendly packet editor action
 | |
| .SH SYNOPSIS
 | |
| .in +8
 | |
| .ti -8
 | |
| .BR tc " ... " "action skbmod " "{ [ " "set "
 | |
| .IR SETTABLE " ] [ "
 | |
| .BI swap " SWAPPABLE"
 | |
| .RI " ] [ " CONTROL " ] [ "
 | |
| .BI index " INDEX "
 | |
| ] }
 | |
| 
 | |
| .ti -8
 | |
| .IR SETTABLE " := "
 | |
| .RB " [ " dmac
 | |
| .IR DMAC " ] "
 | |
| .RB " [ " smac
 | |
| .IR SMAC " ] "
 | |
| .RB " [ " etype
 | |
| .IR ETYPE " ] "
 | |
| 
 | |
| .ti -8
 | |
| .IR SWAPPABLE " := "
 | |
| .B mac
 | |
| .ti -8
 | |
| .IR CONTROL " := {"
 | |
| .BR reclassify " | " pipe " | " drop " | " shot " | " continue " | " pass " }"
 | |
| .SH DESCRIPTION
 | |
| The
 | |
| .B skbmod
 | |
| action is intended as a usability upgrade to the existing
 | |
| .B pedit
 | |
| action. Instead of having to manually edit 8-, 16-, or 32-bit chunks of an
 | |
| ethernet header,
 | |
| .B skbmod
 | |
| allows complete substitution of supported elements.
 | |
| .SH OPTIONS
 | |
| .TP
 | |
| .BI dmac " DMAC"
 | |
| Change the destination mac to the specified address.
 | |
| .TP
 | |
| .BI smac " SMAC"
 | |
| Change the source mac to the specified address.
 | |
| .TP
 | |
| .BI etype " ETYPE"
 | |
| Change the ethertype to the specified value.
 | |
| .TP
 | |
| .BI mac
 | |
| Used to swap mac addresses. The
 | |
| .B swap mac
 | |
| directive is performed
 | |
| after any outstanding D/SMAC changes.
 | |
| .TP
 | |
| .I CONTROL
 | |
| The following keywords allow to control how the tree of qdisc, classes,
 | |
| filters and actions is further traversed after this action.
 | |
| .RS
 | |
| .TP
 | |
| .B reclassify
 | |
| Restart with the first filter in the current list.
 | |
| .TP
 | |
| .B pipe
 | |
| Continue with the next action attached to the same filter.
 | |
| .TP
 | |
| .B drop
 | |
| .TQ
 | |
| .B shot
 | |
| Drop the packet.
 | |
| .TP
 | |
| .B continue
 | |
| Continue classification with the next filter in line.
 | |
| .TP
 | |
| .B pass
 | |
| Finish classification process and return to calling qdisc for further packet
 | |
| processing. This is the default.
 | |
| .SH EXAMPLES
 | |
| To start, observe the following filter with a pedit action:
 | |
| 
 | |
| .RS
 | |
| .EX
 | |
| tc filter add dev eth1 parent 1: protocol ip prio 10 \\
 | |
| 	u32 match ip protocol 1 0xff flowid 1:2 \\
 | |
| 	action pedit munge offset -14 u8 set 0x02 \\
 | |
| 	munge offset -13 u8 set 0x15 \\
 | |
| 	munge offset -12 u8 set 0x15 \\
 | |
| 	munge offset -11 u8 set 0x15 \\
 | |
| 	munge offset -10 u16 set 0x1515 \\
 | |
| 	pipe
 | |
| .EE
 | |
| .RE
 | |
| 
 | |
| Using the skbmod action, this command can be simplified to:
 | |
| 
 | |
| .RS
 | |
| .EX
 | |
| tc filter add dev eth1 parent 1: protocol ip prio 10 \\
 | |
| 	u32 match ip protocol 1 0xff flowid 1:2 \\
 | |
| 	action skbmod set dmac 02:15:15:15:15:15 \\
 | |
| 	pipe
 | |
| .EE
 | |
| .RE
 | |
| 
 | |
| Complexity will increase if source mac and ethertype are also being edited
 | |
| as part of the action. If all three fields are to be changed with skbmod:
 | |
| 
 | |
| .RS
 | |
| .EX
 | |
| tc filter add dev eth5 parent 1: protocol ip prio 10 \\
 | |
| 	u32 match ip protocol 1 0xff flowid 1:2 \\
 | |
| 	action skbmod \\
 | |
| 	set etype 0xBEEF \\
 | |
| 	set dmac 02:12:13:14:15:16 \\
 | |
| 	set smac 02:22:23:24:25:26
 | |
| .EE
 | |
| .RE
 | |
| 
 | |
| Finally, swap the destination and source mac addresses in the header:
 | |
| 
 | |
| .RS
 | |
| .EX
 | |
| tc filter add dev eth3 parent 1: protocol ip prio 10 \\
 | |
| 	u32 match ip protocol 1 0xff flowid 1:2 \\
 | |
| 	action skbmod \\
 | |
| 	swap mac
 | |
| .EE
 | |
| .RE
 | |
| 
 | |
| As mentioned above, the swap action will occur after any
 | |
| .B " smac/dmac "
 | |
| substitutions are executed, if they are present.
 | |
| 
 | |
| .SH SEE ALSO
 | |
| .BR tc (8),
 | |
| .BR tc-u32 (8),
 | |
| .BR tc-pedit (8)
 |