Lines Matching refs:ifma
1054 struct ifmultiaddr *ifma; in if_purgemaddrs() local
1058 ifma = CK_STAILQ_FIRST(&ifp->if_multiaddrs); in if_purgemaddrs()
1059 CK_STAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifmultiaddr, ifma_link); in if_purgemaddrs()
1060 if_delmulti_locked(ifp, ifma, 1); in if_purgemaddrs()
2772 struct ifmultiaddr *ifma; in ifhwioctl() local
2782 ifma = if_findmulti(ifp, &ifr->ifr_addr); in ifhwioctl()
2784 if (ifma != NULL) in ifhwioctl()
2787 error = if_addmulti(ifp, &ifr->ifr_addr, &ifma); in ifhwioctl()
3376 struct ifmultiaddr *ifma; in if_findmulti() local
3380 CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { in if_findmulti()
3382 if (sa_dl_equal(ifma->ifma_addr, sa)) in if_findmulti()
3385 if (sa_equal(ifma->ifma_addr, sa)) in if_findmulti()
3390 return ifma; in if_findmulti()
3404 struct ifmultiaddr *ifma; in if_allocmulti() local
3407 ifma = malloc(sizeof *ifma, M_IFMADDR, mflags | in if_allocmulti()
3409 if (ifma == NULL) in if_allocmulti()
3414 free(ifma, M_IFMADDR); in if_allocmulti()
3418 ifma->ifma_addr = dupsa; in if_allocmulti()
3420 ifma->ifma_ifp = ifp; in if_allocmulti()
3421 ifma->ifma_refcount = 1; in if_allocmulti()
3422 ifma->ifma_protospec = NULL; in if_allocmulti()
3425 ifma->ifma_lladdr = NULL; in if_allocmulti()
3426 return (ifma); in if_allocmulti()
3431 free(ifma->ifma_addr, M_IFMADDR); in if_allocmulti()
3432 free(ifma, M_IFMADDR); in if_allocmulti()
3436 ifma->ifma_lladdr = dupsa; in if_allocmulti()
3438 return (ifma); in if_allocmulti()
3451 if_freemulti_internal(struct ifmultiaddr *ifma) in if_freemulti_internal() argument
3454 KASSERT(ifma->ifma_refcount == 0, ("if_freemulti: refcount %d", in if_freemulti_internal()
3455 ifma->ifma_refcount)); in if_freemulti_internal()
3457 if (ifma->ifma_lladdr != NULL) in if_freemulti_internal()
3458 free(ifma->ifma_lladdr, M_IFMADDR); in if_freemulti_internal()
3461 printf("%s freeing ifma: %p\n", __func__, ifma); in if_freemulti_internal()
3463 free(ifma->ifma_addr, M_IFMADDR); in if_freemulti_internal()
3464 free(ifma, M_IFMADDR); in if_freemulti_internal()
3470 struct ifmultiaddr *ifma; in if_destroymulti() local
3472 ifma = __containerof(ctx, struct ifmultiaddr, ifma_epoch_ctx); in if_destroymulti()
3473 if_freemulti_internal(ifma); in if_destroymulti()
3477 if_freemulti(struct ifmultiaddr *ifma) in if_freemulti() argument
3479 KASSERT(ifma->ifma_refcount == 0, ("if_freemulti_epoch: refcount %d", in if_freemulti()
3480 ifma->ifma_refcount)); in if_freemulti()
3482 NET_EPOCH_CALL(if_destroymulti, &ifma->ifma_epoch_ctx); in if_freemulti()
3507 struct ifmultiaddr *ifma, *ll_ifma; in if_addmulti() local
3523 ifma = if_findmulti(ifp, sa); in if_addmulti()
3524 if (ifma != NULL) { in if_addmulti()
3525 ifma->ifma_refcount++; in if_addmulti()
3527 *retifma = ifma; in if_addmulti()
3556 ifma = if_allocmulti(ifp, sa, llsa, M_NOWAIT); in if_addmulti()
3557 if (ifma == NULL) { in if_addmulti()
3573 --ifma->ifma_refcount; in if_addmulti()
3574 if_freemulti(ifma); in if_addmulti()
3583 ifma->ifma_llifma = ll_ifma; in if_addmulti()
3591 ifma->ifma_flags |= IFMA_F_ENQUEUED; in if_addmulti()
3592 CK_STAILQ_INSERT_HEAD(&ifp->if_multiaddrs, ifma, ifma_link); in if_addmulti()
3595 *retifma = ifma; in if_addmulti()
3601 rt_newmaddrmsg(RTM_NEWMADDR, ifma); in if_addmulti()
3656 struct ifmultiaddr *ifma; in if_delmulti() local
3663 ifma = if_findmulti(ifp, sa); in if_delmulti()
3664 if (ifma != NULL) in if_delmulti()
3665 lastref = if_delmulti_locked(ifp, ifma, 0); in if_delmulti()
3668 if (ifma == NULL) in if_delmulti()
3685 struct ifmultiaddr *ifma; in if_delallmulti() local
3689 CK_STAILQ_FOREACH_SAFE(ifma, &ifp->if_multiaddrs, ifma_link, next) in if_delallmulti()
3690 if_delmulti_locked(ifp, ifma, 0); in if_delallmulti()
3695 if_delmulti_ifma(struct ifmultiaddr *ifma) in if_delmulti_ifma() argument
3697 if_delmulti_ifma_flags(ifma, 0); in if_delmulti_ifma()
3707 if_delmulti_ifma_flags(struct ifmultiaddr *ifma, int flags) in if_delmulti_ifma_flags() argument
3711 MCDPRINTF("%s freeing ifma: %p\n", __func__, ifma); in if_delmulti_ifma_flags()
3715 ifp = ifma->ifma_ifp; in if_delmulti_ifma_flags()
3738 lastref = if_delmulti_locked(ifp, ifma, flags); in if_delmulti_ifma_flags()
3761 if_delmulti_locked(struct ifnet *ifp, struct ifmultiaddr *ifma, int detaching) in if_delmulti_locked() argument
3765 if (ifp != NULL && ifma->ifma_ifp != NULL) { in if_delmulti_locked()
3766 KASSERT(ifma->ifma_ifp == ifp, in if_delmulti_locked()
3771 ifp = ifma->ifma_ifp; in if_delmulti_locked()
3772 MCDPRINTF("%s freeing %p from %s \n", __func__, ifma, ifp ? ifp->if_xname : ""); in if_delmulti_locked()
3790 rt_newmaddrmsg(RTM_DELMADDR, ifma); in if_delmulti_locked()
3791 ifma->ifma_ifp = NULL; in if_delmulti_locked()
3795 if (--ifma->ifma_refcount > 0) in if_delmulti_locked()
3798 if (ifp != NULL && detaching == 0 && (ifma->ifma_flags & IFMA_F_ENQUEUED)) { in if_delmulti_locked()
3799 CK_STAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifmultiaddr, ifma_link); in if_delmulti_locked()
3800 ifma->ifma_flags &= ~IFMA_F_ENQUEUED; in if_delmulti_locked()
3806 ll_ifma = ifma->ifma_llifma; in if_delmulti_locked()
3808 KASSERT(ifma->ifma_lladdr != NULL, in if_delmulti_locked()
3828 MPASS(ifma != ifmatmp); in if_delmulti_locked()
3831 if_freemulti(ifma); in if_delmulti_locked()
4627 struct ifmultiaddr *ifma; in if_llmaddr_count() local
4632 CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) in if_llmaddr_count()
4633 if (ifma->ifma_addr->sa_family == AF_LINK) in if_llmaddr_count()
4651 struct ifmultiaddr *ifma; in if_foreach_llmaddr() local
4658 CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { in if_foreach_llmaddr()
4659 if (ifma->ifma_addr->sa_family != AF_LINK) in if_foreach_llmaddr()
4661 count += (*cb)(cb_arg, (struct sockaddr_dl *)ifma->ifma_addr, in if_foreach_llmaddr()