diff options
-rw-r--r-- | lib/lib_errors.c | 2 | ||||
-rw-r--r-- | lib/zclient.c | 133 |
2 files changed, 66 insertions, 69 deletions
diff --git a/lib/lib_errors.c b/lib/lib_errors.c index cf23c9c6d..73d1e8d54 100644 --- a/lib/lib_errors.c +++ b/lib/lib_errors.c @@ -62,7 +62,7 @@ static struct log_ref ferr_lib_err[] = { .code = LIB_ERR_ZAPI_ENCODE, .title = "ZAPI Error", .description = "The ZAPI subsystem has detected an encoding issue, between zebra and a client protocol", - .suggestion = "Restart FRR" + .suggestion = "Gather data and open an Issue, also Restart FRR" }, { .code = LIB_ERR_ZAPI_SOCKET, diff --git a/lib/zclient.c b/lib/zclient.c index c5a48c178..cb8172713 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -221,9 +221,9 @@ int zclient_socket_connect(struct zclient *zclient) ret = connect(sock, (struct sockaddr *)&zclient_addr, zclient_addr_len); if (ret < 0) { if (zclient_debug) - zlog_warn("%s connect failure: %d(%s)", - __PRETTY_FUNCTION__, errno, - safe_strerror(errno)); + zlog_debug("%s connect failure: %d(%s)", + __PRETTY_FUNCTION__, errno, + safe_strerror(errno)); close(sock); return -1; } @@ -249,9 +249,9 @@ static int zclient_flush_data(struct thread *thread) return -1; switch (buffer_flush_available(zclient->wb, zclient->sock)) { case BUFFER_ERROR: - zlog_warn( - "%s: buffer_flush_available failed on zclient fd %d, closing", - __func__, zclient->sock); + flog_err(LIB_ERR_ZAPI_SOCKET, + "%s: buffer_flush_available failed on zclient fd %d, closing", + __func__, zclient->sock); return zclient_failed(zclient); break; case BUFFER_PENDING: @@ -273,8 +273,9 @@ int zclient_send_message(struct zclient *zclient) STREAM_DATA(zclient->obuf), stream_get_endp(zclient->obuf))) { case BUFFER_ERROR: - zlog_warn("%s: buffer_write failed to zclient fd %d, closing", - __func__, zclient->sock); + flog_err(LIB_ERR_ZAPI_SOCKET, + "%s: buffer_write failed to zclient fd %d, closing", + __func__, zclient->sock); return zclient_failed(zclient); break; case BUFFER_EMPTY: @@ -575,8 +576,9 @@ int zclient_start(struct zclient *zclient) } if (set_nonblocking(zclient->sock) < 0) - zlog_warn("%s: set_nonblocking(%d) failed", __func__, - zclient->sock); + flog_err(LIB_ERR_ZAPI_SOCKET, + "%s: set_nonblocking(%d) failed", __func__, + zclient->sock); /* Clear fail count. */ zclient->fail = 0; @@ -771,10 +773,9 @@ int zapi_route_encode(uint8_t cmd, struct stream *s, struct zapi_route *api) char buf[PREFIX2STR_BUFFER]; prefix2str(&api->prefix, buf, sizeof(buf)); - zlog_warn( - "%s: prefix %s: can't encode %u nexthops " - "(maximum is %u)", - __func__, buf, api->nexthop_num, MULTIPATH_NUM); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: prefix %s: can't encode %u nexthops (maximum is %u)", + __func__, buf, api->nexthop_num, MULTIPATH_NUM); return -1; } @@ -808,11 +809,6 @@ int zapi_route_encode(uint8_t cmd, struct stream *s, struct zapi_route *api) 16); stream_putl(s, api_nh->ifindex); break; - default: - zlog_warn( - "%s: Specified Nexthop type %d does not exist", - __PRETTY_FUNCTION__, api_nh->type); - return -1; } /* MPLS labels for BGP-LU or Segment Routing */ @@ -871,8 +867,9 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) /* Type, flags, message. */ STREAM_GETC(s, api->type); if (api->type > ZEBRA_ROUTE_MAX) { - zlog_warn("%s: Specified route type: %d is not a legal value\n", - __PRETTY_FUNCTION__, api->type); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: Specified route type: %d is not a legal value\n", + __PRETTY_FUNCTION__, api->type); return -1; } @@ -887,23 +884,24 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) switch (api->prefix.family) { case AF_INET: if (api->prefix.prefixlen > IPV4_MAX_PREFIXLEN) { - zlog_warn( - "%s: V4 prefixlen is %d which should not be more than 32", - __PRETTY_FUNCTION__, api->prefix.prefixlen); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: V4 prefixlen is %d which should not be more than 32", + __PRETTY_FUNCTION__, api->prefix.prefixlen); return -1; } break; case AF_INET6: if (api->prefix.prefixlen > IPV6_MAX_PREFIXLEN) { - zlog_warn( - "%s: v6 prefixlen is %d which should not be more than 128", - __PRETTY_FUNCTION__, api->prefix.prefixlen); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: v6 prefixlen is %d which should not be more than 128", + __PRETTY_FUNCTION__, api->prefix.prefixlen); return -1; } break; default: - zlog_warn("%s: Specified family %d is not v4 or v6", - __PRETTY_FUNCTION__, api->prefix.family); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: Specified family %d is not v4 or v6", + __PRETTY_FUNCTION__, api->prefix.family); return -1; } STREAM_GET(&api->prefix.u.prefix, s, PSIZE(api->prefix.prefixlen)); @@ -912,9 +910,9 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) api->src_prefix.family = AF_INET6; STREAM_GETC(s, api->src_prefix.prefixlen); if (api->src_prefix.prefixlen > IPV6_MAX_PREFIXLEN) { - zlog_warn( - "%s: SRC Prefix prefixlen received: %d is too large", - __PRETTY_FUNCTION__, api->src_prefix.prefixlen); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: SRC Prefix prefixlen received: %d is too large", + __PRETTY_FUNCTION__, api->src_prefix.prefixlen); return -1; } STREAM_GET(&api->src_prefix.prefix, s, @@ -922,9 +920,9 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) if (api->prefix.family != AF_INET6 || api->src_prefix.prefixlen == 0) { - zlog_warn( - "%s: SRC prefix specified in some manner that makes no sense", - __PRETTY_FUNCTION__); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: SRC prefix specified in some manner that makes no sense", + __PRETTY_FUNCTION__); return -1; } } @@ -933,8 +931,9 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) if (CHECK_FLAG(api->message, ZAPI_MESSAGE_NEXTHOP)) { STREAM_GETW(s, api->nexthop_num); if (api->nexthop_num > MULTIPATH_NUM) { - zlog_warn("%s: invalid number of nexthops (%u)", - __func__, api->nexthop_num); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: invalid number of nexthops (%u)", + __func__, api->nexthop_num); return -1; } @@ -966,11 +965,6 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) STREAM_GET(&api_nh->gate.ipv6, s, 16); STREAM_GETL(s, api_nh->ifindex); break; - default: - zlog_warn( - "%s: Specified nexthop type %d does not exist", - __PRETTY_FUNCTION__, api_nh->type); - return -1; } /* MPLS labels for BGP-LU or Segment Routing */ @@ -978,10 +972,9 @@ int zapi_route_decode(struct stream *s, struct zapi_route *api) STREAM_GETC(s, api_nh->label_num); if (api_nh->label_num > MPLS_MAX_LABELS) { - zlog_warn( - "%s: invalid number of MPLS " - "labels (%u)", - __func__, api_nh->label_num); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: invalid number of MPLS labels (%u)", + __func__, api_nh->label_num); return -1; } @@ -1239,8 +1232,9 @@ bool zapi_nexthop_update_decode(struct stream *s, struct zapi_route *nhr) } STREAM_GETC(s, nhr->nexthops[i].label_num); if (nhr->nexthops[i].label_num > MPLS_MAX_LABELS) { - zlog_warn("%s: invalid number of MPLS labels (%u)", - __func__, nhr->nexthops[i].label_num); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: invalid number of MPLS labels (%u)", + __func__, nhr->nexthops[i].label_num); return false; } if (nhr->nexthops[i].label_num) @@ -1424,8 +1418,9 @@ struct interface *zebra_interface_state_read(struct stream *s, vrf_id_t vrf_id) /* Lookup this by interface index. */ ifp = if_lookup_by_name(ifname_tmp, vrf_id); if (ifp == NULL) { - zlog_warn("INTERFACE_STATE: Cannot find IF %s in VRF %d", - ifname_tmp, vrf_id); + flog_err(LIB_ERR_ZAPI_ENCODE, + "INTERFACE_STATE: Cannot find IF %s in VRF %d", + ifname_tmp, vrf_id); return NULL; } @@ -1633,9 +1628,10 @@ struct connected *zebra_interface_address_read(int type, struct stream *s, /* Lookup index. */ ifp = if_lookup_by_index(ifindex, vrf_id); if (ifp == NULL) { - zlog_warn("INTERFACE_ADDRESS_%s: Cannot find IF %u in VRF %d", - (type == ZEBRA_INTERFACE_ADDRESS_ADD) ? "ADD" : "DEL", - ifindex, vrf_id); + flog_err(LIB_ERR_ZAPI_ENCODE, + "INTERFACE_ADDRESS_%s: Cannot find IF %u in VRF %d", + (type == ZEBRA_INTERFACE_ADDRESS_ADD) ? "ADD" : "DEL", + ifindex, vrf_id); return NULL; } @@ -1670,12 +1666,11 @@ struct connected *zebra_interface_address_read(int type, struct stream *s, /* carp interfaces on OpenBSD with 0.0.0.0/0 as * "peer" */ char buf[PREFIX_STRLEN]; - zlog_warn( - "warning: interface %s address %s " - "with peer flag set, but no peer address!", - ifp->name, - prefix2str(ifc->address, buf, - sizeof buf)); + flog_err(LIB_ERR_ZAPI_ENCODE, + "warning: interface %s address %s with peer flag set, but no peer address!", + ifp->name, + prefix2str(ifc->address, buf, + sizeof buf)); UNSET_FLAG(ifc->flags, ZEBRA_IFA_PEER); } } @@ -1725,9 +1720,10 @@ zebra_interface_nbr_address_read(int type, struct stream *s, vrf_id_t vrf_id) /* Lookup index. */ ifp = if_lookup_by_index(ifindex, vrf_id); if (ifp == NULL) { - zlog_warn("INTERFACE_NBR_%s: Cannot find IF %u in VRF %d", - (type == ZEBRA_INTERFACE_NBR_ADDRESS_ADD) ? "ADD" - : "DELETE", + flog_err(LIB_ERR_ZAPI_ENCODE, + "INTERFACE_NBR_%s: Cannot find IF %u in VRF %d", + (type == ZEBRA_INTERFACE_NBR_ADDRESS_ADD) ? "ADD" + : "DELETE", ifindex, vrf_id); return NULL; } @@ -1774,8 +1770,9 @@ struct interface *zebra_interface_vrf_update_read(struct stream *s, /* Lookup interface. */ ifp = if_lookup_by_index(ifindex, vrf_id); if (ifp == NULL) { - zlog_warn("INTERFACE_VRF_UPDATE: Cannot find IF %u in VRF %d", - ifindex, vrf_id); + flog_err(LIB_ERR_ZAPI_ENCODE, + "INTERFACE_VRF_UPDATE: Cannot find IF %u in VRF %d", + ifindex, vrf_id); return NULL; } @@ -2410,10 +2407,10 @@ static int zclient_read(struct thread *thread) /* Length check. */ if (length > STREAM_SIZE(zclient->ibuf)) { struct stream *ns; - zlog_warn( - "%s: message size %u exceeds buffer size %lu, expanding...", - __func__, length, - (unsigned long)STREAM_SIZE(zclient->ibuf)); + flog_err(LIB_ERR_ZAPI_ENCODE, + "%s: message size %u exceeds buffer size %lu, expanding...", + __func__, length, + (unsigned long)STREAM_SIZE(zclient->ibuf)); ns = stream_new(length); stream_copy(ns, zclient->ibuf); stream_free(zclient->ibuf); |