libnetlink: fix rtnl_send_check()
Subsystems (3)
PATCH 1/1 libnetlink: fix rtnl_send_check()
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 <[email protected]>
---
lib/libnetlink.c +1 -1
@@ -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 ;