19ef1f84bSDavid du Colombier typedef struct Method Method; 29ef1f84bSDavid du Colombier struct Method 39ef1f84bSDavid du Colombier { 49ef1f84bSDavid du Colombier char *name; 59ef1f84bSDavid du Colombier void (*config)(Method*); 69ef1f84bSDavid du Colombier int (*connect)(void); 79ef1f84bSDavid du Colombier char *arg; 89ef1f84bSDavid du Colombier }; 99ef1f84bSDavid du Colombier enum 109ef1f84bSDavid du Colombier { 119ef1f84bSDavid du Colombier Statsz= 256, 129ef1f84bSDavid du Colombier Nbarg= 16, 139ef1f84bSDavid du Colombier }; 149ef1f84bSDavid du Colombier 15*532111f7SDavid du Colombier #define dprint(...) if(debugboot) fprint(2, __VA_ARGS__); else USED(debugboot) 16*532111f7SDavid du Colombier 17*532111f7SDavid du Colombier extern char* bootdisk; /* defined in ../$arch/boot$CONF.c */ 189ef1f84bSDavid du Colombier extern char* rootdir; 199ef1f84bSDavid du Colombier extern int (*cfs)(int); 209ef1f84bSDavid du Colombier extern int cpuflag; 219ef1f84bSDavid du Colombier extern char cputype[]; 22*532111f7SDavid du Colombier extern int debugboot; 239ef1f84bSDavid du Colombier extern int fflag; 249ef1f84bSDavid du Colombier extern int kflag; 25*532111f7SDavid du Colombier extern Method method[]; /* defined in ../$arch/boot$CONF.c */ 269ef1f84bSDavid du Colombier extern void (*pword)(int, Method*); 279ef1f84bSDavid du Colombier extern char sys[]; 289ef1f84bSDavid du Colombier extern uchar hostkey[]; 299ef1f84bSDavid du Colombier extern uchar statbuf[Statsz]; 309ef1f84bSDavid du Colombier extern int bargc; 319ef1f84bSDavid du Colombier extern char *bargv[Nbarg]; 329ef1f84bSDavid du Colombier 339ef1f84bSDavid du Colombier /* libc equivalent */ 34*532111f7SDavid du Colombier extern void authentication(int); 359ef1f84bSDavid du Colombier extern int cache(int); 369ef1f84bSDavid du Colombier extern char* checkkey(Method*, char*, char*); 37*532111f7SDavid du Colombier extern int chmod(char *file, int mode); 389ef1f84bSDavid du Colombier extern void fatal(char*); 399ef1f84bSDavid du Colombier extern void getpasswd(char*, int); 409ef1f84bSDavid du Colombier extern void key(int, Method*); 41*532111f7SDavid du Colombier extern int mountusbparts(void); 429ef1f84bSDavid du Colombier extern int outin(char*, char*, int); 439ef1f84bSDavid du Colombier extern int plumb(char*, char*, int*, char*); 449ef1f84bSDavid du Colombier extern int readfile(char*, char*, int); 45*532111f7SDavid du Colombier extern int readparts(void); 469ef1f84bSDavid du Colombier extern long readn(int, void*, long); 479ef1f84bSDavid du Colombier extern void run(char *file, ...); 48*532111f7SDavid du Colombier extern void runv(char **argv); 499ef1f84bSDavid du Colombier extern int sendmsg(int, char*); 509ef1f84bSDavid du Colombier extern void setenv(char*, char*); 519ef1f84bSDavid du Colombier extern void settime(int, int, char*); 529ef1f84bSDavid du Colombier extern void srvcreate(char*, int); 53*532111f7SDavid du Colombier extern void usbinit(int post); 549ef1f84bSDavid du Colombier extern void warning(char*); 559ef1f84bSDavid du Colombier extern int writefile(char*, char*, int); 569ef1f84bSDavid du Colombier extern void boot(int, char **); 579ef1f84bSDavid du Colombier extern void doauthenticate(int, Method*); 589ef1f84bSDavid du Colombier extern int old9p(int); 599ef1f84bSDavid du Colombier extern int parsefields(char*, char**, int, char*); 609ef1f84bSDavid du Colombier 619ef1f84bSDavid du Colombier /* methods */ 629ef1f84bSDavid du Colombier extern void configtcp(Method*); 639ef1f84bSDavid du Colombier extern int connecttcp(void); 649ef1f84bSDavid du Colombier 659ef1f84bSDavid du Colombier extern void configlocal(Method*); 669ef1f84bSDavid du Colombier extern int connectlocal(void); 679ef1f84bSDavid du Colombier 689ef1f84bSDavid du Colombier extern void configpaq(Method*); 699ef1f84bSDavid du Colombier extern int connectpaq(void); 709ef1f84bSDavid du Colombier 719ef1f84bSDavid du Colombier extern void configembed(Method*); 729ef1f84bSDavid du Colombier extern int connectembed(void); 739ef1f84bSDavid du Colombier 749ef1f84bSDavid du Colombier extern void configip(int, char**, int); 759ef1f84bSDavid du Colombier 769ef1f84bSDavid du Colombier /* hack for passing authentication address */ 779ef1f84bSDavid du Colombier extern char *authaddr; 78