+// SPDX-License-Identifier: GPL-2.0-or-later
/* Quagga signal handling functions.
* Copyright (C) 2004 Paul Jakma,
- *
- * This file is part of Quagga.
- *
- * Quagga 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, or (at your option) any
- * later version.
- *
- * Quagga 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>
/* master signals descriptor struct */
-static struct quagga_sigevent_master_t {
+static struct frr_sigevent_master_t {
struct thread *t;
- struct quagga_signal_t *signals;
+ struct frr_signal_t *signals;
int sigc;
volatile sig_atomic_t caught;
/* Generic signal handler
* Schedules signal event thread
*/
-static void quagga_signal_handler(int signo)
+static void frr_signal_handler(int signo)
{
int i;
- struct quagga_signal_t *sig;
+ struct frr_signal_t *sig;
for (i = 0; i < sigmaster.sigc; i++) {
sig = &(sigmaster.signals[i]);
}
/* check if signals have been caught and run appropriate handlers */
-int quagga_sigevent_process(void)
+int frr_sigevent_process(void)
{
- struct quagga_signal_t *sig;
+ struct frr_signal_t *sig;
int i;
#ifdef SIGEVENT_BLOCK_SIGNALS
/* shouldn't need to block signals, but potentially may be needed */
if ((sigprocmask(SIG_BLOCK, &newmask, &oldmask)) < 0) {
flog_err_sys(EC_LIB_SYSTEM_CALL,
- "quagga_signal_timer: couldnt block signals!");
+ "frr_signal_timer: couldnt block signals!");
return -1;
}
#endif /* SIGEVENT_BLOCK_SIGNALS */
#ifdef SIGEVENT_BLOCK_SIGNALS
if (sigprocmask(SIG_UNBLOCK, &oldmask, NULL) < 0)
- ;
- return -1;
+ return -1;
#endif /* SIGEVENT_BLOCK_SIGNALS */
return 0;
#ifdef SIGEVENT_SCHEDULE_THREAD
/* timer thread to check signals. shouldn't be needed */
-int quagga_signal_timer(struct thread *t)
+void frr_signal_timer(struct thread *t)
{
- struct quagga_sigevent_master_t *sigm;
+ struct frr_sigevent_master_t *sigm;
sigm = THREAD_ARG(t);
sigm->t = NULL;
- thread_add_timer(sigm->t->master, quagga_signal_timer, &sigmaster,
- QUAGGA_SIGNAL_TIMER_INTERVAL, &sigm->t);
- return quagga_sigevent_process();
+ thread_add_timer(sigm->t->master, frr_signal_timer, &sigmaster,
+ FRR_SIGNAL_TIMER_INTERVAL, &sigm->t);
+ frr_sigevent_process();
}
#endif /* SIGEVENT_SCHEDULE_THREAD */
struct sigaction sig;
struct sigaction osig;
- sig.sa_handler = &quagga_signal_handler;
+ sig.sa_handler = &frr_signal_handler;
sigfillset(&sig.sa_mask);
sig.sa_flags = 0;
if (signo == SIGALRM) {
}
void signal_init(struct thread_master *m, int sigc,
- struct quagga_signal_t signals[])
+ struct frr_signal_t signals[])
{
int i = 0;
- struct quagga_signal_t *sig;
+ struct frr_signal_t *sig;
/* First establish some default handlers that can be overridden by
the application. */
#ifdef SIGEVENT_SCHEDULE_THREAD
sigmaster.t = NULL;
- thread_add_timer(m, quagga_signal_timer, &sigmaster,
- QUAGGA_SIGNAL_TIMER_INTERVAL, &sigmaster.t);
+ thread_add_timer(m, frr_signal_timer, &sigmaster,
+ FRR_SIGNAL_TIMER_INTERVAL, &sigmaster.t);
#endif /* SIGEVENT_SCHEDULE_THREAD */
}