mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-26 22:48:23 +00:00
New file. Text from Jake Janovetz.
This commit is contained in:
@@ -22,7 +22,8 @@ dirs:
|
||||
|
||||
COMMON_FILES=../common/cpright.texi ../common/setup.texi
|
||||
|
||||
GENERATED_FILES=networkapp.texi driver.texi networktasks.texi testing.texi
|
||||
GENERATED_FILES=networkapp.texi driver.texi networktasks.texi testing.texi \
|
||||
servers.texi
|
||||
|
||||
FILES= $(PROJECT).texi \
|
||||
networktasks.texi preface.texi $(GENERATED_FILES)
|
||||
@@ -63,6 +64,11 @@ networkapp.texi: networkapp.t Makefile
|
||||
|
||||
testing.texi: testing.t Makefile
|
||||
$(BMENU) -p "Network Statistics" \
|
||||
-u "Top" \
|
||||
-n "Network Servers" ${*}.t
|
||||
|
||||
servers.texi: servers.t Makefile
|
||||
$(BMENU) -p "Network Servers" \
|
||||
-u "Top" \
|
||||
-n "Command and Variable Index" ${*}.t
|
||||
|
||||
|
||||
115
doc/networking/servers.t
Normal file
115
doc/networking/servers.t
Normal file
@@ -0,0 +1,115 @@
|
||||
@c
|
||||
@c Text Written by Jake Janovetz
|
||||
@c
|
||||
@c COPYRIGHT (c) 1988-1998.
|
||||
@c On-Line Applications Research Corporation (OAR).
|
||||
@c All rights reserved.
|
||||
@c
|
||||
@c $Id$
|
||||
@c
|
||||
|
||||
|
||||
@chapter Network Servers
|
||||
|
||||
@section RTEMS FTP Daemon
|
||||
|
||||
The RTEMS FTPD is a complete file transfer protocol (FTP) daemon
|
||||
which can store, retrieve, and manipulate files on the local
|
||||
filesystem. In addition, the RTEMS FTPD provides ``hooks''
|
||||
which are actions performed on received data. Hooks are useful
|
||||
in situations where a destination file is not necessarily
|
||||
appropriate or in cases when a formal device driver has not yet
|
||||
been implemented.
|
||||
|
||||
@subsection Configuration Parameters
|
||||
|
||||
The configuration structure for FTPD is as follows:
|
||||
|
||||
@example
|
||||
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 */
|
||||
@};
|
||||
@end example
|
||||
|
||||
The FTPD task priority is specified with @code{priority}. Because
|
||||
hooks are not saved as files, the received data is placed in an
|
||||
allocated buffer. @code{max_hook_filesize} specifies the maximum
|
||||
size of this buffer. Finally, @code{hooks} is a pointer to the
|
||||
configured hooks structure.
|
||||
|
||||
@subsection Initializing FTPD (Starting the daemon)
|
||||
|
||||
Starting FTPD is done with a call to @code{rtems_initialize_ftpd()}.
|
||||
The configuration structure must be provided in the application
|
||||
source code. Example hooks structure and configuration structure
|
||||
folllow.
|
||||
|
||||
@example
|
||||
struct rtems_ftpd_hook ftp_hooks[] =
|
||||
@{
|
||||
@{"untar", Untar_FromMemory@},
|
||||
@{NULL, NULL@}
|
||||
@};
|
||||
|
||||
struct rtems_ftpd_configuration rtems_ftpd_configuration =
|
||||
@{
|
||||
40, /* FTPD task priority */
|
||||
512*1024, /* Maximum hook 'file' size */
|
||||
0, /* Use default port */
|
||||
ftp_hooks /* Local ftp hooks */
|
||||
@};
|
||||
@end example
|
||||
|
||||
Specifying 0 for the well-known port causes FTPD to use the
|
||||
UNIX standard FTPD port (21).
|
||||
|
||||
@subsection Using Hooks
|
||||
|
||||
In the example above, one hook was installed. The hook causes
|
||||
FTPD to call the function @code{Untar_FromMemory} when the
|
||||
user sends data to the file @code{untar}. The prototype for
|
||||
the @code{untar} hook (and hooks, in general) is:
|
||||
|
||||
@example
|
||||
int Untar_FromMemory(unsigned char *tar_buf, unsigned long size);
|
||||
@end example
|
||||
|
||||
An example FTP transcript which exercises this hook is:
|
||||
|
||||
@example
|
||||
220 RTEMS FTP server (Version 1.0-JWJ) ready.
|
||||
Name (dcomm0:janovetz): John Galt
|
||||
230 User logged in.
|
||||
Remote system type is RTEMS.
|
||||
ftp> bin
|
||||
200 Type set to I.
|
||||
ftp> dir
|
||||
200 PORT command successful.
|
||||
150 ASCII data connection for LIST.
|
||||
drwxrwx--x 0 0 268 dev
|
||||
drwxrwx--x 0 0 0 TFTP
|
||||
226 Transfer complete.
|
||||
ftp> put html.tar untar
|
||||
local: html.tar remote: untar
|
||||
200 PORT command successful.
|
||||
150 BINARY data connection.
|
||||
210 File transferred successfully.
|
||||
471040 bytes sent in 0.48 secs (9.6e+02 Kbytes/sec)
|
||||
ftp> dir
|
||||
200 PORT command successful.
|
||||
150 ASCII data connection for LIST.
|
||||
drwxrwx--x 0 0 268 dev
|
||||
drwxrwx--x 0 0 0 TFTP
|
||||
drwxrwx--x 0 0 3484 public_html
|
||||
226 Transfer complete.
|
||||
ftp> quit
|
||||
221 Goodbye.
|
||||
@end example
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user