]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
kernel-pfkey: Always register for events
authorTobias Brunner <tobias@strongswan.org>
Thu, 26 Jan 2023 15:21:07 +0000 (16:21 +0100)
committerTobias Brunner <tobias@strongswan.org>
Thu, 16 Feb 2023 12:25:35 +0000 (13:25 +0100)
The starter-specific code path isn't necessary anymore since
d8fdd1018e16 ("starter: Don't flush SAs in the kernel").

src/libcharon/plugins/kernel_pfkey/kernel_pfkey_ipsec.c

index e73767d581cb5d54b52fad73ca746d043ce4763f..e7046a7043eada749c704a466c2b9464340c91ef 100644 (file)
@@ -3303,7 +3303,6 @@ METHOD(kernel_ipsec_t, destroy, void,
 kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create()
 {
        private_kernel_pfkey_ipsec_t *this;
-       bool register_for_events = TRUE;
        int rcv_buffer;
 
        INIT(this,
@@ -3339,11 +3338,6 @@ kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create()
                                                                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 */
        this->socket = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
        if (this->socket <= 0)
@@ -3353,41 +3347,38 @@ kernel_pfkey_ipsec_t *kernel_pfkey_ipsec_create()
                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 */
-               this->socket_events = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
-               if (this->socket_events <= 0)
-               {
-                       DBG1(DBG_KNL, "unable to create PF_KEY event socket");
-                       destroy(this);
-                       return NULL;
-               }
+               DBG1(DBG_KNL, "unable to create PF_KEY event socket");
+               destroy(this);
+               return NULL;
+       }
 
-               rcv_buffer = lib->settings->get_int(lib->settings,
+       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)
+       if (rcv_buffer > 0)
+       {
+               if (setsockopt(this->socket_events, SOL_SOCKET, SO_RCVBUF,
+                                          &rcv_buffer, sizeof(rcv_buffer)) == -1)
                {
-                       DBG1(DBG_KNL, "unable to register PF_KEY event socket");
-                       destroy(this);
-                       return NULL;
+                       DBG1(DBG_KNL, "unable to set receive buffer size on PF_KEY "
+                                "event socket: %s", strerror(errno));
                }
+       }
 
-               lib->watcher->add(lib->watcher, this->socket_events, WATCHER_READ,
-                                                 (watcher_cb_t)receive_events, this);
+       /* 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;
 }