Lines Matching defs:ipif

595  * Add `ipif' to the pool of usable data addresses on `illg' and attempt to
600 ipmp_illgrp_add_ipif(ipmp_illgrp_t *illg, ipif_t *ipif)
605 ASSERT(IAM_WRITER_IPIF(ipif));
606 ASSERT(ipmp_ipif_is_dataaddr(ipif));
612 if (!ipif->ipif_isv6) {
613 entp = ipmp_illgrp_lookup_arpent(illg, &ipif->ipif_lcl_addr);
619 ipmp_ill_bind_ipif(minill, ipif, Res_act_none);
621 return (ipif->ipif_bound ? ipif->ipif_bound_ill : NULL);
625 * Delete `ipif' from the pool of usable data addresses on `illg'. If it's
630 ipmp_illgrp_del_ipif(ipmp_illgrp_t *illg, ipif_t *ipif)
632 ill_t *maxill, *boundill = ipif->ipif_bound_ill;
634 ASSERT(IAM_WRITER_IPIF(ipif));
637 (void) ipmp_ill_unbind_ipif(boundill, ipif, B_FALSE);
641 ipif = ipmp_ill_unbind_ipif(maxill, NULL, B_TRUE);
642 ipmp_ill_bind_ipif(boundill, ipif, Res_act_rebind);
1107 ipif_t *ipif;
1151 ipif = ill->ill_ipif;
1152 for (; ipif != NULL; ipif = ipif->ipif_next) {
1153 reset_mrt_vif_ipif(ipif);
1226 ipif_t *ipif;
1248 * Ensure the multicast state for each ipif on `ill' is down so that
1252 for (ipif = ill->ill_ipif; ipif != NULL; ipif = ipif->ipif_next)
1253 if (ipif->ipif_flags & IPIF_UP)
1254 ipif_multicast_down(ipif);
1280 for (ipif = ill->ill_ipif; ipif != NULL; ipif = ipif->ipif_next)
1281 if (ipif->ipif_flags & IPIF_UP)
1282 ipif_multicast_up(ipif);
1425 ipif_t *ipif;
1457 * We can access/walk ig_ipmp_ill's ipif list since we're
1460 ipif = illg->ig_ipmp_ill->ill_ipif;
1461 for (; ipif != NULL; ipif = ipif->ipif_next)
1462 if (ipmp_ipif_is_up_dataaddr(ipif))
1463 ipmp_ill_bind_ipif(ill, ipif, Res_act_initial);
1475 ipif = ipmp_ill_unbind_ipif(maxill, NULL, B_TRUE);
1476 ipmp_ill_bind_ipif(ill, ipif, Res_act_rebind);
1517 ipif_t *ipif, *ubnextipif, *ubheadipif = NULL;
1558 while ((ipif = ipmp_ill_unbind_ipif(ill, NULL, B_TRUE)) != NULL) {
1559 ipif->ipif_bound_next = ubheadipif;
1560 ubheadipif = ipif;
1571 * Rebind each ipif from the deactivated ill to the active ill with
1575 for (ipif = ubheadipif; ipif != NULL; ipif = ubnextipif) {
1576 ubnextipif = ipif->ipif_bound_next;
1577 ipif->ipif_bound_next = NULL;
1580 ipmp_ill_bind_ipif(minill, ipif, Res_act_rebind);
1610 ipif_t *ipif;
1633 for (ipif = ill->ill_ipif; ipif != NULL; ipif = ipif->ipif_next)
1634 if (ipif->ipif_flags & IPIF_UP)
1635 ip_rts_newaddrmsg(cmd, 0, ipif, RTSQ_NORMAL);
1642 * Bind the address named by `ipif' to the underlying ill named by `ill'.
1645 * `ipif', or just a rebind to another ill.
1648 ipmp_ill_bind_ipif(ill_t *ill, ipif_t *ipif, enum ip_resolver_action act)
1653 ASSERT(IAM_WRITER_ILL(ill) && IAM_WRITER_IPIF(ipif));
1654 ASSERT(IS_UNDER_IPMP(ill) && IS_IPMP(ipif->ipif_ill));
1655 ASSERT(act == Res_act_none || ipmp_ipif_is_up_dataaddr(ipif));
1656 ASSERT(ipif->ipif_bound_ill == NULL);
1657 ASSERT(ipif->ipif_bound_next == NULL);
1659 ipif->ipif_bound_next = ill->ill_bound_ipif;
1660 ill->ill_bound_ipif = ipif;
1663 ipif->ipif_bound_ill = ill;
1672 VERIFY(ipif_resolver_up(ipif, act) == 0);
1673 err = ipif_ndp_up(ipif, act == Res_act_initial);
1675 err = ipif_resolver_up(ipif, act);
1687 ipif->ipif_bound = (err == 0);
1691 * Unbind the address named by `ipif' from the underlying ill named by `ill'.
1692 * If `ipif' is NULL, then an arbitrary ipif on `ill' is unbound and returned.
1697 ipmp_ill_unbind_ipif(ill_t *ill, ipif_t *ipif, boolean_t notifyres)
1706 * If necessary, find an ipif to unbind.
1708 if (ipif == NULL) {
1709 if ((ipif = ill->ill_bound_ipif) == NULL) {
1715 ASSERT(IAM_WRITER_IPIF(ipif));
1716 ASSERT(IS_IPMP(ipif->ipif_ill));
1717 ASSERT(ipif->ipif_bound_ill == ill);
1724 ipif->ipif_bound_ill = NULL;
1728 if (ill->ill_bound_ipif == ipif) {
1729 ill->ill_bound_ipif = ipif->ipif_bound_next;
1732 while (previpif->ipif_bound_next != ipif)
1735 previpif->ipif_bound_next = ipif->ipif_bound_next;
1737 ipif->ipif_bound_next = NULL;
1742 if (notifyres && ipif->ipif_bound) {
1744 ipif_ndp_down(ipif);
1746 (void) ipif_arp_down(ipif);
1748 ipif->ipif_bound = B_FALSE;
1750 return (ipif);
2081 * Return a held pointer to the underlying ill bound to `ipif', or NULL if one
2085 ipmp_ipif_hold_bound_ill(const ipif_t *ipif)
2088 ip_stack_t *ipst = ipif->ipif_ill->ill_ipst;
2090 ASSERT(IS_IPMP(ipif->ipif_ill));
2093 boundill = ipif->ipif_bound_ill;
2103 * Return a pointer to the underlying ill bound to `ipif', or NULL if one
2107 ipmp_ipif_bound_ill(const ipif_t *ipif)
2109 ASSERT(IAM_WRITER_ILL(ipif->ipif_ill));
2110 ASSERT(IS_IPMP(ipif->ipif_ill));
2112 return (ipif->ipif_bound_ill);
2116 * Check if `ipif' is a "stub" (placeholder address not being used).
2119 ipmp_ipif_is_stubaddr(const ipif_t *ipif)
2121 if (ipif->ipif_flags & IPIF_UP)
2123 if (ipif->ipif_ill->ill_isv6)
2124 return (IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6lcl_addr));
2126 return (ipif->ipif_lcl_addr == INADDR_ANY);
2130 * Check if `ipif' is an IPMP data address.
2133 ipmp_ipif_is_dataaddr(const ipif_t *ipif)
2135 if (ipif->ipif_flags & IPIF_NOFAILOVER)
2137 if (ipif->ipif_ill->ill_isv6)
2138 return (!IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6lcl_addr));
2140 return (ipif->ipif_lcl_addr != INADDR_ANY);
2144 * Check if `ipif' is an IPIF_UP IPMP data address.
2147 ipmp_ipif_is_up_dataaddr(const ipif_t *ipif)
2149 return (ipmp_ipif_is_dataaddr(ipif) && (ipif->ipif_flags & IPIF_UP));