Subversion Repositories HomeAutomation

Rev

Rev 198 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1. /*********************************************
  2.  * vim:sw=8:ts=8:si:et
  3.  * To use the above modeline in vim you must have "set modeline" in your .vimrc
  4.  * Author: Guido Socher
  5.  * Copyright: GPL V2
  6.  *
  7.  * Based on the net.h file from the AVRlib library by Pascal Stang.
  8.  * For AVRlib See http://www.procyonengineering.com/
  9.  * Used with explicit permission of Pascal Stang.
  10.  *
  11.  * Chip type           : ATMEGA88 with ENC28J60
  12.  *********************************************/
  13.  
  14. // notation: _P = position of a field
  15. //           _V = value of a field
  16.  
  17. //@{
  18.  
  19. #ifndef NET_H
  20. #define NET_H
  21.  
  22. // ******* ETH *******
  23. #define ETH_HEADER_LEN  14
  24. // values of certain bytes:
  25. #define ETHTYPE_ARP_H_V 0x08
  26. #define ETHTYPE_ARP_L_V 0x06
  27. #define ETHTYPE_IP_H_V  0x08
  28. #define ETHTYPE_IP_L_V  0x00
  29. // byte positions in the ethernet frame:
  30. //
  31. // Ethernet type field (2bytes):
  32. #define ETH_TYPE_H_P 12
  33. #define ETH_TYPE_L_P 13
  34. //
  35. #define ETH_DST_MAC 0
  36. #define ETH_SRC_MAC 6
  37.  
  38.  
  39. // ******* ARP *******
  40. #define ETH_ARP_OPCODE_REPLY_H_V 0x0
  41. #define ETH_ARP_OPCODE_REPLY_L_V 0x02
  42. //
  43. #define ETHTYPE_ARP_L_V 0x06
  44. // arp.dst.ip
  45. #define ETH_ARP_DST_IP_P 0x26
  46. // arp.opcode
  47. #define ETH_ARP_OPCODE_H_P 0x14
  48. #define ETH_ARP_OPCODE_L_P 0x15
  49. // arp.src.mac
  50. #define ETH_ARP_SRC_MAC_P 0x16
  51. #define ETH_ARP_SRC_IP_P 0x1c
  52. #define ETH_ARP_DST_MAC_P 0x20
  53. #define ETH_ARP_DST_IP_P 0x26
  54.  
  55. // ******* IP *******
  56. #define IP_HEADER_LEN   20
  57. // ip.src
  58. #define IP_SRC_P 0x1a
  59. #define IP_DST_P 0x1e
  60. #define IP_HEADER_LEN_VER_P 0xe
  61. #define IP_CHECKSUM_P 0x18
  62. #define IP_TTL_P 0x16
  63. #define IP_FLAGS_P 0x14
  64. #define IP_P 0xe
  65. #define IP_TOTLEN_H_P 0x10
  66. #define IP_TOTLEN_L_P 0x11
  67.  
  68. #define IP_PROTO_P 0x17  
  69.  
  70. #define IP_PROTO_ICMP_V 1
  71. #define IP_PROTO_TCP_V 6
  72. // 17=0x11
  73. #define IP_PROTO_UDP_V 17
  74. // ******* ICMP *******
  75. #define ICMP_TYPE_ECHOREPLY_V 0
  76. #define ICMP_TYPE_ECHOREQUEST_V 8
  77. //
  78. #define ICMP_TYPE_P 0x22
  79. #define ICMP_CHECKSUM_P 0x24
  80.  
  81. // ******* UDP *******
  82. #define UDP_HEADER_LEN  8
  83. //
  84. #define UDP_SRC_PORT_H_P 0x22
  85. #define UDP_SRC_PORT_L_P 0x23
  86. #define UDP_DST_PORT_H_P 0x24
  87. #define UDP_DST_PORT_L_P 0x25
  88. //
  89. #define UDP_LEN_H_P 0x26
  90. #define UDP_LEN_L_P 0x27
  91. #define UDP_CHECKSUM_H_P 0x28
  92. #define UDP_CHECKSUM_L_P 0x29
  93. #define UDP_DATA_P 0x2a
  94.  
  95. // ******* TCP *******
  96. #define TCP_SRC_PORT_H_P 0x22
  97. #define TCP_SRC_PORT_L_P 0x23
  98. #define TCP_DST_PORT_H_P 0x24
  99. #define TCP_DST_PORT_L_P 0x25
  100. // the tcp seq number is 4 bytes 0x26-0x29
  101. #define TCP_SEQ_H_P 0x26
  102. #define TCP_SEQACK_H_P 0x2a
  103. // flags: SYN=2
  104. #define TCP_FLAGS_P 0x2f
  105. #define TCP_FLAGS_SYN_V 2
  106. #define TCP_FLAGS_FIN_V 1
  107. #define TCP_FLAGS_PUSH_V 8
  108. #define TCP_FLAGS_SYNACK_V 0x12
  109. #define TCP_FLAGS_ACK_V 0x10
  110. #define TCP_FLAGS_PSHACK_V 0x18
  111. //  plain len without the options:
  112. #define TCP_HEADER_LEN_PLAIN 20
  113. #define TCP_HEADER_LEN_P 0x2e
  114. #define TCP_CHECKSUM_H_P 0x32
  115. #define TCP_CHECKSUM_L_P 0x33
  116. #define TCP_OPTIONS_P 0x36
  117. //
  118. #endif
  119. //@}
  120.  
  121.