man: tc-pedit: Add examples for dsfield and retain

Describe a way to update just the DSCP and just the ECN part of the
dsfield. That is useful on its own, but also it shows how retain works.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
Petr Machata 2020-04-04 02:05:30 +03:00 committed by David Ahern
parent 2d9a8dc439
commit f91f788c70

View File

@ -369,6 +369,28 @@ tc filter add dev eth0 parent ffff: u32 \\
action pedit ex munge tcp dport set 22 action pedit ex munge tcp dport set 22
.EE .EE
.RE .RE
To rewrite just part of a field, use the
.B retain
directive. E.g. to overwrite the DSCP part of a dsfield with $DSCP, without
touching ECN:
.RS
.EX
tc filter add dev eth0 ingress flower ... \\
action pedit ex munge ip dsfield set $((DSCP << 2)) retain 0xfc
.EE
.RE
And vice versa, to set ECN to e.g. 1 without impacting DSCP:
.RS
.EX
tc filter add dev eth0 ingress flower ... \\
action pedit ex munge ip dsfield set 1 retain 0x3
.EE
.RE
.SH SEE ALSO .SH SEE ALSO
.BR tc (8), .BR tc (8),
.BR tc-htb (8), .BR tc-htb (8),