summaryrefslogtreecommitdiffstats
path: root/c/src/libnetworking/rtems_servers
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-09 22:06:51 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-09 22:06:51 +0000
commitbd520203a03ca023dcbc0c77a6af59c4dc4c3b9a (patch)
tree2b8ea98bc80ca168c3776ed17a49a061560db8b8 /c/src/libnetworking/rtems_servers
parent2001-08-09 Fernando-Ruiz Casas <correo@fernando-ruiz.com> (diff)
downloadrtems-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.am2
-rw-r--r--c/src/libnetworking/rtems_servers/telnetd.h20
-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,