mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-25 19:41:34 +00:00
Add the iproute2 support for the ACT_CSUM action. Can be used as
following, certainly in conjunction with the ACT_PEDIT action (pedit):
# In order to DNAT (stateless) IPv4 packet from 192.168.1.100 to
# 0x12345678 (18.52.86.120), and update the IPv4 header checksum and
# the UDP checksum (the last one, only if the packet is UDP).
tc filter add eth0 prio 1 protocol ip parent ffff: \
u32 match ip src 192.168.1.100/32 flowid :1 \
action pedit munge offset 16 u32 set 0x12345678 \
pipe csum ip and udp
# In order to alter destination address of IPv6 TCP packets from fc00::1
# and correct the TCP checksum (nothing happened? except maybe for
# checksums in the TCP payload ...).
tc filter add eth0 prio 1 protocol ipv6 parent ffff: \
u32 match ip6 src fc00::1/128 match ip6 protocol 0x06 0xff flowid :1 \
action pedit munge offset 24 u32 set 0x12345678 \
pipe csum tcp
33 lines
554 B
C
33 lines
554 B
C
#ifndef __LINUX_TC_CSUM_H
|
|
#define __LINUX_TC_CSUM_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/pkt_cls.h>
|
|
|
|
#define TCA_ACT_CSUM 16
|
|
|
|
enum {
|
|
TCA_CSUM_UNSPEC,
|
|
TCA_CSUM_PARMS,
|
|
TCA_CSUM_TM,
|
|
__TCA_CSUM_MAX
|
|
};
|
|
#define TCA_CSUM_MAX (__TCA_CSUM_MAX - 1)
|
|
|
|
enum {
|
|
TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1,
|
|
TCA_CSUM_UPDATE_FLAG_ICMP = 2,
|
|
TCA_CSUM_UPDATE_FLAG_IGMP = 4,
|
|
TCA_CSUM_UPDATE_FLAG_TCP = 8,
|
|
TCA_CSUM_UPDATE_FLAG_UDP = 16,
|
|
TCA_CSUM_UPDATE_FLAG_UDPLITE = 32
|
|
};
|
|
|
|
struct tc_csum {
|
|
tc_gen;
|
|
|
|
__u32 update_flags;
|
|
};
|
|
|
|
#endif /* __LINUX_TC_CSUM_H */
|