Lines Matching refs:src
61 const unsigned char *src);
72 __u16 vid, const unsigned char *src);
78 const unsigned char *src,
171 ip.src.ip4 = ip_hdr(skb)->saddr;
175 ip.src.ip4 = 0;
184 ip.src.ip6 = ipv6_hdr(skb)->saddr;
188 memset(&ip.src.ip6, 0, sizeof(ip.src.ip6));
205 * to inconsistent timers when the contexts are changed, i.e. src timer
281 const unsigned char *src)
289 return ether_addr_equal(src, p->eth_addr);
375 sg_ip.src = src_ent->addr.src;
426 sg_ip.src = src_ent->addr.src;
515 static void br_multicast_fwd_src_add(struct net_bridge_group_src *src)
523 if (src->flags & BR_SGRP_F_INSTALLED)
527 pmctx = br_multicast_pg_to_port_ctx(src->pg);
531 sg_ip = src->pg->key.addr;
532 sg_ip.src = src->addr.src;
535 src->pg->eth_addr, MCAST_INCLUDE, false,
536 !timer_pending(&src->timer));
539 src->flags |= BR_SGRP_F_INSTALLED;
549 star_mp = br_mdb_ip_get(src->br, &src->pg->key.addr);
556 static void br_multicast_fwd_src_remove(struct net_bridge_group_src *src,
559 struct net_bridge_port_group *p, *pg = src->pg;
566 sg_ip.src = src->addr.src;
568 mp = br_mdb_ip_get(src->br, &sg_ip);
573 (p = mlock_dereference(*pp, src->br)) != NULL;
580 !(src->flags & BR_SGRP_F_USER_ADDED))
588 src->flags &= ~BR_SGRP_F_INSTALLED;
591 /* install S,G and based on src's timer enable or disable forwarding */
592 static void br_multicast_fwd_src_handle(struct net_bridge_group_src *src)
598 br_multicast_fwd_src_add(src);
601 sg_key.addr = src->pg->key.addr;
602 sg_key.addr.src = src->addr.src;
603 sg_key.port = src->pg->key.port;
605 sg = br_sg_port_find(src->br, &sg_key);
610 if (timer_pending(&src->timer))
618 sg_mp = br_mdb_ip_get(src->br, &sg_key.addr);
621 br_mdb_notify(src->br->dev, sg_mp, sg, RTM_NEWMDB);
669 struct net_bridge_group_src *src;
671 src = container_of(gc, struct net_bridge_group_src, mcast_gc);
672 WARN_ON(!hlist_unhashed(&src->node));
674 timer_shutdown_sync(&src->timer);
675 kfree_rcu(src, rcu);
678 void __br_multicast_del_group_src(struct net_bridge_group_src *src)
680 struct net_bridge *br = src->pg->key.port->br;
682 hlist_del_init_rcu(&src->node);
683 src->pg->src_ents--;
684 hlist_add_head(&src->mcast_gc.gc_node, &br->mcast_gc_list);
688 void br_multicast_del_group_src(struct net_bridge_group_src *src,
691 br_multicast_fwd_src_remove(src, fastleave);
692 __br_multicast_del_group_src(src);
1045 ihv3->srcs[lmqt_srcs++] = ent->addr.src.ip4;
1208 mld2q->mld2q_srcs[llqt_srcs++] = ent->addr.src.ip6;
1316 struct net_bridge_group_src *src = from_timer(src, t, timer);
1318 struct net_bridge *br = src->br;
1321 if (hlist_unhashed(&src->node) || !netif_running(br->dev) ||
1322 timer_pending(&src->timer))
1325 pg = src->pg;
1327 br_multicast_del_group_src(src, false);
1332 br_multicast_fwd_src_handle(src);
1347 if (ip->src.ip4 == ent->addr.src.ip4)
1353 if (!ipv6_addr_cmp(&ent->addr.src.ip6, &ip->src.ip6))
1372 if (ipv4_is_zeronet(src_ip->src.ip4) ||
1373 ipv4_is_multicast(src_ip->src.ip4))
1378 if (ipv6_addr_any(&src_ip->src.ip6) ||
1379 ipv6_addr_is_multicast(&src_ip->src.ip6))
1406 const unsigned char *src,
1446 if (src)
1447 memcpy(p->eth_addr, src, ETH_ALEN);
1506 const unsigned char *src,
1531 if (br_port_group_equal(p, pmctx->port, src))
1537 p = br_multicast_new_port_group(pmctx->port, group, *pp, 0, src,
1560 const unsigned char *src,
1568 pg = __br_multicast_add_group(brmctx, pmctx, group, src, filter_mode,
1581 const unsigned char *src,
1596 return br_multicast_add_group(brmctx, pmctx, &br_group, src,
1605 const unsigned char *src,
1620 return br_multicast_add_group(brmctx, pmctx, &br_group, src,
1773 brmctx->ip4_querier.addr.src.ip4 = ip_hdr(skb)->saddr;
1776 brmctx->ip6_querier.addr.src.ip6 = ipv6_hdr(skb)->saddr;
2163 static void __grp_src_mod_timer(struct net_bridge_group_src *src,
2166 mod_timer(&src->timer, expires);
2167 br_multicast_fwd_src_handle(src);
2271 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2310 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2349 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2421 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2469 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2550 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2595 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2670 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2708 memcpy(&src_ip.src, srcs + (src_idx * addr_size), addr_size);
2768 const unsigned char *src)
2776 if (br_port_group_equal(pg, p, src))
2790 const unsigned char *src;
2830 src = eth_hdr(skb)->h_source;
2836 group, vid, src);
2841 vid, src, igmpv2);
2856 pg = br_multicast_find_port(mdst, pmctx->port, src);
2914 const unsigned char *src;
2966 src = eth_hdr(skb)->h_source;
2973 vid, src);
2979 src, mldv1);
2994 pg = br_multicast_find_port(mdst, pmctx->port, src);
3059 if (!querier->addr.src.ip4 ||
3060 ntohl(saddr->src.ip4) <= ntohl(querier->addr.src.ip4))
3068 if (ipv6_addr_cmp(&saddr->src.ip6, &querier->addr.src.ip6) <= 0)
3146 querier.addr.src.ip4)) {
3169 &querier.addr.src.ip6)) {
3467 saddr.src.ip4 = iph->saddr;
3555 saddr.src.ip6 = ipv6_hdr(skb)->saddr;
3599 const unsigned char *src)
3620 if (!br_port_group_equal(p, pmctx->port, src))
3647 if (!br_port_group_equal(p, pmctx->port, src))
3699 const unsigned char *src)
3716 own_query, src);
3724 const unsigned char *src)
3741 own_query, src);
3816 const unsigned char *src;
3839 src = eth_hdr(skb)->h_source;
3847 src, true);
3856 br_ip4_multicast_leave_group(brmctx, pmctx, ih->group, vid, src);
3885 const unsigned char *src;
3909 src = eth_hdr(skb)->h_source;
3912 vid, src, true);
3921 src = eth_hdr(skb)->h_source;
3923 src);
5056 static noinline_for_stack void mcast_stats_add_dir(u64 *dst, u64 *src)
5058 dst[BR_MCAST_DIR_RX] += src[BR_MCAST_DIR_RX];
5059 dst[BR_MCAST_DIR_TX] += src[BR_MCAST_DIR_TX];