[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
test_get+setsockopt.c
Description: Text Data
SO_RCV+SNDBUF.patch
Description: Text Data
defs.inc
Description: Text Data
- RFC: Add support for {get,set}sockopt (..., SO_{RCV,SND}BUF, ...) in pflocal,
Svante Signell <=