aoe.h 826 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * ATA-over-Ethernet
  3. */
  4. enum {
  5. ACata,
  6. ACconfig,
  7. };
  8. enum {
  9. AQCread,
  10. AQCtest,
  11. AQCprefix,
  12. AQCset,
  13. AQCfset,
  14. };
  15. enum {
  16. AEcmd = 1,
  17. AEarg,
  18. AEdev,
  19. AEcfg,
  20. AEver,
  21. };
  22. enum {
  23. Aoetype = 0x88a2,
  24. Aoever = 1,
  25. AFerr = 1<<2,
  26. AFrsp = 1<<3,
  27. AAFwrite= 1,
  28. AAFext = 1<<6,
  29. };
  30. enum {
  31. Crd = 0x20,
  32. Crdext = 0x24,
  33. Cwr = 0x30,
  34. Cwrext = 0x34,
  35. Cid = 0xec,
  36. };
  37. typedef struct {
  38. uchar dst[Eaddrlen];
  39. uchar src[Eaddrlen];
  40. uchar type[2];
  41. uchar verflag;
  42. uchar error;
  43. uchar major[2];
  44. uchar minor;
  45. uchar cmd;
  46. uchar tag[4];
  47. } Aoehdr;
  48. typedef struct {
  49. Aoehdr;
  50. uchar aflag;
  51. uchar errfeat;
  52. uchar scnt;
  53. uchar cmdstat;
  54. uchar lba[6];
  55. uchar res[2];
  56. } Aoeata;
  57. typedef struct {
  58. Aoehdr;
  59. uchar bufcnt[2];
  60. uchar fwver[2];
  61. uchar scnt;
  62. uchar verccmd;
  63. uchar cslen[2];
  64. } Aoeqc;
  65. extern char Echange[];
  66. extern char Enotup[];