br_multicast.c (6c03ee8bdaa10401f60dee25a719753d2fbbcc36) br_multicast.c (3993c4e159eba0e10c0628737736d6fcf97ab9ef)
1/*
2 * Bridge multicast support.
3 *
4 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the Free
8 * Software Foundation; either version 2 of the License, or (at your option)

--- 2232 unchanged lines hidden (view full) ---

2241 br = port->br;
2242
2243 switch (proto) {
2244 case ETH_P_IP:
2245 if (!timer_pending(&br->ip4_other_query.timer) ||
2246 rcu_dereference(br->ip4_querier.port) == port)
2247 goto unlock;
2248 break;
1/*
2 * Bridge multicast support.
3 *
4 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au>
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the Free
8 * Software Foundation; either version 2 of the License, or (at your option)

--- 2232 unchanged lines hidden (view full) ---

2241 br = port->br;
2242
2243 switch (proto) {
2244 case ETH_P_IP:
2245 if (!timer_pending(&br->ip4_other_query.timer) ||
2246 rcu_dereference(br->ip4_querier.port) == port)
2247 goto unlock;
2248 break;
2249#if IS_ENABLED(CONFIG_IPV6)
2249 case ETH_P_IPV6:
2250 if (!timer_pending(&br->ip6_other_query.timer) ||
2251 rcu_dereference(br->ip6_querier.port) == port)
2252 goto unlock;
2253 break;
2250 case ETH_P_IPV6:
2251 if (!timer_pending(&br->ip6_other_query.timer) ||
2252 rcu_dereference(br->ip6_querier.port) == port)
2253 goto unlock;
2254 break;
2255#endif
2254 default:
2255 goto unlock;
2256 }
2257
2258 ret = true;
2259unlock:
2260 rcu_read_unlock();
2261 return ret;
2262}
2263EXPORT_SYMBOL_GPL(br_multicast_has_querier_adjacent);
2256 default:
2257 goto unlock;
2258 }
2259
2260 ret = true;
2261unlock:
2262 rcu_read_unlock();
2263 return ret;
2264}
2265EXPORT_SYMBOL_GPL(br_multicast_has_querier_adjacent);