?? 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 + -