浏览代码

netfilter: ctnetlink: fix echo if not subscribed to any multicast group

This patch fixes echoing if the socket that has sent the request to
create/update/delete an entry is not subscribed to any multicast
group. With the current code, ctnetlink would not send the echo
message via unicast as nfnetlink_send() would be skip.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pablo Neira Ayuso 16 年之前
父节点
当前提交
1f9da25616
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      net/netfilter/nf_conntrack_netlink.c

+ 3 - 2
net/netfilter/nf_conntrack_netlink.c

@@ -434,7 +434,7 @@ static int ctnetlink_conntrack_event(struct notifier_block *this,
 	} else
 	} else
 		return NOTIFY_DONE;
 		return NOTIFY_DONE;
 
 
-	if (!nfnetlink_has_listeners(group))
+	if (!item->report && !nfnetlink_has_listeners(group))
 		return NOTIFY_DONE;
 		return NOTIFY_DONE;
 
 
 	skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC);
 	skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC);
@@ -1502,7 +1502,8 @@ static int ctnetlink_expect_event(struct notifier_block *this,
 	} else
 	} else
 		return NOTIFY_DONE;
 		return NOTIFY_DONE;
 
 
-	if (!nfnetlink_has_listeners(NFNLGRP_CONNTRACK_EXP_NEW))
+	if (!item->report &&
+	    !nfnetlink_has_listeners(NFNLGRP_CONNTRACK_EXP_NEW))
 		return NOTIFY_DONE;
 		return NOTIFY_DONE;
 
 
 	skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC);
 	skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC);