trafgen: Add checksum helpers for TCP/UDP over IPv6
commit19c15748cb0eb431ef20f32ff629a82a6c2b3635
authorTobias Klauser <tklauser@distanz.ch>
Tue, 13 Oct 2015 09:53:36 +0000 (13 11:53 +0200)
committerTobias Klauser <tklauser@distanz.ch>
Tue, 13 Oct 2015 09:53:36 +0000 (13 11:53 +0200)
treee17c95afa3c51cdf51c562bbc8abab46d994aa69
parentaa43ee0ad84a65efd0415621d5234cfcadf9bed3
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>
csum.h
trafgen.8
trafgen.c
trafgen_conf.h
trafgen_lexer.l
trafgen_parser.y
trafgen_stddef.h