1 typedef struct Method Method; 2 struct Method 3 { 4 char *name; 5 void (*config)(Method*); 6 int (*connect)(void); 7 char *arg; 8 }; 9 enum 10 { 11 Statsz= 256, 12 Nbarg= 16, 13 }; 14 15 #define dprint(...) if(debugboot) fprint(2, __VA_ARGS__); else USED(debugboot) 16 17 extern char* bootdisk; /* defined in ../$arch/boot$CONF.c */ 18 extern char* rootdir; 19 extern int (*cfs)(int); 20 extern int cpuflag; 21 extern char cputype[]; 22 extern int debugboot; 23 extern int fflag; 24 extern int kflag; 25 extern Method method[]; /* defined in ../$arch/boot$CONF.c */ 26 extern void (*pword)(int, Method*); 27 extern char sys[]; 28 extern uchar hostkey[]; 29 extern uchar statbuf[Statsz]; 30 extern int bargc; 31 extern char *bargv[Nbarg]; 32 extern int pcload; 33 34 /* libc equivalent */ 35 extern void authentication(int); 36 extern int cache(int); 37 extern char* checkkey(Method*, char*, char*); 38 extern int chmod(char *file, int mode); 39 extern void fatal(char*); 40 extern void getpasswd(char*, int); 41 extern void key(int, Method*); 42 extern int mountusbparts(void); 43 extern int outin(char*, char*, int); 44 extern int plumb(char*, char*, int*, char*); 45 extern int readfile(char*, char*, int); 46 extern int readparts(void); 47 extern long readn(int, void*, long); 48 extern void run(char *file, ...); 49 extern void runv(char **argv); 50 extern int sendmsg(int, char*); 51 extern void setenv(char*, char*); 52 extern void settime(int, int, char*); 53 extern void srvcreate(char*, int); 54 extern void usbinit(int post); 55 extern void warning(char*); 56 extern int writefile(char*, char*, int); 57 extern void boot(int, char **); 58 extern void doauthenticate(int, Method*); 59 extern int old9p(int); 60 extern int parsefields(char*, char**, int, char*); 61 62 /* methods */ 63 extern void configtcp(Method*); 64 extern int connecttcp(void); 65 66 extern void configlocal(Method*); 67 extern int connectlocal(void); 68 69 extern void configpaq(Method*); 70 extern int connectpaq(void); 71 72 extern void configembed(Method*); 73 extern int connectembed(void); 74 75 extern void configip(int, char**, int); 76 77 /* hack for passing authentication address */ 78 extern char *authaddr; 79