Lines Matching defs:ifa
830 struct ifaddr *ifa;
883 ifasize = sizeof(*ifa) + 2 * socksize;
884 ifa = ifa_alloc(ifasize, M_WAITOK);
885 sdl = (struct sockaddr_dl *)(ifa + 1);
892 ifp->if_addr = ifa;
893 ifa->ifa_ifp = ifp;
894 ifa->ifa_addr = (struct sockaddr *)sdl;
896 ifa->ifa_netmask = (struct sockaddr *)sdl;
900 CK_STAILQ_INSERT_HEAD(&ifp->if_addrhead, ifa, ifa_link);
941 for (ifa = ifp->if_addr; ifa != NULL;
942 ifa = CK_STAILQ_NEXT(ifa, ifa_link)) {
943 if (ifa->ifa_addr->sa_family == AF_LINK) {
944 sdl = (struct sockaddr_dl *)ifa->ifa_addr;
1014 struct ifaddr *ifa;
1030 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
1031 if (ifa->ifa_addr->sa_family != AF_LINK)
1036 if (ifa == NULL)
1040 if (ifa->ifa_addr->sa_family == AF_INET) {
1044 ifr.ifr_addr = *ifa->ifa_addr;
1051 if (ifa->ifa_addr->sa_family == AF_INET6) {
1052 in6_purgeifaddr((struct in6_ifaddr *)ifa);
1058 CK_STAILQ_REMOVE(&ifp->if_addrhead, ifa, ifaddr, ifa_link);
1060 ifa_free(ifa);
1119 struct ifaddr *ifa;
1224 ifa = CK_STAILQ_FIRST(&ifp->if_addrhead);
1225 CK_STAILQ_REMOVE(&ifp->if_addrhead, ifa, ifaddr, ifa_link);
1227 ifa_free(ifa);
1726 struct ifaddr *ifa;
1731 ifa = malloc(size, M_IFADDR, M_ZERO | flags);
1732 if (ifa == NULL)
1735 if ((ifa->ifa_opackets = counter_u64_alloc(flags)) == NULL)
1737 if ((ifa->ifa_ipackets = counter_u64_alloc(flags)) == NULL)
1739 if ((ifa->ifa_obytes = counter_u64_alloc(flags)) == NULL)
1741 if ((ifa->ifa_ibytes = counter_u64_alloc(flags)) == NULL)
1744 refcount_init(&ifa->ifa_refcnt, 1);
1746 return (ifa);
1750 counter_u64_free(ifa->ifa_opackets);
1751 counter_u64_free(ifa->ifa_ipackets);
1752 counter_u64_free(ifa->ifa_obytes);
1753 counter_u64_free(ifa->ifa_ibytes);
1754 free(ifa, M_IFADDR);
1760 ifa_ref(struct ifaddr *ifa)
1764 old = refcount_acquire(&ifa->ifa_refcnt);
1765 KASSERT(old > 0, ("%s: ifa %p has 0 refs", __func__, ifa));
1769 ifa_try_ref(struct ifaddr *ifa)
1773 return (refcount_acquire_if_not_zero(&ifa->ifa_refcnt));
1779 struct ifaddr *ifa;
1781 ifa = __containerof(ctx, struct ifaddr, ifa_epoch_ctx);
1782 counter_u64_free(ifa->ifa_opackets);
1783 counter_u64_free(ifa->ifa_ipackets);
1784 counter_u64_free(ifa->ifa_obytes);
1785 counter_u64_free(ifa->ifa_ibytes);
1786 free(ifa, M_IFADDR);
1790 ifa_free(struct ifaddr *ifa)
1793 if (refcount_release(&ifa->ifa_refcnt))
1794 NET_EPOCH_CALL(ifa_destroy, &ifa->ifa_epoch_ctx);
1821 struct ifaddr *ifa;
1826 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
1827 if (ifa->ifa_addr->sa_family != addr->sa_family)
1829 if (sa_equal(addr, ifa->ifa_addr)) {
1834 ifa->ifa_broadaddr &&
1835 ifa->ifa_broadaddr->sa_len != 0 &&
1836 sa_equal(ifa->ifa_broadaddr, addr)) {
1841 ifa = NULL;
1843 return (ifa);
1866 struct ifaddr *ifa;
1872 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
1873 if (ifa->ifa_addr->sa_family != addr->sa_family)
1876 ifa->ifa_broadaddr &&
1877 ifa->ifa_broadaddr->sa_len != 0 &&
1878 sa_equal(ifa->ifa_broadaddr, addr)) {
1883 ifa = NULL;
1885 return (ifa);
1896 struct ifaddr *ifa;
1904 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
1905 if (ifa->ifa_addr->sa_family != addr->sa_family)
1907 if (ifa->ifa_dstaddr != NULL &&
1908 sa_equal(addr, ifa->ifa_dstaddr)) {
1913 ifa = NULL;
1915 return (ifa);
1926 struct ifaddr *ifa;
1949 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
1952 if (ifa->ifa_addr->sa_family != af)
1964 if (ifa->ifa_dstaddr != NULL &&
1965 sa_equal(addr, ifa->ifa_dstaddr)) {
1970 * Scan all the bits in the ifa's address.
1976 if (ifa->ifa_netmask == 0)
1979 cp2 = ifa->ifa_addr->sa_data;
1980 cp3 = ifa->ifa_netmask->sa_data;
1981 cplim = ifa->ifa_netmask->sa_len
1982 + (char *)ifa->ifa_netmask;
1995 ifa_preferred(ifa_maybe, ifa) ||
1996 rn_refines((caddr_t)ifa->ifa_netmask,
1998 ifa_maybe = ifa;
2003 ifa = ifa_maybe;
2006 return (ifa);
2016 struct ifaddr *ifa;
2026 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
2027 if (ifa->ifa_addr->sa_family != af)
2030 ifa_maybe = ifa;
2031 if (ifa->ifa_netmask == 0) {
2032 if (sa_equal(addr, ifa->ifa_addr) ||
2033 (ifa->ifa_dstaddr &&
2034 sa_equal(addr, ifa->ifa_dstaddr)))
2039 if (ifa->ifa_dstaddr && sa_equal(addr, ifa->ifa_dstaddr))
2043 cp2 = ifa->ifa_addr->sa_data;
2044 cp3 = ifa->ifa_netmask->sa_data;
2045 cplim = ifa->ifa_netmask->sa_len + (char *)ifa->ifa_netmask;
2053 ifa = ifa_maybe;
2055 return (ifa);
2059 * See whether new ifa is better than current one:
3132 struct ifaddr *ifa;
3160 ifa = ifp->if_addr;
3161 sdl = (struct sockaddr_dl *)ifa->ifa_addr;
3175 sdl = (struct sockaddr_dl *)ifa->ifa_netmask;
3298 struct ifaddr *ifa;
3339 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
3340 struct sockaddr *sa = ifa->ifa_addr;
3883 struct ifaddr *ifa;
3886 ifa = ifp->if_addr;
3887 if (ifa == NULL)
3890 sdl = (struct sockaddr_dl *)ifa->ifa_addr;
4500 struct ifaddr *ifa;
4505 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link)
4506 if (ifa->ifa_addr->sa_family == AF_LINK)
4637 struct ifaddr *ifa;
4644 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
4645 if (ifa->ifa_addr->sa_family != AF_LINK)
4647 count += (*cb)(cb_arg, (struct sockaddr_dl *)ifa->ifa_addr,
4705 struct ifaddr *ifa;
4712 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
4713 if (ifa->ifa_addr->sa_family != type)
4715 count += (*cb)(cb_arg, ifa, count);
4725 struct ifaddr *ifa;
4730 ifa = CK_STAILQ_FIRST(&ifp->if_addrhead);
4731 if (ifa != NULL)
4732 iter->context[0] = CK_STAILQ_NEXT(ifa, ifa_link);
4735 return (ifa);
4741 struct ifaddr *ifa = iter->context[0];
4743 if (ifa != NULL)
4744 iter->context[0] = CK_STAILQ_NEXT(ifa, ifa_link);
4745 return (ifa);