summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/agentx.c2
-rw-r--r--lib/command_lex.l2
-rw-r--r--lib/command_parse.y2
-rw-r--r--lib/defaults.c2
-rw-r--r--lib/libfrr.c2
-rw-r--r--lib/module.c2
-rw-r--r--lib/northbound_cli.c2
-rw-r--r--lib/northbound_confd.c2
-rw-r--r--lib/northbound_grpc.cpp2
-rw-r--r--lib/northbound_sysrepo.c2
-rw-r--r--lib/pid_output.c2
-rw-r--r--lib/sha256.c4
-rw-r--r--lib/sigevent.c14
-rw-r--r--lib/sockopt.c10
-rw-r--r--lib/subdir.am12
-rw-r--r--lib/version.h.in2
-rw-r--r--lib/zebra.h26
-rw-r--r--lib/zlog.c10
18 files changed, 58 insertions, 42 deletions
diff --git a/lib/agentx.c b/lib/agentx.c
index b5a035ee2b..6d4e68d651 100644
--- a/lib/agentx.c
+++ b/lib/agentx.c
@@ -30,7 +30,7 @@
#include "smux.h"
#include "memory.h"
#include "linklist.h"
-#include "version.h"
+#include "lib/version.h"
#include "lib_errors.h"
#include "xref.h"
diff --git a/lib/command_lex.l b/lib/command_lex.l
index 0556605d63..9c096995f5 100644
--- a/lib/command_lex.l
+++ b/lib/command_lex.l
@@ -35,7 +35,7 @@
#pragma GCC diagnostic ignored "-Wsign-compare"
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
-#include "command_parse.h"
+#include "lib/command_parse.h"
#define YY_USER_ACTION yylloc->last_column += yyleng;
#define LOC_STEP do { if (yylloc) { \
diff --git a/lib/command_parse.y b/lib/command_parse.y
index 5ebc19b278..f5e42cc304 100644
--- a/lib/command_parse.y
+++ b/lib/command_parse.y
@@ -75,7 +75,7 @@
%code provides {
#ifndef FLEX_SCANNER
- #include "command_lex.h"
+ #include "lib/command_lex.h"
#endif
extern void set_lexer_string (yyscan_t *scn, const char *string);
diff --git a/lib/defaults.c b/lib/defaults.c
index 7466aad5b1..fe099b6469 100644
--- a/lib/defaults.c
+++ b/lib/defaults.c
@@ -18,7 +18,7 @@
#include <zebra.h>
#include "defaults.h"
-#include "version.h"
+#include "lib/version.h"
static char df_version[128] = FRR_VER_SHORT, df_profile[128] = DFLT_NAME;
static struct frr_default *dflt_first = NULL, **dflt_next = &dflt_first;
diff --git a/lib/libfrr.c b/lib/libfrr.c
index 5b0a523fb5..c8f2540db5 100644
--- a/lib/libfrr.c
+++ b/lib/libfrr.c
@@ -29,7 +29,7 @@
#include "privs.h"
#include "vty.h"
#include "command.h"
-#include "version.h"
+#include "lib/version.h"
#include "lib_vty.h"
#include "log_vty.h"
#include "zclient.h"
diff --git a/lib/module.c b/lib/module.c
index d2491a3479..1d51a6396d 100644
--- a/lib/module.c
+++ b/lib/module.c
@@ -25,7 +25,7 @@
#include "module.h"
#include "memory.h"
-#include "version.h"
+#include "lib/version.h"
DEFINE_MTYPE_STATIC(LIB, MODULE_LOADNAME, "Module loading name");
DEFINE_MTYPE_STATIC(LIB, MODULE_LOADARGS, "Module loading arguments");
diff --git a/lib/northbound_cli.c b/lib/northbound_cli.c
index f88c2161da..81e30bce49 100644
--- a/lib/northbound_cli.c
+++ b/lib/northbound_cli.c
@@ -20,7 +20,7 @@
#include <zebra.h>
#include "libfrr.h"
-#include "version.h"
+#include "lib/version.h"
#include "defaults.h"
#include "log.h"
#include "lib_errors.h"
diff --git a/lib/northbound_confd.c b/lib/northbound_confd.c
index 3d8771ffbc..403537e043 100644
--- a/lib/northbound_confd.c
+++ b/lib/northbound_confd.c
@@ -24,7 +24,7 @@
#include "command.h"
#include "debug.h"
#include "libfrr.h"
-#include "version.h"
+#include "lib/version.h"
#include "northbound.h"
#include <confd_lib.h>
diff --git a/lib/northbound_grpc.cpp b/lib/northbound_grpc.cpp
index d042e15dad..58f4e42516 100644
--- a/lib/northbound_grpc.cpp
+++ b/lib/northbound_grpc.cpp
@@ -23,7 +23,7 @@
#include "log.h"
#include "libfrr.h"
-#include "version.h"
+#include "lib/version.h"
#include "command.h"
#include "lib_errors.h"
#include "northbound.h"
diff --git a/lib/northbound_sysrepo.c b/lib/northbound_sysrepo.c
index 9fc640ceea..fc1af092d0 100644
--- a/lib/northbound_sysrepo.c
+++ b/lib/northbound_sysrepo.c
@@ -25,7 +25,7 @@
#include "debug.h"
#include "memory.h"
#include "libfrr.h"
-#include "version.h"
+#include "lib/version.h"
#include "northbound.h"
#include <sysrepo.h>
diff --git a/lib/pid_output.c b/lib/pid_output.c
index bd1d89a94c..b82dde8258 100644
--- a/lib/pid_output.c
+++ b/lib/pid_output.c
@@ -22,7 +22,7 @@
#include <zebra.h>
#include <fcntl.h>
#include <log.h>
-#include "version.h"
+#include "lib/version.h"
#include "network.h"
#include "lib_errors.h"
diff --git a/lib/sha256.c b/lib/sha256.c
index 37ced5b402..a9b7a4aefc 100644
--- a/lib/sha256.c
+++ b/lib/sha256.c
@@ -35,8 +35,6 @@ static inline uint32_t be32dec(const void *pp)
return ((uint32_t)(p[3]) + ((uint32_t)(p[2]) << 8)
+ ((uint32_t)(p[1]) << 16) + ((uint32_t)(p[0]) << 24));
}
-#else
-#include <sys/endian.h>
#endif
#if !HAVE_DECL_BE32ENC
@@ -49,8 +47,6 @@ static inline void be32enc(void *pp, uint32_t x)
p[1] = (x >> 16) & 0xff;
p[0] = (x >> 24) & 0xff;
}
-#else
-#include <sys/endian.h>
#endif
/*
diff --git a/lib/sigevent.c b/lib/sigevent.c
index 64cec1385d..be7297f264 100644
--- a/lib/sigevent.c
+++ b/lib/sigevent.c
@@ -237,9 +237,12 @@ core_handler(int signo, siginfo_t *siginfo, void *context)
/* make sure we don't hang in here. default for SIGALRM is terminate.
* - if we're in backtrace for more than a second, abort. */
struct sigaction sa_default = {.sa_handler = SIG_DFL};
+
sigaction(SIGALRM, &sa_default, NULL);
+ sigaction(signo, &sa_default, NULL);
sigset_t sigset;
+
sigemptyset(&sigset);
sigaddset(&sigset, SIGALRM);
sigprocmask(SIG_UNBLOCK, &sigset, NULL);
@@ -252,7 +255,16 @@ core_handler(int signo, siginfo_t *siginfo, void *context)
log_memstats(stderr, "core_handler");
zlog_tls_buffer_fini();
- abort();
+
+ /* give the kernel a chance to generate a coredump */
+ sigaddset(&sigset, signo);
+ sigprocmask(SIG_UNBLOCK, &sigset, NULL);
+ raise(signo);
+
+ /* only chance to end up here is if the default action for signo is
+ * something other than kill or coredump the process
+ */
+ _exit(128 + signo);
}
static void trap_default_signals(void)
diff --git a/lib/sockopt.c b/lib/sockopt.c
index ed21b72df7..b624fe2230 100644
--- a/lib/sockopt.c
+++ b/lib/sockopt.c
@@ -25,6 +25,16 @@
#include "sockunion.h"
#include "lib_errors.h"
+#if (defined(__FreeBSD__) \
+ && ((__FreeBSD_version >= 500022 && __FreeBSD_version < 700000) \
+ || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) \
+ || (defined(__NetBSD__) && defined(__NetBSD_Version__) \
+ && __NetBSD_Version__ >= 106010000) \
+ || defined(__OpenBSD__) || defined(__APPLE__) \
+ || defined(__DragonFly__) || defined(__sun)
+#define HAVE_BSD_STRUCT_IP_MREQ_HACK
+#endif
+
void setsockopt_so_recvbuf(int sock, int size)
{
int orig_req = size;
diff --git a/lib/subdir.am b/lib/subdir.am
index b7efec4882..98ba1cf24c 100644
--- a/lib/subdir.am
+++ b/lib/subdir.am
@@ -318,7 +318,7 @@ if SNMP
lib_LTLIBRARIES += lib/libfrrsnmp.la
endif
-lib_libfrrsnmp_la_CFLAGS = $(WERROR) $(SNMP_CFLAGS) -std=gnu11
+lib_libfrrsnmp_la_CFLAGS = $(AM_CFLAGS) $(SNMP_CFLAGS) -std=gnu11
lib_libfrrsnmp_la_LDFLAGS = -version-info 0:0:0
lib_libfrrsnmp_la_LIBADD = $(SNMP_LIBS)
lib_libfrrsnmp_la_SOURCES = \
@@ -334,7 +334,7 @@ lib_LTLIBRARIES += lib/libfrrcares.la
pkginclude_HEADERS += lib/resolver.h
endif
-lib_libfrrcares_la_CFLAGS = $(WERROR) $(CARES_CFLAGS)
+lib_libfrrcares_la_CFLAGS = $(AM_CFLAGS) $(CARES_CFLAGS)
lib_libfrrcares_la_LDFLAGS = -version-info 0:0:0
lib_libfrrcares_la_LIBADD = $(CARES_LIBS)
lib_libfrrcares_la_SOURCES = \
@@ -349,7 +349,7 @@ lib_LTLIBRARIES += lib/libfrrzmq.la
pkginclude_HEADERS += lib/frr_zmq.h
endif
-lib_libfrrzmq_la_CFLAGS = $(WERROR) $(ZEROMQ_CFLAGS)
+lib_libfrrzmq_la_CFLAGS = $(AM_CFLAGS) $(ZEROMQ_CFLAGS)
lib_libfrrzmq_la_LDFLAGS = -version-info 0:0:0
lib_libfrrzmq_la_LIBADD = $(ZEROMQ_LIBS)
lib_libfrrzmq_la_SOURCES = \
@@ -363,7 +363,7 @@ if CONFD
module_LTLIBRARIES += lib/confd.la
endif
-lib_confd_la_CFLAGS = $(WERROR) $(CONFD_CFLAGS)
+lib_confd_la_CFLAGS = $(AM_CFLAGS) $(CONFD_CFLAGS)
lib_confd_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
lib_confd_la_LIBADD = lib/libfrr.la $(CONFD_LIBS)
lib_confd_la_SOURCES = lib/northbound_confd.c
@@ -375,7 +375,7 @@ if SYSREPO
module_LTLIBRARIES += lib/sysrepo.la
endif
-lib_sysrepo_la_CFLAGS = $(WERROR) $(SYSREPO_CFLAGS)
+lib_sysrepo_la_CFLAGS = $(AM_CFLAGS) $(SYSREPO_CFLAGS)
lib_sysrepo_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
lib_sysrepo_la_LIBADD = lib/libfrr.la $(SYSREPO_LIBS)
lib_sysrepo_la_SOURCES = lib/northbound_sysrepo.c
@@ -414,7 +414,7 @@ lib_grammar_sandbox_LDADD = \
lib/libfrr.la
lib_clippy_CPPFLAGS = $(AM_CPPFLAGS) -D_GNU_SOURCE -DBUILDING_CLIPPY
-lib_clippy_CFLAGS = $(PYTHON_CFLAGS)
+lib_clippy_CFLAGS = $(AC_CFLAGS) $(PYTHON_CFLAGS)
lib_clippy_LDADD = $(PYTHON_LIBS) $(UST_LIBS) -lelf
lib_clippy_LDFLAGS = -export-dynamic
lib_clippy_SOURCES = \
diff --git a/lib/version.h.in b/lib/version.h.in
index d535d131c8..5078f3ad6e 100644
--- a/lib/version.h.in
+++ b/lib/version.h.in
@@ -25,7 +25,7 @@
#define _ZEBRA_VERSION_H
#ifdef GIT_VERSION
-#include "gitversion.h"
+#include "lib/gitversion.h"
#endif
#ifdef __cplusplus
diff --git a/lib/zebra.h b/lib/zebra.h
index 5c3d91ba74..26c0fe05b5 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -68,6 +68,12 @@
#include <limits.h>
#include <inttypes.h>
#include <stdbool.h>
+#ifdef HAVE_SYS_ENDIAN_H
+#include <sys/endian.h>
+#endif
+#ifdef HAVE_ENDIAN_H
+#include <endian.h>
+#endif
/* machine dependent includes */
#ifdef HAVE_LINUX_VERSION_H
@@ -280,22 +286,10 @@ struct in_pktinfo {
#define HAVE_IP_HDRINCL_BSD_ORDER
#endif
-/* Define BYTE_ORDER, if not defined. Useful for compiler conditional
- * code, rather than preprocessor conditional.
- * Not all the world has this BSD define.
- */
+/* autoconf macros for this are deprecated, just find endian.h */
#ifndef BYTE_ORDER
-#define BIG_ENDIAN 4321 /* least-significant byte first (vax, pc) */
-#define LITTLE_ENDIAN 1234 /* most-significant byte first (IBM, net) */
-#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp) */
-
-#if defined(WORDS_BIGENDIAN)
-#define BYTE_ORDER BIG_ENDIAN
-#else /* !WORDS_BIGENDIAN */
-#define BYTE_ORDER LITTLE_ENDIAN
-#endif /* WORDS_BIGENDIAN */
-
-#endif /* ndef BYTE_ORDER */
+#error please locate an endian.h file appropriate to your platform
+#endif
/* For old definition. */
#ifndef IN6_ARE_ADDR_EQUAL
@@ -312,7 +306,7 @@ struct in_pktinfo {
#include "compiler.h"
/* Zebra route's types are defined in route_types.h */
-#include "route_types.h"
+#include "lib/route_types.h"
#define strmatch(a,b) (!strcmp((a), (b)))
diff --git a/lib/zlog.c b/lib/zlog.c
index f546709328..24800c6e64 100644
--- a/lib/zlog.c
+++ b/lib/zlog.c
@@ -142,6 +142,7 @@ struct zlog_msg {
struct zlog_tls {
char *mmbuf;
size_t bufpos;
+ bool do_unlink;
size_t nmsgs;
struct zlog_msg msgs[TLS_LOG_MAXMSG];
@@ -266,13 +267,14 @@ void zlog_tls_buffer_init(void)
mmpath, strerror(errno));
goto out_anon_unlink;
}
+ zlog_tls->do_unlink = true;
close(mmfd);
zlog_tls_set(zlog_tls);
return;
out_anon_unlink:
- unlink(mmpath);
+ unlinkat(zlog_tmpdirfd, mmpath, 0);
close(mmfd);
out_anon:
@@ -296,14 +298,16 @@ out_anon:
void zlog_tls_buffer_fini(void)
{
char mmpath[MAXPATHLEN];
+ struct zlog_tls *zlog_tls = zlog_tls_get();
+ bool do_unlink = zlog_tls ? zlog_tls->do_unlink : false;
zlog_tls_buffer_flush();
- zlog_tls_free(zlog_tls_get());
+ zlog_tls_free(zlog_tls);
zlog_tls_set(NULL);
snprintfrr(mmpath, sizeof(mmpath), "logbuf.%ld", zlog_gettid());
- if (unlinkat(zlog_tmpdirfd, mmpath, 0))
+ if (do_unlink && unlinkat(zlog_tmpdirfd, mmpath, 0))
zlog_err("unlink logbuf: %s (%d)", strerror(errno), errno);
}