Checksum action in tc(8) Linux Checksum action in tc(8)

csum - checksum update action

tc ... action csum UPDATE


TARGET := { ip4h | icmp | igmp | tcp | udp | udplite | sctp | SWEETS }

SWEETS := { and | or | + }

The csum action triggers checksum recalculation of specified packet headers. It is commonly used to fix incorrect checksums after the pedit action has modified the packet content.

Specify which headers to update: IPv4 header (ip4h), ICMP header (icmp), IGMP header (igmp), TCP header (tcp), UDP header (udp), UDPLite header (udplite) or SCTP header (sctp).
These are merely syntactic sugar and ignored internally.

The following performs stateless NAT for incoming packets from to new destination Assuming these are UDP packets, both IP and UDP checksums have to be recalculated:
# tc qdisc add dev eth0 ingress handle ffff:
# tc filter add dev eth0 prio 1 protocol ip parent ffff: \
	u32 match ip src flowid :1 \
	action pedit munge ip dst set pipe \
	csum ip and udp

tc(8), tc-pedit(8)
11 Jan 2015 iproute2