📄 necfg.h
字号:
/************************************************************
* File name : Necfg.h *
* By : hugang, hgx2000@mail.china.com *
************************************************************/
#ifndef __NECFG_H__
#define __NECFG_H__
/* Ethernet (DIX) frame ;data size is frame size minus header & CRC */
#define MAXFRAMEC 1518 //maxinum frame size (incl. CRC)
#define MINFRAMEC 64 //mininum frame size (incl. CRC)
#define MAXFRAME 1514 //maxinum frame size (excl. CRC)
#define MINFRAME 60 //mininum frame size (excl. CRC)
#define MACLEN 6
#define CRCLEN 4
#define BCASTIP 0xffffffff // Broadcast IP address
#define IP_TTL 128
/********************************************************************************************************
* 节点信息 *
********************************************************************************************************/
typedef struct // 本机节点信息
{
unsigned char mac[6]; // 以太网地址
unsigned int ip; // IP地址
unsigned int mask; // 子网掩码
unsigned int gate; // 网关
unsigned short port; // 端口号
} NODE;
/********************************************************************************************************
* NIC层报文定义 *
********************************************************************************************************/
typedef __packed struct { // NIC hardware packet header
unsigned char stat; // Error status
unsigned char next; // Pointer to next block
unsigned short len; // Length of this frame incl. CRC
} NICHDR;
/********************************************************************************************************
* MAC层报文定义 *
********************************************************************************************************/
typedef __packed struct // MAC首部格式
{
unsigned char dest[MACLEN]; // 6字节目的以太网地址
unsigned char srce[MACLEN]; // 6字节源以太网地址
unsigned short ptype; // 2字节协议类型
}ETHERHDR;
__packed struct macaddr
{
unsigned char dest[MACLEN];
unsigned char srce[MACLEN];
} ;
#define PCOL_ARP 0x0806 // 协议类型->ARP
#define PCOL_IP 0x0800 // 协议类型->IP
#define ETHERMTU (MAXFRAME - sizeof(ETHERHDR))
typedef __packed struct // MAC报文格式 offset
{
ETHERHDR e; // MAC头 0
unsigned char edata[ETHERMTU]; // MAC数据段 14
unsigned int crc; // 校验码
}ETHERFRAME;
/********************************************************************************************************
* ARP报文定义 *
********************************************************************************************************/
typedef __packed struct // ARP分组格式 offset
{
unsigned short hrd; // 2字节硬件类型 0
unsigned short pro; // 2字节协议类型 2
unsigned char hln; // 1字节硬件地址长度 4
unsigned char pln; // 1字节协议地址长度 5
unsigned short op; // 2字节操作类型 6
unsigned char smac[MACLEN]; // 6字节发送端以太网地址 8
unsigned int sip; // 4字节发送端IP地址 14
unsigned char dmac[MACLEN]; // 6字节目的以太网地址 18
unsigned int dip; // 6字节目的IP地址 24 !(+14)非4字节对齐地址
} ARPKT;
#define HTYPE 0x0001 // 硬件类型->以太网地址
#define ARPPRO 0x0800 // 协议类型->IP地址
#define ARPXXX 0x0000 // ARP opcodes: unknown opcode
#define ARPREQ 0x0001 // ARP request
#define ARPRESP 0x0002 // ARP response
#define RARPREQ 0x0003 // RARP request
#define RARPRESP 0x0004 // RARP response
/********************************************************************************************************
* IP报文定义 *
********************************************************************************************************/
typedef __packed struct // IP首部格式 offset
{
unsigned char vhl; // 04位版本和04位首部长度 0
unsigned char service; // 08位服务类型 1
unsigned short len; // 16位总长度 2
unsigned short ident; // 16位标示 4
unsigned short frags; // 03位标志和13位片偏移 6
unsigned char ttl; // 08位生存时间 8
unsigned char pcol; // 08位协议 9
unsigned short check; // 16位首部校验和 10
unsigned int sip; // 32位源IP地址 12 !(+14)非4字节对齐地址
unsigned int dip; // 32位目的IP地址 16 !(+14)非4字节对齐地址
} IPHDR;
#define PICMP 1 // 协议类型->ICMP
#define PTCP 6 // 协议类型->TCP
#define PUDP 17 // 协议类型->UDP
#define MAXIP (MAXFRAME - sizeof(IPHDR))
typedef __packed struct // IP报文格式
{
IPHDR i; // IP头
unsigned char ipdata[MAXIP]; // 数据段
} IPKT;
/********************************************************************************************************
* ICMP报文定义 *
********************************************************************************************************/
typedef __packed struct // ICMP首部格式 offset
{
unsigned char type; // 08位类型 0
unsigned char codetype; // 08位代码 1
unsigned short check; // 16位校验和 2
unsigned short ident; // 16位标示符(可能用到) 4
unsigned short seq; // 16位序列号(可能用到) 6
} ICMPHDR;
#define ICREQ 8 // 类型->请求回显(Ping请求)
#define ICREP 0 // 类型->请求应答(Ping应答)
#define ICUNREACH 3 // 类型->目的不可达
#define ICQUENCH 4 // 源端被关闭
#define UNREACH_NET 0 // 类型3->代码->网络不可达
#define UNREACH_HOST 1 // 类型3->代码->主机不可达
#define UNREACH_PORT 3 // 类型3->代码->端口不可达
#define UNREACH_FRAG 4 // 类型3->代码->需要进行分片但设置了不分片比特
#define MAXICMP (MAXIP - sizeof(ICMPHDR))
typedef __packed struct icmp // ICMP报文格式 offset
{
IPHDR i; // IP头 0
ICMPHDR c; // ICMP头 20
unsigned char icmpdata[MAXICMP]; // 数据段
} ICMPKT;
/********************************************************************************************************
* UDP报文定义 *
********************************************************************************************************/
typedef __packed struct udph // UDP首部格式
{
unsigned short sport; // 16位源端口号
unsigned short dport; // 16位目的端口号
unsigned short len; // 16位UDP长度
unsigned short check; // 16位UDP检验和
} UDPHDR;
#define MAXUDP (MAXIP - sizeof(UDPHDR))
typedef __packed struct udp // UDP报文格式
{
IPHDR i; // IP头
UDPHDR u; // UDP头
unsigned char udpdata[MAXUDP]; // 数据段
} UDPKT;
/********************************************************************************************************
* Pseudo-header for UDP or TCP checksum calculation *
* The integers must be in hi-lo byte order for checksum *
********************************************************************************************************/
typedef __packed struct // 假首部
{
unsigned int srce; // 32位源IP地址
unsigned int dest; // 32位目的IP地址
unsigned char z; // 08位零
unsigned char pcol; // 08位协议类型
unsigned short len; // 16位UDP长度
} PHDR;
/********************************************************************************************************
* TFTP packets *
********************************************************************************************************/
#define MAXTFTP 512
#define TFTPORT 69 // Triial File Transfer
#define TFTP_OP_READ 1 // Opcodes: read request
#define TFTP_OP_WRITE 2 // write request
#define TFTP_OP_DATA 3
#define TFTP_OP_ACK 4
#define TFTP_OP_ERR 5 // error
typedef __packed struct tftpr // TFTP read/write request
{
IPHDR i; // IP header
UDPHDR u; // UDP header
unsigned short op; // Opcode
unsigned char data[MAXTFTP+2]; // Filename & mode strings
} TFTP_REQ;
typedef __packed struct tftpd
{
IPHDR i;
UDPHDR u;
unsigned short op;
unsigned short block;
unsigned char data[MAXTFTP];
} TFTP_DATA;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -