aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/linux-cp/lcp_nl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/linux-cp/lcp_nl.c')
-rw-r--r--src/plugins/linux-cp/lcp_nl.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/plugins/linux-cp/lcp_nl.c b/src/plugins/linux-cp/lcp_nl.c
index b548d7afa39..85b6447007a 100644
--- a/src/plugins/linux-cp/lcp_nl.c
+++ b/src/plugins/linux-cp/lcp_nl.c
@@ -348,6 +348,8 @@ nl_route_process_msgs (void)
nl_msg_info_t *msg_info;
int err, n_msgs = 0;
+ lcp_set_netlink_processing_active (1);
+
/* process a batch of messages. break if we hit our limit */
vec_foreach (msg_info, nm->nl_msg_queue)
{
@@ -365,6 +367,8 @@ nl_route_process_msgs (void)
NL_DBG ("Processed %u messages", n_msgs);
+ lcp_set_netlink_processing_active (0);
+
return n_msgs;
}
@@ -441,10 +445,15 @@ lcp_nl_recv_dump_replies (nl_sock_type_t sock_type, int msg_limit,
int done = 0;
int n_msgs = 0;
+ lcp_set_netlink_processing_active (1);
+
continue_reading:
n_bytes = nl_recv (sk_route, &nla, &buf, /* creds */ NULL);
if (n_bytes <= 0)
- return n_bytes;
+ {
+ lcp_set_netlink_processing_active (0);
+ return n_bytes;
+ }
hdr = (struct nlmsghdr *) buf;
while (nlmsg_ok (hdr, n_bytes))
@@ -521,6 +530,8 @@ continue_reading:
goto continue_reading;
out:
+ lcp_set_netlink_processing_active (0);
+
nlmsg_free (msg);
free (buf);