Lines Matching defs:ipif

109  * Look for an ipif with the specified interface address and destination.
116 ipif_t *ipif;
124 * ipif instead of unnumbered point-to-point ipif.
130 for (ipif = ill->ill_ipif; ipif != NULL;
131 ipif = ipif->ipif_next) {
132 /* Allow the ipif to be down */
133 if ((ipif->ipif_flags & IPIF_POINTOPOINT) &&
134 (IN6_ARE_ADDR_EQUAL(&ipif->ipif_v6lcl_addr,
136 (IN6_ARE_ADDR_EQUAL(&ipif->ipif_v6pp_dst_addr,
138 if (!IPIF_IS_CONDEMNED(ipif)) {
139 ipif_refhold_locked(ipif);
142 return (ipif);
149 /* lookup the ipif based on interface address */
150 ipif = ipif_lookup_addr_v6(if_addr, NULL, ALL_ZONES, ipst);
151 ASSERT(ipif == NULL || ipif->ipif_isv6);
152 return (ipif);
162 ipif_t *ipif;
182 for (ipif = ill->ill_ipif; ipif != NULL;
183 ipif = ipif->ipif_next) {
185 ipif->ipif_zoneid != zoneid &&
186 ipif->ipif_zoneid != ALL_ZONES)
190 !(ipif->ipif_flags & IPIF_UP)) {
194 /* Allow the ipif to be down */
196 &ipif->ipif_v6lcl_addr, addr) &&
197 (ipif->ipif_flags & IPIF_UNNUMBERED) == 0)) ||
198 (ptp && (ipif->ipif_flags & IPIF_POINTOPOINT) &&
199 IN6_ARE_ADDR_EQUAL(&ipif->ipif_v6pp_dst_addr,
201 if (!IPIF_IS_CONDEMNED(ipif)) {
202 ipif_refhold_locked(ipif);
205 return (ipif);
222 * Lookup an ipif with the specified address. For point-to-point links we
237 * Lookup an ipif with the specified address. Similar to ipif_lookup_addr,
265 * Look for an ipif with the specified address. For point-point links
271 * Return the zoneid for the ipif. ALL_ZONES if none found.
277 ipif_t *ipif;
296 for (ipif = ill->ill_ipif; ipif != NULL;
297 ipif = ipif->ipif_next) {
298 /* Allow the ipif to be down */
300 &ipif->ipif_v6lcl_addr, addr) &&
301 (ipif->ipif_flags & IPIF_UNNUMBERED) == 0)) ||
302 (ptp && (ipif->ipif_flags & IPIF_POINTOPOINT) &&
303 IN6_ARE_ADDR_EQUAL(&ipif->ipif_v6pp_dst_addr,
305 !(ipif->ipif_state_flags & IPIF_CONDEMNED)) {
306 zoneid = ipif->ipif_zoneid;
400 ipif_t *ipif;
427 * Get the ipif, if any, corresponding to the gw_addr
433 ipif = ipif_lookup_addr_v6(gw_addr, ill, ALL_ZONES, ipst);
435 ipif = ipif_lookup_interface_v6(gw_addr, dst_addr, ipst);
436 if (ipif != NULL) {
437 if (IS_VNI(ipif->ipif_ill)) {
438 ipif_refrele(ipif);
449 if ((ipif != NULL) && (ipif->ipif_ire_type == IRE_LOOPBACK)) {
459 ipif_refrele(ipif);
463 "for 0x%x\n", (void *)ipif,
464 ipif->ipif_ire_type,
465 ntohl(ipif->ipif_lcl_addr)));
470 ipif->ipif_ire_type, /* LOOPBACK */
471 ipif->ipif_ill,
473 (ipif->ipif_flags & IPIF_PRIVATE) ? RTF_PRIVATE : 0,
478 ipif_refrele(ipif);
493 ipif_refrele(ipif);
504 ipif_refrele(ipif);
518 if ((flags & RTF_MULTIRT) && ipif != NULL)
546 * of using the interface index, however, is that all of the ipif's that
548 * cannot be used to differentiate between ipif's (or logical
558 * the ipif's corresponding to each of these interface routes can be
574 if (ipif != NULL)
575 ipif_refrele(ipif);
583 if (ipif == NULL)
593 * one matching the ipif to make sure we can delete the route.
597 ill = ipif->ipif_ill;
598 } else if (ill != ipif->ipif_ill) {
599 ipif_refrele(ipif);
612 ipif_refrele(ipif);
654 ipif_refrele(ipif);
669 ipif_refrele(ipif);
680 ipif_refrele(ipif);
718 if (ipif != NULL)
719 ipif_refrele(ipif);
724 if (ipif != NULL)
725 ipif_refrele(ipif);
754 if (ipif != NULL)
755 ipif_refrele(ipif);
772 if (ipif != NULL)
773 ipif_refrele(ipif);
789 if (ipif != NULL)
790 ipif_refrele(ipif);
818 if (ipif != NULL)
819 ipif_refrele(ipif);
843 if (ipif != NULL)
844 ipif_refrele(ipif);
856 if (ipif != NULL)
857 ipif_refrele(ipif);
894 if (ipif != NULL)
895 ipif_refrele(ipif);
932 if (ipif != NULL)
933 ipif_refrele(ipif);
949 ipif_t *ipif;
984 ipif = ipif_lookup_interface_v6(gw_addr, dst_addr, ipst);
985 if (ipif != NULL) {
991 ill_match = ipif->ipif_ill;
994 if (ipif->ipif_ire_type == IRE_LOOPBACK) {
1005 /* Avoid deleting routes created by kernel from an ipif */
1038 if (ipif != NULL) {
1039 ipif_refrele(ipif);
1040 ipif = NULL;
1105 ipif_set6to4addr(ipif_t *ipif)
1107 ill_t *ill = ipif->ipif_ill;
1112 ASSERT(ipif->ipif_isv6);
1114 if (ipif->ipif_flags & IPIF_UP)
1117 (void) ip_plen_to_mask_v6(16, &ipif->ipif_v6net_mask);
1119 IN6_V4ADDR_TO_6TO4(&v4phys, &ipif->ipif_v6lcl_addr);
1120 V6_MASK_COPY(ipif->ipif_v6lcl_addr, ipif->ipif_v6net_mask,
1121 ipif->ipif_v6subnet);
1131 ipif_cant_setlinklocal(ipif_t *ipif)
1133 ill_t *ill = ipif->ipif_ill;
1146 ipif_setlinklocal(ipif_t *ipif)
1148 ill_t *ill = ipif->ipif_ill;
1159 IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6lcl_addr))
1174 ipif_set6to4addr(ipif);
1178 if (ipif_cant_setlinklocal(ipif))
1181 ov6addr = ipif->ipif_v6lcl_addr;
1182 ipif_get_linklocal(&ipif->ipif_v6lcl_addr, &ill->ill_token);
1183 sctp_update_ipif_addr(ipif, ov6addr);
1184 (void) ip_plen_to_mask_v6(IPV6_LL_PREFIXLEN, &ipif->ipif_v6net_mask);
1185 if (IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6pp_dst_addr)) {
1186 V6_MASK_COPY(ipif->ipif_v6lcl_addr, ipif->ipif_v6net_mask,
1187 ipif->ipif_v6subnet);
1190 ip_rts_newaddrmsg(RTM_CHGADDR, 0, ipif, RTSQ_DEFAULT);
1199 ipif_setdestlinklocal(ipif_t *ipif)
1201 ill_t *ill = ipif->ipif_ill;
1211 ipif_get_linklocal(&ipif->ipif_v6pp_dst_addr, &ill->ill_dest_token);
1212 ipif->ipif_v6subnet = ipif->ipif_v6pp_dst_addr;
1216 * Get the resolver set up for a new ipif. (Always called as writer.)
1219 ipif_ndp_up(ipif_t *ipif, boolean_t initial)
1221 ill_t *ill = ipif->ipif_ill;
1227 ill_t *, ill, ipif_t *, ipif);
1228 ip1dbg(("ipif_ndp_up(%s:%u)\n", ill->ill_name, ipif->ipif_id));
1230 if (IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6lcl_addr) ||
1232 ipif->ipif_addr_ready = 1;
1236 if ((ipif->ipif_flags & (IPIF_UNNUMBERED|IPIF_NOLOCAL)) == 0) {
1249 if (ipif->ipif_flags & IPIF_ANYCAST)
1255 * If we're here via ipif_up(), then the ipif won't be
1259 * here via ipmp_ill_bind_ipif(), then the ipif has
1263 if ((bound_ill = ipmp_ipif_bound_ill(ipif)) == NULL) {
1264 bound_ill = ipmp_illgrp_add_ipif(illg, ipif);
1267 * We couldn't bind the ipif to an ill
1274 ipif->ipif_addr_ready = 1;
1288 * If this is an initial bring-up (or the ipif was never
1293 if (initial || !ipif->ipif_addr_ready) {
1303 &ipif->ipif_v6lcl_addr, flags, state, &nce);
1308 ipif->ipif_addr_ready = 1;
1309 ipif->ipif_added_nce = 1;
1315 ipif->ipif_added_nce = 1;
1331 if ((ipif->ipif_flags & IPIF_POINTOPOINT) == 0) {
1347 ipif->ipif_addr_ready = 1;
1348 ipif->ipif_added_nce = 1;
1359 ipif->ipif_addr_ready = 1;
1366 ipmp_illgrp_del_ipif(ill->ill_grp, ipif);
1373 ipif_ndp_down(ipif_t *ipif)
1375 ipif_nce_down(ipif);
1438 #define IPIF_VALID_IPV6_SOURCE(ipif) \
1439 (((ipif)->ipif_flags & IPIF_UP) && \
1440 !((ipif)->ipif_flags & (IPIF_NOLOCAL|IPIF_ANYCAST)) && \
1441 !((ipif)->ipif_ill->ill_flags & ILLF_NOACCEPT))
1872 ipif_t *ipif, *start_ipif, *next_ipif;
2000 * For source address selection, we treat the ipif list as
2012 ipif = start_ipif;
2014 if ((next_ipif = ipif->ipif_next) == NULL)
2017 if (!IPIF_VALID_IPV6_SOURCE(ipif))
2020 if (!ipif->ipif_addr_ready) {
2027 ipif->ipif_zoneid != zoneid &&
2028 ipif->ipif_zoneid != ALL_ZONES)
2040 src_rhtp = find_tpc(&ipif->ipif_v6lcl_addr,
2063 best_c.cand_ipif = ipif;
2069 curr_c.cand_ipif = ipif;
2108 } while ((ipif = next_ipif) != start_ipif);
2111 * For IPMP, update the source ipif rotor to the next ipif,
2116 if (IS_IPMP(ill) && ipif != NULL) {
2117 mutex_enter(&ipif->ipif_ill->ill_lock);
2118 next_ipif = ipif->ipif_next;
2123 mutex_exit(&ipif->ipif_ill->ill_lock);
2133 ipif = best_c.cand_ipif;
2137 (ipif == NULL ? "NULL" :
2138 inet_ntop(AF_INET6, &ipif->ipif_v6lcl_addr, sstr, sizeof (sstr)))));
2149 if (ipif == NULL) {
2154 mutex_enter(&ipif->ipif_ill->ill_lock);
2155 if (!IPIF_IS_CONDEMNED(ipif)) {
2156 ipif_refhold_locked(ipif);
2157 mutex_exit(&ipif->ipif_ill->ill_lock);
2159 return (ipif);
2161 mutex_exit(&ipif->ipif_ill->ill_lock);
2163 ip1dbg(("ipif_select_source_v6 cannot lookup ipif %p"
2164 " returning null \n", (void *)ipif));
2200 ipif_t *ipif;
2210 * addresses use ipif/ill locks and exit those (hence a store memory
2223 ipif = ipif_select_source_v6(ill, dst, restrict_ill, src_prefs, zoneid,
2225 if (ipif == NULL) {
2231 *srcp = ipif->ipif_v6lcl_addr;
2233 *flagsp = ipif->ipif_flags;
2234 ipif_refrele(ipif);
2249 ill_dl_phys(ill_t *ill, ipif_t *ipif, mblk_t *mp, queue_t *q)
2262 ip1dbg(("ill_dl_phys(%s:%u)\n", ill->ill_name, ipif->ipif_id));
2350 (void) ipsq_pending_mp_add(NULL, ipif, ill->ill_wq, mp, 0);
2410 ipif_up_done_v6(ipif_t *ipif)
2412 ill_t *ill = ipif->ipif_ill;
2417 ipif->ipif_ill->ill_name, ipif->ipif_id));
2419 ill_t *, ill, ipif_t *, ipif);
2422 if (ipif->ipif_ill->ill_wq == NULL)
2425 ASSERT(ipif->ipif_isv6);
2426 ASSERT(!MUTEX_HELD(&ipif->ipif_ill->ill_lock));
2438 if (IN6_ARE_ADDR_EQUAL(&ipif->ipif_v6lcl_addr, &ipv6_loopback))
2439 ipif->ipif_ire_type = IRE_LOOPBACK;
2441 ipif->ipif_ire_type = IRE_LOCAL;
2446 &ipif->ipif_v6lcl_addr, flags, ND_REACHABLE, &loop_nce);
2450 ipif->ipif_added_nce = 1;
2460 err = ipif_add_ires_v6(ipif, loopback);
2467 ipif_ndp_down(ipif);
2470 * Make IPMP aware of the deleted ipif so that
2478 ipmp_illgrp_del_ipif(ill->ill_grp, ipif);
2506 ipif_multicast_up(ipif);
2511 if (ipif->ipif_addr_ready)
2512 ipif_up_notify(ipif);
2518 * Add the IREs associated with the ipif.
2522 ipif_add_ires_v6(ipif_t *ipif, boolean_t loopback)
2524 ill_t *ill = ipif->ipif_ill;
2534 if (!IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6lcl_addr) &&
2535 !(ipif->ipif_flags & IPIF_NOLOCAL)) {
2542 ipif->ipif_ire_type != IRE_LOOPBACK) {
2548 if (!tsol_check_interface_address(ipif))
2553 gw = &ipif->ipif_v6lcl_addr;
2558 err = ip_srcid_insert(&ipif->ipif_v6lcl_addr,
2559 ipif->ipif_zoneid, ipst);
2569 ipif->ipif_ire_type,
2570 inet_ntop(AF_INET6, &ipif->ipif_v6lcl_addr,
2574 &ipif->ipif_v6lcl_addr, /* dest address */
2577 ipif->ipif_ire_type, /* LOCAL or LOOPBACK */
2578 ipif->ipif_ill, /* interface */
2579 ipif->ipif_zoneid,
2580 ((ipif->ipif_flags & IPIF_PRIVATE) ?
2592 if (!loopback && !(ipif->ipif_flags & IPIF_NOXMIT) &&
2593 !(IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6subnet) &&
2594 IN6_IS_ADDR_UNSPECIFIED(&ipif->ipif_v6net_mask))) {
2596 v6addr = ipif->ipif_v6subnet;
2598 if (ipif->ipif_flags & IPIF_POINTOPOINT) {
2601 route_mask = ipif->ipif_v6net_mask;
2611 &ipif->ipif_v6lcl_addr, /* gateway */
2613 ipif->ipif_ill,
2614 ipif->ipif_zoneid,
2615 ((ipif->ipif_flags & IPIF_PRIVATE) ?
2634 ipif->ipif_flags |= IPIF_UP;
2635 err = ip_addr_availability_check(ipif);
2642 * the external resolver entry for our ipif replaced the one for
2643 * the other ipif. So we don't want to delete it (otherwise the
2644 * other ipif would be unable to send packets).
2653 ipif->ipif_flags &= ~IPIF_UP;
2687 ipif->ipif_ire_local = ire_local;
2689 ipif->ipif_ire_if = ire_if;
2694 if (ipif->ipif_addr_ready)
2695 ipif_up_notify(ipif);
2700 ipif->ipif_flags &= ~IPIF_UP;
2709 ire_local = ipif->ipif_ire_local;
2710 ipif->ipif_ire_local = NULL;
2711 ire_if = ipif->ipif_ire_if;
2712 ipif->ipif_ire_if = NULL;
2722 (void) ip_srcid_remove(&ipif->ipif_v6lcl_addr, ipif->ipif_zoneid, ipst);
2729 ipif_delete_ires_v6(ipif_t *ipif)
2731 ill_t *ill = ipif->ipif_ill;
2736 ire = ipif->ipif_ire_local;
2737 ipif->ipif_ire_local = NULL;
2741 * Move count to ipif so we don't loose the count due to
2744 atomic_add_32(&ipif->ipif_ib_pkt_count, ire->ire_ib_pkt_count);
2750 ire = ipif->ipif_ire_if;
2751 ipif->ipif_ire_if = NULL;
2764 ip_siocdelndp_v6(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
2770 ill_t *ill = ipif->ipif_ill;
2776 if (ipif->ipif_id != 0)
2779 if (!ipif->ipif_isv6)
2818 ip_siocqueryndp_v6(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
2821 ill_t *ill = ipif->ipif_ill;
2828 if (ipif->ipif_id != 0)
2831 if (!ipif->ipif_isv6)
2848 ip_siocsetndp_v6(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
2852 ill_t *ill = ipif->ipif_ill;
2860 if (ipif->ipif_id != 0)
2863 if (!ipif->ipif_isv6)