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