/*
 * FIXME: Currently, we skip testing odd ICMP packet lengths because trafgen
 *        generates bad checksums for such packets.
 */

/* UDP */
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      udp(sport=drnd(), dport=drnd()),
      drnd(801)
}
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      udp(sport=drnd(), dport=drnd()),
      drnd(80)
}
/* TCP */
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      tcp(sport=drnd(), dport=drnd(), seq=drnd(), ackseq=drnd()),
      drnd(701)
}
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      tcp(sport=drnd(), dport=drnd(), seq=drnd(), ackseq=drnd()),
      drnd(70)
}
/* ICMP echo */
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      icmp4(echorequest, addr=drnd(), id=drnd(), seq=drnd()),
      drnd(600)
}
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      icmp4(echoreply, addr=drnd(), id=drnd(), seq=drnd()),
      drnd(60)
}
/* ICMP error + embedded packet */
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      icmp4(type=1, code=drnd(0,16), addr=drnd(), id=drnd(), seq=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      udp(sport=drnd(), dport=drnd()),
      drnd(500)
}
{
      eth(saddr=drnd(), daddr=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      icmp4(type=1, code=drnd(0,16), addr=drnd(), id=drnd(), seq=drnd()),
      ip4(saddr=drnd(), daddr=drnd(), ttl=drnd(), id=drnd()),
      tcp(sport=drnd(), dport=drnd(), seq=drnd(), ackseq=drnd()),
      drnd(50)
}
