Lines Matching defs:ia

343 	struct in6_ifaddr *ia;
364 for (ia = in6_ifaddrs; ia; ia = ia->ia_next) {
365 IFA_LOCK(&ia->ia_ifa);
366 if (IN6_ARE_ADDR_EQUAL(IFA_IN6(ifa), &ia->ia_addr.sin6_addr)) {
369 IFA_UNLOCK(&ia->ia_ifa);
373 IFA_UNLOCK(&ia->ia_ifa);
511 struct in6_ifaddr *ia = NULL;
735 ia = in6_ifaddrs;
736 while (ia != NULL) {
737 if (ia->ia_ifa.ifa_ifp != ifp) {
738 ia = ia->ia_next;
741 IFA_LOCK(&ia->ia_ifa);
742 if (IN6_IS_ADDR_LINKLOCAL(&ia->ia_addr.sin6_addr)) {
743 IFA_ADDREF_LOCKED(&ia->ia_ifa); /* for us */
744 IFA_UNLOCK(&ia->ia_ifa);
746 in6_purgeaddr(&ia->ia_ifa);
747 IFA_REMREF(&ia->ia_ifa); /* for us */
755 ia = in6_ifaddrs;
758 IFA_UNLOCK(&ia->ia_ifa);
759 ia = ia->ia_next;
821 ia = in6ifa_ifpwithaddr(ifp, &sa6->sin6_addr);
823 ia = NULL;
846 if (ia == NULL) {
878 if (ia == NULL) {
891 if (ia == NULL) {
900 if (((ia->ia6_flags & IN6_IFF_TEMPORARY) != 0
907 if (((ia->ia6_flags & IN6_IFF_TEMPORARY) != 0
918 if (((ia->ia6_flags & IN6_IFF_TEMPORARY) != 0
925 if (((ia->ia6_flags & IN6_IFF_TEMPORARY) != 0
942 IFA_LOCK(&ia->ia_ifa);
943 bcopy(&ia->ia_addr, &addr, sizeof (addr));
944 IFA_UNLOCK(&ia->ia_ifa);
946 IFA_REMREF(&ia->ia_ifa);
965 IFA_LOCK(&ia->ia_ifa);
966 bcopy(&ia->ia_dstaddr, &dstaddr, sizeof (dstaddr));
967 IFA_UNLOCK(&ia->ia_ifa);
969 IFA_REMREF(&ia->ia_ifa);
979 IFA_LOCK(&ia->ia_ifa);
980 bcopy(&ia->ia_prefixmask, &ifr->ifr_addr,
982 IFA_UNLOCK(&ia->ia_ifa);
989 IFA_LOCK(&ia->ia_ifa);
990 bcopy(&ia->ia6_flags, &ifr->ifr_ifru.ifru_flags6,
992 IFA_UNLOCK(&ia->ia_ifa);
1044 IFA_LOCK(&ia->ia_ifa);
1049 lt.ia6t_expire = ia->ia6_lifetime.ia6t_expire;
1050 lt.ia6t_preferred = ia->ia6_lifetime.ia6t_preferred;
1051 lt.ia6t_vltime = ia->ia6_lifetime.ia6t_vltime;
1052 lt.ia6t_pltime = ia->ia6_lifetime.ia6t_pltime;
1058 lt.ia6t_expire = (uint32_t)ia->ia6_lifetime.ia6t_expire;
1060 (uint32_t)ia->ia6_lifetime.ia6t_preferred;
1061 lt.ia6t_vltime = (uint32_t)ia->ia6_lifetime.ia6t_vltime;
1062 lt.ia6t_pltime = (uint32_t)ia->ia6_lifetime.ia6t_pltime;
1065 IFA_UNLOCK(&ia->ia_ifa);
1072 IFA_LOCK(&ia->ia_ifa);
1077 ia->ia6_lifetime.ia6t_expire = lt.ia6t_expire;
1078 ia->ia6_lifetime.ia6t_preferred = lt.ia6t_preferred;
1079 ia->ia6_lifetime.ia6t_vltime = lt.ia6t_vltime;
1080 ia->ia6_lifetime.ia6t_pltime = lt.ia6t_pltime;
1085 ia->ia6_lifetime.ia6t_expire =
1087 ia->ia6_lifetime.ia6t_preferred =
1089 ia->ia6_lifetime.ia6t_vltime = lt.ia6t_vltime;
1090 ia->ia6_lifetime.ia6t_pltime = lt.ia6t_pltime;
1093 if (ia->ia6_lifetime.ia6t_vltime != ND6_INFINITE_LIFETIME ||
1094 (ia->ia6_flags & IN6_IFF_TEMPORARY) != 0) {
1095 ia->ia6_lifetime.ia6t_expire =
1096 timenow.tv_sec + ia->ia6_lifetime.ia6t_vltime;
1098 ia->ia6_lifetime.ia6t_expire = 0;
1099 if (ia->ia6_lifetime.ia6t_pltime != ND6_INFINITE_LIFETIME ||
1100 (ia->ia6_flags & IN6_IFF_TEMPORARY) != 0) {
1101 ia->ia6_lifetime.ia6t_preferred =
1102 timenow.tv_sec + ia->ia6_lifetime.ia6t_pltime;
1104 ia->ia6_lifetime.ia6t_preferred = 0;
1105 IFA_UNLOCK(&ia->ia_ifa);
1133 if ((error = in6_update_ifa(ifp, ifra, ia, 0, M_WAITOK)) != 0)
1191 if (ia != NULL)
1192 IFA_REMREF(&ia->ia_ifa);
1193 if ((ia = in6ifa_ifpwithaddr(ifp,
1199 IFA_LOCK(&ia->ia_ifa);
1200 if ((ia->ia6_flags & IN6_IFF_AUTOCONF) != 0 &&
1201 ia->ia6_ndpr == NULL) { /* new autoconfed addr */
1205 ia->ia6_ndpr = pr;
1218 IFA_UNLOCK(&ia->ia_ifa);
1220 if ((e = in6_tmpifadd(ia, 1,
1230 IFA_UNLOCK(&ia->ia_ifa);
1233 IFA_UNLOCK(&ia->ia_ifa);
1267 IFA_LOCK(&ia->ia_ifa);
1270 pr0.ndpr_plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr,
1273 IFA_UNLOCK(&ia->ia_ifa);
1276 pr0.ndpr_prefix = ia->ia_addr;
1277 pr0.ndpr_mask = ia->ia_prefixmask.sin6_addr;
1280 ia->ia_prefixmask.sin6_addr.s6_addr32[i];
1282 IFA_UNLOCK(&ia->ia_ifa);
1292 IFA_LOCK(&ia->ia_ifa);
1294 if (((ia->ia6_flags & IN6_IFF_AUTOCONF) != 0 &&
1296 ((ia->ia6_flags & IN6_IFF_AUTOCONF) == 0 &&
1302 IFA_UNLOCK(&ia->ia_ifa);
1309 in6_purgeaddr(&ia->ia_ifa);
1322 if (ia != NULL)
1323 IFA_REMREF(&ia->ia_ifa);
1351 struct in6_ifaddr *ia = NULL;
1359 ia = in6_ifaddrs;
1360 while (ia != NULL) {
1361 if (ia->ia_ifa.ifa_ifp != ifp) {
1362 ia = ia->ia_next;
1365 IFA_LOCK(&ia->ia_ifa);
1366 if (ia->ia6_flags & IN6_IFF_AUTOCONF) {
1367 IFA_ADDREF_LOCKED(&ia->ia_ifa); /* for us */
1368 IFA_UNLOCK(&ia->ia_ifa);
1370 in6_purgeaddr(&ia->ia_ifa);
1371 IFA_REMREF(&ia->ia_ifa); /* for us */
1379 ia = in6_ifaddrs;
1382 IFA_UNLOCK(&ia->ia_ifa);
1383 ia = ia->ia_next;
1447 struct in6_ifaddr *ia, int flags, int how)
1493 if (ia == NULL && ifra->ifra_prefixmask.sin6_len == 0)
1503 * In this case, ia must not be NULL. We just use its prefix
1506 IFA_LOCK(&ia->ia_ifa);
1507 plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL);
1508 IFA_UNLOCK(&ia->ia_ifa);
1586 if (ia == NULL) {
1594 ia = in6_ifaddr_alloc(how);
1595 if (ia == NULL)
1598 IFA_LOCK(&ia->ia_ifa);
1599 LIST_INIT(&ia->ia6_memberships);
1601 ia->ia_ifa.ifa_addr = (struct sockaddr *)&ia->ia_addr;
1602 ia->ia_addr.sin6_family = AF_INET6;
1603 ia->ia_addr.sin6_len = sizeof(ia->ia_addr);
1604 ia->ia6_createtime = timenow.tv_sec;
1610 ia->ia_ifa.ifa_dstaddr
1611 = (struct sockaddr *)&ia->ia_dstaddr;
1613 ia->ia_ifa.ifa_dstaddr = NULL;
1615 ia->ia_ifa.ifa_netmask
1616 = (struct sockaddr *)&ia->ia_prefixmask;
1618 ia->ia_ifp = ifp;
1620 if_attach_ifa(ifp, &ia->ia_ifa);
1622 IFA_ADDREF_LOCKED(&ia->ia_ifa);
1623 IFA_UNLOCK(&ia->ia_ifa);
1627 IFA_ADDREF(&ia->ia_ifa);
1631 oia->ia_next = ia;
1633 in6_ifaddrs = ia;
1638 IFA_ADDREF(&ia->ia_ifa);
1641 ifa = &ia->ia_ifa;
1645 ia->ia6_updatetime = timenow.tv_sec;
1655 if (ia->ia_prefixmask.sin6_len &&
1656 in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL) != plen) {
1659 ip6_sprintf(&ia->ia_addr.sin6_addr));
1664 ia->ia_prefixmask = ifra->ifra_prefixmask;
1673 !IN6_ARE_ADDR_EQUAL(&dst6.sin6_addr, &ia->ia_dstaddr.sin6_addr)) {
1674 if ((ia->ia_flags & IFA_ROUTE)) {
1678 if ((e = rtinit(&(ia->ia_ifa), (int)RTM_DELETE,
1682 ip6_sprintf(&ia->ia_addr.sin6_addr));
1687 ia->ia_flags &= ~IFA_ROUTE;
1690 ia->ia_dstaddr = dst6;
1698 ia->ia6_lifetime = ifra->ifra_lifetime;
1699 if (ia->ia6_lifetime.ia6t_vltime != ND6_INFINITE_LIFETIME
1701 ia->ia6_lifetime.ia6t_expire =
1702 timenow.tv_sec + ia->ia6_lifetime.ia6t_vltime;
1704 ia->ia6_lifetime.ia6t_expire = 0;
1705 if (ia->ia6_lifetime.ia6t_pltime != ND6_INFINITE_LIFETIME
1707 ia->ia6_lifetime.ia6t_preferred =
1708 timenow.tv_sec + ia->ia6_lifetime.ia6t_pltime;
1710 ia->ia6_lifetime.ia6t_preferred = 0;
1714 if ((error = in6_ifinit(ifp, ia, &ifra->ifra_addr, hostIsNew)) != 0)
1721 ia->ia6_flags = ifra->ifra_flags;
1727 ia->ia6_lifetime.ia6t_pltime = 0;
1728 ia->ia6_lifetime.ia6t_preferred = timenow.tv_sec;
1735 ia->ia6_flags &= ~IN6_IFF_DUPLICATED; /* safety */
1737 in6_ifaddr_set_dadprogress(ia);
1743 if (ia->ia6_flags & IN6_IFF_OPTIMISTIC)
1798 in6_purgeaddr((struct ifaddr *)ia);
1808 LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain);
1835 ia->ia_ifp->if_index);
1846 (struct sockaddr *)&ia->ia_addr,
1848 NULL, ia->ia_ifp->if_index);
1865 LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain);
1894 LIST_INSERT_HEAD(&ia->ia6_memberships,
1911 ia->ia_ifp->if_index);
1922 (struct sockaddr *)&ia->ia_addr,
1924 NULL, ia->ia_ifp->if_index);
1940 LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain);
1961 (ia->ia6_flags & IN6_IFF_DADPROGRESS))
1994 nd6_dad_start((struct ifaddr *)ia, delayptr);
2012 in6_unlink_ifa(ia, ifp);
2017 in6_purgeaddr(&ia->ia_ifa);
2025 struct in6_ifaddr *ia = (struct in6_ifaddr *) ifa;
2038 if ((ia->ia_flags & IFA_ROUTE) != 0 && ia->ia_dstaddr.sin6_len != 0) {
2042 if ((e = rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST))
2047 ip6_sprintf(&ia->ia_addr.sin6_addr), if_name(ifp),
2052 ia->ia_flags &= ~IFA_ROUTE;
2061 in6_ifremloop(&(ia->ia_ifa));
2067 while ((imm = ia->ia6_memberships.lh_first) != NULL) {
2076 in6_unlink_ifa(ia, ifp);
2077 in6_post_msg(ifp, KEV_INET6_ADDR_DELETED, ia);
2081 in6_unlink_ifa(struct in6_ifaddr *ia, struct ifnet *ifp)
2089 ifa = &ia->ia_ifa;
2101 oia = ia;
2102 if (oia == (ia = in6_ifaddrs)) {
2103 in6_ifaddrs = ia->ia_next;
2105 while (ia->ia_next && (ia->ia_next != oia))
2106 ia = ia->ia_next;
2107 if (ia->ia_next) {
2108 ia->ia_next = oia->ia_next;
2164 struct in6_ifaddr *ia;
2172 ia = in6_ifaddrs;
2173 while (ia != NULL) {
2174 if (ia->ia_ifa.ifa_ifp != ifp) {
2175 ia = ia->ia_next;
2178 IFA_ADDREF(&ia->ia_ifa); /* for us */
2180 in6_purgeaddr(&ia->ia_ifa);
2181 IFA_REMREF(&ia->ia_ifa); /* for us */
2189 ia = in6_ifaddrs;
2364 struct in6_ifaddr *ia;
2434 ia = ifa2ia6(ifa);
2441 bcopy(&ia->ia_addr, &iflr->addr, ia->ia_addr.sin6_len);
2449 bcopy(&ia->ia_dstaddr, &iflr->dstaddr,
2450 ia->ia_dstaddr.sin6_len);
2462 in6_mask2len(&ia->ia_prefixmask.sin6_addr,
2465 iflr->flags = ia->ia6_flags; /* XXX */
2478 bcopy(&ia->ia_addr, &ifra.ifra_addr,
2479 ia->ia_addr.sin6_len);
2481 bcopy(&ia->ia_dstaddr, &ifra.ifra_dstaddr,
2482 ia->ia_dstaddr.sin6_len);
2487 bcopy(&ia->ia_prefixmask, &ifra.ifra_dstaddr,
2488 ia->ia_prefixmask.sin6_len);
2490 ifra.ifra_flags = ia->ia6_flags;
2545 in6_ifinit(ifp, ia, sin6, newhost)
2547 struct in6_ifaddr *ia;
2572 ifa = &ia->ia_ifa;
2574 ia->ia_addr = *sin6;
2583 (error = ifnet_ioctl(ifp, PF_INET6, SIOCSIFADDR, ia))) {
2591 ia->ia_ifa.ifa_metric = ifp->if_metric;
2601 plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL); /* XXX */
2602 if (plen == 128 && ia->ia_dstaddr.sin6_family == AF_INET6) {
2604 if ((error = rtinit(&(ia->ia_ifa), (int)RTM_ADD,
2608 ia->ia_flags |= IFA_ROUTE;
2615 ia->ia_ifa.ifa_flags |= RTF_CLONING;
2621 ia->ia_ifa.ifa_rtrequest = nd6_rtrequest;
2623 in6_ifaddloop(&(ia->ia_ifa));
2705 struct in6_ifaddr *ia;
2708 for (ia = in6_ifaddrs; ia; ia = ia->ia_next) {
2709 IFA_LOCK(&ia->ia_ifa);
2710 if (IN6_ARE_ADDR_EQUAL(addr, IFA_IN6(&ia->ia_ifa))) {
2711 IFA_ADDREF_LOCKED(&ia->ia_ifa); /* for caller */
2712 IFA_UNLOCK(&ia->ia_ifa);
2715 IFA_UNLOCK(&ia->ia_ifa);
2719 if (ia != NULL && !nd6_prproxy_ifaddr(ia)) {
2720 IFA_REMREF(&ia->ia_ifa);
2721 ia = NULL;
2724 return (ia);
2811 struct in6_ifaddr *ia;
2817 for (ia = in6_ifaddrs; ia; ia = ia->ia_next) {
2818 IFA_LOCK_SPIN(&ia->ia_ifa);
2819 if (IN6_ARE_MASKED_ADDR_EQUAL(in6, &ia->ia_addr.sin6_addr,
2820 &ia->ia_prefixmask.sin6_addr)) {
2821 IFA_UNLOCK(&ia->ia_ifa);
2825 IFA_UNLOCK(&ia->ia_ifa);
2834 struct in6_ifaddr *ia;
2837 for (ia = in6_ifaddrs; ia; ia = ia->ia_next) {
2838 IFA_LOCK_SPIN(&ia->ia_ifa);
2839 if (IN6_ARE_ADDR_EQUAL(&ia->ia_addr.sin6_addr,
2841 (ia->ia6_flags & IN6_IFF_DEPRECATED) != 0) {
2842 IFA_UNLOCK(&ia->ia_ifa);
2847 IFA_UNLOCK(&ia->ia_ifa);
3387 struct in6_ifaddr *ia;
3408 ia = (struct in6_ifaddr *)ifa;
3409 if (ia->ia6_flags & IN6_IFF_DADPROGRESS) {
3839 in6_ifaddr_set_dadprogress(struct in6_ifaddr *ia)
3844 if (optdad && (ia->ia_ifp->if_eflags & IFEF_IPV6_ROUTER) == 0) {
3846 IN6_IS_ADDR_LINKLOCAL(&ia->ia_addr.sin6_addr))
3849 (ia->ia6_flags & IN6_IFF_AUTOCONF)) {
3850 if (ia->ia6_flags & IN6_IFF_TEMPORARY) {
3857 (ia->ia6_flags & IN6_IFF_DYNAMIC)) {
3858 if (ia->ia6_flags & IN6_IFF_TEMPORARY) {
3867 ia->ia6_flags &= ~(IN6_IFF_DUPLICATED | IN6_IFF_DADPROGRESS);
3868 ia->ia6_flags |= flags;