aoe.h 806 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * ATA-over-Ethernet (AoE) protocol
  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. Aoesectsz = 512, /* standard sector size */
  25. Aoever = 1,
  26. AFerr = 1<<2,
  27. AFrsp = 1<<3,
  28. AAFwrite= 1,
  29. AAFext = 1<<6,
  30. };
  31. typedef struct {
  32. uchar dst[Eaddrlen];
  33. uchar src[Eaddrlen];
  34. uchar type[2];
  35. uchar verflag;
  36. uchar error;
  37. uchar major[2];
  38. uchar minor;
  39. uchar cmd;
  40. uchar tag[4];
  41. } Aoehdr;
  42. typedef struct {
  43. Aoehdr;
  44. uchar aflag;
  45. uchar errfeat;
  46. uchar scnt;
  47. uchar cmdstat;
  48. uchar lba[6];
  49. uchar res[2];
  50. } Aoeata;
  51. typedef struct {
  52. Aoehdr;
  53. uchar bufcnt[2];
  54. uchar fwver[2];
  55. uchar scnt;
  56. uchar verccmd;
  57. uchar cslen[2];
  58. } Aoeqc;
  59. extern char Echange[];
  60. extern char Enotup[];