Hi. Here are the relevant details about the setup: SunOS 4.1.4 gcc 2.7.2.2 tcp wrappers 7.5 egd 0.6 (doesn't really come into play at compile time) The following only pertains to the compilation (and linking) stage. Code and patches are SunOS specific. -- The following functions are missing in SunOS: strerror, atexit, memmove. I wrote simple replacements in term of on_exit and bcopy and linked them without problem when necessary. (See code at end of mail.) -- The mail directory could not be deduced from any header file. In addition, the MAIL environment variable was also not defined when running configure. As a consequence, MAIL_DIRECTORY was just #undef'ined in config.h and compilation of sshd.c failed. I recommend adding and documenting an explicit --maildir configure option. -- In packet.c, some IP TOS related constants are undefined. I assumed the associated setsockopt calls were optional, but I may be wrong. (See patch at end of mail.) -- In ssh-agent.c, optind needs to be declared explicitly (it is not in any header file). (See patch at end of mail.) -- In scp.c, the SA_RESTART constant is undefined. SunOS is already based on BSD signal semantics; do they also apply when using signal functions from the POSIX interface? (See patch at end of mail.) That's it for now. Charles =========================================================================> strerror.c <=extern int sys_nerr; extern char *sys_errlist[]; char * strerror(e) int e; { return (e >= 0 && e < sys_nerr) ? sys_errlist[e] : "unlisted error" ; } ==> atexit.c <=#include <sys/types.h> extern int on_exit(void (*f)(), caddr_t a); int atexit(f) void (*f)(void); { return on_exit(f, 0) ? 0 : -1; } ==> memmove.c <=extern void bcopy(char *b1, char *b2, int l); void * memmove(d, s, l) char *d; char *s; int l; { bcopy(s, d, l); return d; } =======================================================================--- packet.c.orig-1.2.2 Sat Jan 22 17:38:00 2000 +++ packet.c Sun Feb 13 13:06:04 2000 @@ -796,22 +796,28 @@ * Set IP options for an interactive connection. Use * IPTOS_LOWDELAY and TCP_NODELAY. */ +#ifdef IPTOS_LOWDELAY int lowdelay = IPTOS_LOWDELAY; if (setsockopt(connection_in, IPPROTO_IP, IP_TOS, (void *) &lowdelay, sizeof(lowdelay)) < 0) error("setsockopt IPTOS_LOWDELAY: %.100s", strerror(errno)); +#endif /* IPTOS_LOWDELAY */ +#ifdef TCP_NODELAY if (setsockopt(connection_in, IPPROTO_TCP, TCP_NODELAY, (void *) &on, sizeof(on)) < 0) error("setsockopt TCP_NODELAY: %.100s", strerror(errno)); +#endif /* TCP_NODELAY */ } else { /* * Set IP options for a non-interactive connection. Use * IPTOS_THROUGHPUT. */ +#ifdef IPTOS_THROUGHPUT int throughput = IPTOS_THROUGHPUT; if (setsockopt(connection_in, IPPROTO_IP, IP_TOS, (void *) &throughput, sizeof(throughput)) < 0) error("setsockopt IPTOS_THROUGHPUT: %.100s", strerror(errno)); +#endif /* IPTOS_THROUGHPUT */ } } =======================================================================--- ssh-agent.c.orig-1.2.2 Mon Jan 3 07:41:05 2000 +++ ssh-agent.c Sun Feb 13 15:35:23 2000 @@ -507,6 +507,7 @@ struct sockaddr_un sunaddr; pid_t pid; char *shell, *format, *pidstr, pidstrbuf[1 + 3 * sizeof pid]; + extern int optind; /* check if RSA support exists */ if (rsa_alive() == 0) { =======================================================================--- scp.c.orig-1.2.2 Thu Jan 13 23:45:51 2000 +++ scp.c Sun Feb 13 15:58:20 2000 @@ -1229,7 +1229,10 @@ struct sigaction sa; sa.sa_handler = updateprogressmeter; sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART; + sa.sa_flags = 0; +#ifdef SA_RESTART + sa.sa_flags |= SA_RESTART; +#endif /* SA_RESTART */ sigaction(SIGALRM, &sa, NULL); alarmtimer(1); } else if (flag == 1) { ========================================================================