www.pudn.com > SNMP范例源代码.zip > ethernet.h
//#include//#include //#include #define reg00 XBYTE[0xFF00] //reg00- 10为isa网卡接口的寄存器地址300-310; #define reg01 XBYTE[0xFF01] #define reg02 XBYTE[0xFF02] #define reg03 XBYTE[0xFF03] #define reg04 XBYTE[0xFF04] #define reg05 XBYTE[0xFF05] #define reg06 XBYTE[0xFF06] #define reg07 XBYTE[0xFF07] #define reg08 XBYTE[0xFF08] #define reg09 XBYTE[0xFF09] #define reg0a XBYTE[0xFF0A] #define reg0b XBYTE[0xFF0B] #define reg0c XBYTE[0xFF0C] #define reg0d XBYTE[0xFF0D] #define reg0e XBYTE[0xFF0E] #define reg0f XBYTE[0xFF0F] #define reg10 XBYTE[0xFF10] #define reg1f XBYTE[0xFF1F] //EtherNet #define MaxLenARPtable 30 #define MaxLenTxBuf 10 #define PINGTYPE 1 #define UDPTYPE 2 #define HOST 6 #define GATEWAY 14 #define MASK 10 #define SNMPHOST 18 #define MACADR 0 //EtherNet void page(unsigned char pagenumber);//ne2000页选择 void getadr(unsigned char id,unsigned char *bytes);//读取MAC地址参数 void setadr(unsigned char id,unsigned char *bytes);//设置MAC地址参数 void initNIC(void);//初始化网卡配置参数 void delay_ms(unsigned char ms_number);//延时 void rtl8019as_rst();//RTL8019AS复位 void ne2000init();//ne2000网卡初始化 void send_packet(union netcard *txdnet,unsigned int length);//ne2000发包子程序 bit recv_packet(union netcard *rxdnet);//ne2000收包子程序 void trans_pack(union netcard *txdnet,union ip_address_type destip,unsigned int length,unsigned char type);//发包至缓冲区 void process_trans_pack();//发包缓冲区发送处理 void arp_request(unsigned long ip_address);//ARP请求 void arp_answer();//ARP应答 void arp_process();//???????????????chang//ARP应答处理 void ping_request();//????????????????????????//PING请求 void ping_answer();//????????????????????????//PING应答 void ping_echo();//PING应答收到后回显 void CfgHost(WORDTABLE *WordTable);//配置主机IP void CfgGateway(WORDTABLE *WordTable);//配置网关IP void CfgMask(WORDTABLE *WordTable);//配置子网掩码 void CfgSnmpHost(WORDTABLE *WordTable);//配置SNMP主机IP void PrintARPtable(WORDTABLE *WordTable);//显示ARP缓存 void PrintConfig(WORDTABLE *WordTable);//显示配置信息 void PingCommand(WORDTABLE *WordTable);//PING命令处理 void make_udp(union netcard *txdnet,union ip_address_type udpdestip,unsigned char *dat,unsigned int length,unsigned int portnumber);//封装UDP包 void UDPCommand(WORDTABLE *WordTable);//UDP命令处理 void CfgMacAddress(WORDTABLE *WordTable);//配置MAC地址 void ListTxBuf(WORDTABLE *WordTable);//显示发送缓冲区 void InitArpTable(void);//初始化ARP缓存 void InitTxBuf(void);//初始化发送缓冲区 void process_tcp();//TCP处理 unsigned int createipheadcrc();//生成IP包头CRC校验 unsigned int createicmpcrc();//生成ICMP包CRC校验 unsigned int checksum(unsigned int xdata *check,unsigned int length);//计算校验和 unsigned int createtcpcrc();//生成TCP包CRC校验 bit verifyipheadcrc();//对ip头进行校验,错误返回0,正确返回1 unsigned char verifytcpcrc();//对tcp头进行校验,错误返回0,正确返回1 bit verifyudpcrc();//对udp头进行校验,错误返回0,正确返回1 void process_udp();//UDP处理进程 void updatearptab(void);//更新ARP缓存 bit findmacadr(union ip_address_type ip,union ethernet_address_type *macadr);//在ARP缓存中查找指定IP/MAC映射对 void maincycle(void);//主循环