]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zserv.c
*: Convert thread_cancelXXX to event_cancelXXX
[mirror_frr.git] / zebra / zserv.c
index 2024f3453468c8d58c701edb4349d3b80c5a6fe9..f9eb7a8e3f862805159a3ff74a14ad8cca251b66 100644 (file)
@@ -1,23 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * Zebra API server.
  * Portions:
  *   Copyright (C) 1997-1999  Kunihiro Ishiguro
  *   Copyright (C) 2015-2018  Cumulus Networks, Inc.
  *   et al.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; see the file COPYING; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <zebra.h>
@@ -47,7 +34,7 @@
 #include "lib/sockopt.h"          /* for setsockopt_so_recvbuf, setsockopt... */
 #include "lib/sockunion.h"        /* for sockopt_reuseaddr, sockopt_reuseport */
 #include "lib/stream.h"           /* for STREAM_SIZE, stream (ptr only), ... */
-#include "lib/thread.h"           /* for thread (ptr only), THREAD_ARG, ... */
+#include "event.h"                /* for thread (ptr only), THREAD_ARG, ... */
 #include "lib/vrf.h"              /* for vrf_info_lookup, VRF_DEFAULT */
 #include "lib/vty.h"              /* for vty_out, vty (ptr only) */
 #include "lib/zclient.h"          /* for zmsghdr, ZEBRA_HEADER_SIZE, ZEBRA... */
@@ -113,7 +100,7 @@ enum zserv_event {
 /*
  * Zebra server event driver for all client threads.
  *
- * This is essentially a wrapper around thread_add_event() that centralizes
+ * This is essentially a wrapper around event_add_event() that centralizes
  * those scheduling calls into one place.
  *
  * All calls to this function schedule an event on the pthread running the
@@ -131,7 +118,7 @@ static void zserv_client_event(struct zserv *client,
 /*
  * Zebra server event driver for the main thread.
  *
- * This is essentially a wrapper around thread_add_event() that centralizes
+ * This is essentially a wrapper around event_add_event() that centralizes
  * those scheduling calls into one place.
  *
  * All calls to this function schedule an event on Zebra's main pthread.
@@ -226,7 +213,7 @@ static void zserv_client_fail(struct zserv *client)
  * allows us to expose information about input and output queues to the user in
  * terms of number of packets rather than size of data.
  */
-static void zserv_write(struct thread *thread)
+static void zserv_write(struct event *thread)
 {
        struct zserv *client = THREAD_ARG(thread);
        struct stream *msg;
@@ -319,7 +306,7 @@ zwrite_fail:
  *
  * Any failure in any of these actions is handled by terminating the client.
  */
-static void zserv_read(struct thread *thread)
+static void zserv_read(struct event *thread)
 {
        struct zserv *client = THREAD_ARG(thread);
        int sock;
@@ -475,12 +462,12 @@ static void zserv_client_event(struct zserv *client,
 {
        switch (event) {
        case ZSERV_CLIENT_READ:
-               thread_add_read(client->pthread->master, zserv_read, client,
-                               client->sock, &client->t_read);
+               event_add_read(client->pthread->master, zserv_read, client,
+                              client->sock, &client->t_read);
                break;
        case ZSERV_CLIENT_WRITE:
-               thread_add_write(client->pthread->master, zserv_write, client,
-                                client->sock, &client->t_write);
+               event_add_write(client->pthread->master, zserv_write, client,
+                               client->sock, &client->t_write);
                break;
        }
 }
@@ -504,7 +491,7 @@ static void zserv_client_event(struct zserv *client,
  * rely on the read thread to handle queuing this task enough times to process
  * everything on the input queue.
  */
-static void zserv_process_messages(struct thread *thread)
+static void zserv_process_messages(struct event *thread)
 {
        struct zserv *client = THREAD_ARG(thread);
        struct stream *msg;
@@ -583,7 +570,7 @@ DEFINE_KOOH(zserv_client_close, (struct zserv *client), (client));
  * - Free associated resources
  * - Free client structure
  *
- * This does *not* take any action on the struct thread * fields. These are
+ * This does *not* take any action on the struct event * fields. These are
  * managed by the owning pthread and any tasks associated with them must have
  * been stopped prior to invoking this function.
  */
@@ -683,7 +670,7 @@ void zserv_close_client(struct zserv *client)
                        zlog_debug("Closing client '%s'",
                                   zebra_route_string(client->proto));
 
-               thread_cancel_event(zrouter.master, client);
+               event_cancel_event(zrouter.master, client);
                THREAD_OFF(client->t_cleanup);
                THREAD_OFF(client->t_process);
 
@@ -722,7 +709,7 @@ void zserv_close_client(struct zserv *client)
  * already have been closed and the thread will most likely have died, but its
  * resources still need to be cleaned up.
  */
-static void zserv_handle_client_fail(struct thread *thread)
+static void zserv_handle_client_fail(struct event *thread)
 {
        struct zserv *client = THREAD_ARG(thread);
 
@@ -844,9 +831,9 @@ void zserv_release_client(struct zserv *client)
                         * main pthread.
                         */
                        if (client->is_closed)
-                               thread_add_event(zrouter.master,
-                                                zserv_handle_client_fail,
-                                                client, 0, &client->t_cleanup);
+                               event_add_event(zrouter.master,
+                                               zserv_handle_client_fail,
+                                               client, 0, &client->t_cleanup);
                }
        }
 
@@ -859,7 +846,7 @@ void zserv_release_client(struct zserv *client)
 /*
  * Accept socket connection.
  */
-static void zserv_accept(struct thread *thread)
+static void zserv_accept(struct event *thread)
 {
        int accept_sock;
        int client_sock;
@@ -966,16 +953,15 @@ void zserv_event(struct zserv *client, enum zserv_event event)
 {
        switch (event) {
        case ZSERV_ACCEPT:
-               thread_add_read(zrouter.master, zserv_accept, NULL, zsock,
-                               NULL);
+               event_add_read(zrouter.master, zserv_accept, NULL, zsock, NULL);
                break;
        case ZSERV_PROCESS_MESSAGES:
-               thread_add_event(zrouter.master, zserv_process_messages, client,
-                                0, &client->t_process);
+               event_add_event(zrouter.master, zserv_process_messages, client,
+                               0, &client->t_process);
                break;
        case ZSERV_HANDLE_CLIENT_FAIL:
-               thread_add_event(zrouter.master, zserv_handle_client_fail,
-                                client, 0, &client->t_cleanup);
+               event_add_event(zrouter.master, zserv_handle_client_fail,
+                               client, 0, &client->t_cleanup);
        }
 }