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