net.h

来自「2410 boot loader,usb ftp」· C头文件 代码 · 共 175 行

H
175
字号
/*	Copyright 2001-2004 Georges Menie (www.menie.org)	This file is part of Tftpnaive.    Tftpnaive is free software; you can redistribute it and/or modify    it under the terms of the GNU Lesser General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    Tftpnaive is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU Lesser General Public License for more details.    You should have received a copy of the GNU Lesser General Public License    along with Tftpnaive; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#ifndef _NET_H_#define _NET_H_#define MAXPACKETBUF 16#define MAXPACKETLEN 600extern unsigned char packetBuf[MAXPACKETBUF][MAXPACKETLEN];extern unsigned short packetBufLen[MAXPACKETBUF];extern volatile int idxiPBuf, idxoPBuf;#define BOOT_RQ_ID 0xbebe2001#define BOOT_RQ_SEC 100#define BOOTP_SRV_PORT 67#define BOOTP_CLI_PORT 68#define TFTP_SRV_PORT 69#define TFTP_LOCAL_PORT TFTP_SRV_PORT#define FRAME_ARP 0x806#define FRAME_IP 0x800#define IPV4 0x4500#define PROTO_UDP 17#define PROTO_ICMP 1#define ICMP_ECHO_REQUEST 0x0800#define ICMP_ECHO_REPLY 0#define ICMP_TIMESTAMP_REQUEST 0x0d00#define ICMP_TIMESTAMP_REPLY 0x0e00#define ARP_ETH 1#define ARP_REQUEST 1#define ARP_REPLY 2#define BOOTP_ETH_REQUEST 0x101#define BOOTP_ETH_REPLY 0x201#define DONT_FRAGMENT_MASK 0x4000/* Network is most significant byte first */#ifdef __BIG_ENDIAN#define hton(x)	(x)#define ntoh(x)	(x)#define hton4(x)	(x)#define ntoh4(x)	(x)#else#define hton(x)	((x << 8) | (x >> 8))#define ntoh(x)	((x << 8) | (x >> 8))#define hton4(x)	((((x>>24)&0xff)<<0) | (((x>>16)&0xff)<<8) | (((x>>8)&0xff)<<16) | (((x>>0)&0xff)<<24))#define ntoh4(x)	((((x>>24)&0xff)<<0) | (((x>>16)&0xff)<<8) | (((x>>8)&0xff)<<16) | (((x>>0)&0xff)<<24))#endif	typedef struct {	unsigned char dst_hwadr[6];	unsigned char src_hwadr[6];	unsigned short frametype;} EthHeader;typedef struct {	EthHeader ehdr;	unsigned short hardtype;	unsigned short prottype;	unsigned char hardsize;	unsigned char protsize;	unsigned short op;	unsigned char sender_hwaddr[6];	unsigned int sender_ipaddr;	unsigned char target_hwaddr[6];	__packed unsigned int target_ipaddr;	__packed unsigned char pad[18];} ARPpkt;typedef struct {	EthHeader ehdr;	unsigned short vlt;	unsigned short length;	unsigned short id;	unsigned short frag;	unsigned char ttl;	unsigned char prot;	unsigned short cks;	__packed unsigned int src_ip;	__packed unsigned int dst_ip;} IPpkt;typedef struct {	IPpkt iphdr;	unsigned short op;	unsigned short cks;	unsigned short id;	unsigned short seq;} ICMPpkt;typedef struct {	ICMPpkt icmphdr;	unsigned int org;	unsigned int rec;	unsigned int tra;} ICMPTSpkt;typedef struct {	IPpkt iphdr;	unsigned short src_port;	unsigned short dst_port;	unsigned short length;	unsigned short cks;} UDPpkt;typedef struct {	UDPpkt udphdr;	unsigned short op_type;	unsigned short adr_hop;	__packed unsigned int id;	__packed unsigned short sec;	__packed unsigned short unused;	__packed unsigned int cli_ip;	__packed unsigned int your_ip;	__packed unsigned int srv_ip;	__packed unsigned int gw_ip;	unsigned char hw_addr[16];	unsigned char srv_name[64];	unsigned char boot_filename[128];	unsigned char options[64];} BOOTPpkt;typedef struct {	UDPpkt udphdr;	unsigned short opcode;	char data[138];} TFTPRpkt;typedef struct {	UDPpkt udphdr;	unsigned short opcode;	unsigned short num;	unsigned char data[512];} TFTPDpkt;extern void processPacket (void);extern void processARP (unsigned char *, unsigned short);extern void processIP (unsigned char *, unsigned short);extern void processUDP (unsigned char *, unsigned short);extern void processICMP (unsigned char *, unsigned short);extern void processBOOTP (BOOTPpkt *);extern void processTFTP (TFTPDpkt *);extern int sendARPRequest (unsigned int, unsigned int);extern int sendIP (IPpkt *, unsigned short, unsigned char, unsigned int);extern int sendUDP (UDPpkt *, unsigned short, unsigned int, unsigned short,					unsigned short);extern int sendICMPTimestampRequest (unsigned int);extern int sendBOOTPRequest (void);extern int sendTFTPRequest (void);extern unsigned char *lookupARP (unsigned int);extern unsigned short cks_partial (void *, unsigned short, unsigned long);extern unsigned short cks (void *, unsigned short);#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?