Lines Matching refs:ifa

93 	struct ifaddr	*ifa;  member
481 struct ifaddr *ifa; in if_attach() local
554 ifa = ifa_create(sizeof(struct ifaddr) + 2 * socksize); in if_attach()
555 sdl = sdl_addr = (struct sockaddr_dl *)(ifa + 1); in if_attach()
561 ifp->if_lladdr = ifa; in if_attach()
562 ifa->ifa_ifp = ifp; in if_attach()
563 ifa->ifa_addr = (struct sockaddr *)sdl; in if_attach()
565 ifa->ifa_netmask = (struct sockaddr *)sdl; in if_attach()
569 ifa_iflink(ifa, ifp, 0 /* Insert head */); in if_attach()
788 struct ifaddr *ifa = ifac->ifa; in if_purgeaddrs_nolink_dispatch() local
791 if (ifa->ifa_addr->sa_family == AF_UNSPEC) in if_purgeaddrs_nolink_dispatch()
795 if (ifa->ifa_addr->sa_family == AF_LINK) in if_purgeaddrs_nolink_dispatch()
799 if (ifa->ifa_addr->sa_family == AF_INET) { in if_purgeaddrs_nolink_dispatch()
805 kprintf("purge in4 addr %p: ", ifa); in if_purgeaddrs_nolink_dispatch()
808 ifa->ifa_containers[i].ifa_refcnt); in if_purgeaddrs_nolink_dispatch()
814 memcpy(&saved_addr, ifa->ifa_addr, sizeof(saved_addr)); in if_purgeaddrs_nolink_dispatch()
815 if (ifa->ifa_dstaddr != NULL) { in if_purgeaddrs_nolink_dispatch()
816 memcpy(&saved_dst, ifa->ifa_dstaddr, in if_purgeaddrs_nolink_dispatch()
823 ifr.ifra_addr = *ifa->ifa_addr; in if_purgeaddrs_nolink_dispatch()
824 if (ifa->ifa_dstaddr) in if_purgeaddrs_nolink_dispatch()
825 ifr.ifra_broadaddr = *ifa->ifa_dstaddr; in if_purgeaddrs_nolink_dispatch()
837 if (ifa->ifa_addr->sa_family == AF_INET6) { in if_purgeaddrs_nolink_dispatch()
841 kprintf("purge in6 addr %p: ", ifa); in if_purgeaddrs_nolink_dispatch()
844 ifa->ifa_containers[i].ifa_refcnt); in if_purgeaddrs_nolink_dispatch()
849 in6_purgeaddr(ifa); in if_purgeaddrs_nolink_dispatch()
855 ifa->ifa_addr->sa_family); in if_purgeaddrs_nolink_dispatch()
856 ifa_ifunlink(ifa, ifp); in if_purgeaddrs_nolink_dispatch()
857 ifa_destroy(ifa); in if_purgeaddrs_nolink_dispatch()
1020 struct ifaddr *ifa; in if_detach() local
1022 ifa = TAILQ_FIRST(&ifp->if_addrheads[mycpuid])->ifa; in if_detach()
1023 KASSERT(ifa->ifa_addr->sa_family == AF_LINK, in if_detach()
1026 ifa_ifunlink(ifa, ifp); in if_detach()
1027 ifa_destroy(ifa); in if_detach()
1358 ifa_maintain_loopback_route(int cmd, struct ifaddr *ifa, struct sockaddr *ia) in ifa_maintain_loopback_route() argument
1370 ifp = ifa->ifa_ifp; in ifa_maintain_loopback_route()
1385 rti_ifa = ifaof_ifpforaddr(ifa->ifa_addr, info.rti_ifp); in ifa_maintain_loopback_route()
1402 info.rti_flags = ifa->ifa_flags | RTF_HOST | RTF_LOCAL; in ifa_maintain_loopback_route()
1421 ifa_add_loopback_route(struct ifaddr *ifa, struct sockaddr *ia) in ifa_add_loopback_route() argument
1423 return ifa_maintain_loopback_route(RTM_ADD, ifa, ia); in ifa_add_loopback_route()
1427 ifa_del_loopback_route(struct ifaddr *ifa, struct sockaddr *ia) in ifa_del_loopback_route() argument
1429 return ifa_maintain_loopback_route(RTM_DELETE, ifa, ia); in ifa_del_loopback_route()
1475 ifa_match_withmask(const struct ifaddr *ifa, const struct sockaddr *addr) in ifa_match_withmask() argument
1479 KKASSERT(ifa->ifa_addr->sa_family == addr->sa_family); in ifa_match_withmask()
1482 cp2 = ifa->ifa_addr->sa_data; in ifa_match_withmask()
1483 cp3 = ifa->ifa_netmask->sa_data; in ifa_match_withmask()
1484 cplim = (const char *)ifa->ifa_netmask + ifa->ifa_netmask->sa_len; in ifa_match_withmask()
1525 struct ifaddr *ifa = ifac->ifa; in ifa_ifwithaddr() local
1527 if (ifa->ifa_addr->sa_family != addr->sa_family) in ifa_ifwithaddr()
1529 if (sa_equal(addr, ifa->ifa_addr)) in ifa_ifwithaddr()
1530 return (ifa); in ifa_ifwithaddr()
1532 ifa->ifa_broadaddr && in ifa_ifwithaddr()
1534 ifa->ifa_broadaddr->sa_len != 0 && in ifa_ifwithaddr()
1535 sa_equal(ifa->ifa_broadaddr, addr)) in ifa_ifwithaddr()
1536 return (ifa); in ifa_ifwithaddr()
1560 struct ifaddr *ifa = ifac->ifa; in ifa_ifwithdstaddr() local
1562 if (ifa->ifa_addr->sa_family != addr->sa_family) in ifa_ifwithdstaddr()
1564 if (ifa->ifa_dstaddr && in ifa_ifwithdstaddr()
1565 sa_equal(addr, ifa->ifa_dstaddr)) in ifa_ifwithdstaddr()
1566 return (ifa); in ifa_ifwithdstaddr()
1605 struct ifaddr *ifa = ifac->ifa; in ifa_ifwithnet() local
1607 if (ifa->ifa_addr->sa_family != af) in ifa_ifwithnet()
1618 if (ifa->ifa_dstaddr != NULL && in ifa_ifwithnet()
1619 sa_equal(addr, ifa->ifa_dstaddr)) in ifa_ifwithnet()
1620 return (ifa); in ifa_ifwithnet()
1626 if (ifa->ifa_claim_addr) { in ifa_ifwithnet()
1627 if ((*ifa->ifa_claim_addr)(ifa, addr)) { in ifa_ifwithnet()
1628 return (ifa); in ifa_ifwithnet()
1634 if (ifa->ifa_netmask == NULL || in ifa_ifwithnet()
1635 !ifa_match_withmask(ifa, addr)) in ifa_ifwithnet()
1648 rn_refines(ifa->ifa_netmask, in ifa_ifwithnet()
1651 ifa->ifa_netmask) && in ifa_ifwithnet()
1652 ifa_prefer(ifa, ifa_maybe))) in ifa_ifwithnet()
1653 ifa_maybe = ifa; in ifa_ifwithnet()
1676 struct ifaddr *ifa = ifac->ifa; in ifaof_ifpforaddr() local
1678 if (ifa->ifa_addr->sa_family != af) in ifaof_ifpforaddr()
1681 ifa_maybe = ifa; in ifaof_ifpforaddr()
1682 if (ifa->ifa_netmask == NULL) { in ifaof_ifpforaddr()
1683 if (sa_equal(addr, ifa->ifa_addr) || in ifaof_ifpforaddr()
1684 (ifa->ifa_dstaddr != NULL && in ifaof_ifpforaddr()
1685 sa_equal(addr, ifa->ifa_dstaddr))) in ifaof_ifpforaddr()
1686 return (ifa); in ifaof_ifpforaddr()
1690 if (sa_equal(addr, ifa->ifa_dstaddr)) in ifaof_ifpforaddr()
1691 return (ifa); in ifaof_ifpforaddr()
1693 if (ifa_match_withmask(ifa, addr)) in ifaof_ifpforaddr()
1694 return (ifa); in ifaof_ifpforaddr()
1730 struct ifaddr *ifa = ifac->ifa; in if_down_dispatch() local
1733 if (ifa->ifa_addr->sa_family == AF_UNSPEC) in if_down_dispatch()
1736 kpfctlinput(PRC_IFDOWN, ifa->ifa_addr); in if_down_dispatch()
1772 struct ifaddr *ifa = ifac->ifa; in if_up_dispatch() local
1775 if (ifa->ifa_addr->sa_family == AF_UNSPEC) in if_up_dispatch()
1778 kpfctlinput(PRC_IFUP, ifa->ifa_addr); in if_up_dispatch()
1972 struct ifaddr *ifa; in ifioctl() local
2192 ifa = TAILQ_FIRST(&ifp->if_addrheads[mycpuid])->ifa; in ifioctl()
2193 sdl = (struct sockaddr_dl *)ifa->ifa_addr; in ifioctl()
2207 sdl = (struct sockaddr_dl *)ifa->ifa_netmask; in ifioctl()
2536 struct ifaddr *ifa = ifac->ifa; in ifconf() local
2542 if (ifa->ifa_addr->sa_family == AF_UNSPEC) in ifconf()
2547 sa = ifa->ifa_addr; in ifconf()
2556 IFAREF(ifa); in ifconf()
2564 IFAFREE(ifa); in ifconf()
2576 IFAFREE(ifa); in ifconf()
2905 struct ifaddr *ifa = ifac->ifa; in if_setlladdr() local
2907 if (ifa->ifa_addr != NULL && in if_setlladdr()
2908 ifa->ifa_addr->sa_family == AF_INET) in if_setlladdr()
2909 arp_gratuitous(ifp, ifa); in if_setlladdr()
3416 struct ifaddr *ifa; in ifa_create() local
3419 KASSERT(size >= sizeof(*ifa), ("ifaddr size too small")); in ifa_create()
3421 ifa = kmalloc(size, M_IFADDR, M_INTWAIT | M_ZERO); in ifa_create()
3427 ifa->ifa_containers = in ifa_create()
3432 ifa->ifa_ncnt = ncpus; in ifa_create()
3434 struct ifaddr_container *ifac = &ifa->ifa_containers[i]; in ifa_create()
3437 ifac->ifa = ifa; in ifa_create()
3441 kprintf("alloc ifa %p %d\n", ifa, size); in ifa_create()
3443 return ifa; in ifa_create()
3449 struct ifaddr *ifa = ifac->ifa; in ifac_free() local
3459 kprintf("try free ifa %p cpu_id %d\n", ifac->ifa, cpu_id); in ifac_free()
3462 KASSERT(ifa->ifa_ncnt > 0 && ifa->ifa_ncnt <= ncpus, in ifac_free()
3463 ("invalid # of ifac, %d", ifa->ifa_ncnt)); in ifac_free()
3464 if (atomic_fetchadd_int(&ifa->ifa_ncnt, -1) == 1) { in ifac_free()
3466 kprintf("free ifa %p\n", ifa); in ifac_free()
3468 kfree(ifa->ifa_containers, M_IFADDR); in ifac_free()
3469 kfree(ifa, M_IFADDR); in ifac_free()
3477 struct ifaddr *ifa = msg->ifa; in ifa_iflink_dispatch() local
3484 ifac = &ifa->ifa_containers[cpu]; in ifa_iflink_dispatch()
3501 ifa_iflink(struct ifaddr *ifa, struct ifnet *ifp, int tail) in ifa_iflink() argument
3507 msg.ifa = ifa; in ifa_iflink()
3518 struct ifaddr *ifa = msg->ifa; in ifa_ifunlink_dispatch() local
3525 ifac = &ifa->ifa_containers[cpu]; in ifa_ifunlink_dispatch()
3539 ifa_ifunlink(struct ifaddr *ifa, struct ifnet *ifp) in ifa_ifunlink() argument
3545 msg.ifa = ifa; in ifa_ifunlink()
3556 IFAFREE(msg->ifa); in ifa_destroy_dispatch()
3561 ifa_destroy(struct ifaddr *ifa) in ifa_destroy() argument
3567 msg.ifa = ifa; in ifa_destroy()
3888 struct ifaddr *ifa; in ifa_marker_init() local
3891 ifa = &mark->ifa; in ifa_marker_init()
3893 mark->ifac.ifa = ifa; in ifa_marker_init()
3895 ifa->ifa_addr = &mark->addr; in ifa_marker_init()
3896 ifa->ifa_dstaddr = &mark->dstaddr; in ifa_marker_init()
3897 ifa->ifa_netmask = &mark->netmask; in ifa_marker_init()
3898 ifa->ifa_ifp = ifp; in ifa_marker_init()