diff options
author | Tobias Brunner <tobias@strongswan.org> | 2014-12-15 16:43:03 +0100 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2015-03-06 16:45:22 +0100 |
commit | 96e6130537df9d0388e73ba35e1984310b3a8653 (patch) | |
tree | 3ed3eff42fa6be069c53f80dc3cfa36c7f73467a /src/libhydra/plugins/kernel_pfkey | |
parent | 3fcb59b62a24bca6ec7d9dececff911475d232c0 (diff) | |
download | strongswan-96e6130537df9d0388e73ba35e1984310b3a8653.tar.bz2 strongswan-96e6130537df9d0388e73ba35e1984310b3a8653.tar.xz |
kernel-pfkey: Add option to set receive buffer size of event socket
If many requests are sent to the kernel the events generated by these
requests may fill the receive buffer before the daemon is able to read
these messages.
Fixes #783.
Diffstat (limited to 'src/libhydra/plugins/kernel_pfkey')
-rw-r--r-- | src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c b/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c index 8b893f485..423b57e31 100644 --- a/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c +++ b/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c @@ -2988,6 +2988,7 @@ kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create() { private_kernel_pfkey_ipsec_t *this; bool register_for_events = TRUE; + int rcv_buffer; INIT(this, .public = { @@ -3044,6 +3045,18 @@ kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create() return NULL; } + rcv_buffer = lib->settings->get_int(lib->settings, + "%s.plugins.kernel-pfkey.events_buffer_size", 0, lib->ns); + if (rcv_buffer > 0) + { + if (setsockopt(this->socket_events, SOL_SOCKET, SO_RCVBUF, + &rcv_buffer, sizeof(rcv_buffer)) == -1) + { + DBG1(DBG_KNL, "unable to set receive buffer size on PF_KEY " + "event socket: %s", strerror(errno)); + } + } + /* register the event socket */ if (register_pfkey_socket(this, SADB_SATYPE_ESP) != SUCCESS || register_pfkey_socket(this, SADB_SATYPE_AH) != SUCCESS) |