br_multicast.c (54cb43199e14c1181ddcd4a3782f1f7eb56bdab8) | br_multicast.c (58d913a32664fae5ac2ccd9a9c23b8e7037df740) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Bridge multicast support. 4 * 5 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au> 6 */ 7 8#include <linux/err.h> --- 1298 unchanged lines hidden (view full) --- 1307 if (src) 1308 memcpy(p->eth_addr, src, ETH_ALEN); 1309 else 1310 eth_broadcast_addr(p->eth_addr); 1311 1312 return p; 1313} 1314 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Bridge multicast support. 4 * 5 * Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au> 6 */ 7 8#include <linux/err.h> --- 1298 unchanged lines hidden (view full) --- 1307 if (src) 1308 memcpy(p->eth_addr, src, ETH_ALEN); 1309 else 1310 eth_broadcast_addr(p->eth_addr); 1311 1312 return p; 1313} 1314 |
1315void br_multicast_host_join(struct net_bridge_mdb_entry *mp, bool notify) | 1315void br_multicast_host_join(const struct net_bridge_mcast *brmctx, 1316 struct net_bridge_mdb_entry *mp, bool notify) |
1316{ 1317 if (!mp->host_joined) { 1318 mp->host_joined = true; 1319 if (br_multicast_is_star_g(&mp->addr)) 1320 br_multicast_star_g_host_state(mp); 1321 if (notify) 1322 br_mdb_notify(mp->br->dev, mp, NULL, RTM_NEWMDB); 1323 } 1324 1325 if (br_group_is_l2(&mp->addr)) 1326 return; 1327 | 1317{ 1318 if (!mp->host_joined) { 1319 mp->host_joined = true; 1320 if (br_multicast_is_star_g(&mp->addr)) 1321 br_multicast_star_g_host_state(mp); 1322 if (notify) 1323 br_mdb_notify(mp->br->dev, mp, NULL, RTM_NEWMDB); 1324 } 1325 1326 if (br_group_is_l2(&mp->addr)) 1327 return; 1328 |
1328 mod_timer(&mp->timer, 1329 jiffies + mp->br->multicast_ctx.multicast_membership_interval); | 1329 mod_timer(&mp->timer, jiffies + brmctx->multicast_membership_interval); |
1330} 1331 1332void br_multicast_host_leave(struct net_bridge_mdb_entry *mp, bool notify) 1333{ 1334 if (!mp->host_joined) 1335 return; 1336 1337 mp->host_joined = false; --- 20 unchanged lines hidden (view full) --- 1358 if (!br_multicast_ctx_should_use(brmctx, pmctx)) 1359 goto out; 1360 1361 mp = br_multicast_new_group(brmctx->br, group); 1362 if (IS_ERR(mp)) 1363 return ERR_CAST(mp); 1364 1365 if (!pmctx) { | 1330} 1331 1332void br_multicast_host_leave(struct net_bridge_mdb_entry *mp, bool notify) 1333{ 1334 if (!mp->host_joined) 1335 return; 1336 1337 mp->host_joined = false; --- 20 unchanged lines hidden (view full) --- 1358 if (!br_multicast_ctx_should_use(brmctx, pmctx)) 1359 goto out; 1360 1361 mp = br_multicast_new_group(brmctx->br, group); 1362 if (IS_ERR(mp)) 1363 return ERR_CAST(mp); 1364 1365 if (!pmctx) { |
1366 br_multicast_host_join(mp, true); | 1366 br_multicast_host_join(brmctx, mp, true); |
1367 goto out; 1368 } 1369 1370 for (pp = &mp->ports; 1371 (p = mlock_dereference(*pp, brmctx->br)) != NULL; 1372 pp = &p->next) { 1373 if (br_port_group_equal(p, pmctx->port, src)) 1374 goto found; --- 3376 unchanged lines hidden --- | 1367 goto out; 1368 } 1369 1370 for (pp = &mp->ports; 1371 (p = mlock_dereference(*pp, brmctx->br)) != NULL; 1372 pp = &p->next) { 1373 if (br_port_group_equal(p, pmctx->port, src)) 1374 goto found; --- 3376 unchanged lines hidden --- |