diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-08-09 22:06:51 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-08-09 22:06:51 +0000 |
commit | bd520203a03ca023dcbc0c77a6af59c4dc4c3b9a (patch) | |
tree | 2b8ea98bc80ca168c3776ed17a49a061560db8b8 /c/src/libnetworking/rtems_servers | |
parent | 2001-08-09 Fernando-Ruiz Casas <correo@fernando-ruiz.com> (diff) | |
download | rtems-bd520203a03ca023dcbc0c77a6af59c4dc4c3b9a.tar.bz2 |
2001-08-09 Fernando-Ruiz Casas <correo@fernando-ruiz.com>
* Makefile.am, configure.in, rtems_servers/Makefile.am,
rtems_servers/telnetd.c, rtems_servers/telnetd.h,
rtems_telnetd/Makefile.am, rtems_telnetd/README, rtems_telnetd/icmds.c,
rtems_telnetd/pty.c, rtems_telnetd/pty.h, rtems_telnetd/telnetd.c,
rtems_telnetd/telnetd.h, wrapup/Makefile.am:
- pty and telnetd have a new subdir rtems_telnetd to avoid
the side effect when ftpd change.
- the tcp/ip stats have been implemented into icmds.c and
started when telnetd daemon is started.
* rtems_servers/telnetd.c, rtems_servers/telnetd.h: Removed.
* rtems_telnetd: New directory.
* rtems_telnetd/Makefile.am, rtems_telnetd/README,
rtems_telnetd/icmds.c, rtems_telnetd/pty.c, rtems_telnetd/pty.h,
rtems_telnetd/telnetd.c, rtems_telnetd/telnetd.h: New files.
Diffstat (limited to '')
-rw-r--r-- | c/src/libnetworking/rtems_servers/Makefile.am | 2 | ||||
-rw-r--r-- | c/src/libnetworking/rtems_servers/telnetd.h | 20 | ||||
-rw-r--r-- | c/src/libnetworking/rtems_telnetd/telnetd.c (renamed from c/src/libnetworking/rtems_servers/telnetd.c) | 39 |
3 files changed, 33 insertions, 28 deletions
diff --git a/c/src/libnetworking/rtems_servers/Makefile.am b/c/src/libnetworking/rtems_servers/Makefile.am index 56d4f2118f..17ad1c5fcb 100644 --- a/c/src/libnetworking/rtems_servers/Makefile.am +++ b/c/src/libnetworking/rtems_servers/Makefile.am @@ -33,7 +33,7 @@ EXTRA_DIST = ftpd.c ftpd.h include_HEADERS = ftpd.h -include_rtems_HEADERS = telnetd.h +include_rtems_HEADERS = PREINSTALL_FILES += $(PROJECT_INCLUDE) \ $(include_HEADERS:%=$(PROJECT_INCLUDE)/%) \ diff --git a/c/src/libnetworking/rtems_servers/telnetd.h b/c/src/libnetworking/rtems_servers/telnetd.h deleted file mode 100644 index fa710151bf..0000000000 --- a/c/src/libnetworking/rtems_servers/telnetd.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * $Id$ - */ - -#ifndef __TELNETD_H -#define __TELNETD_H - -#ifdef __cplusplus -extern "C" { -#endif - -int rtems_initialize_telnetd(void); -int main_telnetd(int argc,char * argv[]); -int register_telnetd(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/c/src/libnetworking/rtems_servers/telnetd.c b/c/src/libnetworking/rtems_telnetd/telnetd.c index 6a643f7d25..ce7c5c118d 100644 --- a/c/src/libnetworking/rtems_servers/telnetd.c +++ b/c/src/libnetworking/rtems_telnetd/telnetd.c @@ -1,9 +1,30 @@ +/***********************************************************/ /* - * $Id$ + * + * The telnet DAEMON + * + * Author: 17,may 2001 + * + * WORK: fernando.ruiz@ctv.es + * HOME: correo@fernando-ruiz.com + * + * After start the net you can start this daemon. + * It uses the previously inited pseudo-terminales (pty.c) + * getting a new terminal with getpty(). This function + * gives a terminal name passing a opened socket like parameter. + * + * With register_telnetd() you add a new command in the shell to start + * this daemon interactively. (Login in /dev/console of course) + * + * Sorry but OOB is not still implemented. (This is the first version) */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include <rtems.h> #include <rtems/error.h> +#include <rtems/pty.h> #include <rtems/shell.h> #include <rtems/telnetd.h> #include <sys/socket.h> @@ -25,7 +46,7 @@ rtems_task rtems_task_telnetd(rtems_task_argument task_argument) { int i=1; int size_adr; if ((des_socket=socket(PF_INET,SOCK_STREAM,0))<0) { - perror("socket"); + perror("telnetd:socket"); rtems_task_delete(RTEMS_SELF); }; setsockopt(des_socket,SOL_SOCKET,0,&i,sizeof(i)); @@ -34,22 +55,22 @@ rtems_task rtems_task_telnetd(rtems_task_argument task_argument) { srv.sin_port=htons(23); size_adr=sizeof(srv); if ((bind(des_socket,(struct sockaddr *)&srv,size_adr))<0) { - perror("bind"); + perror("telnetd:bind"); close(des_socket); rtems_task_delete(RTEMS_SELF); }; if ((listen(des_socket,5))<0) { - perror("listen"); + perror("telnetd:listen"); close(des_socket); rtems_task_delete(RTEMS_SELF); }; do { acp_socket=accept(des_socket,(struct sockaddr*)&srv,&size_adr); if (acp_socket<0) { - perror("accept"); + perror("telnetd:accept"); break; }; - if (devname = get_pty(acp_socket) ) { + if ((devname = get_pty(acp_socket)) ) { shell_init(&devname[5], telnetd_stack_size, telnetd_task_priority, @@ -63,11 +84,15 @@ rtems_task rtems_task_telnetd(rtems_task_argument task_argument) { } /***********************************************************/ int rtems_initialize_telnetd(void) { + void register_icmds(void); rtems_status_code sc; + + register_icmds(); /* stats for tcp/ip */ + if (telnetd_task_id ) return RTEMS_RESOURCE_IN_USE; if (telnetd_stack_size<=0 ) telnetd_stack_size =16384; if (telnetd_task_priority<=2) telnetd_task_priority=100; - sc=rtems_task_create(new_rtems_name("TLND"), + sc=rtems_task_create(new_rtems_name("tlnd"), 100,RTEMS_MINIMUM_STACK_SIZE, RTEMS_DEFAULT_MODES, RTEMS_DEFAULT_ATTRIBUTES, |