1 #ifndef tftplib_h 2 #define tftplib_h 3 4 #define TFTP_OFFSET 4 /* size of tftp header */ 5 6 #ifndef OACK 7 #define OACK 6 /* option ACK */ 8 #endif 9 10 union tftpbuf { struct tftphdr *hdr; char *buf; }; 11 12 struct utftpd_ctrl { 13 int netascii; 14 size_t segsize; 15 int retries; 16 int timeout; 17 char *revision; 18 union tftpbuf sendbuf; /* of segsize+TFTP_OFFSET size */ 19 union tftpbuf recvbuf; /* of segsize+TFTP_OFFSET size */ 20 size_t first_packet_length; /* see tftp_recv.c for a description */ 21 int recognize_oack; 22 struct sockaddr_in s_in; 23 /* */ 24 const char *filename; /* qualified absolute filename */ 25 const char *origfilename; /* exactly what we received */ 26 int filefd; 27 int remotefd; 28 unsigned long bytes; 29 pid_t pid; 30 struct utftpd_vc *vc; /* version control */ 31 }; 32 struct utftpd_vc { 33 int (* test) P__((const char *filename, struct utftpd_ctrl *flags)); 34 int (* commit) P__((const char *comment, struct utftpd_ctrl *flags)); 35 int (* checkout) P__((int mode, struct utftpd_ctrl *flags)); 36 int (* unget) P__((struct utftpd_ctrl *flags)); 37 }; 38 39 extern struct utftpd_vc utftpd_novc; 40 extern struct utftpd_vc utftpd_rcs; 41 extern struct utftpd_vc utftpd_sccs; 42 43 extern int wait_check_and_log(pid_t pid); 44 45 /* prototypes for utftpd internal stuff */ 46 int utftpd_recv P__((struct utftpd_ctrl *flags)); 47 int utftpd_send P__((struct utftpd_ctrl *flags)); 48 #define TSG_READ 0 /* get */ 49 #define TSG_WRITE 1 /* get -e */ 50 #define TSG_CREATE 2 /* treat as "get -e", except in the "novc" driver. */ 51 void do_nak P__((int remotefd, int ec, const char *et)); 52 extern char *opt_rcs_ci; 53 extern char *opt_rcs_co; 54 extern char *opt_sccs_delta; 55 extern char *opt_sccs_get; 56 extern char *opt_sccs_unget; 57 extern char *opt_sccs_clean; 58 extern char *remoteip; 59 extern int nullfd; 60 extern int opt_suppress_naks; 61 extern int opt_verbose; 62 63 64 #define UTFTP_EC_OK 0 65 #define UTFTP_EC_LOCAL 1 66 #define UTFTP_EC_USAGE 2 67 #define UTFTP_EC_TIMEOUT 3 68 #define UTFTP_EC_PROTO 4 69 #define UTFTP_EC_NETWORK 5 70 #define UTFTP_EC_ERROR 6 71 #define UTFTP_EC_UNDEF 7 72 73 74 75 int utftpd_nak P__((int remotefd, int tftp_errcode, const char *errtext, struct utftpd_ctrl *flags)); 76 77 #endif 78