From a2b0f8b8034332c65403cba20fda9438a1908e79 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Mon, 20 Aug 2018 09:27:30 -0400 Subject: [PATCH] lib: Convert stream.c to use new error code subsystem Signed-off-by: Donald Sharp --- lib/lib_errors.c | 6 ++++++ lib/lib_errors.h | 1 + lib/stream.c | 22 ++++++++++++---------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/lib_errors.c b/lib/lib_errors.c index c154484bdf..d1c2140160 100644 --- a/lib/lib_errors.c +++ b/lib/lib_errors.c @@ -28,6 +28,12 @@ static struct log_ref ferr_lib_warn[] = { .description = "The SNMP AgentX library has returned a warning that we should report to the end user", .suggestion = "Gather Log data and open an Issue.", }, + { + .code = LIB_WARN_STREAM, + .title = "The stream subsystem has encountered an error", + .description = "During sanity checking stream.c has detected an error in the data associated with a particular stream", + .suggestion = "Gather log data and open an Issue, restart FRR", + }, { .code = END_FERR, }, diff --git a/lib/lib_errors.h b/lib/lib_errors.h index 9c9f51fe0e..d27c1cfa26 100644 --- a/lib/lib_errors.h +++ b/lib/lib_errors.h @@ -39,6 +39,7 @@ enum lib_log_refs { LIB_ERR_ZMQ, LIB_ERR_UNAVAILABLE, LIB_WARN_SNMP, + LIB_WARN_STREAM, }; extern void lib_error_init(void); diff --git a/lib/stream.c b/lib/stream.c index 55e7f64358..2a34ec2335 100644 --- a/lib/stream.c +++ b/lib/stream.c @@ -54,7 +54,8 @@ DEFINE_MTYPE_STATIC(LIB, STREAM_FIFO, "Stream FIFO") * using stream_put..._at() functions. */ #define STREAM_WARN_OFFSETS(S) \ - zlog_warn("&(struct stream): %p, size: %lu, getp: %lu, endp: %lu\n", \ + flog_warn(LIB_WARN_STREAM, \ + "&(struct stream): %p, size: %lu, getp: %lu, endp: %lu\n", \ (void *)(S), (unsigned long)(S)->size, \ (unsigned long)(S)->getp, (unsigned long)(S)->endp) @@ -68,16 +69,16 @@ DEFINE_MTYPE_STATIC(LIB, STREAM_FIFO, "Stream FIFO") #define STREAM_BOUND_WARN(S, WHAT) \ do { \ - zlog_warn("%s: Attempt to %s out of bounds", __func__, \ - (WHAT)); \ + flog_warn(LIB_WARN_STREAM, "%s: Attempt to %s out of bounds", \ + __func__, (WHAT)); \ STREAM_WARN_OFFSETS(S); \ assert(0); \ } while (0) #define STREAM_BOUND_WARN2(S, WHAT) \ do { \ - zlog_warn("%s: Attempt to %s out of bounds", __func__, \ - (WHAT)); \ + flog_warn(LIB_WARN_STREAM, "%s: Attempt to %s out of bounds", \ + __func__, (WHAT)); \ STREAM_WARN_OFFSETS(S); \ } while (0) @@ -85,7 +86,8 @@ DEFINE_MTYPE_STATIC(LIB, STREAM_FIFO, "Stream FIFO") #define CHECK_SIZE(S, Z) \ do { \ if (((S)->endp + (Z)) > (S)->size) { \ - zlog_warn( \ + flog_warn( \ + LIB_WARN_STREAM, \ "CHECK_SIZE: truncating requested size %lu\n", \ (unsigned long)(Z)); \ STREAM_WARN_OFFSETS(S); \ @@ -966,8 +968,8 @@ ssize_t stream_read_try(struct stream *s, int fd, size_t size) /* Error: was it transient (return -2) or fatal (return -1)? */ if (ERRNO_IO_RETRY(errno)) return -2; - zlog_warn("%s: read failed on fd %d: %s", __func__, fd, - safe_strerror(errno)); + flog_err(LIB_ERR_SOCKET, "%s: read failed on fd %d: %s", __func__, fd, + safe_strerror(errno)); return -1; } @@ -997,8 +999,8 @@ ssize_t stream_recvfrom(struct stream *s, int fd, size_t size, int flags, /* Error: was it transient (return -2) or fatal (return -1)? */ if (ERRNO_IO_RETRY(errno)) return -2; - zlog_warn("%s: read failed on fd %d: %s", __func__, fd, - safe_strerror(errno)); + flog_err(LIB_ERR_SOCKET, "%s: read failed on fd %d: %s", __func__, fd, + safe_strerror(errno)); return -1; } -- 2.39.5