summaryrefslogtreecommitdiffstats
path: root/usr.sbin/inetd/inetd.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/inetd/inetd.c')
-rw-r--r--usr.sbin/inetd/inetd.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c
index cd41030..4f19d0a 100644
--- a/usr.sbin/inetd/inetd.c
+++ b/usr.sbin/inetd/inetd.c
@@ -42,7 +42,7 @@ static const char copyright[] =
static char sccsid[] = "@(#)from: inetd.c 8.4 (Berkeley) 4/13/94";
#endif
static const char rcsid[] =
- "$Id: inetd.c,v 1.32 1998/05/08 19:15:44 guido Exp $";
+ "$Id: inetd.c,v 1.33 1998/05/11 12:11:59 bde Exp $";
#endif /* not lint */
/*
@@ -112,6 +112,7 @@ static const char rcsid[] =
#include <sys/resource.h>
#include <netinet/in.h>
+#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <rpc/rpc.h>
#include <rpc/pmap_clnt.h>
@@ -206,9 +207,11 @@ struct servtab {
#define NORM_TYPE 0
#define MUX_TYPE 1
#define MUXPLUS_TYPE 2
+#define TTCP_TYPE 3
#define ISMUX(sep) (((sep)->se_type == MUX_TYPE) || \
((sep)->se_type == MUXPLUS_TYPE))
#define ISMUXPLUS(sep) ((sep)->se_type == MUXPLUS_TYPE)
+#define ISTTCP(sep) ((sep)->se_type == TTCP_TYPE)
void chargen_dg __P((int, struct servtab *));
@@ -916,6 +919,10 @@ setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on))
syslog(LOG_ERR, "setsockopt (SO_PRIVSTATE): %m");
#endif
#undef turnon
+ if (sep->se_type == TTCP_TYPE)
+ if (setsockopt(sep->se_fd, IPPROTO_TCP, TCP_NOPUSH,
+ (char *)&on, sizeof (on)) < 0)
+ syslog(LOG_ERR, "setsockopt (TCP_NOPUSH): %m");
if (bind(sep->se_fd, (struct sockaddr *)&sep->se_ctrladdr,
sizeof (sep->se_ctrladdr)) < 0) {
if (debug)
@@ -1137,7 +1144,14 @@ more:
sep->se_socktype = SOCK_RAW;
else
sep->se_socktype = -1;
- sep->se_proto = newstr(sskip(&cp));
+
+ arg = sskip(&cp);
+ if (strcmp(arg, "tcp/ttcp") == 0) {
+ sep->se_type = TTCP_TYPE;
+ sep->se_proto = newstr("tcp");
+ } else {
+ sep->se_proto = newstr(arg);
+ }
if (strncmp(sep->se_proto, "rpc/", 4) == 0) {
memmove(sep->se_proto, sep->se_proto + 4,
strlen(sep->se_proto) + 1 - 4);
OpenPOWER on IntegriCloud