enum { ACata, ACconfig, ACmask, ACres, }; enum { AQCread, AQCtest, AQCprefix, AQCset, AQCfset, }; enum { AEunk, AEcmd, /* bad command */ AEarg, /* bad argument */ AEoff, /* device offline */ AEcfg, /* config string already set */ AEver, /* unsupported version */ AEres, /* target reserved */ }; enum { /* mask commands */ Mread = 0, Medit, /* mask directives */ MDnop = 0, MDadd, MDdel, /* mask errors */ MEunk = 1, MEbad, MEfull, /* reserve / release */ Rrread = 0, Rrset, Rrforce, }; enum { Aoetype = 0x88a2, Aoesectsz = 512, Aoemaxcfg = 1024, Aoehsz = 24, Aoeatasz = 12, Aoecfgsz = 8, Aoerrsz = 2, Aoemsz = 4, Aoemdsz = 8, Aoever = 1, AFerr = 1<<2, AFrsp = 1<<3, AAFwrite = 1, AAFext = 1<<6, }; typedef struct { uchar dst[Eaddrlen]; uchar src[Eaddrlen]; uchar type[2]; uchar verflag; uchar error; uchar major[2]; uchar minor; uchar cmd; uchar tag[4]; } Aoehdr; typedef struct { uchar aflag; uchar errfeat; uchar scnt; uchar cmdstat; uchar lba[6]; uchar res[2]; } Aoeata; typedef struct { uchar bufcnt[2]; uchar fwver[2]; uchar scnt; uchar verccmd; uchar cslen[2]; } Aoecfg; typedef struct { uchar dres; uchar dcmd; uchar ea[Eaddrlen]; } Aoemd; typedef struct { uchar mres; uchar mcmd; uchar merr; uchar mcnt; } Aoem; typedef struct { uchar rcmd; uchar nea; uchar ea0[]; } Aoerr; extern char Echange[]; extern char Enotup[];