bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RFC: Add support for {get,set}sockopt (..., SO_{RCV,SND}BUF, ...) in pfl


From: Svante Signell
Subject: RFC: Add support for {get,set}sockopt (..., SO_{RCV,SND}BUF, ...) in pflocal
Date: Tue, 01 Dec 2015 15:37:14 +0100

Hi,

The attached patch is an attempt to support getting and setting buffer sizes in
pflocal. A simple test case is also attached, with output inlined here.
Limits are set on min and max buffer sizes, as on GNU/Linux, however not the
same values. Additionally, setsockopt() does not return a buffer twice as big as
requested as Linux does. Furthermore, the RPC for socket_setopt in socket.defs
is wrong: The set value should be returned in parameter optval, see
http://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
and setsockopt(2). This can be fixed at a later time if needed.

Hurd output:
============
test_get+setsockopt.c:main():
domain = AF_UNIX  type = SOCK_STREAM  Socket sfd = 3

CASE: SO_RCVBUF
main(): Requested: max_msg_size = 20480
set_sock_size_rcvbuf():getsockopt(SO_RCVBUF): optval=16384, optlen=4
set_sock_size_rcvbuf(): Requested: *max_msg_size = 20480
set_sock_size_rcvbuf():setsockopt(SO_RCVBUF): GNU/Hurd: S_sock_setopt RPC is
wrong: No return value
set_sock_size_rcvbuf: Checking set values
set_sock_size_rcvbuf():getsockopt(SO_RCVBUF): optval=20480, optlen=4

main():set_sock_size_rcvbuf(): max_msg_size=20480

CASE: SO_SNDBUF
main(): Requested: max_msg_size = 163840
set_sock_size_sndbuf():getsockopt(SO_SNDBUF): optval=20480, optlen=4
set_sock_size_sndbuf(): Requested: *max_msg_size = 163840
set_sock_size_sndbuf():setsockopt(SO_SNDBUF): GNU/Hurd: S_sock_setopt RPC is
wrong: No return value
set_sock_size_rsnduf: Checking set values
set_sock_size_sndbuf():getsockopt(SO_SNDBUF): optval=163840, optlen=4

main():set_sock_size_sndbuf(): max_msg_size=163840

Linux output:
=============
test_get+setsockopt.c:main():
domain = AF_UNIX  type = SOCK_STREAM  Socket sfd = 3

CASE: SO_RCVBUF
main(): Requested: max_msg_size = 20480
set_sock_size_rcvbuf():getsockopt(SO_RCVBUF): optval=212992, optlen=4
set_sock_size_rcvbuf(): Requested: *max_msg_size = 20480
set_sock_size_rcvbuf():setsockopt(SO_RCVBUF): optval=20480, optlen=4
set_sock_size_rcvbuf(): Returned: optval = 20480
set_sock_size_rcvbuf: Checking set values
set_sock_size_rcvbuf():getsockopt(SO_RCVBUF): optval=40960, optlen=4

main():set_sock_size_rcvbuf(): max_msg_size=40960

CASE: SO_SNDBUF
main(): Requested: max_msg_size = 327680
set_sock_size_sndbuf():getsockopt(SO_SNDBUF): optval=212992, optlen=4
set_sock_size_sndbuf(): Requested: *max_msg_size = 327680
set_sock_size_sndbuf():setsockopt(SO_SNDBUF): optval=327680, optlen=4
set_sock_size_sndbuf(): Returned: optval = 327680
set_sock_size_rsnduf: Checking set values
set_sock_size_sndbuf():getsockopt(SO_SNDBUF): optval=425984, optlen=4

main():set_sock_size_sndbuf(): max_msg_size=327680

Attachment: test_get+setsockopt.c
Description: Text Data

Attachment: SO_RCV+SNDBUF.patch
Description: Text Data

Attachment: defs.inc
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]