#ifndef __SYS_PING_H
#define __SYS_PING_H

#include "stdint.h"

typedef struct icmp_hdr
 
{
 
    unsigned char   icmp_type; // 消息类型
 
    unsigned char   icmp_code; // 代码
 
    unsigned short  icmp_checksum; // 校验和
 
    // 下面是回显头
 
    unsigned short  icmp_id; // 用来惟一标识此请求的ID号
 
    unsigned short  icmp_sequence; // 序列号
 
    unsigned long   icmp_timestamp; // 时间戳
 
} ICMP_HDR, *PICMP_HDR;
 
 
 
typedef struct _IPHeader// 20字节的IP头
 
{
 
    uint8_t     iphVerLen; // 版本号和头长度（各占4位）
 
    uint8_t     ipTOS; // 服务类型
 
    uint16_t    ipLength; // 封包总长度，即整个IP报的长度
 
    uint16_t    ipID;  // 封包标识，惟一标识发送的每一个数据报
 
    uint16_t    ipFlags; // 标志
 
    uint8_t     ipTTL; // 生存时间，就是TTL
 
    uint8_t     ipProtocol; // 协议，可能是TCP、UDP、ICMP等
 
    uint16_t    ipChecksum; // 校验和
 
    uint32_t    ipSource; // 源IP地址
 
    uint32_t    ipDestination; // 目标IP地址
 
} IPHeader, *PIPHeader;
 
typedef int SOCKET;

void ping_task_creat();
void ETH_PingWork(void const * argument);

#endif