ethernet.h
上传用户:lvjun8202
上传日期:2013-04-30
资源大小:797k
文件大小:3k
源码类别:

SNMP编程

开发平台:

C/C++

  1. //#include <word.h>
  2. //#include <absacc.h>
  3. //#include <inettype.h>
  4. #define reg00   XBYTE[0xFF00]   //reg00- 10为isa网卡接口的寄存器地址300-310;
  5. #define reg01   XBYTE[0xFF01]
  6. #define reg02   XBYTE[0xFF02]
  7. #define reg03   XBYTE[0xFF03]
  8. #define reg04   XBYTE[0xFF04]
  9. #define reg05   XBYTE[0xFF05]
  10. #define reg06   XBYTE[0xFF06]
  11. #define reg07   XBYTE[0xFF07]
  12. #define reg08   XBYTE[0xFF08]
  13. #define reg09   XBYTE[0xFF09]
  14. #define reg0a   XBYTE[0xFF0A]
  15. #define reg0b   XBYTE[0xFF0B]
  16. #define reg0c   XBYTE[0xFF0C]
  17. #define reg0d   XBYTE[0xFF0D]
  18. #define reg0e   XBYTE[0xFF0E]
  19. #define reg0f   XBYTE[0xFF0F]
  20. #define reg10   XBYTE[0xFF10]
  21. #define reg1f   XBYTE[0xFF1F]
  22. //EtherNet
  23. #define MaxLenARPtable 30
  24. #define MaxLenTxBuf 10
  25. #define PINGTYPE 1
  26. #define UDPTYPE 2
  27. #define HOST 6
  28. #define GATEWAY 14
  29. #define MASK 10
  30. #define SNMPHOST 18
  31. #define MACADR 0
  32. //EtherNet
  33. void page(unsigned char pagenumber);//ne2000页选择
  34. void getadr(unsigned char id,unsigned char *bytes);//读取MAC地址参数
  35. void setadr(unsigned char id,unsigned char *bytes);//设置MAC地址参数
  36. void initNIC(void);//初始化网卡配置参数
  37. void delay_ms(unsigned char ms_number);//延时
  38. void rtl8019as_rst();//RTL8019AS复位
  39. void ne2000init();//ne2000网卡初始化
  40. void send_packet(union netcard *txdnet,unsigned int length);//ne2000发包子程序
  41. bit recv_packet(union netcard *rxdnet);//ne2000收包子程序
  42. void trans_pack(union netcard *txdnet,union ip_address_type destip,unsigned int length,unsigned char type);//发包至缓冲区
  43. void process_trans_pack();//发包缓冲区发送处理
  44. void arp_request(unsigned long ip_address);//ARP请求
  45. void arp_answer();//ARP应答
  46. void arp_process();//???????????????chang//ARP应答处理
  47. void ping_request();//????????????????????????//PING请求
  48. void ping_answer();//????????????????????????//PING应答
  49. void ping_echo();//PING应答收到后回显
  50. void CfgHost(WORDTABLE *WordTable);//配置主机IP
  51. void CfgGateway(WORDTABLE *WordTable);//配置网关IP
  52. void CfgMask(WORDTABLE *WordTable);//配置子网掩码
  53. void CfgSnmpHost(WORDTABLE *WordTable);//配置SNMP主机IP
  54. void PrintARPtable(WORDTABLE *WordTable);//显示ARP缓存
  55. void PrintConfig(WORDTABLE *WordTable);//显示配置信息
  56. void PingCommand(WORDTABLE *WordTable);//PING命令处理
  57. void make_udp(union netcard *txdnet,union ip_address_type udpdestip,unsigned char *dat,unsigned int length,unsigned int portnumber);//封装UDP包
  58. void UDPCommand(WORDTABLE *WordTable);//UDP命令处理
  59. void CfgMacAddress(WORDTABLE *WordTable);//配置MAC地址
  60. void ListTxBuf(WORDTABLE *WordTable);//显示发送缓冲区
  61. void InitArpTable(void);//初始化ARP缓存
  62. void InitTxBuf(void);//初始化发送缓冲区
  63. void process_tcp();//TCP处理
  64. unsigned int createipheadcrc();//生成IP包头CRC校验
  65. unsigned int createicmpcrc();//生成ICMP包CRC校验
  66. unsigned int checksum(unsigned int xdata *check,unsigned int length);//计算校验和
  67. unsigned int createtcpcrc();//生成TCP包CRC校验
  68. bit verifyipheadcrc();//对ip头进行校验,错误返回0,正确返回1
  69. unsigned char verifytcpcrc();//对tcp头进行校验,错误返回0,正确返回1
  70. bit verifyudpcrc();//对udp头进行校验,错误返回0,正确返回1
  71. void process_udp();//UDP处理进程
  72. void updatearptab(void);//更新ARP缓存
  73. bit findmacadr(union ip_address_type ip,union ethernet_address_type *macadr);//在ARP缓存中查找指定IP/MAC映射对
  74. void maincycle(void);//主循环