📄 ip.h
字号:
/**---------------------版权 (c)----------------------------------------------------------***
*** 作者:颜章健 ***
*** 邮件:jenkinyan@163.com ***
*** ***
***---------------------File Info---------------------------------------------------------***
*** 创 建 人: 颜章健 ***
*** 创建日期: 2008-03-14 ***
*** 创建版本: ***
*** 文件描述: ***
***---------------------------------------------------------------------------------------***
*** 修 订 人: ***
*** 修订日期: ***
*** 修订版本: ***
*** 修订描述 ***
***---------------------------------------------------------------------------------------**/
#ifndef __ip_h_
#define __ip_h_
// IP包重组缓冲区配置:超出MAX_IP_PACKETS个数的IP包将被丢弃,除非IP包没有被分片
#define MAX_IP_PACKETS 0 // 缓冲区个数
#define MAX_IP_PACKET_LENGTH 1508 // 每个缓冲区长度
// IP包重组状态
#define IPPS_DUMMY 0 // 缓冲区为空
#define IPPS_BUSY 1 // 正在重组
#define IPPS_REDY 2 // 重组完成
// IP包上层协议类型
#define IPF_ICMP 1
#define IPF_UDP 17
#define IPF_TCP 6
typedef struct _IP_HEAD_S
{
uint8 VerAndHeadLen; // 版本及头部
uint8 Service; // 服务类型
uint16 TotalLen; // 数据包总长
uint16 Id; // 标识
uint16 FlagAndOffset; // 标志及片偏移
uint8 TTL; // 生存时间
uint8 Protocol; // 上层协议
uint16 CRC; // 头部检验
uint8 SourceIp[4]; // 源IP地址
uint8 DestIp[4]; // 目的IP地址
}IP_HEAD_S;
typedef union _IP_HEAD
{
IP_HEAD_S s;
uint8 b[20];
}IP_HEAD;
typedef struct _NET_LAYER
{
uint16 MTU; // 最大传输单元:即IP包最大产度
uint8 *Rxd; // 接收指针
uint16 Rxl; // 接收长度
void (*SendPacket)(uint8 /*Protocol*/,uint8 */*DestIp*/,NET_PKT */*Packet*/);
}NET_LAYER;
//void IpReceiveTask(void); // changed by Yan Zhangjian @ 2008-04-10
void IpReceiveTask(uint8 */*Rxd*/, uint16 /*Rxl*/);
void NetLayerInit(void);
void IpPutPacket(uint8 /*Protocol*/, uint8 */*DestIp*/, NET_PKT */*Packet*/);
#endif
/********************************************************************************************
*** 文件结束 ***
********************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -