⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 necfg.h

📁 本文件是基于三星44b0芯片arm嵌入式系统的rtl8019网口的驱动程序
💻 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 + -