Files
rtems/cpukit/ftpd/ftpd.h
Joel Sherrill 38371dbebb 2001-01-24 Sergei Organov <osv@javad.ru>
* rtems_servers/ftpd.c, rtems_servers/ftpd.h: Major enhancements
	as listed below:
	  - Timeouts on sockets implemented. 'idle' field added to
	    configuration. No timeout by default to keep backward compatibility.
	    Note: SITE IDLE command not implemented yet.
	  - Basic global access control implemented. 'access' field added to
	    configuration. No access limitations by default to keep backward
	    compatibility.
	  - Anchor data socket for active mode (using self IP and port 20.)
	  - Fixed default data port support (still not tested).
	  - Don't allow IP address different from originating host in
	    PORT command to improve security.
	  - Fixed bug in MDTM command.
	  - Check for correctness of parsing of argument in command_port().
	  - Fixed squeeze_path() to don't allow names like 'NAME/smth' where
	    'NAME' is not a directory.
	  - Command parsing a little bit improved: command names are now
	    converted to upper-case to be more compatible with RFC (command
	    names are not case-sensitive.)
	  - Reformat comments so that they have RTEMS look-and-feel.
	  - Fixed DELE, SITE CHMOD, RMD, MKD broken by previous changes
	  - True ASCII mode implemented (doesn't work for hooks and /dev/null)
	  - Passive mode implemented, PASV command added.
	  - Default port for data connection could be used (untested, can't find
	    ftp client that doesn't send PORT command)
	  - SYST reply changed to UNIX, as former RTEMS isn't registered name.
	  - Reply codes reviewed and fixed.
2001-01-24 19:20:24 +00:00

58 lines
1.7 KiB
C

/*
* FTP Server Information
*
* $Id$
*/
#ifndef __FTPD_H__
#define __FTPD_H__
#define FTPD_CONTROL_PORT 21
/* FTPD access control flags */
enum
{
FTPD_NO_WRITE = 0x1,
FTPD_NO_READ = 0x2,
FTPD_NO_RW = FTPD_NO_WRITE | FTPD_NO_READ
};
typedef int (*rtems_ftpd_hookfunction)(unsigned char *, unsigned long);
struct rtems_ftpd_hook
{
char *filename;
rtems_ftpd_hookfunction hook_function;
};
struct rtems_ftpd_configuration
{
rtems_task_priority priority; /* FTPD task priority */
unsigned long max_hook_filesize; /* Maximum buffersize */
/* for hooks */
int port; /* Well-known port */
struct rtems_ftpd_hook *hooks; /* List of hooks */
char const *root; /* Root for FTPD or 0 for / */
int tasks_count; /* Max. connections */
int idle; /* Idle timeout in seoconds
or 0 for no (inf) timeout */
int access; /* 0 - r/w, 1 - read-only,
2 - write-only,
3 - browse-only */
};
/*
* Reply codes.
*/
#define PRELIM 1 /* positive preliminary */
#define COMPLETE 2 /* positive completion */
#define CONTINUE 3 /* positive intermediate */
#define TRANSIENT 4 /* transient negative completion */
#define ERROR 5 /* permanent negative completion */
int rtems_initialize_ftpd();
#endif /* __FTPD_H__ */