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