//ip协议 结构头部定义
#pragma once
#include "stdafx.h"
#ifdef USING_IP_HEADER
typedef struct _ipheader
{
#if LITTLE_ENDIAN
unsigned char ihl:4; //首部长度
unsigned char version:4; //版本
#else
unsigned char version:4 ;//版本
unsigned char ihl:4 ; //首部长度
#endif
unsigned char tos; //服务类型
unsigned short tot_len; //总长度
unsigned short id; //标志
unsigned short frag_off; //分片偏移
unsigned char ttl; //生存时间
unsigned char protocol; //协议
unsigned short chk_sum; //检验和
// struct in_addr src_addr; //源IP地址 /*unsigned int srcaddr;/*减少导入库,需要在引用的地方 转换为in_addr*/
//struct in_addr dest_addr; //目的IP地址 /*unsigned int destaddr;/*减少导入库,需要在引用的地方 转换为in_addr*/
unsigned long src_addr;
unsigned long dest_addr;
}IP_HEADER,*PIP_HEADER;
#endif //USING_IP_HEADER
#ifdef USING_IP_ICMP_HEADER
//ICMP 结构头
typedef struct _icmp_header{
/*类型*/
unsigned char icmp_type;
/*代码*/
unsigned char icmp_code;
/*校检和*/
unsigned short icmp_checksum;
/*标识符,一般以进程号作为标识*/
unsigned short icmp_id;
/*序列号*/
unsigned short icmp_seq;
/*时间戳*/
unsigned long icmp_timestamp;
}ICMP_HEADER,*PICMP_HEADER;
//ICMP 协议函数定义 头文件
//解析ICMP协议包数据
BOOL __stdcall Nw_ParseIcmp4PacketData(
/*ICMP协议数据包*/
__in void* pIcmpData,
/*pIcmpData的长度,长度必须匹配pIcmpData,否则导致内存访问越界*/
__in size_t IcmpDataLen,
/*ip结构*/
/*
#ifdef USING_IP_HEADER
__out_opt IP_HEADER* pIpHdr,
#else*/
__out_opt void** ppIpHdr,
//#endif
/*icmp结构*/
/*#ifdef USING_IP_ICMP_HEADER
__out_opt ICMP_HEADER* pIcmpH