Re: The kern.ipc.somaxconn limit revisited.

From: Adrian Chadd <adrian.chadd_at_gmail.com>
Date: Fri, 9 Oct 2015 11:47:32 -0700
I think it's worth upping to an int type, so we can eventually up it to > 64k.

Please do submit diffs for revie.w :)


-a


On 9 October 2015 at 00:23, White Knight <white_knight_at_2ch.net> wrote:
> Hi,
>
> Back in 2012, raising the limit of kern.ipc.somaxcann was discussed (now
> properly called kern.ipc.acceptqueue) but nothing came of it.  The old
> discussion is here:
>
>
> https://lists.freebsd.org/pipermail/freebsd-current/2012-January/030970.html
>
> We are running into problems with the limit capped to 16 bits.  I am
> prepared to write the patch and do all the necessary testing.
>
> A few things concern me.  The original patch(*) only changed the data types
> in usr/src/sys/sys/socketvar.h but neglected to update struct xsctp_inpcb in
> usr/src/sys/netinet/sctp_uio.h.
>
> First, what are the consequences of changing struct xsctp_inpcb?  Is ok to
> change the type from u_short to u_int, or is it better to deprecate these
> fields and use the padding?  If I understand the code correctly, this is
> part of the userland ABI.
>
> Second, if there is no arbitrary limit, this line in
> usr/src/sys/kern/uipc_socket.c can overflow.
>
>   over = (head->so_qlen > 3 * head->so_qlimit / 2);
>
> Should there be some arbitrary limit?
>
> Third, the original patch changed the arbitrary limit from USHRT_MAX to
> UINT_MAX, but does that make any sense?  As written, it'll require the u_int
> to overflow for the test to ever be true.  Plus, the value is passed in as
> an int, so is it at all possible to give system call anything higher than
> INT_MAX?
>
> Fourth, the snprintf() fields in usr/src/usr.bin/netstat/inet.c and
> usr/src/usr.bin/netstat/unix.c were not changed to account for larger than
> 16 bit numbers.  Is there really a need for a fixed length buffer to be
> formatted with snprintf() and then passed to printf()?
>
> Fifth, is there any need to change the formatting string in
> usr/src/sys/kern/uipc_debug.c?
>
> Sixth, in usr/src/sys/kern/uipc_socket.c, we have code like this, where
> optval is signed.
>
>   optval = so->so_qlimit;
>
> Does that mean the fields in struct socket are better off as signed than
> unsigned integers?
>
>
> (*)
> https://lists.freebsd.org/pipermail/freebsd-current/2012-January/031003.html
>
>
> Thank you,
>
> --
> White Knight
>
> I'm not from 2ch.net, I just work there.
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
Received on Fri Oct 09 2015 - 16:47:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:00 UTC