From owner-freebsd-current Fri Apr 13 4: 1:34 2001 Delivered-To: freebsd-current@freebsd.org Received: from fw.wintelcom.net (ns1.wintelcom.net [209.1.153.20]) by hub.freebsd.org (Postfix) with ESMTP id 6B99E37B50D for ; Fri, 13 Apr 2001 04:01:30 -0700 (PDT) (envelope-from bright@fw.wintelcom.net) Received: (from bright@localhost) by fw.wintelcom.net (8.10.0/8.10.0) id f3DB1Pp10679; Fri, 13 Apr 2001 04:01:25 -0700 (PDT) Date: Fri, 13 Apr 2001 04:01:25 -0700 From: Alfred Perlstein To: Bruce Evans Cc: Jonathan Lemon , tlambert@primenet.com, current@FreeBSD.ORG Subject: Re: SOMAXCONN -- not tunable? Message-ID: <20010413040125.E976@fw.wintelcom.net> References: <200104130008.f3D08nM61301@prism.flugsvamp.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from bde@zeta.org.au on Fri, Apr 13, 2001 at 03:24:35PM +1000 X-all-your-base: are belong to us. Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG * Bruce Evans [010412 22:25] wrote: > On Thu, 12 Apr 2001, Jonathan Lemon wrote: > > > In article you write: > > >Here are patches to make SOMAXCONN tunable from the config files. > > > > > >Right now, it's not possible to override SOMAXCONN. > > > > sysctl -w kern.ipc.somxconn=1024 > > > > SOMAXCONN is just a compile time default, and yes it is not > > currently tunable at config time. Does it really have to be? > > Of course it doesn't have to be tunable at config time. > > > Just stick it in /etc/sysctl.conf, and it gets set before most > > things are started in the system. > > Changing the actual limit using either the sysctl or an option breaks > SOMAXCONN. I think the correct fix is to never define it change > whatever uses it to use sysconf(_SC_SOMAXCONN). Similarly for all > other manifest constants that aren't actually constant. Actually, the correct fix is most likely to redefine it to -1. :) Either that or remove it from the namespace. Or just leave it alone, afaik listen called with a backlog larger than the sysctl limit just truncates it down to that limit. What do you think? /usr/src % grep -r SOMAXCON * contrib/perl5/ext/Socket/Socket.pm: SOMAXCONN contrib/perl5/ext/Socket/Socket.pm:sub SOMAXCONN (); contrib/perl5/ext/Socket/Socket.xs: if (strEQ(name, "SOMAXCONN")) contrib/perl5/ext/Socket/Socket.xs:#ifdef SOMAXCONN contrib/perl5/ext/Socket/Socket.xs: return SOMAXCONN; contrib/perl5/lib/Exporter.pm: use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKE T); contrib/perl5/pod/perlipc.pod: listen(Server,SOMAXCONN) || die "listen: $!"; contrib/perl5/pod/perlipc.pod: listen(Server,SOMAXCONN) || die "listen: $!"; contrib/perl5/pod/perlipc.pod: listen(Server,SOMAXCONN) || die "listen: $!"; contrib/perl5/pod/perlipc.pod:is SOMAXCONN. contrib/perl5/pod/perlipc.pod: Listen => SOM AXCONN, contrib/perl5/t/lib/ph.t: SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM SOL_SO CKET SOMAXCONN contrib/sendmail/libmilter/libmilter.h:#if SOMAXCONN > 20 contrib/sendmail/libmilter/libmilter.h:# define MI_SOMAXCONN SOMAXCONN contrib/sendmail/libmilter/libmilter.h:#else /* SOMAXCONN */ contrib/sendmail/libmilter/libmilter.h:# define MI_SOMAXCONN 20 contrib/sendmail/libmilter/libmilter.h:#endif /* SOMAXCONN */ contrib/sendmail/libmilter/main.c:static int backlog= MI_SOMAXCONN; crypto/heimdal/kadmin/kadm_conn.c: if (listen (s, SOMAXCONN) < 0) { crypto/heimdal/kdc/connect.c: if(type == SOCK_STREAM && listen(d->s, SOMAXCON N) < 0){ crypto/heimdal/lib/kadm5/ipropd_master.c: if (listen(fd, SOMAXCONN) < 0) crypto/heimdal/lib/roken/mini_inetd.c: if (listen (fds[i], SOMAXCONN) < 0) crypto/heimdal/lib/roken/roken-common.h:#ifndef SOMAXCONN crypto/heimdal/lib/roken/roken-common.h:#define SOMAXCONN 5 crypto/kerberosIV/ChangeLog: * appl/kx/kx.h: Remove SOMAXCONN and add KX_PORT crypto/kerberosIV/ChangeLog: fallback definitions for SOMAXCONN, STDIN_FILENO , and crypto/kerberosIV/appl/kx/common.c: && listen (s[i].fd, SOMAXCONN) < 0) crypto/kerberosIV/appl/kx/kxd.c: if (listen (sock, SOMAXCONN) < 0) { crypto/kerberosIV/kadmin/admin_server.c: if (listen(admin_fd, SOMAXCONN) < 0) crypto/kerberosIV/lib/roken/mini_inetd.c: if(listen(s, SOMAXCONN) < 0){ crypto/kerberosIV/lib/roken/mini_inetd.c: if(listen(s, SOMAXCONN) < 0){ crypto/kerberosIV/lib/roken/roken-common.h:#ifndef SOMAXCONN crypto/kerberosIV/lib/roken/roken-common.h:#define SOMAXCONN 5 crypto/kerberosIV/server/kerberos.c: listen(sock, SOMAXCONN); crypto/kerberosIV/slave/kpropd.c: ret = listen(s, SOMAXCONN); crypto/openssl/crypto/bio/b_sock.c:#define MAX_LISTEN SOMAXCONN lib/libc/net/getaddrinfo.3: if (listen(s[nsock], SOMAXCONN) < 0) { lib/libc/rpc/rpc_soc.c: _listen(fd, SOMAXCONN); lib/libc/rpc/svc_generic.c: _listen(fd, SOMAXCONN); sbin/mountd/mountd.c: listen(tcpsock, SOMAXCONN); sbin/mountd/mountd.c: listen(tcp6sock, SOMAXCONN); sys/conf/options:SOMAXCONN opt_inet.h sys/kern/uipc_socket.c:static int somaxconn = SOMAXCONN; sys/kern/uipc_socket.c:SYSCTL_INT(_kern_ipc, KIPC_SOMAXCONN, somaxconn, CTLFLAG_ RW, sys/sys/socket.h:#ifndef SOMAXCONN sys/sys/socket.h:#define SOMAXCONN 128 sys/sys/sysctl.h:#define KIPC_SOMAXCONN 3 /* int: max leng th of connection q */ usr.sbin/rpcbind/rpcbind.c: listen(fd, SOMAXCONN); -- -Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org] http://www.egr.unlv.edu/~slumos/on-netbsd.html To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message