13e12c5d1SDavid du Colombier typedef struct Method Method; 23e12c5d1SDavid du Colombier struct Method 33e12c5d1SDavid du Colombier { 43e12c5d1SDavid du Colombier char *name; 53e12c5d1SDavid du Colombier void (*config)(Method*); 63e12c5d1SDavid du Colombier int (*connect)(void); 73e12c5d1SDavid du Colombier char *arg; 83e12c5d1SDavid du Colombier }; 99a747e4fSDavid du Colombier enum 109a747e4fSDavid du Colombier { 119a747e4fSDavid du Colombier Statsz= 256, 129a747e4fSDavid du Colombier Nbarg= 16, 139a747e4fSDavid du Colombier }; 143e12c5d1SDavid du Colombier 15*217e9e83SDavid du Colombier #define dprint(...) if(debugboot) fprint(2, __VA_ARGS__); else USED(debugboot) 16*217e9e83SDavid du Colombier 17b07b71ebSDavid du Colombier extern char* bootdisk; /* defined in ../$arch/boot$CONF.c */ 187dd7cddfSDavid du Colombier extern char* rootdir; 193e12c5d1SDavid du Colombier extern int (*cfs)(int); 203e12c5d1SDavid du Colombier extern int cpuflag; 21219b2ee8SDavid du Colombier extern char cputype[]; 2263c59e25SDavid du Colombier extern int debugboot; 233e12c5d1SDavid du Colombier extern int fflag; 243e12c5d1SDavid du Colombier extern int kflag; 25b07b71ebSDavid du Colombier extern Method method[]; /* defined in ../$arch/boot$CONF.c */ 263e12c5d1SDavid du Colombier extern void (*pword)(int, Method*); 27219b2ee8SDavid du Colombier extern char sys[]; 28219b2ee8SDavid du Colombier extern uchar hostkey[]; 299a747e4fSDavid du Colombier extern uchar statbuf[Statsz]; 307dd7cddfSDavid du Colombier extern int bargc; 317dd7cddfSDavid du Colombier extern char *bargv[Nbarg]; 32d1f2e59dSDavid du Colombier extern int pcload; 333e12c5d1SDavid du Colombier 343e12c5d1SDavid du Colombier /* libc equivalent */ 35b07b71ebSDavid du Colombier extern void authentication(int); 363e12c5d1SDavid du Colombier extern int cache(int); 37219b2ee8SDavid du Colombier extern char* checkkey(Method*, char*, char*); 3863c59e25SDavid du Colombier extern int chmod(char *file, int mode); 393e12c5d1SDavid du Colombier extern void fatal(char*); 403e12c5d1SDavid du Colombier extern void getpasswd(char*, int); 413e12c5d1SDavid du Colombier extern void key(int, Method*); 42b07b71ebSDavid du Colombier extern int mountusbparts(void); 437dd7cddfSDavid du Colombier extern int outin(char*, char*, int); 443e12c5d1SDavid du Colombier extern int plumb(char*, char*, int*, char*); 453e12c5d1SDavid du Colombier extern int readfile(char*, char*, int); 4663c59e25SDavid du Colombier extern int readparts(void); 477dd7cddfSDavid du Colombier extern long readn(int, void*, long); 48d1f2e59dSDavid du Colombier extern void run(char *file, ...); 49b07b71ebSDavid du Colombier extern void runv(char **argv); 503e12c5d1SDavid du Colombier extern int sendmsg(int, char*); 513e12c5d1SDavid du Colombier extern void setenv(char*, char*); 52d9306527SDavid du Colombier extern void settime(int, int, char*); 533e12c5d1SDavid du Colombier extern void srvcreate(char*, int); 5463c59e25SDavid du Colombier extern void usbinit(int post); 553e12c5d1SDavid du Colombier extern void warning(char*); 56219b2ee8SDavid du Colombier extern int writefile(char*, char*, int); 573e12c5d1SDavid du Colombier extern void boot(int, char **); 58219b2ee8SDavid du Colombier extern void doauthenticate(int, Method*); 599a747e4fSDavid du Colombier extern int old9p(int); 607dd7cddfSDavid du Colombier extern int parsefields(char*, char**, int, char*); 613e12c5d1SDavid du Colombier 623e12c5d1SDavid du Colombier /* methods */ 633e12c5d1SDavid du Colombier extern void configtcp(Method*); 643e12c5d1SDavid du Colombier extern int connecttcp(void); 659a747e4fSDavid du Colombier 663e12c5d1SDavid du Colombier extern void configlocal(Method*); 673e12c5d1SDavid du Colombier extern int connectlocal(void); 689a747e4fSDavid du Colombier 699a747e4fSDavid du Colombier extern void configpaq(Method*); 709a747e4fSDavid du Colombier extern int connectpaq(void); 719a747e4fSDavid du Colombier 723ff48bf5SDavid du Colombier extern void configembed(Method*); 733ff48bf5SDavid du Colombier extern int connectembed(void); 749a747e4fSDavid du Colombier 7567031067SDavid du Colombier extern void configip(int, char**, int); 76dc5a79c1SDavid du Colombier 779a747e4fSDavid du Colombier /* hack for passing authentication address */ 789a747e4fSDavid du Colombier extern char *authaddr; 79