Lines Matching refs:mreq
3663 static int packet_mc_add(struct sock *sk, struct packet_mreq_max *mreq)
3673 dev = __dev_get_by_index(sock_net(sk), mreq->mr_ifindex);
3678 if (mreq->mr_alen > dev->addr_len)
3688 if (ml->ifindex == mreq->mr_ifindex &&
3689 ml->type == mreq->mr_type &&
3690 ml->alen == mreq->mr_alen &&
3691 memcmp(ml->addr, mreq->mr_address, ml->alen) == 0) {
3699 i->type = mreq->mr_type;
3700 i->ifindex = mreq->mr_ifindex;
3701 i->alen = mreq->mr_alen;
3702 memcpy(i->addr, mreq->mr_address, i->alen);
3718 static int packet_mc_drop(struct sock *sk, struct packet_mreq_max *mreq)
3725 if (ml->ifindex == mreq->mr_ifindex &&
3726 ml->type == mreq->mr_type &&
3727 ml->alen == mreq->mr_alen &&
3728 memcmp(ml->addr, mreq->mr_address, ml->alen) == 0) {
3780 struct packet_mreq_max mreq;
3782 memset(&mreq, 0, sizeof(mreq));
3785 if (len > sizeof(mreq))
3786 len = sizeof(mreq);
3787 if (copy_from_sockptr(&mreq, optval, len))
3789 if (len < (mreq.mr_alen + offsetof(struct packet_mreq, mr_address)))
3792 ret = packet_mc_add(sk, &mreq);
3794 ret = packet_mc_drop(sk, &mreq);