summaryrefslogtreecommitdiff
path: root/trafgen_stddef.h
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2015-10-13 11:53:36 +0200
committerTobias Klauser <tklauser@distanz.ch>2015-10-13 11:53:36 +0200
commit19c15748cb0eb431ef20f32ff629a82a6c2b3635 (patch)
treee17c95afa3c51cdf51c562bbc8abab46d994aa69 /trafgen_stddef.h
parentaa43ee0ad84a65efd0415621d5234cfcadf9bed3 (diff)
trafgen: Add checksum helpers for TCP/UDP over IPv6
Add the csumudp6 and csumtcp6 helper functions in order to simplify checksum generation for TCP/UDP packets sent over IPv6. trafgen example for TCP over IPv6: { /* MAC Destination */ fill(0xff, 6), /* MAC Source */ 0x00, 0x02, 0xb3, drnd(3), /* IPv6 Protocol */ c16(0x86DD), /* Version, Traffic Class, Flow Label */ 0b01100000, c8(0), c16(0), /* Payload Length */ c16(54), /* Next Header (TCP) */ c8(6), /* Hop Limit */ c8(64), /* Source IPv6 */ 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xac, 0x6f, 0xff, 0xfe, 0xa4, 0x12, 0xe3, /* Destination IPv6 */ 0xfe, 0x80, 0x82, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0xfe, 0x00, 0x06, 0xde, /* TCP Source Port */ c16(55042), /* TCP Destination Port */ c16(55043), /* TCP Sequence Number */ drnd(4), /* TCP Ackn. Number */ c32(0), /* TCP Header length + TCP SYN/ECN Flag */ c16((8 << 12) | (1 << 1) | (1 << 6)) /* Window Size */ c16(16), /* TCP Checksum (offset IPv6, offset TCP) */ csumtcp6(14, 54), /* TCP Options */ 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x06, 0x91, 0x68, 0x7d, 0x06, 0x91, 0x68, 0x6f, /* Data blob */ "foobar!", } Suggested-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'trafgen_stddef.h')
-rw-r--r--trafgen_stddef.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/trafgen_stddef.h b/trafgen_stddef.h
index 13688a6..a02c817 100644
--- a/trafgen_stddef.h
+++ b/trafgen_stddef.h
@@ -120,6 +120,12 @@
#define IP_ID_RAND drnd(2)
#define IP_CSUM_DEFAULT csumip(IP_HDR_OFF_DEFAULT, 33) /* IP-hdr offset from, to */
+#define IPV6_ALEN 16
+#define IPV6_VERSION 6
+#define IPV6_HDR_OFF_DEFAULT 14
+#define IPV6_SRC_RAND drnd(IPV6_ALEN)
+#define IPV6_DST_RAND drnd(IPV6_ALEN)
+
#define ICMP_ECHOREPLY 0 /* Echo Reply */
#define ICMP_DEST_UNREACH 3 /* Destination Unreachable */
#define ICMP_SOURCE_QUENCH 4 /* Source Quench */