/* BlueDataDistributor - data distribution module from ethernet to 32 serial ports
 * version 0.1.1 date 2006-10-07
 * Copyright (C) 2006 Stefan Schuermans <stefan@blinkenarea.org>
 * a BlinkenArea project - http://www.blinkenarea.org/
 */

#ifndef INC_icmp
#define INC_icmp

#include "ethernet.h"
#include "ip.h"

// header of an ICMP packet
struct IcmpHeader
{
  unsigned char Type;
  unsigned char Code;
  unsigned int Chk;
};

// an ICMP packet
struct IcmpPacket
{
  struct EthernetHeader EthHdr;
  struct IpHeader IpHdr;
  struct IcmpHeader IcmpHdr;
};

// header of an ICMP echo request/reply packet
struct IcmpEchoHeader
{
  unsigned int Id;
  unsigned int Seq;
};

// an ICMP echo request/reply packet
struct IcmpEchoPacket
{
  struct EthernetHeader EthHdr;
  struct IpHeader IpHdr;
  struct IcmpHeader IcmpHdr;
  struct IcmpEchoHeader EchoHdr;
};

// process a received ICMP packet
extern void IcmpRecv( unsigned char * pData, unsigned short Length );

#endif // #ifdef INC_icmp

