mirror of
https://github.com/sheumann/telnetd.git
synced 2025-02-16 13:30:34 +00:00
Manually unifdef(1) CRAY, UNICOS, hpux and sun uselsess code.
git-svn-id: http://svn0.us-east.freebsd.org/base/head/contrib/telnet@82497 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
This commit is contained in:
parent
ee8be0d9e9
commit
3efb267b2d
@ -40,18 +40,12 @@ static const char sccsid[] = "@(#)commands.c 8.4 (Berkeley) 5/30/95";
|
||||
#if defined(unix)
|
||||
#include <sys/param.h>
|
||||
#include <sys/un.h>
|
||||
#if defined(CRAY) || defined(sysV88)
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#include <sys/file.h>
|
||||
#else
|
||||
#include <sys/types.h>
|
||||
#endif /* defined(unix) */
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#ifdef CRAY
|
||||
#include <fcntl.h>
|
||||
#endif /* CRAY */
|
||||
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
@ -81,12 +75,10 @@ static const char sccsid[] = "@(#)commands.c 8.4 (Berkeley) 5/30/95";
|
||||
#include <libtelnet/encrypt.h>
|
||||
#endif
|
||||
|
||||
#if !defined(CRAY) && !defined(sysV88)
|
||||
#include <netinet/in_systm.h>
|
||||
# if (defined(vax) || defined(tahoe) || defined(hp300)) && !defined(ultrix)
|
||||
# include <machine/endian.h>
|
||||
# endif /* vax */
|
||||
#endif /* !defined(CRAY) && !defined(sysV88) */
|
||||
#include <netinet/ip.h>
|
||||
#include <netinet/ip6.h>
|
||||
|
||||
@ -936,35 +928,6 @@ static struct setlist Setlist[] = {
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
#if defined(CRAY) && !defined(__STDC__)
|
||||
/* Work around compiler bug in pcc 4.1.5 */
|
||||
void
|
||||
_setlist_init()
|
||||
{
|
||||
#ifndef KLUDGELINEMODE
|
||||
#define N 5
|
||||
#else
|
||||
#define N 6
|
||||
#endif
|
||||
Setlist[N+0].charp = &termFlushChar;
|
||||
Setlist[N+1].charp = &termIntChar;
|
||||
Setlist[N+2].charp = &termQuitChar;
|
||||
Setlist[N+3].charp = &termEofChar;
|
||||
Setlist[N+6].charp = &termEraseChar;
|
||||
Setlist[N+7].charp = &termKillChar;
|
||||
Setlist[N+8].charp = &termLiteralNextChar;
|
||||
Setlist[N+9].charp = &termSuspChar;
|
||||
Setlist[N+10].charp = &termRprntChar;
|
||||
Setlist[N+11].charp = &termWerasChar;
|
||||
Setlist[N+12].charp = &termStartChar;
|
||||
Setlist[N+13].charp = &termStopChar;
|
||||
Setlist[N+14].charp = &termForw1Char;
|
||||
Setlist[N+15].charp = &termForw2Char;
|
||||
Setlist[N+16].charp = &termAytChar;
|
||||
#undef N
|
||||
}
|
||||
#endif /* defined(CRAY) && !defined(__STDC__) */
|
||||
|
||||
static struct setlist *
|
||||
getset(name)
|
||||
char *name;
|
||||
|
@ -53,17 +53,12 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <setjmp.h>
|
||||
#if defined(CRAY) && !defined(NO_BSD_SETJMP)
|
||||
#include <bsdsetjmp.h>
|
||||
#endif
|
||||
#ifndef FILIO_H
|
||||
#include <sys/ioctl.h>
|
||||
#else
|
||||
#include <sys/filio.h>
|
||||
#endif
|
||||
#ifdef CRAY
|
||||
# include <errno.h>
|
||||
#endif /* CRAY */
|
||||
#ifdef USE_TERMIO
|
||||
# ifndef VINTR
|
||||
# ifdef SYSV_TERMIO
|
||||
@ -109,10 +104,6 @@ extern char *ipsec_policy_out;
|
||||
|
||||
#define SUBBUFSIZE 256
|
||||
|
||||
#ifndef CRAY
|
||||
extern int errno; /* outside this world */
|
||||
#endif /* !CRAY */
|
||||
|
||||
#if !defined(P)
|
||||
# ifdef __STDC__
|
||||
# define P(x) x
|
||||
@ -432,7 +423,7 @@ extern cc_t termAytChar;
|
||||
# define termAytChar new_tc.c_cc[VSTATUS]
|
||||
#endif
|
||||
|
||||
# if !defined(CRAY) || defined(__STDC__)
|
||||
# if defined(__STDC__)
|
||||
# define termEofCharp &termEofChar
|
||||
# define termEraseCharp &termEraseChar
|
||||
# define termIntCharp &termIntChar
|
||||
|
@ -148,9 +148,6 @@ main(argc, argv)
|
||||
#endif /* FORWARD */
|
||||
|
||||
tninit(); /* Clear out things */
|
||||
#if defined(CRAY) && !defined(__STDC__)
|
||||
_setlist_init(); /* Work around compiler bug */
|
||||
#endif
|
||||
|
||||
TerminalSaveState();
|
||||
|
||||
|
@ -63,7 +63,7 @@ static const char rcsid[] =
|
||||
#include "externs.h"
|
||||
#include "types.h"
|
||||
|
||||
#if defined(CRAY) || (defined(USE_TERMIO) && !defined(SYSV_TERMIO))
|
||||
#if defined(USE_TERMIO) && !defined(SYSV_TERMIO)
|
||||
#define SIG_FUNC_RET void
|
||||
#else
|
||||
#define SIG_FUNC_RET int
|
||||
|
@ -31,6 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)defs.h 8.1 (Berkeley) 6/4/93
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -43,23 +44,6 @@
|
||||
# define BSD 43
|
||||
#endif
|
||||
|
||||
#if defined(CRAY) && !defined(LINEMODE)
|
||||
# define SYSV_TERMIO
|
||||
# define LINEMODE
|
||||
# define KLUDGELINEMODE
|
||||
# define DIAGNOSTICS
|
||||
# if defined(UNICOS50) && !defined(UNICOS5)
|
||||
# define UNICOS5
|
||||
# endif
|
||||
# if !defined(UNICOS5)
|
||||
# define BFTPDAEMON
|
||||
# define HAS_IP_TOS
|
||||
# endif
|
||||
#endif /* CRAY */
|
||||
#if defined(UNICOS5) && !defined(NO_SETSID)
|
||||
# define NO_SETSID
|
||||
#endif
|
||||
|
||||
#if defined(PRINTOPTIONS) && defined(DIAGNOSTICS)
|
||||
#define TELOPTS
|
||||
#define TELCMDS
|
||||
@ -71,9 +55,7 @@
|
||||
#endif
|
||||
|
||||
#include <sys/socket.h>
|
||||
#ifndef CRAY
|
||||
#include <sys/wait.h>
|
||||
#endif /* CRAY */
|
||||
#include <fcntl.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/stat.h>
|
||||
@ -134,22 +116,6 @@ typedef unsigned char cc_t;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CRAY
|
||||
# ifdef CRAY1
|
||||
# include <sys/pty.h>
|
||||
# ifndef FD_ZERO
|
||||
# include <sys/select.h>
|
||||
# endif /* FD_ZERO */
|
||||
# endif /* CRAY1 */
|
||||
|
||||
#include <memory.h>
|
||||
#endif /* CRAY */
|
||||
|
||||
#ifdef __hpux
|
||||
#include <sys/ptyio.h>
|
||||
#endif
|
||||
|
||||
#if !defined(TIOCSCTTY) && defined(TCSETCTTY)
|
||||
# define TIOCSCTTY TCSETCTTY
|
||||
#endif
|
||||
@ -169,10 +135,6 @@ typedef struct fd_set { int fds_bits[1]; } fd_set;
|
||||
* I/O data buffers defines
|
||||
*/
|
||||
#define NETSLOP 64
|
||||
#ifdef CRAY
|
||||
#undef BUFSIZ
|
||||
#define BUFSIZ 2048
|
||||
#endif
|
||||
|
||||
#define NIACCUM(c) { *netip++ = c; \
|
||||
ncc++; \
|
||||
|
@ -79,11 +79,6 @@ extern char *neturg; /* one past last bye of urgent data */
|
||||
|
||||
extern int pcc, ncc;
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
extern int unpcc; /* characters left unprocessed by CRAY-2 terminal routine */
|
||||
extern char *unptyip; /* pointer to remaining characters in buffer */
|
||||
#endif
|
||||
|
||||
extern int pty, net;
|
||||
extern char line[16];
|
||||
extern int SYNCHing; /* we are in TELNET SYNCH mode */
|
||||
@ -219,18 +214,7 @@ extern struct {
|
||||
gotDM; /* when did we last see a data mark */
|
||||
} clocks;
|
||||
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
extern int needtermstat;
|
||||
#endif
|
||||
|
||||
#ifndef DEFAULT_IM
|
||||
# ifdef CRAY
|
||||
# define DEFAULT_IM "\r\n\r\nCray UNICOS (%h) (%t)\r\n\r\r\n\r"
|
||||
# else
|
||||
# ifdef sun
|
||||
# define DEFAULT_IM "\r\n\r\nSunOS UNIX (%h) (%t)\r\n\r\r\n\r"
|
||||
# else
|
||||
# ifdef ultrix
|
||||
# define DEFAULT_IM "\r\n\r\nULTRIX (%h) (%t)\r\n\r\r\n\r"
|
||||
# else
|
||||
@ -240,6 +224,4 @@ extern int needtermstat;
|
||||
# define DEFAULT_IM "\r\n\r\n4.4 BSD UNIX (%h) (%t)\r\n\r\r\n\r"
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
@ -94,9 +94,6 @@ telrcv()
|
||||
{
|
||||
register int c;
|
||||
static int state = TS_DATA;
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
char *opfrontp = pfrontp;
|
||||
#endif
|
||||
|
||||
while (ncc > 0) {
|
||||
if ((&ptyobuf[BUFSIZ] - pfrontp) < 2)
|
||||
@ -367,21 +364,6 @@ gotiac: switch (c) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
if (!linemode) {
|
||||
char xptyobuf[BUFSIZ+NETSLOP];
|
||||
char xbuf2[BUFSIZ];
|
||||
register char *cp;
|
||||
int n = pfrontp - opfrontp, oc;
|
||||
memmove(xptyobuf, opfrontp, n);
|
||||
pfrontp = opfrontp;
|
||||
pfrontp += term_input(xptyobuf, pfrontp, n, BUFSIZ+NETSLOP,
|
||||
xbuf2, &oc, BUFSIZ);
|
||||
for (cp = xbuf2; oc > 0; --oc)
|
||||
if ((*nfrontp++ = *cp++) == IAC)
|
||||
*nfrontp++ = IAC;
|
||||
}
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
} /* end of telrcv */
|
||||
|
||||
/*
|
||||
|
@ -50,10 +50,6 @@ extern char *altlogin;
|
||||
int cleanopen(char *line);
|
||||
void scrub_env(void);
|
||||
|
||||
#if defined(CRAY) || defined(__hpux)
|
||||
# define PARENT_DOES_UTMP
|
||||
#endif
|
||||
|
||||
#ifdef NEWINIT
|
||||
#include <initreq.h>
|
||||
#else /* NEWINIT*/
|
||||
@ -82,20 +78,6 @@ char wtmpf[] = "/etc/wtmp";
|
||||
|
||||
#include <libutil.h>
|
||||
|
||||
# ifdef CRAY
|
||||
#include <tmpdir.h>
|
||||
#include <sys/wait.h>
|
||||
# if (UNICOS_LVL == '7.0') || (UNICOS_LVL == '7.1')
|
||||
# define UNICOS7x
|
||||
# endif
|
||||
|
||||
# ifdef UNICOS7x
|
||||
#include <sys/sysv.h>
|
||||
#include <sys/secstat.h>
|
||||
extern int secflag;
|
||||
extern struct sysv sysv;
|
||||
# endif /* UNICOS7x */
|
||||
# endif /* CRAY */
|
||||
#endif /* NEWINIT */
|
||||
|
||||
#ifdef STREAMSPTY
|
||||
@ -109,10 +91,6 @@ extern struct sysv sysv;
|
||||
#ifdef STREAMS
|
||||
#include <sys/stream.h>
|
||||
#endif
|
||||
#ifdef __hpux
|
||||
#include <sys/resource.h>
|
||||
#include <sys/proc.h>
|
||||
#endif
|
||||
#include <sys/tty.h>
|
||||
#ifdef t_erase
|
||||
#undef t_erase
|
||||
@ -131,10 +109,6 @@ extern struct sysv sysv;
|
||||
#undef t_lnextc
|
||||
#endif
|
||||
|
||||
#if defined(UNICOS5) && defined(CRAY2) && !defined(EXTPROC)
|
||||
# define EXTPROC 0400
|
||||
#endif
|
||||
|
||||
#ifndef USE_TERMIO
|
||||
struct termbuf {
|
||||
struct sgttyb sg;
|
||||
@ -262,9 +236,6 @@ set_termbuf()
|
||||
# else
|
||||
(void) tcsetattr(pty, TCSANOW, &termbuf);
|
||||
# endif
|
||||
# if defined(CRAY2) && defined(UNICOS5)
|
||||
needtermstat = 1;
|
||||
# endif
|
||||
#endif /* USE_TERMIO */
|
||||
}
|
||||
|
||||
@ -452,26 +423,6 @@ spcset(func, valp, valpp)
|
||||
}
|
||||
#endif /* USE_TERMIO */
|
||||
|
||||
#ifdef CRAY
|
||||
/*
|
||||
* getnpty()
|
||||
*
|
||||
* Return the number of pty's configured into the system.
|
||||
*/
|
||||
int
|
||||
getnpty()
|
||||
{
|
||||
#ifdef _SC_CRAY_NPTY
|
||||
int numptys;
|
||||
|
||||
if ((numptys = sysconf(_SC_CRAY_NPTY)) != -1)
|
||||
return numptys;
|
||||
else
|
||||
#endif /* _SC_CRAY_NPTY */
|
||||
return 128;
|
||||
}
|
||||
#endif /* CRAY */
|
||||
|
||||
#ifndef convex
|
||||
/*
|
||||
* getpty()
|
||||
@ -481,11 +432,7 @@ getnpty()
|
||||
*
|
||||
* Returns the file descriptor of the opened pty.
|
||||
*/
|
||||
#ifdef CRAY
|
||||
char myline[16];
|
||||
#else
|
||||
char line[16];
|
||||
#endif /* CRAY */
|
||||
|
||||
int
|
||||
getpty(ptynum)
|
||||
@ -505,23 +452,13 @@ int *ptynum;
|
||||
}
|
||||
|
||||
#else /* ! STREAMSPTY */
|
||||
#ifndef CRAY
|
||||
register char *cp, *p1, *p2;
|
||||
register int i;
|
||||
#if defined(sun) && defined(TIOCGPGRP) && BSD < 199207
|
||||
int dummy;
|
||||
#endif
|
||||
|
||||
#ifndef __hpux
|
||||
(void) strcpy(line, _PATH_DEV);
|
||||
(void) strcat(line, "ptyXX");
|
||||
p1 = &line[8];
|
||||
p2 = &line[9];
|
||||
#else
|
||||
(void) strcpy(line, "/dev/ptym/ptyXX");
|
||||
p1 = &line[13];
|
||||
p2 = &line[14];
|
||||
#endif
|
||||
|
||||
for (cp = "pqrsPQRS"; *cp; cp++) {
|
||||
struct stat stb;
|
||||
@ -539,64 +476,13 @@ int *ptynum;
|
||||
*p2 = "0123456789abcdefghijklmnopqrstuv"[i];
|
||||
p = open(line, 2);
|
||||
if (p > 0) {
|
||||
#ifndef __hpux
|
||||
line[5] = 't';
|
||||
#else
|
||||
for (p1 = &line[8]; *p1; p1++)
|
||||
*p1 = *(p1+1);
|
||||
line[9] = 't';
|
||||
#endif
|
||||
chown(line, 0, 0);
|
||||
chmod(line, 0600);
|
||||
#if defined(sun) && defined(TIOCGPGRP) && BSD < 199207
|
||||
if (ioctl(p, TIOCGPGRP, &dummy) == 0
|
||||
|| errno != EIO) {
|
||||
chmod(line, 0666);
|
||||
close(p);
|
||||
line[5] = 'p';
|
||||
} else
|
||||
#endif /* defined(sun) && defined(TIOCGPGRP) && BSD < 199207 */
|
||||
return(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else /* CRAY */
|
||||
extern lowpty, highpty;
|
||||
struct stat sb;
|
||||
|
||||
for (*ptynum = lowpty; *ptynum <= highpty; (*ptynum)++) {
|
||||
(void) sprintf(myline, "%spty/%03d", _PATH_DEV, *ptynum);
|
||||
p = open(myline, 2);
|
||||
if (p < 0)
|
||||
continue;
|
||||
(void) sprintf(line, "%sp%03d", _PATH_TTY, *ptynum);
|
||||
/*
|
||||
* Here are some shenanigans to make sure that there
|
||||
* are no listeners lurking on the line.
|
||||
*/
|
||||
if(stat(line, &sb) < 0) {
|
||||
(void) close(p);
|
||||
continue;
|
||||
}
|
||||
if(sb.st_uid || sb.st_gid || sb.st_mode != 0600) {
|
||||
chown(line, 0, 0);
|
||||
chmod(line, 0600);
|
||||
(void)close(p);
|
||||
p = open(myline, 2);
|
||||
if (p < 0)
|
||||
continue;
|
||||
}
|
||||
/*
|
||||
* Now it should be safe...check for accessability.
|
||||
*/
|
||||
if (access(line, 6) == 0)
|
||||
return(p);
|
||||
else {
|
||||
/* no tty side to pty so skip it */
|
||||
(void) close(p);
|
||||
}
|
||||
}
|
||||
#endif /* CRAY */
|
||||
#endif /* STREAMSPTY */
|
||||
return(-1);
|
||||
}
|
||||
@ -1042,15 +928,6 @@ tty_rspeed(val)
|
||||
#endif /* DECODE_BAUD */
|
||||
}
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
int
|
||||
tty_isnewmap()
|
||||
{
|
||||
return((termbuf.c_oflag & OPOST) && (termbuf.c_oflag & ONLCR) &&
|
||||
!(termbuf.c_oflag & ONLRET));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef PARENT_DOES_UTMP
|
||||
# ifndef NEWINIT
|
||||
extern struct utmp wtmp;
|
||||
@ -1089,7 +966,6 @@ getptyslave()
|
||||
register int t = -1;
|
||||
char erase;
|
||||
|
||||
#if !defined(CRAY) || !defined(NEWINIT)
|
||||
# ifdef LINEMODE
|
||||
int waslm;
|
||||
# endif
|
||||
@ -1170,22 +1046,12 @@ getptyslave()
|
||||
termbuf.sg.sg_flags |= CRMOD|ANYP|ECHO|XTABS;
|
||||
# endif /* USE_TERMIO */
|
||||
|
||||
/*
|
||||
* Settings for UNICOS (and HPUX)
|
||||
*/
|
||||
# if defined(CRAY) || defined(__hpux)
|
||||
termbuf.c_oflag = OPOST|ONLCR|TAB3;
|
||||
termbuf.c_iflag = IGNPAR|ISTRIP|ICRNL|IXON;
|
||||
termbuf.c_lflag = ISIG|ICANON|ECHO|ECHOE|ECHOK;
|
||||
termbuf.c_cflag = EXTB|HUPCL|CS8;
|
||||
# endif
|
||||
|
||||
/*
|
||||
* Settings for all other termios/termio based
|
||||
* systems, other than 4.4BSD. In 4.4BSD the
|
||||
* kernel does the initial terminal setup.
|
||||
*/
|
||||
# if defined(USE_TERMIO) && !(defined(CRAY) || defined(__hpux)) && (BSD <= 43)
|
||||
# if defined(USE_TERMIO) && (BSD <= 43)
|
||||
# ifndef OXTABS
|
||||
# define OXTABS 0
|
||||
# endif
|
||||
@ -1193,7 +1059,7 @@ getptyslave()
|
||||
termbuf.c_oflag |= ONLCR|OXTABS;
|
||||
termbuf.c_iflag |= ICRNL;
|
||||
termbuf.c_iflag &= ~IXOFF;
|
||||
# endif /* defined(USE_TERMIO) && !defined(CRAY) && (BSD <= 43) */
|
||||
# endif /* defined(USE_TERMIO) && (BSD <= 43) */
|
||||
tty_rspeed((def_rspeed > 0) ? def_rspeed : 9600);
|
||||
tty_tspeed((def_tspeed > 0) ? def_tspeed : 9600);
|
||||
if (erase)
|
||||
@ -1209,7 +1075,6 @@ getptyslave()
|
||||
set_termbuf();
|
||||
if (login_tty(t) == -1)
|
||||
fatalperror(net, "login_tty");
|
||||
#endif /* !defined(CRAY) || !defined(NEWINIT) */
|
||||
if (net > 2)
|
||||
(void) close(net);
|
||||
#if defined(AUTHENTICATION) && defined(NO_LOGIN_F) && defined(LOGIN_R)
|
||||
@ -1225,7 +1090,6 @@ getptyslave()
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined(CRAY) || !defined(NEWINIT)
|
||||
#ifndef O_NOCTTY
|
||||
#define O_NOCTTY 0
|
||||
#endif
|
||||
@ -1238,9 +1102,6 @@ cleanopen(line)
|
||||
char *line;
|
||||
{
|
||||
register int t;
|
||||
#ifdef UNICOS7x
|
||||
struct secstat secbuf;
|
||||
#endif /* UNICOS7x */
|
||||
|
||||
#ifndef STREAMSPTY
|
||||
/*
|
||||
@ -1251,31 +1112,10 @@ cleanopen(line)
|
||||
(void) chmod(line, 0600);
|
||||
#endif
|
||||
|
||||
# if !defined(CRAY) && (BSD > 43)
|
||||
(void) revoke(line);
|
||||
# endif
|
||||
#ifdef UNICOS7x
|
||||
if (secflag) {
|
||||
if (secstat(line, &secbuf) < 0)
|
||||
return(-1);
|
||||
if (setulvl(secbuf.st_slevel) < 0)
|
||||
return(-1);
|
||||
if (setucmp(secbuf.st_compart) < 0)
|
||||
return(-1);
|
||||
}
|
||||
#endif /* UNICOS7x */
|
||||
|
||||
t = open(line, O_RDWR|O_NOCTTY);
|
||||
|
||||
#ifdef UNICOS7x
|
||||
if (secflag) {
|
||||
if (setulvl(sysv.sy_minlvl) < 0)
|
||||
return(-1);
|
||||
if (setucmp(0) < 0)
|
||||
return(-1);
|
||||
}
|
||||
#endif /* UNICOS7x */
|
||||
|
||||
if (t < 0)
|
||||
return(-1);
|
||||
|
||||
@ -1283,7 +1123,7 @@ cleanopen(line)
|
||||
* Hangup anybody else using this ttyp, then reopen it for
|
||||
* ourselves.
|
||||
*/
|
||||
# if !(defined(CRAY) || defined(__hpux)) && (BSD <= 43) && !defined(STREAMSPTY)
|
||||
# if (BSD <= 43) && !defined(STREAMSPTY)
|
||||
(void) signal(SIGHUP, SIG_IGN);
|
||||
vhangup();
|
||||
(void) signal(SIGHUP, SIG_DFL);
|
||||
@ -1291,45 +1131,8 @@ cleanopen(line)
|
||||
if (t < 0)
|
||||
return(-1);
|
||||
# endif
|
||||
# if defined(CRAY) && defined(TCVHUP)
|
||||
{
|
||||
register int i;
|
||||
(void) signal(SIGHUP, SIG_IGN);
|
||||
(void) ioctl(t, TCVHUP, (char *)0);
|
||||
(void) signal(SIGHUP, SIG_DFL);
|
||||
setpgrp();
|
||||
|
||||
#ifdef UNICOS7x
|
||||
if (secflag) {
|
||||
if (secstat(line, &secbuf) < 0)
|
||||
return(-1);
|
||||
if (setulvl(secbuf.st_slevel) < 0)
|
||||
return(-1);
|
||||
if (setucmp(secbuf.st_compart) < 0)
|
||||
return(-1);
|
||||
}
|
||||
#endif /* UNICOS7x */
|
||||
|
||||
i = open(line, O_RDWR);
|
||||
|
||||
#ifdef UNICOS7x
|
||||
if (secflag) {
|
||||
if (setulvl(sysv.sy_minlvl) < 0)
|
||||
return(-1);
|
||||
if (setucmp(0) < 0)
|
||||
return(-1);
|
||||
}
|
||||
#endif /* UNICOS7x */
|
||||
|
||||
if (i < 0)
|
||||
return(-1);
|
||||
(void) close(t);
|
||||
t = i;
|
||||
}
|
||||
# endif /* defined(CRAY) && defined(TCVHUP) */
|
||||
return(t);
|
||||
}
|
||||
#endif /* !defined(CRAY) || !defined(NEWINIT) */
|
||||
|
||||
#if BSD <= 43
|
||||
|
||||
@ -1351,15 +1154,6 @@ login_tty(t)
|
||||
# ifdef TIOCSCTTY
|
||||
if (ioctl(t, TIOCSCTTY, (char *)0) < 0)
|
||||
fatalperror(net, "ioctl(sctty)");
|
||||
# if defined(CRAY)
|
||||
/*
|
||||
* Close the hard fd to /dev/ttypXXX, and re-open through
|
||||
* the indirect /dev/tty interface.
|
||||
*/
|
||||
close(t);
|
||||
if ((t = open(_PATH_TTY, O_RDWR)) < 0)
|
||||
fatalperror(net, "open(/dev/tty)");
|
||||
# endif
|
||||
# else
|
||||
/*
|
||||
* We get our controlling tty assigned as a side-effect
|
||||
@ -1368,11 +1162,7 @@ login_tty(t)
|
||||
* setsid() call above may have set our pgrp, so clear
|
||||
* it out before opening the tty...
|
||||
*/
|
||||
# ifndef SOLARIS
|
||||
(void) setpgrp(0, 0);
|
||||
# else
|
||||
(void) setpgrp();
|
||||
# endif
|
||||
close(open(line, O_RDWR));
|
||||
# endif
|
||||
if (t != 0)
|
||||
@ -1451,20 +1241,13 @@ startslave(host, autologin, autoname)
|
||||
SCPYN(wtmp.ut_user, "LOGIN");
|
||||
SCPYN(wtmp.ut_host, host);
|
||||
SCPYN(wtmp.ut_line, line + sizeof(_PATH_DEV) - 1);
|
||||
#ifndef __hpux
|
||||
SCPYN(wtmp.ut_id, wtmp.ut_line+3);
|
||||
#else
|
||||
SCPYN(wtmp.ut_id, wtmp.ut_line+7);
|
||||
#endif
|
||||
pututline(&wtmp);
|
||||
endutent();
|
||||
if ((i = open(wtmpf, O_WRONLY|O_APPEND)) >= 0) {
|
||||
(void) write(i, (char *)&wtmp, sizeof(struct utmp));
|
||||
(void) close(i);
|
||||
}
|
||||
#ifdef CRAY
|
||||
(void) signal(WJSIGNAL, sigjob);
|
||||
#endif
|
||||
utmp_sig_notify(pid);
|
||||
# endif /* PARENT_DOES_UTMP */
|
||||
} else {
|
||||
@ -1489,10 +1272,8 @@ startslave(host, autologin, autoname)
|
||||
SCPYN(request.tty_id, &line[8]);
|
||||
SCPYN(request.host, host);
|
||||
SCPYN(request.term_type, terminaltype ? terminaltype : "network");
|
||||
#if !defined(UNICOS5)
|
||||
request.signal = SIGCLD;
|
||||
request.pid = getpid();
|
||||
#endif
|
||||
#ifdef BFTPDAEMON
|
||||
/*
|
||||
* Are we working as the bftp daemon?
|
||||
@ -1540,10 +1321,6 @@ init_env()
|
||||
envp = envinit;
|
||||
if ((*envp = getenv("TZ")))
|
||||
*envp++ -= 3;
|
||||
#if defined(CRAY) || defined(__hpux)
|
||||
else
|
||||
*envp++ = "TZ=GMT0";
|
||||
#endif
|
||||
*envp = 0;
|
||||
environ = envinit;
|
||||
}
|
||||
@ -1919,61 +1696,9 @@ cleanup(sig)
|
||||
(void) shutdown(net, 2);
|
||||
exit(1);
|
||||
# else /* NEWINIT */
|
||||
# ifdef CRAY
|
||||
static int incleanup = 0;
|
||||
register int t;
|
||||
int child_status; /* status of child process as returned by waitpid */
|
||||
int flags = WNOHANG|WUNTRACED;
|
||||
|
||||
/*
|
||||
* 1: Pick up the zombie, if we are being called
|
||||
* as the signal handler.
|
||||
* 2: If we are a nested cleanup(), return.
|
||||
* 3: Try to clean up TMPDIR.
|
||||
* 4: Fill in utmp with shutdown of process.
|
||||
* 5: Close down the network and pty connections.
|
||||
* 6: Finish up the TMPDIR cleanup, if needed.
|
||||
*/
|
||||
if (sig == SIGCHLD) {
|
||||
while (waitpid(-1, &child_status, flags) > 0)
|
||||
; /* VOID */
|
||||
/* Check if the child process was stopped
|
||||
* rather than exited. We want cleanup only if
|
||||
* the child has died.
|
||||
*/
|
||||
if (WIFSTOPPED(child_status)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
t = sigblock(sigmask(SIGCHLD));
|
||||
if (incleanup) {
|
||||
sigsetmask(t);
|
||||
return;
|
||||
}
|
||||
incleanup = 1;
|
||||
sigsetmask(t);
|
||||
#ifdef UNICOS7x
|
||||
if (secflag) {
|
||||
/*
|
||||
* We need to set ourselves back to a null
|
||||
* label to clean up.
|
||||
*/
|
||||
|
||||
setulvl(sysv.sy_minlvl);
|
||||
setucmp((long)0);
|
||||
}
|
||||
#endif /* UNICOS7x */
|
||||
|
||||
t = cleantmp(&wtmp);
|
||||
setutent(); /* just to make sure */
|
||||
# endif /* CRAY */
|
||||
rmut(line);
|
||||
close(pty);
|
||||
(void) shutdown(net, 2);
|
||||
# ifdef CRAY
|
||||
if (t == 0)
|
||||
cleantmp(&wtmp);
|
||||
# endif /* CRAY */
|
||||
exit(1);
|
||||
# endif /* NEWINT */
|
||||
#endif /* PARENT_DOES_UTMP */
|
||||
@ -2017,11 +1742,6 @@ utmp_sig_reset()
|
||||
(void) signal(SIGUSR1, func); /* reset handler to default */
|
||||
}
|
||||
|
||||
# ifdef __hpux
|
||||
# define sigoff() /* do nothing */
|
||||
# define sigon() /* do nothing */
|
||||
# endif
|
||||
|
||||
void
|
||||
utmp_sig_wait()
|
||||
{
|
||||
@ -2042,184 +1762,6 @@ utmp_sig_notify(pid)
|
||||
kill(pid, SIGUSR1);
|
||||
}
|
||||
|
||||
# ifdef CRAY
|
||||
static int gotsigjob = 0;
|
||||
|
||||
/*ARGSUSED*/
|
||||
void
|
||||
sigjob(sig)
|
||||
int sig;
|
||||
{
|
||||
register int jid;
|
||||
register struct jobtemp *jp;
|
||||
|
||||
while ((jid = waitjob(NULL)) != -1) {
|
||||
if (jid == 0) {
|
||||
return;
|
||||
}
|
||||
gotsigjob++;
|
||||
jobend(jid, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* jid_getutid:
|
||||
* called by jobend() before calling cleantmp()
|
||||
* to find the correct $TMPDIR to cleanup.
|
||||
*/
|
||||
|
||||
struct utmp *
|
||||
jid_getutid(jid)
|
||||
int jid;
|
||||
{
|
||||
struct utmp *cur = NULL;
|
||||
|
||||
setutent(); /* just to make sure */
|
||||
while (cur = getutent()) {
|
||||
if ( (cur->ut_type != NULL) && (jid == cur->ut_jid) ) {
|
||||
return(cur);
|
||||
}
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clean up the TMPDIR that login created.
|
||||
* The first time this is called we pick up the info
|
||||
* from the utmp. If the job has already gone away,
|
||||
* then we'll clean up and be done. If not, then
|
||||
* when this is called the second time it will wait
|
||||
* for the signal that the job is done.
|
||||
*/
|
||||
int
|
||||
cleantmp(wtp)
|
||||
register struct utmp *wtp;
|
||||
{
|
||||
struct utmp *utp;
|
||||
static int first = 1;
|
||||
register int mask, omask, ret;
|
||||
extern struct utmp *getutid P((const struct utmp *_Id));
|
||||
|
||||
|
||||
mask = sigmask(WJSIGNAL);
|
||||
|
||||
if (first == 0) {
|
||||
omask = sigblock(mask);
|
||||
while (gotsigjob == 0)
|
||||
sigpause(omask);
|
||||
return(1);
|
||||
}
|
||||
first = 0;
|
||||
setutent(); /* just to make sure */
|
||||
|
||||
utp = getutid(wtp);
|
||||
if (utp == 0) {
|
||||
syslog(LOG_ERR, "can't get /etc/utmp entry to clean TMPDIR");
|
||||
return(-1);
|
||||
}
|
||||
/*
|
||||
* Nothing to clean up if the user shell was never started.
|
||||
*/
|
||||
if (utp->ut_type != USER_PROCESS || utp->ut_jid == 0)
|
||||
return(1);
|
||||
|
||||
/*
|
||||
* Block the WJSIGNAL while we are in jobend().
|
||||
*/
|
||||
omask = sigblock(mask);
|
||||
ret = jobend(utp->ut_jid, utp->ut_tpath, utp->ut_user);
|
||||
sigsetmask(omask);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
int
|
||||
jobend(jid, path, user)
|
||||
register int jid;
|
||||
register char *path;
|
||||
register char *user;
|
||||
{
|
||||
static int saved_jid = 0;
|
||||
static int pty_saved_jid = 0;
|
||||
static char saved_path[sizeof(wtmp.ut_tpath)+1];
|
||||
static char saved_user[sizeof(wtmp.ut_user)+1];
|
||||
|
||||
/*
|
||||
* this little piece of code comes into play
|
||||
* only when ptyreconnect is used to reconnect
|
||||
* to an previous session.
|
||||
*
|
||||
* this is the only time when the
|
||||
* "saved_jid != jid" code is executed.
|
||||
*/
|
||||
|
||||
if ( saved_jid && saved_jid != jid ) {
|
||||
if (!path) { /* called from signal handler */
|
||||
pty_saved_jid = jid;
|
||||
} else {
|
||||
pty_saved_jid = saved_jid;
|
||||
}
|
||||
}
|
||||
|
||||
if (path) {
|
||||
strncpy(saved_path, path, sizeof(wtmp.ut_tpath));
|
||||
strncpy(saved_user, user, sizeof(wtmp.ut_user));
|
||||
saved_path[sizeof(saved_path)] = '\0';
|
||||
saved_user[sizeof(saved_user)] = '\0';
|
||||
}
|
||||
if (saved_jid == 0) {
|
||||
saved_jid = jid;
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* if the jid has changed, get the correct entry from the utmp file */
|
||||
|
||||
if ( saved_jid != jid ) {
|
||||
struct utmp *utp = NULL;
|
||||
struct utmp *jid_getutid();
|
||||
|
||||
utp = jid_getutid(pty_saved_jid);
|
||||
|
||||
if (utp == 0) {
|
||||
syslog(LOG_ERR, "Can't get /etc/utmp entry to clean TMPDIR");
|
||||
return(-1);
|
||||
}
|
||||
|
||||
cleantmpdir(jid, utp->ut_tpath, utp->ut_user);
|
||||
return(1);
|
||||
}
|
||||
|
||||
cleantmpdir(jid, saved_path, saved_user);
|
||||
return(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Fork a child process to clean up the TMPDIR
|
||||
*/
|
||||
cleantmpdir(jid, tpath, user)
|
||||
register int jid;
|
||||
register char *tpath;
|
||||
register char *user;
|
||||
{
|
||||
switch(fork()) {
|
||||
case -1:
|
||||
syslog(LOG_ERR, "TMPDIR cleanup(%s): fork() failed: %m",
|
||||
tpath);
|
||||
break;
|
||||
case 0:
|
||||
execl(CLEANTMPCMD, CLEANTMPCMD, user, tpath, (char *)0);
|
||||
syslog(LOG_ERR, "TMPDIR cleanup(%s): execl(%s) failed: %m",
|
||||
tpath, CLEANTMPCMD);
|
||||
exit(1);
|
||||
default:
|
||||
/*
|
||||
* Forget about child. We will exit, and
|
||||
* /etc/init will pick it up.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
# endif /* CRAY */
|
||||
#endif /* defined(PARENT_DOES_UTMP) && !defined(NEWINIT) */
|
||||
|
||||
/*
|
||||
@ -2259,7 +1801,7 @@ rmut()
|
||||
} /* end of rmut */
|
||||
#endif
|
||||
|
||||
#if !defined(UTMPX) && !(defined(CRAY) || defined(__hpux)) && BSD <= 43
|
||||
#if !defined(UTMPX) && BSD <= 43
|
||||
void
|
||||
rmut()
|
||||
{
|
||||
@ -2310,43 +1852,4 @@ rmut()
|
||||
(void) chmod(line, 0666);
|
||||
(void) chown(line, 0, 0);
|
||||
} /* end of rmut */
|
||||
#endif /* CRAY */
|
||||
|
||||
#ifdef __hpux
|
||||
rmut (line)
|
||||
char *line;
|
||||
{
|
||||
struct utmp utmp;
|
||||
struct utmp *utptr;
|
||||
int fd; /* for /etc/wtmp */
|
||||
|
||||
utmp.ut_type = USER_PROCESS;
|
||||
(void) strncpy(utmp.ut_id, line+12, sizeof(utmp.ut_id));
|
||||
(void) setutent();
|
||||
utptr = getutid(&utmp);
|
||||
/* write it out only if it exists */
|
||||
if (utptr) {
|
||||
utptr->ut_type = DEAD_PROCESS;
|
||||
utptr->ut_time = time((long *) 0);
|
||||
(void) pututline(utptr);
|
||||
/* set wtmp entry if wtmp file exists */
|
||||
if ((fd = open(wtmpf, O_WRONLY | O_APPEND)) >= 0) {
|
||||
(void) write(fd, utptr, sizeof(utmp));
|
||||
(void) close(fd);
|
||||
}
|
||||
}
|
||||
(void) endutent();
|
||||
|
||||
(void) chmod(line, 0666);
|
||||
(void) chown(line, 0, 0);
|
||||
line[14] = line[13];
|
||||
line[13] = line[12];
|
||||
line[8] = 'm';
|
||||
line[9] = '/';
|
||||
line[10] = 'p';
|
||||
line[11] = 't';
|
||||
line[12] = 'y';
|
||||
(void) chmod(line, 0666);
|
||||
(void) chown(line, 0, 0);
|
||||
}
|
||||
#endif
|
||||
|
@ -243,29 +243,6 @@ have been idle for some period of time to determine
|
||||
if the client is still there, so that idle connections
|
||||
from machines that have crashed or can no longer
|
||||
be reached may be cleaned up.
|
||||
.It Fl r Ar lowpty-highpty
|
||||
This option is only enabled when
|
||||
.Nm
|
||||
is compiled for
|
||||
.Dv UNICOS .
|
||||
It specifies an inclusive range of pseudo-terminal devices to
|
||||
use. If the system has sysconf variable
|
||||
.Dv _SC_CRAY_NPTY
|
||||
configured, the default pty search range is 0 to
|
||||
.Dv _SC_CRAY_NPTY ;
|
||||
otherwise, the default range is 0 to 128. Either
|
||||
.Ar lowpty
|
||||
or
|
||||
.Ar highpty
|
||||
may be omitted to allow changing
|
||||
either end of the search range. If
|
||||
.Ar lowpty
|
||||
is omitted, the - character is still required so that
|
||||
.Nm
|
||||
can differentiate
|
||||
.Ar highpty
|
||||
from
|
||||
.Ar lowpty .
|
||||
.It Fl s
|
||||
This option is only enabled if
|
||||
.Nm
|
||||
@ -543,8 +520,6 @@ will be displayed to both console and remote logins.
|
||||
.Bl -tag -width /usr/ucb/bftp -compact
|
||||
.It Pa /etc/services
|
||||
.It Pa /etc/gettytab
|
||||
.It Pa /etc/inittab
|
||||
(UNICOS systems only)
|
||||
.It Pa /etc/iptos
|
||||
(if supported)
|
||||
.It Pa /usr/ucb/bftp
|
||||
|
@ -48,15 +48,6 @@ static const char rcsid[] =
|
||||
#include "telnetd.h"
|
||||
#include "pathnames.h"
|
||||
|
||||
#if defined(_SC_CRAY_SECURE_SYS) && !defined(SCM_SECURITY)
|
||||
/*
|
||||
* UNICOS 6.0/6.1 do not have SCM_SECURITY defined, so we can
|
||||
* use it to tell us to turn off all the socket security code,
|
||||
* since that is only used in UNICOS 7.0 and later.
|
||||
*/
|
||||
# undef _SC_CRAY_SECURE_SYS
|
||||
#endif
|
||||
|
||||
#include <err.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
@ -65,30 +56,6 @@ static const char rcsid[] =
|
||||
#include <paths.h>
|
||||
#include <utmp.h>
|
||||
|
||||
#if defined(_SC_CRAY_SECURE_SYS)
|
||||
#include <sys/sysv.h>
|
||||
#include <sys/secdev.h>
|
||||
# ifdef SO_SEC_MULTI /* 8.0 code */
|
||||
#include <sys/secparm.h>
|
||||
#include <sys/usrv.h>
|
||||
# endif /* SO_SEC_MULTI */
|
||||
|
||||
/* wrapper for KAME-special getnameinfo() */
|
||||
#ifndef NI_WITHSCOPEID
|
||||
#define NI_WITHSCOPEID 0
|
||||
#endif
|
||||
|
||||
int secflag;
|
||||
char tty_dev[16];
|
||||
struct secdev dv;
|
||||
struct sysv sysv;
|
||||
# ifdef SO_SEC_MULTI /* 8.0 code */
|
||||
struct socksec ss;
|
||||
# else /* SO_SEC_MULTI */ /* 7.0 code */
|
||||
struct socket_security ss;
|
||||
# endif /* SO_SEC_MULTI */
|
||||
#endif /* _SC_CRAY_SECURE_SYS */
|
||||
|
||||
#if defined(AUTHENTICATION)
|
||||
#include <libtelnet/auth.h>
|
||||
int auth_level = 0;
|
||||
@ -144,11 +111,6 @@ void startslave(char *host, int autologin, char *autoname);
|
||||
|
||||
int hostinfo = 1; /* do we print login banner? */
|
||||
|
||||
#ifdef CRAY
|
||||
extern int newmap; /* nonzero if \n maps to ^M^J */
|
||||
int lowpty = 0, highpty; /* low, high pty numbers */
|
||||
#endif /* CRAY */
|
||||
|
||||
int debug = 0;
|
||||
int keepalive = 1;
|
||||
char *altlogin;
|
||||
@ -178,15 +140,9 @@ char valid_opts[] = {
|
||||
#ifdef ENCRYPTION
|
||||
'e', ':',
|
||||
#endif
|
||||
#if defined(CRAY) && defined(NEWINIT)
|
||||
'I', ':',
|
||||
#endif
|
||||
#ifdef LINEMODE
|
||||
'l',
|
||||
#endif
|
||||
#ifdef CRAY
|
||||
'r', ':',
|
||||
#endif
|
||||
#ifdef SecurID
|
||||
's',
|
||||
#endif
|
||||
@ -229,14 +185,6 @@ main(argc, argv)
|
||||
|
||||
linemode=1; /*Default to mode that works on bulk of clients*/
|
||||
|
||||
#ifdef CRAY
|
||||
/*
|
||||
* Get number of pty's before trying to process options,
|
||||
* which may include changing pty range.
|
||||
*/
|
||||
highpty = getnpty();
|
||||
#endif /* CRAY */
|
||||
|
||||
while ((ch = getopt(argc, argv, valid_opts)) != -1) {
|
||||
switch(ch) {
|
||||
|
||||
@ -320,15 +268,6 @@ main(argc, argv)
|
||||
hostinfo = 0;
|
||||
break;
|
||||
|
||||
#if defined(CRAY) && defined(NEWINIT)
|
||||
case 'I':
|
||||
{
|
||||
extern char *gen_id;
|
||||
gen_id = optarg;
|
||||
break;
|
||||
}
|
||||
#endif /* defined(CRAY) && defined(NEWINIT) */
|
||||
|
||||
#ifdef LINEMODE
|
||||
case 'l':
|
||||
alwayslinemode = 1;
|
||||
@ -351,34 +290,6 @@ main(argc, argv)
|
||||
altlogin = optarg;
|
||||
break;
|
||||
|
||||
#ifdef CRAY
|
||||
case 'r':
|
||||
{
|
||||
char *strchr();
|
||||
char *c;
|
||||
|
||||
/*
|
||||
* Allow the specification of alterations
|
||||
* to the pty search range. It is legal to
|
||||
* specify only one, and not change the
|
||||
* other from its default.
|
||||
*/
|
||||
c = strchr(optarg, '-');
|
||||
if (c) {
|
||||
*c++ = '\0';
|
||||
highpty = atoi(c);
|
||||
}
|
||||
if (*optarg != '\0')
|
||||
lowpty = atoi(optarg);
|
||||
if ((lowpty > highpty) || (lowpty < 0) ||
|
||||
(highpty > 32767)) {
|
||||
usage();
|
||||
/* NOT REACHED */
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif /* CRAY */
|
||||
|
||||
#ifdef SecurID
|
||||
case 's':
|
||||
/* SecurID required */
|
||||
@ -489,60 +400,6 @@ main(argc, argv)
|
||||
/* NOT REACHED */
|
||||
}
|
||||
|
||||
#if defined(_SC_CRAY_SECURE_SYS)
|
||||
secflag = sysconf(_SC_CRAY_SECURE_SYS);
|
||||
|
||||
/*
|
||||
* Get socket's security label
|
||||
*/
|
||||
if (secflag) {
|
||||
int szss = sizeof(ss);
|
||||
#ifdef SO_SEC_MULTI /* 8.0 code */
|
||||
int sock_multi;
|
||||
int szi = sizeof(int);
|
||||
#endif /* SO_SEC_MULTI */
|
||||
|
||||
memset((char *)&dv, 0, sizeof(dv));
|
||||
|
||||
if (getsysv(&sysv, sizeof(struct sysv)) != 0)
|
||||
err(1, "getsysv");
|
||||
|
||||
/*
|
||||
* Get socket security label and set device values
|
||||
* {security label to be set on ttyp device}
|
||||
*/
|
||||
#ifdef SO_SEC_MULTI /* 8.0 code */
|
||||
if ((getsockopt(0, SOL_SOCKET, SO_SECURITY,
|
||||
(char *)&ss, &szss) < 0) ||
|
||||
(getsockopt(0, SOL_SOCKET, SO_SEC_MULTI,
|
||||
(char *)&sock_multi, &szi) < 0)) {
|
||||
err(1, "getsockopt");
|
||||
} else {
|
||||
dv.dv_actlvl = ss.ss_actlabel.lt_level;
|
||||
dv.dv_actcmp = ss.ss_actlabel.lt_compart;
|
||||
if (!sock_multi) {
|
||||
dv.dv_minlvl = dv.dv_maxlvl = dv.dv_actlvl;
|
||||
dv.dv_valcmp = dv.dv_actcmp;
|
||||
} else {
|
||||
dv.dv_minlvl = ss.ss_minlabel.lt_level;
|
||||
dv.dv_maxlvl = ss.ss_maxlabel.lt_level;
|
||||
dv.dv_valcmp = ss.ss_maxlabel.lt_compart;
|
||||
}
|
||||
dv.dv_devflg = 0;
|
||||
}
|
||||
#else /* SO_SEC_MULTI */ /* 7.0 code */
|
||||
if (getsockopt(0, SOL_SOCKET, SO_SECURITY,
|
||||
(char *)&ss, &szss) >= 0) {
|
||||
dv.dv_actlvl = ss.ss_slevel;
|
||||
dv.dv_actcmp = ss.ss_compart;
|
||||
dv.dv_minlvl = ss.ss_minlvl;
|
||||
dv.dv_maxlvl = ss.ss_maxlvl;
|
||||
dv.dv_valcmp = ss.ss_maxcmp;
|
||||
}
|
||||
#endif /* SO_SEC_MULTI */
|
||||
}
|
||||
#endif /* _SC_CRAY_SECURE_SYS */
|
||||
|
||||
openlog("telnetd", LOG_PID | LOG_ODELAY, LOG_DAEMON);
|
||||
fromlen = sizeof (from);
|
||||
if (getpeername(0, (struct sockaddr *)&from, &fromlen) < 0) {
|
||||
@ -595,9 +452,6 @@ usage()
|
||||
fprintf(stderr, " [-edebug]");
|
||||
#endif
|
||||
fprintf(stderr, " [-h]");
|
||||
#if defined(CRAY) && defined(NEWINIT)
|
||||
fprintf(stderr, " [-Iinitid]");
|
||||
#endif
|
||||
#if defined(LINEMODE) && defined(KLUDGELINEMODE)
|
||||
fprintf(stderr, " [-k]");
|
||||
#endif
|
||||
@ -605,9 +459,6 @@ usage()
|
||||
fprintf(stderr, " [-l]");
|
||||
#endif
|
||||
fprintf(stderr, " [-n]");
|
||||
#ifdef CRAY
|
||||
fprintf(stderr, " [-r[lowpty]-[highpty]]");
|
||||
#endif
|
||||
fprintf(stderr, "\n\t");
|
||||
#ifdef SecurID
|
||||
fprintf(stderr, " [-s]");
|
||||
@ -861,22 +712,6 @@ doit(who)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(_SC_CRAY_SECURE_SYS)
|
||||
/*
|
||||
* set ttyp line security label
|
||||
*/
|
||||
if (secflag) {
|
||||
char slave_dev[16];
|
||||
|
||||
sprintf(tty_dev, "%spty/%03d", _PATH_DEV, ptynum);
|
||||
if (setdevs(tty_dev, &dv) < 0)
|
||||
fatal(net, "cannot set pty security");
|
||||
sprintf(slave_dev, "%sp%03d", _PATH_TTY, ptynum);
|
||||
if (setdevs(slave_dev, &dv) < 0)
|
||||
fatal(net, "cannot set tty security");
|
||||
}
|
||||
#endif /* _SC_CRAY_SECURE_SYS */
|
||||
|
||||
/* get name of connected client */
|
||||
if (realhostname_sa(remote_hostname, sizeof(remote_hostname) - 1,
|
||||
who, who->sa_len) == HOSTNAME_INVALIDADDR && registerd_host_only)
|
||||
@ -907,35 +742,11 @@ doit(who)
|
||||
level = getterminaltype(user_name);
|
||||
setenv("TERM", terminaltype ? terminaltype : "network", 1);
|
||||
|
||||
#if defined(_SC_CRAY_SECURE_SYS)
|
||||
if (secflag) {
|
||||
if (setulvl(dv.dv_actlvl) < 0)
|
||||
fatal(net,"cannot setulvl()");
|
||||
if (setucmp(dv.dv_actcmp) < 0)
|
||||
fatal(net, "cannot setucmp()");
|
||||
}
|
||||
#endif /* _SC_CRAY_SECURE_SYS */
|
||||
|
||||
telnet(net, pty, remote_hostname); /* begin server process */
|
||||
|
||||
/*NOTREACHED*/
|
||||
} /* end of doit */
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5) && defined(UNICOS50)
|
||||
int
|
||||
Xterm_output(ibufp, obuf, icountp, ocount)
|
||||
char **ibufp, *obuf;
|
||||
int *icountp, ocount;
|
||||
{
|
||||
int ret;
|
||||
ret = term_output(*ibufp, obuf, *icountp, ocount);
|
||||
*ibufp += *icountp;
|
||||
*icountp = 0;
|
||||
return(ret);
|
||||
}
|
||||
#define term_output Xterm_output
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) && defined(UNICOS50) */
|
||||
|
||||
/*
|
||||
* Main loop. Select from pty and network, and
|
||||
* hand data to telnet receiver finite state machine.
|
||||
@ -1076,9 +887,6 @@ telnet(f, p, host)
|
||||
|
||||
(void) ioctl(f, FIONBIO, (char *)&on);
|
||||
(void) ioctl(p, FIONBIO, (char *)&on);
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
init_termdriver(f, p, interrupt, sendbrk);
|
||||
#endif
|
||||
|
||||
#if defined(SO_OOBINLINE)
|
||||
(void) setsockopt(net, SOL_SOCKET, SO_OOBINLINE,
|
||||
@ -1098,21 +906,6 @@ telnet(f, p, host)
|
||||
|
||||
(void) signal(SIGCHLD, cleanup);
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
/*
|
||||
* Cray-2 will send a signal when pty modes are changed by slave
|
||||
* side. Set up signal handler now.
|
||||
*/
|
||||
if ((int)signal(SIGUSR1, termstat) < 0)
|
||||
warn("signal");
|
||||
else if (ioctl(p, TCSIGME, (char *)SIGUSR1) < 0)
|
||||
warn("ioctl:TCSIGME");
|
||||
/*
|
||||
* Make processing loop check terminal characteristics early on.
|
||||
*/
|
||||
termstat();
|
||||
#endif
|
||||
|
||||
#ifdef TIOCNOTTY
|
||||
{
|
||||
register int t;
|
||||
@ -1124,11 +917,6 @@ telnet(f, p, host)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CRAY) && defined(NEWINIT) && defined(TIOCSCTTY)
|
||||
(void) setsid();
|
||||
ioctl(p, TIOCSCTTY, 0);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Show banner that getty never gave.
|
||||
*
|
||||
@ -1137,11 +925,6 @@ telnet(f, p, host)
|
||||
* other pty --> client data.
|
||||
*/
|
||||
|
||||
#if !defined(CRAY) || !defined(NEWINIT)
|
||||
if (getenv("USER"))
|
||||
hostinfo = 0;
|
||||
#endif
|
||||
|
||||
if (getent(defent, "default") == 1) {
|
||||
char *Getstr();
|
||||
char *cp=defstrs;
|
||||
@ -1190,10 +973,6 @@ telnet(f, p, host)
|
||||
if (ncc < 0 && pcc < 0)
|
||||
break;
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
if (needtermstat)
|
||||
_termstat();
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
FD_ZERO(&ibits);
|
||||
FD_ZERO(&obits);
|
||||
FD_ZERO(&xbits);
|
||||
@ -1329,7 +1108,6 @@ telnet(f, p, host)
|
||||
} else {
|
||||
if (pcc <= 0)
|
||||
break;
|
||||
#if !defined(CRAY2) || !defined(UNICOS5)
|
||||
#ifdef LINEMODE
|
||||
/*
|
||||
* If ioctl from pty, pass it through net
|
||||
@ -1375,16 +1153,6 @@ telnet(f, p, host)
|
||||
}
|
||||
pcc--;
|
||||
ptyip = ptyibuf+1;
|
||||
#else /* defined(CRAY2) && defined(UNICOS5) */
|
||||
if (!uselinemode) {
|
||||
unpcc = pcc;
|
||||
unptyip = ptyibuf;
|
||||
pcc = term_output(&unptyip, ptyibuf2,
|
||||
&unpcc, BUFSIZ);
|
||||
ptyip = ptyibuf2;
|
||||
} else
|
||||
ptyip = ptyibuf;
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
}
|
||||
}
|
||||
|
||||
@ -1394,11 +1162,6 @@ telnet(f, p, host)
|
||||
c = *ptyip++ & 0377, pcc--;
|
||||
if (c == IAC)
|
||||
output_data("%c", c);
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
else if (c == '\n' &&
|
||||
my_state_is_wont(TELOPT_BINARY) && newmap)
|
||||
output_data("\r");
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
output_data("%c", c);
|
||||
if ((c == '\r') && (my_state_is_wont(TELOPT_BINARY))) {
|
||||
if (pcc > 0 && ((*ptyip & 0377) == '\n')) {
|
||||
@ -1408,17 +1171,6 @@ telnet(f, p, host)
|
||||
output_data("%c", '\0');
|
||||
}
|
||||
}
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
/*
|
||||
* If chars were left over from the terminal driver,
|
||||
* note their existence.
|
||||
*/
|
||||
if (!uselinemode && unpcc) {
|
||||
pcc = unpcc;
|
||||
unpcc = 0;
|
||||
ptyip = unptyip;
|
||||
}
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
|
||||
if (FD_ISSET(f, &obits) && (nfrontp - nbackp) > 0)
|
||||
netflush();
|
||||
|
@ -56,10 +56,6 @@ int def_row = 0, def_col = 0;
|
||||
static int _terminit = 0;
|
||||
#endif /* LINEMODE */
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
int newmap = 1; /* nonzero if \n maps to ^M^J */
|
||||
#endif
|
||||
|
||||
#ifdef LINEMODE
|
||||
/*
|
||||
* localstat
|
||||
@ -142,14 +138,6 @@ localstat()
|
||||
{
|
||||
int need_will_echo = 0;
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
/*
|
||||
* Keep track of that ol' CR/NL mapping while we're in the
|
||||
* neighborhood.
|
||||
*/
|
||||
newmap = tty_isnewmap();
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
|
||||
/*
|
||||
* Check for changes to flow control if client supports it.
|
||||
*/
|
||||
@ -588,34 +576,10 @@ clientstat(code, parm1, parm2)
|
||||
break;
|
||||
} /* end of switch */
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
/*
|
||||
* Just in case of the likely event that we changed the pty state.
|
||||
*/
|
||||
rcv_ioctl();
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
|
||||
netflush();
|
||||
|
||||
} /* end of clientstat */
|
||||
|
||||
#if defined(CRAY2) && defined(UNICOS5)
|
||||
void
|
||||
termstat()
|
||||
{
|
||||
needtermstat = 1;
|
||||
}
|
||||
|
||||
void
|
||||
_termstat()
|
||||
{
|
||||
needtermstat = 0;
|
||||
init_termbuf();
|
||||
localstat();
|
||||
rcv_ioctl();
|
||||
}
|
||||
#endif /* defined(CRAY2) && defined(UNICOS5) */
|
||||
|
||||
#ifdef LINEMODE
|
||||
/*
|
||||
* defer_terminit
|
||||
|
Loading…
x
Reference in New Issue
Block a user