mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-03 00:00:24 -04:00
kernel-pfkey: Always register for events
The starter-specific code path isn't necessary anymore since d8fdd1018e16 ("starter: Don't flush SAs in the kernel").
This commit is contained in:
parent
30cb3bd4d5
commit
e323539428
@ -3303,7 +3303,6 @@ METHOD(kernel_ipsec_t, destroy, void,
|
|||||||
kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create()
|
kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create()
|
||||||
{
|
{
|
||||||
private_kernel_pfkey_ipsec_t *this;
|
private_kernel_pfkey_ipsec_t *this;
|
||||||
bool register_for_events = TRUE;
|
|
||||||
int rcv_buffer;
|
int rcv_buffer;
|
||||||
|
|
||||||
INIT(this,
|
INIT(this,
|
||||||
@ -3339,11 +3338,6 @@ kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create()
|
|||||||
FALSE, lib->ns),
|
FALSE, lib->ns),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (streq(lib->ns, "starter"))
|
|
||||||
{ /* starter has no threads, so we do not register for kernel events */
|
|
||||||
register_for_events = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create a PF_KEY socket to communicate with the kernel */
|
/* create a PF_KEY socket to communicate with the kernel */
|
||||||
this->socket = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
|
this->socket = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
|
||||||
if (this->socket <= 0)
|
if (this->socket <= 0)
|
||||||
@ -3353,41 +3347,38 @@ kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create()
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (register_for_events)
|
/* create a PF_KEY socket for ACQUIRE & EXPIRE */
|
||||||
|
this->socket_events = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
|
||||||
|
if (this->socket_events <= 0)
|
||||||
{
|
{
|
||||||
/* create a PF_KEY socket for ACQUIRE & EXPIRE */
|
DBG1(DBG_KNL, "unable to create PF_KEY event socket");
|
||||||
this->socket_events = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
|
destroy(this);
|
||||||
if (this->socket_events <= 0)
|
return NULL;
|
||||||
{
|
|
||||||
DBG1(DBG_KNL, "unable to create PF_KEY event socket");
|
|
||||||
destroy(this);
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
DBG1(DBG_KNL, "unable to register PF_KEY event socket");
|
|
||||||
destroy(this);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
lib->watcher->add(lib->watcher, this->socket_events, WATCHER_READ,
|
|
||||||
(watcher_cb_t)receive_events, this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
DBG1(DBG_KNL, "unable to register PF_KEY event socket");
|
||||||
|
destroy(this);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
lib->watcher->add(lib->watcher, this->socket_events, WATCHER_READ,
|
||||||
|
(watcher_cb_t)receive_events, this);
|
||||||
|
|
||||||
return &this->public;
|
return &this->public;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user