.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)
