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 + -
显示快捷键?