1722 lines
42 KiB
Diff
1722 lines
42 KiB
Diff
diff -uNr telnet/Makefile telnet.obsd-cvs/Makefile
|
|
--- telnet/Makefile Mon Jul 27 18:25:13 1998
|
|
+++ telnet.obsd-cvs/Makefile Sat Mar 10 10:54:26 2001
|
|
@@ -36,22 +36,20 @@
|
|
|
|
PROG= telnet
|
|
|
|
-CFLAGS+=-DTERMCAP -DKLUDGELINEMODE -DUSE_TERMIO -DSKEY -Dunix
|
|
-CFLAGS+=-DENV_HACK -D_USE_OLD_CURSES_
|
|
+CFLAGS+=-DKLUDGELINEMODE -DUSE_TERMIO -DENV_HACK -DSKEY -Dunix
|
|
CFLAGS+=-I${.CURDIR}/../../lib
|
|
-LDADD+= -locurses -ltelnet
|
|
-DPADD= ${LIBOLDCURSES} ${LIBTELNET}
|
|
+LDADD+= -lcurses -ltelnet
|
|
+DPADD= ${LIBCURSES} ${LIBTELNET
|
|
|
|
SRCS= authenc.c commands.c main.c network.c ring.c sys_bsd.c telnet.c \
|
|
terminal.c tn3270.c utilities.c
|
|
|
|
.include <bsd.own.mk> # for KERBEROS
|
|
|
|
-.if (${KERBEROS} == "yes")
|
|
+.if (${KERBEROS:L} == "yes")
|
|
CFLAGS+=-DENCRYPTION -DAUTHENTICATION -DKRB4
|
|
LDADD+= -lkrb -ldes
|
|
DPADD+= ${LIBDES} ${LIBKRB}
|
|
.endif
|
|
|
|
.include <bsd.prog.mk>
|
|
-
|
|
diff -uNr telnet/commands.c telnet.obsd-cvs/commands.c
|
|
--- telnet/commands.c Fri Apr 9 02:30:20 1999
|
|
+++ telnet.obsd-cvs/commands.c Sat Mar 10 10:51:22 2001
|
|
@@ -1,4 +1,4 @@
|
|
-/* $OpenBSD: commands.c,v 1.20 1999/01/04 07:55:05 art Exp $ */
|
|
+/* $OpenBSD: commands.c,v 1.34 2000/11/08 21:49:44 aaron Exp $ */
|
|
/* $NetBSD: commands.c,v 1.14 1996/03/24 22:03:48 jtk Exp $ */
|
|
|
|
/*
|
|
@@ -69,7 +69,7 @@
|
|
int status;
|
|
|
|
if(argc != 3) {
|
|
- printf("%s sequence challenge\n", argv[0]);
|
|
+ printf("usage: %s sequence challenge\n", argv[0]);
|
|
return 0;
|
|
}
|
|
|
|
@@ -2175,17 +2175,19 @@
|
|
int gotmachine = 0;
|
|
int l1 = strlen(m1);
|
|
int l2 = strlen(m2);
|
|
- char m1save[64];
|
|
+ char m1save[MAXHOSTNAMELEN];
|
|
|
|
if (skiprc)
|
|
return;
|
|
|
|
- strcpy(m1save, m1);
|
|
+ strncpy(m1save, m1, sizeof(m1save));
|
|
m1 = m1save;
|
|
|
|
if (rcname[0] == 0) {
|
|
char *home = getenv("HOME");
|
|
|
|
+ if (home == NULL || *home == '\0')
|
|
+ return;
|
|
snprintf (rcname, sizeof(rcname), "%s/.telnetrc",
|
|
home ? home : "");
|
|
}
|
|
@@ -2248,15 +2250,9 @@
|
|
int
|
|
tn(int argc, char *argv[])
|
|
{
|
|
- struct hostent *host = 0, *alias = 0;
|
|
-#if defined(AF_INET6)
|
|
- struct sockaddr_in6 sin6;
|
|
-#endif
|
|
+ struct addrinfo hints, *res, *res0;
|
|
+ int error;
|
|
struct sockaddr_in sin;
|
|
- struct sockaddr_in ladr;
|
|
- struct sockaddr *sa;
|
|
- int sa_size;
|
|
- struct servent *sp = 0;
|
|
unsigned long temp;
|
|
#if !defined(__linux__)
|
|
extern char *inet_ntoa();
|
|
@@ -2266,15 +2262,18 @@
|
|
int srlen;
|
|
#endif
|
|
char *cmd, *hostp = 0, *portp = 0, *user = 0, *aliasp = 0;
|
|
- int family, port = 0;
|
|
-
|
|
+ int retry;
|
|
+#ifdef NI_WITHSCOPEID
|
|
+ const int niflags = NI_NUMERICHOST | NI_WITHSCOPEID;
|
|
+#else
|
|
+ const int niflags = NI_NUMERICHOST;
|
|
+#endif
|
|
+
|
|
/* clear the socket address prior to use */
|
|
memset((char *)&sin, 0, sizeof(sin));
|
|
|
|
if (connected) {
|
|
printf("?Already connected to %s\r\n", hostname);
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
return 0;
|
|
}
|
|
if (argc < 2) {
|
|
@@ -2324,8 +2323,6 @@
|
|
}
|
|
usage:
|
|
printf("usage: %s [-l user] [-a] host-name [port]\r\n", cmd);
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
return 0;
|
|
}
|
|
if (hostp == 0)
|
|
@@ -2340,185 +2337,80 @@
|
|
temp = sourceroute(hostp, &srp, &srlen);
|
|
if (temp == 0) {
|
|
herror(srp);
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
return 0;
|
|
} else if (temp == -1) {
|
|
printf("Bad source route option: %s\r\n", hostp);
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
return 0;
|
|
} else {
|
|
abort();
|
|
}
|
|
- } else {
|
|
-#endif
|
|
- memset (&sin, 0, sizeof(sin));
|
|
-#if defined(HAVE_INET_PTON) && defined(AF_INET6)
|
|
- memset (&sin6, 0, sizeof(sin6));
|
|
-
|
|
- if(inet_pton(AF_INET6, hostp, &sin6.sin6_addr)) {
|
|
- sin6.sin6_family = family = AF_INET6;
|
|
- sa = (struct sockaddr *)&sin6;
|
|
- sa_size = sizeof(sin6);
|
|
- strcpy(_hostname, hostp);
|
|
- hostname =_hostname;
|
|
- } else
|
|
-#endif
|
|
- if(inet_aton(hostp, &sin.sin_addr)){
|
|
- sin.sin_family = family = AF_INET;
|
|
- sa = (struct sockaddr *)&sin;
|
|
- sa_size = sizeof(sin);
|
|
- strcpy(_hostname, hostp);
|
|
- hostname = _hostname;
|
|
- } else {
|
|
-#ifdef HAVE_GETHOSTBYNAME2
|
|
- host = gethostbyname2(hostp, AF_INET6);
|
|
- if(host == NULL)
|
|
- host = gethostbyname2(hostp, AF_INET);
|
|
-#else
|
|
- host = gethostbyname(hostp);
|
|
-#endif
|
|
- if (host) {
|
|
- strncpy(_hostname, host->h_name, sizeof(_hostname));
|
|
- family = host->h_addrtype;
|
|
-
|
|
- switch(family) {
|
|
- case AF_INET:
|
|
- memset(&sin, 0, sizeof(sin));
|
|
- sa_size = sizeof(sin);
|
|
- sa = (struct sockaddr *)&sin;
|
|
- sin.sin_family = family;
|
|
-
|
|
- memcpy(&sin.sin_addr, *host->h_addr_list, sizeof(struct in_addr));
|
|
- break;
|
|
-#if defined(AF_INET6) && defined(HAVE_STRUCT_SOCKADDR_IN6)
|
|
- case AF_INET6:
|
|
- memset(&sin6, 0, sizeof(sin6));
|
|
- sa_size = sizeof(sin6);
|
|
- sa = (struct sockaddr *)&sin6;
|
|
- sin6.sin6_family = family;
|
|
- memcpy(&sin6.sin6_addr, *host->h_addr_list, sizeof(struct in6_addr));
|
|
- break;
|
|
-#endif
|
|
- default:
|
|
- fprintf(stderr, "Bad address family: %d\n", family);
|
|
- return 0;
|
|
- }
|
|
-
|
|
- _hostname[sizeof(_hostname)-1] = '\0';
|
|
- hostname = _hostname;
|
|
- } else {
|
|
- herror(hostp);
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
- return 0;
|
|
- }
|
|
- }
|
|
-#if defined(IP_OPTIONS) && defined(IPPROTO_IP)
|
|
- }
|
|
+ } else
|
|
#endif
|
|
- if (portp) {
|
|
- if (*portp == '-') {
|
|
- portp++;
|
|
- telnetport = 1;
|
|
- } else
|
|
- telnetport = 0;
|
|
- port = atoi(portp);
|
|
- if (port == 0) {
|
|
- sp = getservbyname(portp, "tcp");
|
|
- if (sp)
|
|
- port = sp->s_port;
|
|
- else {
|
|
- printf("%s: bad port number\r\n", portp);
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
- return 0;
|
|
- }
|
|
- } else {
|
|
- port = htons(port);
|
|
- }
|
|
- } else {
|
|
- if (sp == 0) {
|
|
- sp = getservbyname("telnet", "tcp");
|
|
- if (sp == 0) {
|
|
- fprintf(stderr, "telnet: tcp/telnet: unknown service\r\n");
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
- return 0;
|
|
- }
|
|
- port = sp->s_port;
|
|
+ {
|
|
+ hostname = hostp;
|
|
+ memset(&hints, 0, sizeof(hints));
|
|
+ hints.ai_family = PF_UNSPEC;
|
|
+ hints.ai_socktype = SOCK_STREAM;
|
|
+ hints.ai_flags = AI_CANONNAME;
|
|
+ if (portp == NULL) {
|
|
+ portp = "telnet";
|
|
+ } else if (*portp == '-') {
|
|
+ portp++;
|
|
+ telnetport = 1;
|
|
+ }
|
|
+ h_errno = 0;
|
|
+ error = getaddrinfo(hostp, portp, &hints, &res0);
|
|
+ if (error) {
|
|
+ if (error == EAI_SERVICE)
|
|
+ warnx("%s: bad port", portp);
|
|
+ else
|
|
+ warnx("%s: %s", hostp, gai_strerror(error));
|
|
+ if (h_errno)
|
|
+ herror(hostp);
|
|
+ return 0;
|
|
}
|
|
- telnetport = 1;
|
|
}
|
|
- switch(family) {
|
|
- case AF_INET:
|
|
- sin.sin_port = port;
|
|
- printf("Trying %s...\r\n", inet_ntoa(sin.sin_addr));
|
|
- break;
|
|
-#if defined(AF_INET6) && defined(HAVE_STRUCT_SOCKADDR_IN6)
|
|
- case AF_INET6: {
|
|
-#ifndef INET6_ADDRSTRLEN
|
|
-#define INET6_ADDRSTRLEN 46
|
|
-#endif
|
|
|
|
- char buf[INET6_ADDRSTRLEN];
|
|
-
|
|
- sin6.sin6_port = port;
|
|
-#ifdef HAVE_INET_NTOP
|
|
- printf("Trying %s...\r\n", inet_ntop(AF_INET6,
|
|
- &sin6.sin6_addr,
|
|
- buf,
|
|
- sizeof(buf)));
|
|
-#endif
|
|
- break;
|
|
- }
|
|
-#endif
|
|
- default:
|
|
- abort();
|
|
- }
|
|
-
|
|
- do {
|
|
- net = socket(family, SOCK_STREAM, 0);
|
|
- seteuid(getuid());
|
|
- setuid(getuid());
|
|
- if (net < 0) {
|
|
- perror("telnet: socket");
|
|
- return 0;
|
|
+ net = -1;
|
|
+ retry = 0;
|
|
+ for (res = res0; res; res = res->ai_next) {
|
|
+ if (1 /* retry */) {
|
|
+ char hbuf[NI_MAXHOST];
|
|
+
|
|
+ if (getnameinfo(res->ai_addr, res->ai_addrlen, hbuf, sizeof(hbuf),
|
|
+ NULL, 0, niflags) != 0) {
|
|
+ strcpy(hbuf, "(invalid)");
|
|
+ }
|
|
+ printf("Trying %s...\r\n", hbuf);
|
|
}
|
|
+ net = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
|
|
+ if (net < 0)
|
|
+ continue;
|
|
+
|
|
if (aliasp) {
|
|
- memset ((caddr_t)&ladr, 0, sizeof (ladr));
|
|
- temp = inet_addr(aliasp);
|
|
- if (temp != INADDR_NONE) {
|
|
- ladr.sin_addr.s_addr = temp;
|
|
- ladr.sin_family = AF_INET;
|
|
- alias = gethostbyaddr((char *)&temp, sizeof(temp), AF_INET);
|
|
- } else {
|
|
- alias = gethostbyname(aliasp);
|
|
- if (alias) {
|
|
- ladr.sin_family = alias->h_addrtype;
|
|
-#if defined(h_addr) /* In 4.3, this is a #define */
|
|
- memmove((caddr_t)&ladr.sin_addr,
|
|
- alias->h_addr_list[0], alias->h_length);
|
|
-#else /* defined(h_addr) */
|
|
- memmove((caddr_t)&ladr.sin_addr, alias->h_addr,
|
|
- alias->h_length);
|
|
-#endif /* defined(h_addr) */
|
|
- } else {
|
|
- herror(aliasp);
|
|
- return 0;
|
|
- }
|
|
+ struct addrinfo ahints, *ares;
|
|
+ memset(&ahints, 0, sizeof(ahints));
|
|
+ ahints.ai_family = PF_UNSPEC;
|
|
+ ahints.ai_socktype = SOCK_STREAM;
|
|
+ ahints.ai_flags = AI_PASSIVE;
|
|
+ error = getaddrinfo(aliasp, "0", &ahints, &ares);
|
|
+ if (error) {
|
|
+ warn("%s: %s", aliasp, gai_strerror(error));
|
|
+ close(net);
|
|
+ freeaddrinfo(ares);
|
|
+ continue;
|
|
}
|
|
- ladr.sin_port = htons(0);
|
|
-
|
|
- if (bind (net, (struct sockaddr *)&ladr, sizeof(ladr)) < 0) {
|
|
- perror(aliasp);;
|
|
+ if (bind(net, ares->ai_addr, ares->ai_addrlen) < 0) {
|
|
+ perror(aliasp);
|
|
(void) close(net); /* dump descriptor */
|
|
- return 0;
|
|
+ freeaddrinfo(ares);
|
|
+ continue;
|
|
}
|
|
+ freeaddrinfo(ares);
|
|
}
|
|
#if defined(IP_OPTIONS) && defined(IPPROTO_IP)
|
|
- if (srp && setsockopt(net, IPPROTO_IP, IP_OPTIONS, (char *)srp, srlen) < 0)
|
|
+ if (srp && res->ai_family == AF_INET
|
|
+ && setsockopt(net, IPPROTO_IP, IP_OPTIONS, (char *)srp, srlen) < 0)
|
|
perror("setsockopt (IP_OPTIONS)");
|
|
#endif
|
|
#if defined(IPPROTO_IP) && defined(IP_TOS)
|
|
@@ -2542,65 +2434,32 @@
|
|
perror("setsockopt (SO_DEBUG)");
|
|
}
|
|
|
|
- if (connect(net, sa, sa_size) < 0) {
|
|
- int retry = 0;
|
|
-
|
|
- if (host && host->h_addr_list[1]) {
|
|
- int oerrno = errno;
|
|
- retry = 1;
|
|
-
|
|
- switch(family) {
|
|
- case AF_INET :
|
|
- fprintf(stderr, "telnet: connect to address %s: ",
|
|
- inet_ntoa(sin.sin_addr));
|
|
- ++host->h_addr_list;
|
|
- memcpy(&sin.sin_addr, *host->h_addr_list, sizeof(struct in_addr));
|
|
- break;
|
|
-#if defined(AF_INET6) && defined(HAVE_STRUCT_SOCKADDR_IN6)
|
|
- case AF_INET6: {
|
|
- char buf[INET6_ADDRSTRLEN];
|
|
-
|
|
- fprintf(stderr, "telnet: connect to address %s: ",
|
|
- inet_ntop(AF_INET6, &sin6.sin6_addr, buf,
|
|
- sizeof(buf)));
|
|
- ++host->h_addr_list;
|
|
- memcpy(&sin6.sin6_addr, *host->h_addr_list, sizeof(struct in6_addr));
|
|
- break;
|
|
- }
|
|
-#endif
|
|
- default:
|
|
- abort();
|
|
- }
|
|
-
|
|
- errno = oerrno;
|
|
- perror(NULL);
|
|
-
|
|
- switch(family) {
|
|
- case AF_INET :
|
|
- printf("Trying %s...\r\n", inet_ntoa(sin.sin_addr));
|
|
- break;
|
|
-#if defined(AF_INET6) && defined(HAVE_STRUCT_SOCKADDR_IN6)
|
|
- case AF_INET6: {
|
|
- printf("Trying %s...\r\n", inet_ntop(AF_INET6,
|
|
- &sin6.sin6_addr,
|
|
- buf,
|
|
- sizeof(buf)));
|
|
- break;
|
|
- }
|
|
-#endif
|
|
- }
|
|
-
|
|
- (void) NetClose(net);
|
|
- continue;
|
|
+ if (connect(net, res->ai_addr, res->ai_addrlen) < 0) {
|
|
+ char hbuf[NI_MAXHOST];
|
|
+
|
|
+ if (getnameinfo(res->ai_addr, res->ai_addrlen, hbuf, sizeof(hbuf),
|
|
+ NULL, 0, NI_NUMERICHOST) != 0) {
|
|
+ strcpy(hbuf, "(invalid)");
|
|
}
|
|
- perror("telnet: Unable to connect to remote host");
|
|
- return 0;
|
|
+ fprintf(stderr, "telnet: connect to address %s: %s\n", hbuf,
|
|
+ strerror(errno));
|
|
+
|
|
+ close(net);
|
|
+ net = -1;
|
|
+ retry++;
|
|
+ continue;
|
|
}
|
|
+
|
|
connected++;
|
|
#if defined(AUTHENTICATION) || defined(ENCRYPTION)
|
|
auth_encrypt_connect(connected);
|
|
#endif /* defined(AUTHENTICATION) */
|
|
- } while (connected == 0);
|
|
+ break;
|
|
+ }
|
|
+ freeaddrinfo(res0);
|
|
+ if (net < 0) {
|
|
+ return 0;
|
|
+ }
|
|
cmdrc(hostp, hostname);
|
|
if (autologin && user == NULL) {
|
|
struct passwd *pw;
|
|
@@ -2652,6 +2511,9 @@
|
|
encrypthelp[] = "turn on (off) encryption ('encrypt ?' for more)",
|
|
#endif
|
|
zhelp[] = "suspend telnet",
|
|
+#ifdef SKEY
|
|
+ skeyhelp[] = "compute response to s/key challenge",
|
|
+#endif
|
|
shellhelp[] = "invoke a subshell",
|
|
envhelp[] = "change environment variables ('environ ?' for more)",
|
|
modestring[] = "try to enter line or character mode ('mode ?' for more)";
|
|
@@ -2690,7 +2552,7 @@
|
|
{ "environ", envhelp, env_cmd, 0 },
|
|
{ "?", helphelp, help, 0 },
|
|
#if defined(SKEY)
|
|
- { "skey", NULL, skey_calc, 0 },
|
|
+ { "skey", skeyhelp, skey_calc, 0 },
|
|
#endif
|
|
{ 0, 0, 0, 0 }
|
|
};
|
|
diff -uNr telnet/externs.h telnet.obsd-cvs/externs.h
|
|
--- telnet/externs.h Mon Feb 8 22:56:11 1999
|
|
+++ telnet.obsd-cvs/externs.h Sat Mar 10 10:54:35 2001
|
|
@@ -1,4 +1,4 @@
|
|
-/* $OpenBSD: externs.h,v 1.4 1998/03/12 17:31:32 deraadt Exp $ */
|
|
+/* $OpenBSD: externs.h,v 1.5 1998/03/12 2001/01/22 11:03:38 fgsch Exp $ */
|
|
/* $KTH: externs.h,v 1.16 1997/11/29 02:28:35 joda Exp $ */
|
|
|
|
/*
|
|
@@ -447,7 +447,7 @@
|
|
*Ibackp, /* Oldest byte of 3270 data */
|
|
Ibuf[], /* 3270 buffer */
|
|
*Ifrontp, /* Where next 3270 byte goes */
|
|
- tline[],
|
|
+ tline[200],
|
|
*transcom; /* Transparent command */
|
|
|
|
extern int
|
|
diff -uNr telnet/main.c telnet.obsd-cvs/main.c
|
|
--- telnet/main.c Wed Apr 7 23:23:35 1999
|
|
+++ telnet.obsd-cvs/main.c Sat Mar 10 09:59:35 2001
|
|
@@ -1,4 +1,4 @@
|
|
-/* $OpenBSD: main.c,v 1.7 1998/05/15 03:16:38 art Exp $ */
|
|
+/* $OpenBSD: main.c,v 1.10 2001/01/21 22:46:37 aaron Exp $ */
|
|
/* $NetBSD: main.c,v 1.5 1996/02/28 21:04:05 thorpej Exp $ */
|
|
|
|
/*
|
|
@@ -81,10 +81,10 @@
|
|
prompt,
|
|
#ifdef AUTHENTICATION
|
|
"[-8] [-E] [-K] [-L] [-S tos] [-X atype] [-a] [-c] [-d] [-e char]",
|
|
- "\n\t[-k realm] [-l user] [-f/-F] [-n tracefile] [-b hostalias ]",
|
|
+ "\n\t[-k realm] [-l user] [-f/-F] [-n tracefile] [-b hostalias ] ",
|
|
#else
|
|
"[-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user]",
|
|
- "\n\t[-n tracefile] [-b hostalias ]",
|
|
+ "\n\t[-n tracefile] [-b hostalias ] ",
|
|
#endif
|
|
#if defined(TN3270) && defined(unix)
|
|
# ifdef AUTHENTICATION
|
|
@@ -95,13 +95,11 @@
|
|
#else
|
|
"[-r] ",
|
|
#endif
|
|
+ "\n\r "
|
|
#ifdef ENCRYPTION
|
|
- "[-x] [host-name [port]]"
|
|
-#else
|
|
-
|
|
- "[host-name [port]]"
|
|
+ "[-x] "
|
|
#endif
|
|
- );
|
|
+ "[host-name [port]]");
|
|
exit(1);
|
|
}
|
|
|
|
@@ -276,8 +274,8 @@
|
|
break;
|
|
case 't':
|
|
#if defined(TN3270) && defined(unix)
|
|
+ (void)strncpy(tline, optarg, sizeof(tline));
|
|
transcom = tline;
|
|
- (void)strcpy(transcom, optarg);
|
|
#else
|
|
fprintf(stderr,
|
|
"%s: Warning: -t ignored, no TN3270 support.\n",
|
|
diff -uNr telnet/sys_bsd.c telnet.obsd-cvs/sys_bsd.c
|
|
--- telnet/sys_bsd.c Wed Apr 7 21:38:31 1999
|
|
+++ telnet.obsd-cvs/sys_bsd.c Sat Mar 10 10:55:18 2001
|
|
@@ -1,4 +1,4 @@
|
|
-/* $OpenBSD: sys_bsd.c,v 1.6 1998/12/28 11:13:51 deraadt Exp $ */
|
|
+/* $OpenBSD: sys_bsd.c,v 1.8 2000/10/10 15:41:10 millert Exp $ */
|
|
/* $NetBSD: sys_bsd.c,v 1.11 1996/02/28 21:04:10 thorpej Exp $ */
|
|
|
|
/*
|
|
@@ -35,6 +35,7 @@
|
|
*/
|
|
|
|
#include "telnet_locl.h"
|
|
+#include <err.h>
|
|
|
|
/*
|
|
* The following routines try to encapsulate what is system dependent
|
|
@@ -198,9 +199,10 @@
|
|
TerminalFlushOutput(void)
|
|
{
|
|
#ifdef TIOCFLUSH
|
|
- (void) ioctl(fileno(stdout), TIOCFLUSH, (char *) 0);
|
|
+ int com = FWRITE;
|
|
+ (void) ioctl(fileno(stdout), TIOCFLUSH, (int *) &com);
|
|
#else
|
|
- (void) ioctl(fileno(stdout), TCFLSH, (char *) 0);
|
|
+ (void) ioctl(fileno(stdout), TCFLSH, (int *) 0);
|
|
#endif
|
|
}
|
|
|
|
diff -uNr telnet/telnet.c telnet.obsd-cvs/telnet.c
|
|
--- telnet/telnet.c Wed Apr 7 23:22:14 1999
|
|
+++ telnet.obsd-cvs/telnet.c Sat Mar 10 11:02:34 2001
|
|
@@ -1,4 +1,4 @@
|
|
-/* $OpenBSD: telnet.c,v 1.6 1998/07/27 15:29:29 millert Exp $ */
|
|
+/* $OpenBSD: telnet.c,v 1.11 2000/11/10 15:33:13 provos millert Exp $ */
|
|
/* $NetBSD: telnet.c,v 1.7 1996/02/28 21:04:15 thorpej Exp $ */
|
|
|
|
/*
|
|
@@ -35,6 +35,8 @@
|
|
*/
|
|
|
|
#include "telnet_locl.h"
|
|
+#include <curses.h>
|
|
+#include <term.h>
|
|
|
|
#define strip(x) (eight ? (x) : ((x) & 0x7f))
|
|
|
|
@@ -523,10 +525,9 @@
|
|
}
|
|
|
|
/*
|
|
- * Given a buffer returned by tgetent(), this routine will turn
|
|
- * the pipe seperated list of names in the buffer into an array
|
|
- * of pointers to null terminated names. We toss out any bad,
|
|
- * duplicate, or verbose names (names with spaces).
|
|
+ * This routine will turn a pipe seperated list of names in the buffer
|
|
+ * into an array of pointers to NUL terminated names. We toss out any
|
|
+ * bad, duplicate, or verbose names (names with spaces).
|
|
*/
|
|
|
|
int is_unique P((char *, char **, char **));
|
|
@@ -554,7 +555,7 @@
|
|
/*
|
|
* Count up the number of names.
|
|
*/
|
|
- for (n = 1, cp = buf; *cp && *cp != ':'; cp++) {
|
|
+ for (n = 1, cp = buf; *cp; cp++) {
|
|
if (*cp == '|')
|
|
n++;
|
|
}
|
|
@@ -659,25 +660,6 @@
|
|
return (1);
|
|
}
|
|
|
|
-static char termbuf[1024];
|
|
-
|
|
-int telnet_setupterm P((char *tname, int fd, int *errp)); /* XXX move elsewhere */
|
|
- /*ARGSUSED*/
|
|
- int
|
|
-telnet_setupterm(char *tname, int fd, int *errp)
|
|
-{
|
|
- (void)fd;
|
|
- if (tgetent(termbuf, tname) == 1) {
|
|
- termbuf[1023] = '\0';
|
|
- if (errp)
|
|
- *errp = 1;
|
|
- return(0);
|
|
- }
|
|
- if (errp)
|
|
- *errp = 0;
|
|
- return(-1);
|
|
-}
|
|
-
|
|
int resettermname = 1;
|
|
|
|
char *gettermname P((void)); /* XXX move elsewhere */
|
|
@@ -687,15 +669,15 @@
|
|
char *tname;
|
|
static char **tnamep = 0;
|
|
static char **next;
|
|
- int err;
|
|
+ int errret;
|
|
|
|
if (resettermname) {
|
|
resettermname = 0;
|
|
if (tnamep && tnamep != unknown)
|
|
free(tnamep);
|
|
if ((tname = (char *)env_getvalue((unsigned char *)"TERM")) &&
|
|
- (telnet_setupterm(tname, 1, &err) == 0)) {
|
|
- tnamep = mklist(termbuf, tname);
|
|
+ (setupterm(tname, 1, &errret) == 0)) {
|
|
+ tnamep = mklist(ttytype, tname);
|
|
} else {
|
|
if (tname && ((int)strlen(tname) <= 40)) {
|
|
unknown[0] = tname;
|
|
@@ -1482,10 +1464,15 @@
|
|
void
|
|
env_opt_start(void)
|
|
{
|
|
- if (opt_reply)
|
|
- opt_reply = (unsigned char *)realloc(opt_reply, OPT_REPLY_SIZE);
|
|
- else
|
|
- opt_reply = (unsigned char *)malloc(OPT_REPLY_SIZE);
|
|
+ unsigned char *p;
|
|
+
|
|
+ if (opt_reply) {
|
|
+ p = (unsigned char *)realloc(opt_reply, OPT_REPLY_SIZE);
|
|
+ if (p == NULL)
|
|
+ free(opt_reply);
|
|
+ } else
|
|
+ p = (unsigned char *)malloc(OPT_REPLY_SIZE);
|
|
+ opt_reply = p;
|
|
if (opt_reply == NULL) {
|
|
/*@*/ printf("env_opt_start: malloc()/realloc() failed!!!\n");
|
|
opt_reply = opt_replyp = opt_replyend = NULL;
|
|
@@ -1532,9 +1519,13 @@
|
|
strlen((char *)ep) + 6 > opt_replyend)
|
|
{
|
|
int len;
|
|
+ unsigned char *p;
|
|
opt_replyend += OPT_REPLY_SIZE;
|
|
len = opt_replyend - opt_reply;
|
|
- opt_reply = (unsigned char *)realloc(opt_reply, len);
|
|
+ p = (unsigned char *)realloc(opt_reply, len);
|
|
+ if (p == NULL)
|
|
+ free(opt_reply);
|
|
+ opt_reply = p;
|
|
if (opt_reply == NULL) {
|
|
/*@*/ printf("env_opt_add: realloc() failed!!!\n");
|
|
opt_reply = opt_replyp = opt_replyend = NULL;
|
|
@@ -1945,7 +1936,7 @@
|
|
command(0, "z\n", 2);
|
|
continue;
|
|
}
|
|
- if (sc == escape) {
|
|
+ if (sc == escape && escape != _POSIX_VDISABLE) {
|
|
command(0, (char *)tbp, tcc);
|
|
bol = 1;
|
|
count += tcc;
|
|
@@ -1962,7 +1953,7 @@
|
|
}
|
|
if ((sc == '\n') || (sc == '\r'))
|
|
bol = 1;
|
|
- } else if (sc == escape) {
|
|
+ } else if (sc == escape && escape != _POSIX_VDISABLE) {
|
|
/*
|
|
* Double escape is a pass through of a single escape character.
|
|
*/
|
|
diff -uNr telnet/telnet_locl.h telnet.obsd-cvs/telnet_locl.h
|
|
--- telnet/telnet_locl.h Thu Mar 12 06:57:44 1998
|
|
+++ telnet.obsd-cvs/telnet_locl.h Sat Mar 10 11:12:37 2001
|
|
@@ -1,4 +1,4 @@
|
|
-/* $OpenBSD: telnet_locl.h,v 1.1 1998/03/12 04:57:44 art Exp $ */
|
|
+/* $OpenBSD: telnet_locl.h,v 1.2 1999/12/11 09:08:09 itojun Exp $ */
|
|
/* $KTH: telnet_locl.h,v 1.13 1997/11/03 21:37:55 assar Exp $ */
|
|
|
|
/*
|
|
@@ -86,7 +86,5 @@
|
|
#include "defines.h"
|
|
#include "types.h"
|
|
|
|
-#undef AF_INET6 /* XXX - it has not been tested and it doesn't exist yet */
|
|
-
|
|
/* prototypes */
|
|
|
|
diff -uNr libtelnet/kerberos.c libtelnet.obsd-cvs/kerberos.c
|
|
--- libtelnet/kerberos.c Mon Feb 8 23:38:17 1999
|
|
+++ libtelnet.obsd-cvs/kerberos.c Sat Mar 10 11:11:03 2001
|
|
@@ -320,11 +320,10 @@
|
|
char ts[MAXPATHLEN];
|
|
struct passwd *pw = getpwnam(UserNameRequested);
|
|
|
|
- if(pw){
|
|
+ if (pw) {
|
|
snprintf(ts, sizeof(ts),
|
|
- "%s%u",
|
|
- TKT_ROOT,
|
|
- (unsigned)pw->pw_uid);
|
|
+ "%s%u", TKT_ROOT, (unsigned)pw->pw_uid);
|
|
+ /* XXX allocation failure? */
|
|
setenv("KRBTKFILE", ts, 1);
|
|
}
|
|
Data(ap, KRB_ACCEPT, NULL, 0);
|
|
@@ -609,16 +608,26 @@
|
|
{
|
|
unsigned char *p = buf;
|
|
|
|
- p += krb_put_nir(cred->service, cred->instance, cred->realm, p);
|
|
+ memcpy (p, cred->service, ANAME_SZ);
|
|
+ p += ANAME_SZ;
|
|
+ memcpy (p, cred->instance, INST_SZ);
|
|
+ p += INST_SZ;
|
|
+ memcpy (p, cred->realm, REALM_SZ);
|
|
+ p += REALM_SZ;
|
|
memcpy(p, cred->session, 8);
|
|
p += 8;
|
|
*p++ = cred->lifetime;
|
|
*p++ = cred->kvno;
|
|
- p += krb_put_int(cred->ticket_st.length, p, 4);
|
|
+ p += krb_put_int(cred->ticket_st.length, p, 4, 4);
|
|
memcpy(p, cred->ticket_st.dat, cred->ticket_st.length);
|
|
p += cred->ticket_st.length;
|
|
- p += krb_put_int(cred->issue_date, p, 4);
|
|
- p += krb_put_nir(cred->pname, cred->pinst, NULL, p);
|
|
+ p += krb_put_int(cred->issue_date, p, 4, 4);
|
|
+ strncpy (cred->pname, p, ANAME_SZ);
|
|
+ cred->pname[ANAME_SZ - 1] = '\0';
|
|
+ p += ANAME_SZ;
|
|
+ strncpy (cred->pinst, p, INST_SZ);
|
|
+ cred->pinst[INST_SZ - 1] = '\0';
|
|
+ p += INST_SZ;
|
|
return p - buf;
|
|
}
|
|
|
|
@@ -627,7 +636,16 @@
|
|
{
|
|
unsigned char *p = buf;
|
|
|
|
- p += krb_get_nir(p, cred->service, cred->instance, cred->realm);
|
|
+ strncpy (cred->service, p, ANAME_SZ);
|
|
+ cred->service[ANAME_SZ - 1] = '\0';
|
|
+ p += ANAME_SZ;
|
|
+ strncpy (cred->instance, p, INST_SZ);
|
|
+ cred->instance[INST_SZ - 1] = '\0';
|
|
+ p += INST_SZ;
|
|
+ strncpy (cred->realm, p, REALM_SZ);
|
|
+ cred->realm[REALM_SZ - 1] = '\0';
|
|
+ p += REALM_SZ;
|
|
+
|
|
memcpy(cred->session, p, 8);
|
|
p += 8;
|
|
cred->lifetime = *p++;
|
|
@@ -636,7 +654,10 @@
|
|
memcpy(cred->ticket_st.dat, p, cred->ticket_st.length);
|
|
cred->ticket_st.mbz = 0;
|
|
p += krb_get_int(p, (u_int32_t *)&cred->issue_date, 4, 0);
|
|
- p += krb_get_nir(p, cred->pname, cred->pinst, NULL);
|
|
+ p += krb_get_nir(p,
|
|
+ cred->pname, sizeof(cred->pname),
|
|
+ cred->pinst, sizeof(cred->pinst),
|
|
+ NULL, 0);
|
|
return 0;
|
|
}
|
|
|
|
--- telnet/telnet.1 Thu Nov 12 01:01:46 1998
|
|
+++ telnet.obsd-cvs/telnet.1 Thu Nov 9 19:52:41 2000
|
|
@@ -1,4 +1,4 @@
|
|
-.\" $OpenBSD: telnet.1,v 1.14 1998/11/11 23:01:46 aaron Exp $
|
|
+.\" $OpenBSD: telnet.1,v 1.27 2000/11/09 17:52:41 aaron Exp $
|
|
.\" $NetBSD: telnet.1,v 1.5 1996/02/28 21:04:12 thorpej Exp $
|
|
.\"
|
|
.\" Copyright (c) 1983, 1990, 1993
|
|
@@ -36,45 +36,34 @@
|
|
.\"
|
|
.Dd February 3, 1994
|
|
.Dt TELNET 1
|
|
-.Os BSD 4.2
|
|
+.Os
|
|
.Sh NAME
|
|
.Nm telnet
|
|
-.Nd user interface to the
|
|
+.Nd user interface to the
|
|
.Tn TELNET
|
|
protocol
|
|
.Sh SYNOPSIS
|
|
.Nm telnet
|
|
-.Op Fl 8
|
|
-.Op Fl E
|
|
-.Op Fl F
|
|
-.Op Fl K
|
|
-.Op Fl L
|
|
-.Op Fl S Ar tos
|
|
+.Op Fl 8EFKLacdfrx
|
|
.Op Fl X Ar authtype
|
|
-.Op Fl a
|
|
.Op Fl b Ar hostalias
|
|
-.Op Fl c
|
|
-.Op Fl d
|
|
.Op Fl e Ar escapechar
|
|
-.Op Fl f
|
|
.Op Fl k Ar realm
|
|
.Op Fl l Ar user
|
|
.Op Fl n Ar tracefile
|
|
-.Op Fl r
|
|
-.Op Fl x
|
|
.Oo
|
|
.Ar host
|
|
.Op Ar port
|
|
.Oc
|
|
.Sh DESCRIPTION
|
|
The
|
|
-.Nm telnet
|
|
+.Nm
|
|
command
|
|
-is used to communicate with another host using the
|
|
+is used to communicate with another host using the
|
|
.Tn TELNET
|
|
protocol.
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is invoked without the
|
|
.Ar host
|
|
argument, it enters command mode,
|
|
@@ -85,11 +74,11 @@
|
|
.Ic open
|
|
command with those arguments.
|
|
.Pp
|
|
-Options:
|
|
-.Bl -tag -width indent
|
|
+The options are as follows:
|
|
+.Bl -tag -width Ds
|
|
.It Fl 8
|
|
-Specifies an 8-bit data path. This causes an attempt to
|
|
-negotiate the
|
|
+Specifies an 8-bit data path.
|
|
+This causes an attempt to negotiate the
|
|
.Dv TELNET BINARY
|
|
option on both input and output.
|
|
.It Fl E
|
|
@@ -103,18 +92,9 @@
|
|
.It Fl K
|
|
Specifies no automatic login to the remote system.
|
|
.It Fl L
|
|
-Specifies an 8-bit data path on output. This causes the
|
|
-BINARY option to be negotiated on output.
|
|
-.It Fl S Ar tos
|
|
-Sets the IP type-of-service (TOS) option for the telnet
|
|
-connection to the value
|
|
-.Ar tos ,
|
|
-which can be a numeric TOS value
|
|
-or, on systems that support it, a symbolic
|
|
-TOS name found in the
|
|
-.Pa /etc/iptos
|
|
-file.
|
|
-.It Fl X Ar atype
|
|
+Specifies an 8-bit data path on output.
|
|
+This causes the BINARY option to be negotiated on output.
|
|
+.It Fl X Ar atype
|
|
Disables the
|
|
.Ar atype
|
|
type of authentication.
|
|
@@ -144,7 +124,8 @@
|
|
.It Fl c
|
|
Disables the reading of the user's
|
|
.Pa \&.telnetrc
|
|
-file. (See the
|
|
+file.
|
|
+(See the
|
|
.Ic toggle skiprc
|
|
command on this man page.)
|
|
.It Fl d
|
|
@@ -152,7 +133,7 @@
|
|
.Ic debug
|
|
toggle to
|
|
.Dv TRUE .
|
|
-.It Fl e Ar escapechar
|
|
+.It Fl e Ar escapechar
|
|
Sets the initial
|
|
.Nm
|
|
escape character to
|
|
@@ -169,14 +150,14 @@
|
|
If Kerberos authentication is being used, the
|
|
.Fl k
|
|
option requests that
|
|
-.Nm telnet
|
|
+.Nm
|
|
obtain tickets for the remote host in
|
|
realm
|
|
.Ar realm
|
|
instead of the remote host's realm, as determined
|
|
by
|
|
.Xr krb_realmofhost 3 .
|
|
-.It Fl l Ar user
|
|
+.It Fl l Ar user
|
|
When connecting to the remote system, if the remote system
|
|
understands the
|
|
.Ev ENVIRON
|
|
@@ -189,7 +170,7 @@
|
|
This option may also be used with the
|
|
.Ic open
|
|
command.
|
|
-.It Fl n Ar tracefile
|
|
+.It Fl n Ar tracefile
|
|
Opens
|
|
.Ar tracefile
|
|
for recording trace information.
|
|
@@ -210,35 +191,38 @@
|
|
Indicates the official name, an alias, or the Internet address
|
|
of a remote host.
|
|
.It Ar port
|
|
-Indicates a port number (address of an application). If a number is
|
|
-not specified, the default
|
|
-.Nm telnet
|
|
+Indicates a port number (address of an application).
|
|
+If a number is not specified, the default
|
|
+.Nm
|
|
port is used.
|
|
.El
|
|
.Pp
|
|
-When in rlogin mode, a line of the form ~. disconnects from the
|
|
+When in rlogin mode, a line of the form ~.
|
|
+disconnects from the
|
|
remote host; ~ is the telnet escape character.
|
|
Similarly, the line ~^Z suspends the telnet session.
|
|
The line ~^] escapes to the normal telnet escape prompt.
|
|
.Pp
|
|
Once a connection has been opened,
|
|
-.Nm telnet
|
|
+.Nm
|
|
will attempt to enable the
|
|
.Dv TELNET LINEMODE
|
|
option.
|
|
If this fails,
|
|
-.Nm telnet
|
|
+.Nm
|
|
will revert to one of two input modes:
|
|
either ``character at a time''
|
|
or ``old line by line''
|
|
depending on what the remote system supports.
|
|
.Pp
|
|
-When
|
|
+When
|
|
.Dv LINEMODE
|
|
is enabled, character processing is done on the
|
|
-local system, under the control of the remote system. When input
|
|
+local system, under the control of the remote system.
|
|
+When input
|
|
editing or character echoing is to be disabled, the remote system
|
|
-will relay that information. The remote system will also relay
|
|
+will relay that information.
|
|
+The remote system will also relay
|
|
changes to any special characters that happen on the remote
|
|
system, so that they can take effect on the local system.
|
|
.Pp
|
|
@@ -252,7 +236,7 @@
|
|
(this would mostly be used to enter passwords
|
|
without the password being echoed).
|
|
.Pp
|
|
-If the
|
|
+If the
|
|
.Dv LINEMODE
|
|
option is enabled, or if the
|
|
.Ic localchars
|
|
@@ -267,7 +251,7 @@
|
|
characters are trapped locally, and sent as
|
|
.Tn TELNET
|
|
protocol sequences to the remote side.
|
|
-If
|
|
+If
|
|
.Dv LINEMODE
|
|
has ever been enabled, then the user's
|
|
.Ic susp
|
|
@@ -278,9 +262,9 @@
|
|
protocol sequences,
|
|
and
|
|
.Ic quit
|
|
-is sent as a
|
|
+is sent as a
|
|
.Dv TELNET ABORT
|
|
-instead of
|
|
+instead of
|
|
.Dv BREAK .
|
|
There are options (see
|
|
.Ic toggle
|
|
@@ -296,17 +280,26 @@
|
|
(in the case of
|
|
.Ic quit
|
|
and
|
|
-.Ic intr ) .
|
|
+.Ic intr ) .
|
|
.Pp
|
|
While connected to a remote host,
|
|
-.Nm telnet
|
|
+.Nm
|
|
command mode may be entered by typing the
|
|
-.Nm telnet
|
|
+.Nm
|
|
``escape character'' (initially ``^]'').
|
|
When in command mode, the normal terminal editing conventions are available.
|
|
+Note that the escape character will return to the command mode of the initial
|
|
+invocation of
|
|
+.Nm
|
|
+that has the controlling terminal.
|
|
+Use the
|
|
+.Cm send escape
|
|
+command to switch to command mode in subsequent
|
|
+.Nm
|
|
+processes on remote hosts.
|
|
.Pp
|
|
The following
|
|
-.Nm telnet
|
|
+.Nm
|
|
commands are available.
|
|
Only enough of each command to uniquely identify it need be typed
|
|
(this is also true for arguments to the
|
|
@@ -320,26 +313,28 @@
|
|
.Ic display
|
|
commands).
|
|
.Bl -tag -width "mode type"
|
|
-.It Ic auth Ar argument Op Ar ...
|
|
+.It Ic auth Ar argument Op Ar ...
|
|
The
|
|
.Ic auth
|
|
command manipulates the information sent through the
|
|
.Dv TELNET AUTHENTICATE
|
|
-option. Valid arguments for the
|
|
-auth command are as follows:
|
|
+option.
|
|
+Valid arguments for the
|
|
+.Ic auth
|
|
+command are as follows:
|
|
.Bl -tag -width "disable type"
|
|
.It Ic disable Ar type
|
|
Disables the specified
|
|
.Ar type
|
|
-of authentication. To
|
|
-obtain a list of available types, use the
|
|
+of authentication.
|
|
+To obtain a list of available types, use the
|
|
.Ic auth disable \&?
|
|
command.
|
|
.It Ic enable Ar type
|
|
Enables the specified
|
|
.Ar type
|
|
-of authentication. To
|
|
-obtain a list of available types, use the
|
|
+of authentication.
|
|
+To obtain a list of available types, use the
|
|
.Ic auth enable \&?
|
|
command.
|
|
.It Ic status
|
|
@@ -350,7 +345,7 @@
|
|
Close a
|
|
.Tn TELNET
|
|
session and return to command mode.
|
|
-.It Ic display Ar argument Op Ar ...
|
|
+.It Ic display Ar argument Op Ar ...
|
|
Displays all, or some, of the
|
|
.Ic set
|
|
and
|
|
@@ -368,26 +363,27 @@
|
|
.It Ic disable Ar type Ic [input|output]
|
|
Disables the specified
|
|
.Ar type
|
|
-of encryption. If you
|
|
-omit
|
|
+of encryption.
|
|
+If you omit
|
|
.Ic input
|
|
and
|
|
.Ic output ,
|
|
both input and output
|
|
-are disabled. To obtain a list of available
|
|
-types, use the
|
|
+are disabled.
|
|
+To obtain a list of available types, use the
|
|
.Ic encrypt disable \&?
|
|
command.
|
|
.It Ic enable Ar type Ic [input|output]
|
|
Enables the specified
|
|
.Ar type
|
|
-of encryption. If you
|
|
-omit
|
|
+of encryption.
|
|
+If you omit
|
|
.Ic input
|
|
and
|
|
.Ic output ,
|
|
both input and output are
|
|
-enabled. To obtain a list of available types, use the
|
|
+enabled.
|
|
+To obtain a list of available types, use the
|
|
.Ic encrypt enable \&?
|
|
command.
|
|
.It Ic input
|
|
@@ -407,18 +403,20 @@
|
|
.Ic encrypt stop output
|
|
command.
|
|
.It Ic start Ic [input|output]
|
|
-Attempts to start encryption. If you omit
|
|
+Attempts to start encryption.
|
|
+If you omit
|
|
.Ic input
|
|
and
|
|
-.Ic output,
|
|
-both input and output are enabled. To
|
|
-obtain a list of available types, use the
|
|
+.Ic output ,
|
|
+both input and output are enabled.
|
|
+To obtain a list of available types, use the
|
|
.Ic encrypt enable \&?
|
|
command.
|
|
.It Ic status
|
|
Lists the current status of encryption.
|
|
.It Ic stop Ic [input|output]
|
|
-Stops encryption. If you omit
|
|
+Stops encryption.
|
|
+If you omit
|
|
.Ic input
|
|
and
|
|
.Ic output ,
|
|
@@ -431,7 +429,7 @@
|
|
.Ic encrypt stop
|
|
commands.
|
|
.El
|
|
-.It Ic environ Ar arguments Op Ar ...
|
|
+.It Ic environ Ar arguments Op Ar ...
|
|
The
|
|
.Ic environ
|
|
command is used to manipulate the
|
|
@@ -456,7 +454,7 @@
|
|
.Ic environ
|
|
command are:
|
|
.Bl -tag -width Fl
|
|
-.It Ic define Ar variable value
|
|
+.It Ic define Ar variable value
|
|
Define the variable
|
|
.Ar variable
|
|
to have a value of
|
|
@@ -466,15 +464,15 @@
|
|
.Ar value
|
|
may be enclosed in single or double quotes so
|
|
that tabs and spaces may be included.
|
|
-.It Ic undefine Ar variable
|
|
+.It Ic undefine Ar variable
|
|
Remove
|
|
.Ar variable
|
|
from the list of environment variables.
|
|
-.It Ic export Ar variable
|
|
+.It Ic export Ar variable
|
|
Mark the variable
|
|
.Ar variable
|
|
to be exported to the remote side.
|
|
-.It Ic unexport Ar variable
|
|
+.It Ic unexport Ar variable
|
|
Mark the variable
|
|
.Ar variable
|
|
to not be exported unless
|
|
@@ -508,7 +506,7 @@
|
|
suspending a user's session for later reattachment,
|
|
the logout argument indicates that you
|
|
should terminate the session immediately.
|
|
-.It Ic mode Ar type
|
|
+.It Ic mode Ar type
|
|
.Ar type
|
|
is one of several options, depending on the state of the
|
|
.Tn TELNET
|
|
@@ -529,40 +527,40 @@
|
|
option, or, if the remote side does not understand the
|
|
.Dv LINEMODE
|
|
option, then attempt to enter ``old-line-by-line'' mode.
|
|
-.It Ic isig Pq Ic \-isig
|
|
-Attempt to enable (disable) the
|
|
+.It Ic isig Pq Ic \-isig
|
|
+Attempt to enable (disable) the
|
|
.Dv TRAPSIG
|
|
-mode of the
|
|
+mode of the
|
|
.Dv LINEMODE
|
|
option.
|
|
-This requires that the
|
|
+This requires that the
|
|
.Dv LINEMODE
|
|
option be enabled.
|
|
-.It Ic edit Pq Ic \-edit
|
|
-Attempt to enable (disable) the
|
|
+.It Ic edit Pq Ic \-edit
|
|
+Attempt to enable (disable) the
|
|
.Dv EDIT
|
|
-mode of the
|
|
+mode of the
|
|
.Dv LINEMODE
|
|
option.
|
|
-This requires that the
|
|
+This requires that the
|
|
.Dv LINEMODE
|
|
option be enabled.
|
|
-.It Ic softtabs Pq Ic \-softtabs
|
|
-Attempt to enable (disable) the
|
|
+.It Ic softtabs Pq Ic \-softtabs
|
|
+Attempt to enable (disable) the
|
|
.Dv SOFT_TAB
|
|
-mode of the
|
|
+mode of the
|
|
.Dv LINEMODE
|
|
option.
|
|
-This requires that the
|
|
+This requires that the
|
|
.Dv LINEMODE
|
|
option be enabled.
|
|
-.It Ic litecho Pq Ic \-litecho
|
|
-Attempt to enable (disable) the
|
|
+.It Ic litecho Pq Ic \-litecho
|
|
+Attempt to enable (disable) the
|
|
.Dv LIT_ECHO
|
|
-mode of the
|
|
+mode of the
|
|
.Dv LINEMODE
|
|
option.
|
|
-This requires that the
|
|
+This requires that the
|
|
.Dv LINEMODE
|
|
option be enabled.
|
|
.It Ic \&?
|
|
@@ -579,7 +577,7 @@
|
|
Open a connection to the named host.
|
|
If no port number
|
|
is specified,
|
|
-.Nm telnet
|
|
+.Nm
|
|
will attempt to contact a
|
|
.Tn TELNET
|
|
server at the default port.
|
|
@@ -594,24 +592,29 @@
|
|
.Ev ENVIRON
|
|
option.
|
|
When connecting to a non-standard port,
|
|
-.Nm telnet
|
|
+.Nm
|
|
omits any automatic initiation of
|
|
.Tn TELNET
|
|
-options. When the port number is preceded by a minus sign,
|
|
+options.
|
|
+When the port number is preceded by a minus sign,
|
|
the initial option negotiation is done.
|
|
After establishing a connection, the file
|
|
.Pa \&.telnetrc
|
|
in the
|
|
-user's home directory is opened. Lines beginning with a ``#'' are
|
|
-comment lines. Blank lines are ignored. Lines that begin
|
|
-without white space are the start of a machine entry. The
|
|
-first thing on the line is the name of the machine that is
|
|
-being connected to. The rest of the line, and successive
|
|
-lines that begin with white space are assumed to be
|
|
-.Nm telnet
|
|
+user's home directory is opened.
|
|
+Lines beginning with a ``#'' are
|
|
+comment lines.
|
|
+Blank lines are ignored.
|
|
+Lines that begin
|
|
+without whitespace are the start of a machine entry.
|
|
+The first thing on the line is the name of the machine that is
|
|
+being connected to.
|
|
+The rest of the line, and successive
|
|
+lines that begin with whitespace are assumed to be
|
|
+.Nm
|
|
commands and are processed as if they had been typed
|
|
in manually to the
|
|
-.Nm telnet
|
|
+.Nm
|
|
command prompt.
|
|
.It Ic quit
|
|
Close any open
|
|
@@ -619,7 +622,7 @@
|
|
session and exit
|
|
.Nm telnet .
|
|
An end-of-file (in command mode) will also close a session and exit.
|
|
-.It Ic send Ar arguments
|
|
+.It Ic send Ar arguments
|
|
Sends one or more special character sequences to the remote host.
|
|
The following are the arguments which may be specified
|
|
(more than one argument may be specified at a time):
|
|
@@ -673,7 +676,7 @@
|
|
sequence.
|
|
.It Ic escape
|
|
Sends the current
|
|
-.Nm telnet
|
|
+.Nm
|
|
escape character (initially ``^]'').
|
|
.It Ic ga
|
|
Sends the
|
|
@@ -788,12 +791,12 @@
|
|
.Ic send
|
|
command.
|
|
.El
|
|
-.It Ic set Ar argument value
|
|
-.It Ic unset Ar argument value
|
|
+.It Ic set Ar argument value
|
|
+.It Ic unset Ar argument value
|
|
The
|
|
.Ic set
|
|
command will set any one of a number of
|
|
-.Nm telnet
|
|
+.Nm
|
|
variables to a specific value or to
|
|
.Dv TRUE .
|
|
The special value
|
|
@@ -811,7 +814,8 @@
|
|
.Ic display
|
|
command.
|
|
The variables which may be set or unset, but not toggled, are
|
|
-listed here. In addition, any of the variables for the
|
|
+listed here.
|
|
+In addition, any of the variables for the
|
|
.Ic toggle
|
|
command may be explicitly set or unset using
|
|
the
|
|
@@ -832,7 +836,8 @@
|
|
sequence (see
|
|
.Ic send ayt
|
|
preceding) is sent to the
|
|
-remote host. The initial value for the "Are You There"
|
|
+remote host.
|
|
+The initial value for the "Are You There"
|
|
character is the terminal's status character.
|
|
.It Ic echo
|
|
This is the value (initially ``^E'') which, when in
|
|
@@ -841,7 +846,7 @@
|
|
echoing of entered characters (for entering, say, a password).
|
|
.It Ic eof
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is operating in
|
|
.Dv LINEMODE
|
|
or ``old line by line'' mode, entering this character
|
|
@@ -854,7 +859,7 @@
|
|
character.
|
|
.It Ic erase
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is in
|
|
.Ic localchars
|
|
mode (see
|
|
@@ -862,7 +867,7 @@
|
|
.Ic localchars
|
|
below),
|
|
and if
|
|
-.Nm telnet
|
|
+.Nm
|
|
is operating in ``character at a time'' mode, then when this
|
|
character is typed, a
|
|
.Dv TELNET EC
|
|
@@ -879,14 +884,14 @@
|
|
character.
|
|
.It Ic escape
|
|
This is the
|
|
-.Nm telnet
|
|
+.Nm
|
|
escape character (initially ``^['') which causes entry
|
|
into
|
|
-.Nm telnet
|
|
+.Nm
|
|
command mode (when connected to a remote system).
|
|
.It Ic flushoutput
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is in
|
|
.Ic localchars
|
|
mode (see
|
|
@@ -916,12 +921,13 @@
|
|
.Dv LINEMODE ,
|
|
these are the
|
|
characters that, when typed, cause partial lines to be
|
|
-forwarded to the remote system. The initial value for
|
|
+forwarded to the remote system.
|
|
+The initial value for
|
|
the forwarding characters are taken from the terminal's
|
|
eol and eol2 characters.
|
|
.It Ic interrupt
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is in
|
|
.Ic localchars
|
|
mode (see
|
|
@@ -945,7 +951,7 @@
|
|
character.
|
|
.It Ic kill
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is in
|
|
.Ic localchars
|
|
mode (see
|
|
@@ -953,7 +959,7 @@
|
|
.Ic localchars
|
|
below),
|
|
and if
|
|
-.Nm telnet
|
|
+.Nm
|
|
is operating in ``character at a time'' mode, then when this
|
|
character is typed, a
|
|
.Dv TELNET EL
|
|
@@ -970,7 +976,7 @@
|
|
character.
|
|
.It Ic lnext
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is operating in
|
|
.Dv LINEMODE
|
|
or ``old line by line'' mode, then this character is taken to
|
|
@@ -985,7 +991,7 @@
|
|
character.
|
|
.It Ic quit
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is in
|
|
.Ic localchars
|
|
mode (see
|
|
@@ -1009,7 +1015,7 @@
|
|
character.
|
|
.It Ic reprint
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is operating in
|
|
.Dv LINEMODE
|
|
or old line by line'' mode, then this character is taken to
|
|
@@ -1031,8 +1037,9 @@
|
|
This character, at the beginning of a line, followed by
|
|
a "." closes the connection; when followed by a ^Z it
|
|
suspends the
|
|
-.Nm telnet
|
|
-command. The initial state is to
|
|
+.Nm
|
|
+command.
|
|
+The initial state is to
|
|
disable the
|
|
.Ic rlogin
|
|
escape character.
|
|
@@ -1066,7 +1073,7 @@
|
|
character.
|
|
.It Ic susp
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is in
|
|
.Ic localchars
|
|
mode, or
|
|
@@ -1093,12 +1100,13 @@
|
|
.Ic option
|
|
tracing being
|
|
.Dv TRUE ,
|
|
-will be written. If it is set to
|
|
+will be written.
|
|
+If it is set to
|
|
.Dq Fl ,
|
|
then tracing information will be written to standard output (the default).
|
|
.It Ic worderase
|
|
If
|
|
-.Nm telnet
|
|
+.Nm
|
|
is operating in
|
|
.Dv LINEMODE
|
|
or ``old line by line'' mode, then this character is taken to
|
|
@@ -1117,25 +1125,32 @@
|
|
.Pq Ic unset
|
|
commands.
|
|
.El
|
|
-.It Ic slc Ar state
|
|
+.It Ic skey Ar sequence challenge
|
|
+The
|
|
+.Ic skey
|
|
+command computes a response to the S/Key challenge.
|
|
+See
|
|
+.Xr skey 1
|
|
+for more information on the S/Key system.
|
|
+.It Ic slc Ar state
|
|
The
|
|
.Ic slc
|
|
command (Set Local Characters) is used to set
|
|
or change the state of the special
|
|
-characters when the
|
|
+characters when the
|
|
.Dv TELNET LINEMODE
|
|
option has
|
|
-been enabled. Special characters are characters that get
|
|
-mapped to
|
|
+been enabled.
|
|
+Special characters are characters that get mapped to
|
|
.Tn TELNET
|
|
commands sequences (like
|
|
.Ic ip
|
|
or
|
|
-.Ic quit )
|
|
+.Ic quit )
|
|
or line editing characters (like
|
|
.Ic erase
|
|
and
|
|
-.Ic kill ) .
|
|
+.Ic kill ) .
|
|
By default, the local special characters are exported.
|
|
.Bl -tag -width Fl
|
|
.It Ic check
|
|
@@ -1144,15 +1159,15 @@
|
|
character settings, and if there are any discrepancies with
|
|
the local side, the local side will switch to the remote value.
|
|
.It Ic export
|
|
-Switch to the local defaults for the special characters. The
|
|
-local default characters are those of the local terminal at
|
|
+Switch to the local defaults for the special characters.
|
|
+The local default characters are those of the local terminal at
|
|
the time when
|
|
-.Nm telnet
|
|
+.Nm
|
|
was started.
|
|
.It Ic import
|
|
Switch to the remote defaults for the special characters.
|
|
The remote default characters are those of the remote system
|
|
-at the time when the
|
|
+at the time when the
|
|
.Tn TELNET
|
|
connection was established.
|
|
.It Ic \&?
|
|
@@ -1165,13 +1180,13 @@
|
|
.Nm telnet .
|
|
This includes the peer one is connected to, as well
|
|
as the current mode.
|
|
-.It Ic toggle Ar arguments Op Ar ...
|
|
+.It Ic toggle Ar arguments Op Ar ...
|
|
Toggle (between
|
|
.Dv TRUE
|
|
and
|
|
.Dv FALSE )
|
|
various flags that control how
|
|
-.Nm telnet
|
|
+.Nm
|
|
responds to events.
|
|
These flags may be set explicitly to
|
|
.Dv TRUE
|
|
@@ -1206,7 +1221,7 @@
|
|
sequences; see
|
|
.Ic set
|
|
above for details),
|
|
-.Nm telnet
|
|
+.Nm
|
|
refuses to display any data on the user's terminal
|
|
until the remote system acknowledges (via a
|
|
.Dv TELNET TIMING MARK
|
|
@@ -1220,13 +1235,14 @@
|
|
done an "stty noflsh", otherwise
|
|
.Dv FALSE
|
|
(see
|
|
-.Xr stty 1 ) .
|
|
+.Xr stty 1 ) .
|
|
.It Ic autodecrypt
|
|
When the
|
|
.Dv TELNET ENCRYPT
|
|
option is negotiated, by
|
|
default the actual encryption (decryption) of the data
|
|
-stream does not start automatically. The
|
|
+stream does not start automatically.
|
|
+The
|
|
.Ic autoencrypt
|
|
.Pq Ic autodecrypt
|
|
command states that encryption of the
|
|
@@ -1238,7 +1254,8 @@
|
|
.Dv TELNET AUTHENTICATION
|
|
option
|
|
.Tn TELNET
|
|
-attempts to use it to perform automatic authentication. If the
|
|
+attempts to use it to perform automatic authentication.
|
|
+If the
|
|
.Dv AUTHENTICATION
|
|
option is not supported, the user's login
|
|
name are propagated through the
|
|
@@ -1314,7 +1331,7 @@
|
|
The initial value for this toggle is
|
|
.Dv FALSE .
|
|
.It Ic debug
|
|
-Toggles socket level debugging (useful only to the super-user).
|
|
+Toggles socket level debugging (useful only to the superuser).
|
|
The initial value for this toggle is
|
|
.Dv FALSE .
|
|
.It Ic encdebug
|
|
@@ -1340,7 +1357,7 @@
|
|
.Ic brk ,
|
|
.Ic ec ,
|
|
and
|
|
-.Ic el ;
|
|
+.Ic el ;
|
|
see
|
|
.Ic send
|
|
above).
|
|
@@ -1379,7 +1396,7 @@
|
|
.Dv FALSE .
|
|
.It Ic options
|
|
Toggles the display of some internal
|
|
-.Nm telnet
|
|
+.Nm
|
|
protocol processing (having to do with
|
|
.Tn TELNET
|
|
options).
|
|
@@ -1404,8 +1421,8 @@
|
|
skips the reading of the
|
|
.Pa \&.telnetrc
|
|
file in the user's home
|
|
-directory when connections are opened. The initial
|
|
-value for this toggle is
|
|
+directory when connections are opened.
|
|
+The initial value for this toggle is
|
|
.Dv FALSE .
|
|
.It Ic termdata
|
|
Toggles the display of all terminal data (in hexadecimal format).
|
|
@@ -1416,9 +1433,10 @@
|
|
.Ic verbose_encrypt
|
|
toggle is
|
|
.Dv TRUE ,
|
|
-.Nm telnet
|
|
+.Nm
|
|
prints out a message each time encryption is enabled or
|
|
-disabled. The initial value for this toggle is
|
|
+disabled.
|
|
+The initial value for this toggle is
|
|
.Dv FALSE .
|
|
.It Ic \&?
|
|
Displays the legal
|
|
@@ -1430,22 +1448,24 @@
|
|
.Nm telnet .
|
|
This command only works when the user is using the
|
|
.Xr csh 1 .
|
|
-.It Ic \&! Op Ar command
|
|
+.It Ic \&! Op Ar command
|
|
Execute a single command in a subshell on the local
|
|
-system. If
|
|
+system.
|
|
+If
|
|
.Ar command
|
|
is omitted, then an interactive
|
|
subshell is invoked.
|
|
-.It Ic \&? Op Ar command
|
|
-Get help. With no arguments,
|
|
-.Nm telnet
|
|
+.It Ic \&? Op Ar command
|
|
+Get help.
|
|
+With no arguments,
|
|
+.Nm
|
|
prints a help summary.
|
|
If a command is specified,
|
|
-.Nm telnet
|
|
+.Nm
|
|
will print the help information for just that command.
|
|
.El
|
|
.Sh ENVIRONMENT
|
|
-.Nm telnet
|
|
+.Nm
|
|
uses at least the
|
|
.Ev HOME ,
|
|
.Ev SHELL ,
|
|
@@ -1464,16 +1484,18 @@
|
|
.El
|
|
.Sh HISTORY
|
|
The
|
|
-.Nm telnet
|
|
+.Nm
|
|
command appeared in
|
|
.Bx 4.2 .
|
|
.Sh NOTES
|
|
On some remote systems, echo has to be turned off manually when in
|
|
``old line by line'' mode.
|
|
.Pp
|
|
-In ``old line by line'' mode or
|
|
+In ``old line by line'' mode or
|
|
.Dv LINEMODE
|
|
the terminal's
|
|
.Ic eof
|
|
character is only recognized (and sent to the remote system)
|
|
when it is the first character on a line.
|
|
+.Pp
|
|
+Source routing is not supported yet for IPv6.
|