zebra: When we get an implicit or ack or full failure mark status

When nl_batch_read_resp gets a full on failure -1 or an implicit
ack 0 from the kernel for a batch of code.  Let's immediately
mark all of those in the batch pass/fail as needed.  Instead
of having them marked else where.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 00249e255e)
This commit is contained in:
Donald Sharp 2021-11-10 14:12:39 -05:00 committed by mergify-bot
parent f49dcb5783
commit 728db22475

View File

@ -1125,8 +1125,25 @@ static int nl_batch_read_resp(struct nl_batch *bth)
while (true) { while (true) {
status = netlink_recv_msg(nl, msg, nl_batch_rx_buf, status = netlink_recv_msg(nl, msg, nl_batch_rx_buf,
sizeof(nl_batch_rx_buf)); sizeof(nl_batch_rx_buf));
if (status == -1 || status == 0) /*
* status == -1 is a full on failure somewhere
* since we don't know where the problem happened
* we must mark all as failed
*
* Else we mark everything as worked
*
*/
if (status == -1 || status == 0) {
while ((ctx = dplane_ctx_dequeue(&(bth->ctx_list))) !=
NULL) {
if (status == -1)
dplane_ctx_set_status(
ctx,
ZEBRA_DPLANE_REQUEST_FAILURE);
dplane_ctx_enqueue_tail(bth->ctx_out_q, ctx);
}
return status; return status;
}
h = (struct nlmsghdr *)nl_batch_rx_buf; h = (struct nlmsghdr *)nl_batch_rx_buf;
ignore_msg = false; ignore_msg = false;