diff --git a/appl/ftp/ftp/ftp.c b/appl/ftp/ftp/ftp.c index 074148198..2fcb5ea2d 100644 --- a/appl/ftp/ftp/ftp.c +++ b/appl/ftp/ftp/ftp.c @@ -115,7 +115,7 @@ hookup(char *host, int port) code = -1; goto bad; } -#ifdef IP_TOS +#if defined(IP_TOS) && defined(SETSOCKOPT) tos = IPTOS_LOWDELAY; if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0) warn("setsockopt TOS (ignored)"); @@ -141,7 +141,7 @@ hookup(char *host, int port) code = -1; goto bad; } -#ifdef SO_OOBINLINE +#if defined(SO_OOBINLINE) && defined(HAVE_SETSOCKOPT) { int on = 1; @@ -572,7 +572,7 @@ copy_stream(FILE *from, FILE *to) static void set_buffer_size(int fd, int read) { -#if defined(SO_RCVBUF) && defined(SO_SNDBUF) +#if defined(SO_RCVBUF) && defined(SO_SNDBUF) && defined(HAVE_SETSOCKOPT) size_t size = 1048576; while(size >= 131072 && setsockopt(fd, SOL_SOCKET, read ? SO_RCVBUF : SO_SNDBUF, @@ -1132,10 +1132,12 @@ initconn(void) perror("ftp: socket"); return(1); } +#if defined(SO_DEBUG) && defined(HAVE_SETSOCKOPT) if ((options & SO_DEBUG) && setsockopt(data, SOL_SOCKET, SO_DEBUG, (char *)&on, sizeof (on)) < 0) perror("ftp: setsockopt (ignored)"); +#endif if (command("PASV") != COMPLETE) { printf("Passive mode refused.\n"); goto bad; @@ -1174,7 +1176,7 @@ initconn(void) perror("ftp: connect"); goto bad; } -#ifdef IP_TOS +#if defined(IP_TOS) && defined(HAVE_SETSOCKOPT) on = IPTOS_THROUGHPUT; if (setsockopt(data, IPPROTO_IP, IP_TOS, (char *)&on, sizeof(int)) < 0) @@ -1196,18 +1198,22 @@ noport: sendport = 1; return (1); } +#if defined(SO_REUSEADDR) && defined(HAVE_SETSOCKOPT) if (!sendport) if (setsockopt(data, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof (on)) < 0) { warn("setsockopt (reuse address)"); goto bad; } +#endif if (bind(data, (struct sockaddr *)&data_addr, sizeof (data_addr)) < 0) { warn("bind"); goto bad; } +#if defined(SO_DEBUG) && defined(HAVE_SETSOCKOPT) if (options & SO_DEBUG && setsockopt(data, SOL_SOCKET, SO_DEBUG, (char *)&on, sizeof (on)) < 0) warn("setsockopt (ignored)"); +#endif len = sizeof (data_addr); if (getsockname(data, (struct sockaddr *)&data_addr, &len) < 0) { warn("getsockname"); @@ -1234,7 +1240,7 @@ noport: } if (tmpno) sendport = 1; -#ifdef IP_TOS +#if defined(IP_TOS) && defined(HAVE_SETSOCKOPT) on = IPTOS_THROUGHPUT; if (setsockopt(data, IPPROTO_IP, IP_TOS, (char *)&on, sizeof(int)) < 0) warn("setsockopt TOS (ignored)"); @@ -1264,7 +1270,7 @@ dataconn(char *lmode) } close(data); data = s; -#ifdef IP_TOS +#if defined(IP_TOS) && defined(HAVE_SETSOCKOPT) tos = IPTOS_THROUGHPUT; if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0) warn("setsockopt TOS (ignored)"); diff --git a/appl/ftp/ftpd/ftpd.c b/appl/ftp/ftpd/ftpd.c index e852822b8..b05abd2af 100644 --- a/appl/ftp/ftpd/ftpd.c +++ b/appl/ftp/ftpd/ftpd.c @@ -43,18 +43,21 @@ RCSID("$Id$"); /* * FTP server. */ +#ifdef HAVE_SYS_TYPES_H +#include +#endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif -#ifdef HAVE_SYS_IOCTL_H -#include -#endif #ifdef HAVE_SYS_SOCKET_H #include #endif +#ifdef HAVE_SYS_IOCTL_H +#include +#endif #ifdef HAVE_SYS_TIME_H #include #endif @@ -308,15 +311,15 @@ main(int argc, char **argv) auth_level = parse_auth_level(optarg); break; case 'd': - debug = 1; - break; + debug = 1; + break; case 'i': not_inetd = 1; break; case 'l': - logging++; /* > 1 == extra logging */ - break; + logging++; /* > 1 == extra logging */ + break; case 'p': sp = getservbyname(optarg, "tcp"); @@ -330,16 +333,16 @@ main(int argc, char **argv) break; case 't': - ftpd_timeout = atoi(optarg); - if (maxtimeout < ftpd_timeout) - maxtimeout = ftpd_timeout; - break; + ftpd_timeout = atoi(optarg); + if (maxtimeout < ftpd_timeout) + maxtimeout = ftpd_timeout; + break; case 'T': - maxtimeout = atoi(optarg); - if (ftpd_timeout > maxtimeout) - ftpd_timeout = maxtimeout; - break; + maxtimeout = atoi(optarg); + if (ftpd_timeout > maxtimeout) + ftpd_timeout = maxtimeout; + break; case 'u': { @@ -347,19 +350,19 @@ main(int argc, char **argv) val = strtol(optarg, &optarg, 8); if (*optarg != '\0' || val < 0) - warnx("bad value for -u"); + warnx("bad value for -u"); else - defumask = val; + defumask = val; break; } case 'v': - debug = 1; - break; + debug = 1; + break; default: - warnx("unknown flag -%c ignored", argv[optind-1][0]); - break; + warnx("unknown flag -%c ignored", argv[optind-1][0]); + break; } } @@ -382,7 +385,7 @@ main(int argc, char **argv) syslog(LOG_ERR, "getsockname (%s): %m",argv[0]); exit(1); } -#ifdef IP_TOS +#if defined(IP_TOS) && defined(HAVE_SETSOCKOPT) tos = IPTOS_LOWDELAY; if (setsockopt(0, IPPROTO_IP, IP_TOS, (void *)&tos, sizeof(int)) < 0) syslog(LOG_WARNING, "setsockopt (IP_TOS): %m"); @@ -403,7 +406,7 @@ main(int argc, char **argv) auth_init(); /* Try to handle urgent data inline */ -#ifdef SO_OOBINLINE +#if defined(SO_OOBINLINE) && defined(HAVE_SETSOCKOPT) if (setsockopt(0, SOL_SOCKET, SO_OOBINLINE, (void *)&on, sizeof(on)) < 0) syslog(LOG_ERR, "setsockopt: %m"); @@ -785,9 +788,9 @@ pass(char *passwd) memset (passwd, 0, strlen(passwd)); /* - * If rval == 1, the user failed the authentication check - * above. If rval == 0, either Kerberos or local authentication - * succeeded. + * If rval == 1, the user failed the authentication + * check above. If rval == 0, either Kerberos or + * local authentication succeeded. */ if (rval) { reply(530, "Login incorrect."); @@ -815,7 +818,7 @@ pass(char *passwd) static void set_buffer_size(int fd, int read) { -#if defined(SO_RCVBUF) && defined(SO_SNDBUF) +#if defined(SO_RCVBUF) && defined(SO_SNDBUF) && defined(HAVE_SETSOCKOPT) size_t size = 1048576; while(size >= 131072 && setsockopt(fd, SOL_SOCKET, read ? SO_RCVBUF : SO_SNDBUF, @@ -1052,9 +1055,11 @@ getdatasock(char *mode) s = socket(AF_INET, SOCK_STREAM, 0); if (s < 0) goto bad; +#if defined(SO_REUSEADDR) && defined(HAVE_SETSOCKOPT) if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *) &on, sizeof(on)) < 0) goto bad; +#endif /* anchor socket to avoid multi-homing problems */ data_source.sin_family = AF_INET; data_source.sin_addr = ctrl_addr.sin_addr; @@ -1067,7 +1072,7 @@ getdatasock(char *mode) sleep(tries); } seteuid((uid_t)pw->pw_uid); -#ifdef IP_TOS +#if defined(IP_TOS) && defined(HAVE_SETSOCKOPT) on = IPTOS_THROUGHPUT; if (setsockopt(s, IPPROTO_IP, IP_TOS, (void *)&on, sizeof(int)) < 0) syslog(LOG_WARNING, "setsockopt (IP_TOS): %m"); @@ -1108,7 +1113,7 @@ dataconn(char *name, off_t size, char *mode) } close(pdata); pdata = s; -#ifdef IP_TOS +#if defined(IP_TOS) && defined(HAVE_SETSOCKOPT) tos = IPTOS_THROUGHPUT; setsockopt(s, IPPROTO_IP, IP_TOS, (void *)&tos, sizeof(int)); @@ -1808,7 +1813,6 @@ send_file_list(char *whichf) int simple = 0; int freeglob = 0; glob_t gl; - char buf[MaxPathLen]; if (strpbrk(whichf, "~{[*?") != NULL) { diff --git a/appl/kx/common.c b/appl/kx/common.c index a977406d5..1024f6539 100644 --- a/appl/kx/common.c +++ b/appl/kx/common.c @@ -183,7 +183,7 @@ get_xsockets (int *unix_socket, int *tcp_socket) close (unixfd); return -1; } -#ifdef TCP_NODELAY +#if defined(TCP_NODELAY) && defined(HAVE_SETSOCKOPT) setsockopt (tcpfd, IPPROTO_TCP, TCP_NODELAY, (void *)&one, sizeof(one)); #endif @@ -326,6 +326,9 @@ suspicious_address (int sock, struct sockaddr_in addr) int len = sizeof(data); return addr.sin_addr.s_addr != htonl(INADDR_LOOPBACK) +#if defined(IP_OPTIONS) && defined(HAVE_GETSOCKOPT) || getsockopt (sock, IPPROTO_IP, IP_OPTIONS, data, &len) < 0 - || len != 0; + || len != 0 +#endif + ; } diff --git a/appl/kx/kx.c b/appl/kx/kx.c index f08367038..bd87051ee 100644 --- a/appl/kx/kx.c +++ b/appl/kx/kx.c @@ -138,7 +138,7 @@ connect_host (char *host, char *user, des_cblock *key, return -1; } -#ifdef TCP_NODELAY +#if defined(TCP_NODELAY) && defined(HAVE_SETSOCKOPT) setsockopt (s, IPPROTO_TCP, TCP_NODELAY, (void *)&one, sizeof(one)); #endif @@ -164,7 +164,7 @@ connect_host (char *host, char *user, des_cblock *key, status = krb_sendauth (KOPT_DO_MUTUAL, s, &text, "rcmd", host, krb_realmofhost (host), getpid(), &msg, &cred, schedule, - &thisaddr, &thataddr, KXVERSION); + &thisaddr, &thataddr, KX_VERSION); if (status != KSUCCESS) { fprintf (stderr, "%s: %s: %s\n", prog, host, krb_get_err_text(status)); @@ -435,7 +435,7 @@ doit (char *host, char *user, int passivep, int debugp, int tcpp) strerror(errno)); return 1; } -#ifdef TCP_NODELAY +#if defined(TCP_NODELAY) && defined(HAVE_SETSOCKOPT) setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (void *)&one, sizeof(one)); #endif ++nchild; diff --git a/appl/kx/kxd.c b/appl/kx/kxd.c index f3f562088..037cb8ec0 100644 --- a/appl/kx/kxd.c +++ b/appl/kx/kxd.c @@ -110,7 +110,7 @@ recv_conn (int sock, des_cblock *key, des_key_schedule schedule, &thataddr, &thisaddr, &auth, "", schedule, version); if (status != KSUCCESS || - strncmp(version, KXVERSION, KRB_SENDAUTH_VLEN) != 0) { + strncmp(version, KX_VERSION, KRB_SENDAUTH_VLEN) != 0) { return 1; } if (krb_net_read (sock, user, sizeof(user)) != sizeof(user)) @@ -187,7 +187,7 @@ doit_conn (int fd, struct sockaddr_in *thataddr, sprintf (msg, "socket: %s", strerror(errno)); return fatal (sock, msg); } -#ifdef TCP_NODELAY +#if defined(TCP_NODELAY) && defined(HAVE_SETSOCKOPT) setsockopt (sock, IPPROTO_TCP, TCP_NODELAY, (void *)&one, sizeof(one)); #endif if (connect (sock, (struct sockaddr *)thataddr, @@ -291,7 +291,7 @@ doit(int sock, int tcpp) sprintf (msg, "accept: %s\n", strerror (errno)); return fatal (sock, msg); } -#ifdef TCP_NODELAY +#if defined(TCP_NODELAY) && defined(HAVE_SETSOCKOPT) setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (void *)&one, sizeof(one)); #endif diff --git a/appl/telnet/telnet/commands.c b/appl/telnet/telnet/commands.c index 1e806ff40..daab6184a 100644 --- a/appl/telnet/telnet/commands.c +++ b/appl/telnet/telnet/commands.c @@ -2295,7 +2295,7 @@ tn(int argc, char **argv) perror("telnet: socket"); return 0; } -#if defined(IP_OPTIONS) && defined(IPPROTO_IP) +#if defined(IP_OPTIONS) && defined(IPPROTO_IP) && defined(HAVE_SETSOCKOPT) if (srp && setsockopt(net, IPPROTO_IP, IP_OPTIONS, (void *)srp, srlen) < 0) perror("setsockopt (IP_OPTIONS)"); diff --git a/appl/telnet/telnetd/telnetd.c b/appl/telnet/telnetd/telnetd.c index 9a9522450..c1f8f884c 100644 --- a/appl/telnet/telnetd/telnetd.c +++ b/appl/telnet/telnetd/telnetd.c @@ -459,7 +459,7 @@ int main(int argc, char **argv) syslog(LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m"); } -#if defined(IPPROTO_IP) && defined(IP_TOS) +#if defined(IPPROTO_IP) && defined(IP_TOS) && defined(HAVE_SETSOCKOPT) { # if defined(HAS_GETTOS) struct tosent *tp; @@ -979,7 +979,7 @@ telnet(f, p) ioctl(f, FIONBIO, (char *)&on); ioctl(p, FIONBIO, (char *)&on); -#if defined(SO_OOBINLINE) +#if defined(SO_OOBINLINE) && defined(HAVE_SETSOCKOPT) setsockopt(net, SOL_SOCKET, SO_OOBINLINE, (void *)&on, sizeof on); #endif /* defined(SO_OOBINLINE) */ diff --git a/lib/roken/mini_inetd.c b/lib/roken/mini_inetd.c index a21612bda..7712bb83c 100644 --- a/lib/roken/mini_inetd.c +++ b/lib/roken/mini_inetd.c @@ -67,11 +67,13 @@ mini_inetd (int port) perror("socket"); exit(1); } +#if defined(SO_REUSEADDR) && defined(HAVE_SETSOCKOPT) if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(one)) < 0){ perror("setsockopt"); exit(1); } +#endif memset(&sa, 0, sizeof(sa)); sa.sin_family = AF_INET; sa.sin_port = port;