From 8b15e485c0d5f4a1e56b2148a34995ed1fa9e95b Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Mon, 13 Aug 2012 19:49:58 +0200 Subject: iftable: fix incomplete list of interfaces via nlif_query RTM_GETLINK with NLM_F_DUMP returns a multi-part netlink message. The existing code only handled the first message of it, thus, ignoring the remaining interfaces. This is the cause of the following bug in conntrackd: [Thu Aug 9 14:14:23 2012] (pid=3819) [notice] -- starting in daemon mode -- [Thu Aug 9 14:14:23 2012] (pid=3819) [ERROR] no dedicated links available! [Thu Aug 9 14:14:23 2012] (pid=3819) [ERROR] no dedicated links available! [Thu Aug 9 14:14:23 2012] (pid=3819) [ERROR] no dedicated links available! [Thu Aug 9 14:19:54 2012] (pid=3819) [notice] ---- shutdown received ---- Thanks to Jan Engelhardt for providing useful pointer to address the problem. Reported-by: Arturo Borrero Signed-off-by: Pablo Neira Ayuso --- src/rtnl.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/rtnl.c') diff --git a/src/rtnl.c b/src/rtnl.c index 1092c81..5ccb272 100644 --- a/src/rtnl.c +++ b/src/rtnl.c @@ -193,6 +193,15 @@ int rtnl_receive(struct rtnl_handle *rtnl_handle) return 1; } +int rtnl_receive_multi(struct rtnl_handle *rtnl_handle) +{ + while (1) { + if (rtnl_receive(rtnl_handle) <= 0) + break; + } + return 1; +} + /* rtnl_open - constructor of rtnetlink module */ struct rtnl_handle *rtnl_open(void) { -- cgit v1.2.3