diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/agentx.c | 2 | ||||
| -rw-r--r-- | lib/command_lex.l | 2 | ||||
| -rw-r--r-- | lib/command_parse.y | 2 | ||||
| -rw-r--r-- | lib/defaults.c | 2 | ||||
| -rw-r--r-- | lib/libfrr.c | 2 | ||||
| -rw-r--r-- | lib/module.c | 2 | ||||
| -rw-r--r-- | lib/northbound_cli.c | 2 | ||||
| -rw-r--r-- | lib/northbound_confd.c | 2 | ||||
| -rw-r--r-- | lib/northbound_grpc.cpp | 2 | ||||
| -rw-r--r-- | lib/northbound_sysrepo.c | 2 | ||||
| -rw-r--r-- | lib/pid_output.c | 2 | ||||
| -rw-r--r-- | lib/sha256.c | 4 | ||||
| -rw-r--r-- | lib/sigevent.c | 14 | ||||
| -rw-r--r-- | lib/sockopt.c | 10 | ||||
| -rw-r--r-- | lib/subdir.am | 12 | ||||
| -rw-r--r-- | lib/version.h.in | 2 | ||||
| -rw-r--r-- | lib/zebra.h | 26 | ||||
| -rw-r--r-- | lib/zlog.c | 10 |
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); } |
