[PATCH iproute2] libnetlink: fix rtnl_send_check()
From: Eric Dumazet <hidden>
Date: 2009-11-08 06:18:52
Subsystem:
library code, the rest · Maintainers:
Andrew Morton, Linus Torvalds
From: Eric Dumazet <hidden>
Date: 2009-11-08 06:18:52
Subsystem:
library code, the rest · Maintainers:
Andrew Morton, Linus Torvalds
We currently cannot flush more than ~64 addresses on a device, with strange status. # ip -stats addr flush dev eth3 Failed to send flush request: Success Flush terminated Problem is in rtnl_send_check(), where a return -1; is misplaced. After patch, we can flush 64000 addresses without any problem. # ip -stats addr flush dev eth3 *** Round 1, deleting 32338 addresses *** *** Round 2, deleting 16168 addresses *** *** Round 3, deleting 8082 addresses *** *** Round 4, deleting 4058 addresses *** *** Round 5, deleting 2028 addresses *** *** Round 6, deleting 918 addresses *** *** Round 7, deleting 278 addresses *** *** Round 8, deleting 130 addresses *** *** Flush is complete after 8 rounds *** Signed-off-by: Eric Dumazet <redacted> ---
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
index b68e2fd..100dd40 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c@@ -137,8 +137,8 @@ int rtnl_send_check(struct rtnl_handle *rth, const char *buf, int len) fprintf(stderr, "ERROR truncated\n"); else errno = -err->error; + return -1; } - return -1; } return 0;