xref: /openbsd-src/libexec/ftpd/extern.h (revision ce7279d89b71439c96c854f612f4ac93a461fdc4)
1*ce7279d8Sjsg /*	$OpenBSD: extern.h,v 1.25 2024/05/21 05:00:47 jsg Exp $	*/
2df930be7Sderaadt /*	$NetBSD: extern.h,v 1.2 1995/04/11 02:44:49 cgd Exp $	*/
3df930be7Sderaadt 
4b1750805Sitojun /*
5b1750805Sitojun  * Copyright (C) 1997 and 1998 WIDE Project.
6b1750805Sitojun  * All rights reserved.
7b1750805Sitojun  *
8b1750805Sitojun  * Redistribution and use in source and binary forms, with or without
9b1750805Sitojun  * modification, are permitted provided that the following conditions
10b1750805Sitojun  * are met:
11b1750805Sitojun  * 1. Redistributions of source code must retain the above copyright
12b1750805Sitojun  *    notice, this list of conditions and the following disclaimer.
13b1750805Sitojun  * 2. Redistributions in binary form must reproduce the above copyright
14b1750805Sitojun  *    notice, this list of conditions and the following disclaimer in the
15b1750805Sitojun  *    documentation and/or other materials provided with the distribution.
16b1750805Sitojun  * 3. Neither the name of the project nor the names of its contributors
17b1750805Sitojun  *    may be used to endorse or promote products derived from this software
18b1750805Sitojun  *    without specific prior written permission.
19b1750805Sitojun  *
20b1750805Sitojun  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
21b1750805Sitojun  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22b1750805Sitojun  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23b1750805Sitojun  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
24b1750805Sitojun  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25b1750805Sitojun  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26b1750805Sitojun  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27b1750805Sitojun  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28b1750805Sitojun  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29b1750805Sitojun  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30b1750805Sitojun  * SUCH DAMAGE.
31b1750805Sitojun  */
32b1750805Sitojun 
33df930be7Sderaadt /*-
34df930be7Sderaadt  * Copyright (c) 1992, 1993
35df930be7Sderaadt  *	The Regents of the University of California.  All rights reserved.
36df930be7Sderaadt  *
37df930be7Sderaadt  * Redistribution and use in source and binary forms, with or without
38df930be7Sderaadt  * modification, are permitted provided that the following conditions
39df930be7Sderaadt  * are met:
40df930be7Sderaadt  * 1. Redistributions of source code must retain the above copyright
41df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer.
42df930be7Sderaadt  * 2. Redistributions in binary form must reproduce the above copyright
43df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer in the
44df930be7Sderaadt  *    documentation and/or other materials provided with the distribution.
45e33d3bd3Smillert  * 3. Neither the name of the University nor the names of its contributors
46df930be7Sderaadt  *    may be used to endorse or promote products derived from this software
47df930be7Sderaadt  *    without specific prior written permission.
48df930be7Sderaadt  *
49df930be7Sderaadt  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
50df930be7Sderaadt  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
51df930be7Sderaadt  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
52df930be7Sderaadt  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
53df930be7Sderaadt  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
54df930be7Sderaadt  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
55df930be7Sderaadt  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
56df930be7Sderaadt  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
57df930be7Sderaadt  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
58df930be7Sderaadt  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
59df930be7Sderaadt  * SUCH DAMAGE.
60df930be7Sderaadt  *
61df930be7Sderaadt  *	@(#)extern.h	8.2 (Berkeley) 4/4/94
62df930be7Sderaadt  */
63df930be7Sderaadt 
64c72b5b24Smillert void	cwd(char *);
650c50dd5dSjan void	delete(const char *);
66c72b5b24Smillert void	dologout(int);
670c50dd5dSjan void	fatal(const char *);
681b81cd4fStedu int	ftpd_pclose(FILE *, pid_t);
69bca58876Sjan FILE   *ftpd_ls(const char *, pid_t *);
70330fc432Sjan int     get_line(char *, int);
710c50dd5dSjan void	ftpdlogwtmp(const char *, const char *, const char *);
72c72b5b24Smillert void	lreply(int, const char *, ...);
730c50dd5dSjan void	makedir(const char *);
740c50dd5dSjan void	nack(const char *);
75b96c0bc5Shenning enum auth_ret
76b96c0bc5Shenning 	pass(char *);
77c72b5b24Smillert void	passive(void);
78c72b5b24Smillert int	epsvproto2af(int);
79c72b5b24Smillert int	af2epsvproto(int);
800c50dd5dSjan void	long_passive(const char *, int);
81c72b5b24Smillert int	extended_port(const char *);
82c72b5b24Smillert void	epsv_protounsupp(const char *);
830c50dd5dSjan void	perror_reply(int, const char *);
84c72b5b24Smillert void	pwd(void);
850c50dd5dSjan void	removedir(const char *);
860c50dd5dSjan void	renamecmd(const char *, const char *);
87c72b5b24Smillert char   *renamefrom(char *);
88c72b5b24Smillert void	reply(int, const char *, ...);
89306c0413Sdavid void	reply_r(int, const char *, ...);
907a7d71fbStedu enum ret_cmd { RET_FILE, RET_LIST };
910c50dd5dSjan void	retrieve(enum ret_cmd, const char *);
92c72b5b24Smillert void	send_file_list(char *);
93c72b5b24Smillert void	statcmd(void);
940c50dd5dSjan void	statfilecmd(const char *);
950c50dd5dSjan void	store(const char *, const char *, int);
96c72b5b24Smillert void	upper(char *);
97c72b5b24Smillert void	user(char *);
98c72b5b24Smillert void	yyerror(char *);
99c72b5b24Smillert void	toolong(int);
1001d5555bfSderaadt 
101b12aa87cSderaadt struct utmp;
102b12aa87cSderaadt void	ftpd_login(struct utmp *ut);
103b12aa87cSderaadt int	ftpd_logout(char *);
104b12aa87cSderaadt 
105c72b5b24Smillert int	yyparse(void);
106b1750805Sitojun 
107b1750805Sitojun union sockunion {
108b1750805Sitojun 	struct sockinet {
109dbd85215Smillert 		u_int8_t si_len;
110dbd85215Smillert 		sa_family_t si_family;
111dbd85215Smillert 		in_port_t si_port;
112b1750805Sitojun 	} su_si;
113b1750805Sitojun 	struct sockaddr_in  su_sin;
114b1750805Sitojun 	struct sockaddr_in6 su_sin6;
115b1750805Sitojun };
116b1750805Sitojun #define su_len		su_si.si_len
117b1750805Sitojun #define su_family	su_si.si_family
118b1750805Sitojun #define su_port		su_si.si_port
119