]> git.proxmox.com Git - pve-kernel-2.6.32.git/blob - 0002-bridge-send-query-as-soon-as-leave-is-received.patch
Makefile: use "--product pve" for upload target
[pve-kernel-2.6.32.git] / 0002-bridge-send-query-as-soon-as-leave-is-received.patch
1 From fa6209a8834a92dc83dd31451738cb6a46c18126 Mon Sep 17 00:00:00 2001
2 From: Alexandre Derumier <aderumier@odiso.com>
3 Date: Mon, 3 Jun 2013 17:35:42 +0200
4 Subject: [PATCH 2/2] bridge: send query as soon as leave is received
5
6 Continue sending queries when leave is received if the user marks it as a querier.
7
8 Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
9 ---
10 net/bridge/br_multicast.c | 25 +++++++++++++++++++++++++
11 1 file changed, 25 insertions(+)
12
13 diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
14 index ceb364a..cb308ff 100644
15 --- a/net/bridge/br_multicast.c
16 +++ b/net/bridge/br_multicast.c
17 @@ -1249,6 +1249,8 @@ static void br_multicast_leave_group(struct net_bridge *br,
18 struct net_bridge_mdb_htable *mdb;
19 struct net_bridge_mdb_entry *mp;
20 struct net_bridge_port_group *p;
21 + struct net_bridge_port_group **pp;
22 +
23 unsigned long now;
24 unsigned long time;
25
26 @@ -1263,6 +1265,29 @@ static void br_multicast_leave_group(struct net_bridge *br,
27 if (!mp)
28 goto out;
29
30 + if (br->multicast_querier &&
31 + !timer_pending(&br->multicast_querier_timer)) {
32 + __br_multicast_send_query(br, port, &mp->addr);
33 +
34 + time = jiffies + br->multicast_last_member_count *
35 + br->multicast_last_member_interval;
36 + mod_timer(port ? &port->multicast_query_timer :
37 + &br->multicast_query_timer, time);
38 +
39 + for (pp = &mp->ports; (p = *pp); pp = &p->next) {
40 + if (p->port != port)
41 + continue;
42 +
43 + if (!hlist_unhashed(&p->mglist) &&
44 + (timer_pending(&p->timer) ?
45 + time_after(p->timer.expires, time) :
46 + try_to_del_timer_sync(&p->timer) >= 0)) {
47 + mod_timer(&p->timer, time);
48 + }
49 +
50 + break;
51 + }
52 + }
53 now = jiffies;
54 time = now + br->multicast_last_member_count *
55 br->multicast_last_member_interval;
56 --
57 1.7.10.4
58