Commit 16f02e14 authored by Nicolas Dichtel's avatar Nicolas Dichtel Committed by Stephen Hemminger

libnetlink: check flag NLM_F_DUMP_INTR during dumps

When this flag is set, it means that dump was interrupted and result may be
inconsistent.
Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
parent e8740e42
......@@ -194,6 +194,7 @@ int rtnl_dump_filter_l(struct rtnl_handle *rth,
.msg_iovlen = 1,
};
char buf[16384];
int dump_intr = 0;
iov.iov_base = buf;
while (1) {
......@@ -230,6 +231,9 @@ int rtnl_dump_filter_l(struct rtnl_handle *rth,
h->nlmsg_seq != rth->dump)
goto skip_it;
if (h->nlmsg_flags & NLM_F_DUMP_INTR)
dump_intr = 1;
if (h->nlmsg_type == NLMSG_DONE) {
found_done = 1;
break; /* process next filter */
......@@ -254,8 +258,12 @@ skip_it:
}
}
if (found_done)
if (found_done) {
if (dump_intr)
fprintf(stderr,
"Dump was interrupted and may be inconsistent.\n");
return 0;
}
if (msg.msg_flags & MSG_TRUNC) {
fprintf(stderr, "Message truncated\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment