mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-27 13:46:45 +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) {
|
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user