-/**
- * llc_sap_mcast - Deliver multicast PDU's to all matching datagram sockets.
- * @sap: SAP
- * @laddr: address of local LLC (MAC + SAP)
- *
- * Search socket list of the SAP and finds connections with same sap.
- * Deliver clone to each.
- */
-static void llc_sap_mcast(struct llc_sap *sap,
- const struct llc_addr *laddr,
- struct sk_buff *skb)
-{
- struct sock *sk;
- struct hlist_node *node;
-
- read_lock_bh(&sap->sk_list.lock);
- sk_for_each(sk, node, &sap->sk_list.list) {
- struct llc_sock *llc = llc_sk(sk);
- struct sk_buff *skb1;
-
- if (sk->sk_type != SOCK_DGRAM)
- continue;
-
- if (llc->laddr.lsap != laddr->lsap)
- continue;
-
- if (llc->dev != skb->dev)
- continue;
-
- skb1 = skb_clone(skb, GFP_ATOMIC);
- if (!skb1)
- break;
-
- sock_hold(sk);
- skb_set_owner_r(skb1, sk);
- llc_sap_rcv(sap, skb1);
- sock_put(sk);
- }
- read_unlock_bh(&sap->sk_list.lock);
-}
-
-