mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-27 11:44:16 +00:00
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:
parent
f49dcb5783
commit
728db22475
@ -1125,8 +1125,25 @@ static int nl_batch_read_resp(struct nl_batch *bth)
|
||||
while (true) {
|
||||
status = netlink_recv_msg(nl, msg, 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;
|
||||
}
|
||||
|
||||
h = (struct nlmsghdr *)nl_batch_rx_buf;
|
||||
ignore_msg = false;
|
||||
|
Loading…
Reference in New Issue
Block a user