Lines Matching refs:ill

99 	ill_t	*ill;
101 ill = ire_lookup_multi_ill_v6(group, zoneid, ipst, multirtp, setsrcp);
102 if (ill != NULL)
103 return (ill);
117 ill_t *ill;
127 ill = ILL_START_WALK_V6(&ctx, ipst);
128 for (; ill != NULL; ill = ill_next(&ctx, ill)) {
129 mutex_enter(&ill->ill_lock);
130 for (ipif = ill->ill_ipif; ipif != NULL;
140 mutex_exit(&ill->ill_lock);
146 mutex_exit(&ill->ill_lock);
163 ill_t *ill;
175 ill = ILL_START_WALK_V6(&ctx, ipst);
176 for (; ill != NULL; ill = ill_next(&ctx, ill)) {
177 if (match_ill != NULL && ill != match_ill &&
178 (!match_illgrp || !IS_IN_SAME_ILLGRP(ill, match_ill))) {
181 mutex_enter(&ill->ill_lock);
182 for (ipif = ill->ill_ipif; ipif != NULL;
203 mutex_exit(&ill->ill_lock);
209 mutex_exit(&ill->ill_lock);
225 * `match_ill' argument is non-NULL, the lookup is restricted to that ill
270 * ill (or illgrp if `match_ill' is in an IPMP group).
278 ill_t *ill;
289 ill = ILL_START_WALK_V6(&ctx, ipst);
290 for (; ill != NULL; ill = ill_next(&ctx, ill)) {
291 if (match_ill != NULL && ill != match_ill &&
292 !IS_IN_SAME_ILLGRP(ill, match_ill)) {
295 mutex_enter(&ill->ill_lock);
296 for (ipif = ill->ill_ipif; ipif != NULL;
307 mutex_exit(&ill->ill_lock);
319 mutex_exit(&ill->ill_lock);
387 * ill is passed in to associate it with the correct interface
395 ill_t *ill, ire_t **ire_arg, struct rtsa_s *sp, ip_stack_t *ipst,
428 * If -ifp was specified we restrict ourselves to the ill, otherwise
432 if (ill != NULL)
433 ipif = ipif_lookup_addr_v6(gw_addr, ill, ALL_ZONES, ipst);
547 * are part of an ill have the same index and so the RTA_IFP sockaddr
549 * interfaces) that belong to the same ill (physical interface).
580 * Whether or not ill (RTA_IFP) is set, we require that
589 * we use the ill derived from the gateway address.
592 * We don't allow RTA_IFP to specify a different ill than the
596 if (ill == NULL) {
597 ill = ipif->ipif_ill;
598 } else if (ill != ipif->ipif_ill) {
608 IRE_INTERFACE, ill, ALL_ZONES, NULL, match_flags, 0, ipst,
625 * If the IRE type (as defined by ill->ill_net_type) would be
632 type = ill->ill_net_type;
648 ill,
693 * If RTA_IFP was specified we look on that particular ill.
695 if (ill != NULL)
704 gw_ire = ire_ftable_lookup_v6(gw_addr, 0, 0, type, ill,
728 if (ill == NULL && !(flags & RTF_INDIRECT)) {
731 ill = gw_ire->ire_ill;
750 ire = ire_ftable_lookup_v6(dst_addr, mask, gw_addr, type, ill,
802 ill,
939 * ill is passed in to associate it with the correct interface.
945 const in6_addr_t *gw_addr, uint_t rtm_addrs, int flags, ill_t *ill,
977 * otherwise we use the ill derived from the gateway address.
988 if (ill != NULL)
989 ill_match = ill;
1022 * If an ill was passed in, then the lookup is based on an
1026 if (ill != NULL)
1035 ill, ALL_ZONES, NULL, match_flags, 0, ipst, NULL);
1059 ill = ire->ire_ill;
1060 if (ill != NULL)
1061 ill_remove_saved_ire(ill, ire);
1071 ill_setdefaulttoken(ill_t *ill)
1073 if (!ill->ill_manual_token) {
1074 bzero(&ill->ill_token, sizeof (ill->ill_token));
1075 MEDIA_V6INTFID(ill->ill_media, ill, &ill->ill_token);
1076 ill->ill_token_length = IPV6_TOKEN_LEN;
1081 ill_setdesttoken(ill_t *ill)
1083 bzero(&ill->ill_dest_token, sizeof (ill->ill_dest_token));
1084 MEDIA_V6DESTINTFID(ill->ill_media, ill, &ill->ill_dest_token);
1107 ill_t *ill = ipif->ipif_ill;
1110 ASSERT(ill->ill_mactype == DL_6TO4);
1111 ASSERT(ill->ill_phys_addr_length == sizeof (struct in_addr));
1118 bcopy(ill->ill_phys_addr, &v4phys, sizeof (struct in_addr));
1133 ill_t *ill = ipif->ipif_ill;
1135 if (IN6_IS_ADDR_UNSPECIFIED(&ill->ill_token) ||
1136 ill->ill_token_length > IPV6_ABITS - IPV6_LL_PREFIXLEN)
1148 ill_t *ill = ipif->ipif_ill;
1151 ASSERT(IAM_WRITER_ILL(ill));
1158 if ((ill->ill_flags & ILLF_NOLINKLOCAL) &&
1165 if (ill->ill_manual_linklocal)
1173 if (ill->ill_mactype == DL_6TO4) {
1182 ipif_get_linklocal(&ipif->ipif_v6lcl_addr, &ill->ill_token);
1201 ill_t *ill = ipif->ipif_ill;
1203 ASSERT(IAM_WRITER_ILL(ill));
1205 if (ill->ill_manual_dst_linklocal)
1208 if (IN6_IS_ADDR_UNSPECIFIED(&ill->ill_dest_token))
1211 ipif_get_linklocal(&ipif->ipif_v6pp_dst_addr, &ill->ill_dest_token);
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));
1231 (!(ill->ill_net_type & IRE_INTERFACE))) {
1241 ipmp_illgrp_t *illg = ill->ill_grp;
1246 if (ill->ill_flags & ILLF_ROUTER)
1252 if (IS_IPMP(ill)) {
1253 ASSERT(ill->ill_net_type == IRE_IF_RESOLVER);
1267 * We couldn't bind the ipif to an ill
1282 bound_ill = ill;
1283 hw_addr = ill->ill_nd_lla;
1284 hw_addr_len = ill->ill_phys_addr_length;
1290 * because IPMP has rebound an address to this ill: send
1302 err = nce_lookup_then_add_v6(ill, hw_addr, hw_addr_len,
1307 ill->ill_name));
1314 ill->ill_name));
1320 ill->ill_name));
1335 "for %s\n", ill->ill_name));
1354 ill->ill_name));
1366 ipmp_illgrp_del_ipif(ill->ill_grp, ipif);
1841 * destination ill. If no suitable source address is found, it returns
1853 * address that is assigned to the destination ill. This is used when
1873 ill_t *ill, *usesrc_ill = NULL, *ipmp_ill = NULL;
1925 * selection, so if we were passed an underlying ill, switch
1983 ill = dstinfo.dst_ill;
1985 ill = ILL_START_WALK_V6(&ctx, ipst);
1987 for (; ill != NULL; ill = ill_next(&ctx, ill)) {
1988 ASSERT(ill->ill_isv6);
1994 if (IS_UNDER_IPMP(ill))
1997 if (ill->ill_ipif == NULL)
2006 * happen on the IPMP ill.
2008 start_ipif = ill->ill_ipif;
2009 if (IS_IPMP(ill) && ill->ill_src_ipif != NULL)
2010 start_ipif = ill->ill_src_ipif;
2015 next_ipif = ill->ill_ipif;
2116 if (IS_IPMP(ill) && ipif != NULL) {
2120 ill->ill_src_ipif = next_ipif;
2122 ill->ill_src_ipif = NULL;
2127 * Only one ill to consider if dst_restrict_ill is set.
2170 * Pick a source address based on the destination ill and an optional setsrc
2183 * - If usrsrc is set, swap the ill to be the usesrc one.
2184 * - If IPMP is used on the ill, select a random address from the most
2196 ip_select_source_v6(ill_t *ill, const in6_addr_t *setsrc, const in6_addr_t *dst,
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,
2243 * MUST be called on an ill queue.
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));
2263 ASSERT(ill->ill_dlpi_style_set);
2266 if (ill->ill_isv6) {
2282 if (ill->ill_mactype == DL_IPV4 || ill->ill_mactype == DL_IPV6) {
2317 ASSERT(ill->ill_dlpi_capab_state == IDCS_UNKNOWN);
2327 ((dl_bind_req_t *)bind_mp->b_rptr)->dl_sap = ill->ill_sap;
2335 if (ill->ill_needs_attach) {
2340 ((dl_attach_req_t *)attach_mp->b_rptr)->dl_ppa = ill->ill_ppa;
2348 mutex_enter(&ill->ill_lock);
2350 (void) ipsq_pending_mp_add(NULL, ipif, ill->ill_wq, mp, 0);
2356 ill->ill_phys_addr_pend = 0;
2357 mutex_exit(&ill->ill_lock);
2361 ill_dlpi_send(ill, attach_mp);
2363 ill_dlpi_send(ill, bind_mp);
2364 ill_dlpi_send(ill, info_mp);
2369 ill_capability_send(ill, capab_mp);
2372 ill_dlpi_send(ill, v6token_mp);
2374 ill_dlpi_send(ill, v6lla_mp);
2376 ill_dlpi_send(ill, dest_mp);
2377 ill_dlpi_send(ill, phys_mp);
2378 ill_dlpi_send(ill, notify_mp);
2379 ill_dlpi_send(ill, unbind_mp);
2412 ill_t *ill = ipif->ipif_ill;
2419 ill_t *, ill, ipif_t *, ipif);
2428 if (IS_LOOPBACK(ill) || ill->ill_net_type == IRE_IF_NORESOLVER) {
2442 if (ill->ill_net_type != IRE_LOOPBACK)
2444 err = nce_lookup_then_add_v6(ill, NULL,
2445 ill->ill_phys_addr_length,
2477 if (IS_IPMP(ill))
2478 ipmp_illgrp_del_ipif(ill->ill_grp, ipif);
2484 if (ill->ill_ipif_up_count == 1 && !loopback) {
2485 /* Recover any additional IREs entries for this ill */
2486 (void) ill_recover_saved_ire(ill);
2489 if (ill->ill_need_recover_multicast) {
2494 ill_recover_multicast(ill);
2497 if (ill->ill_ipif_up_count == 1) {
2501 if (IS_UNDER_IPMP(ill))
2502 ipmp_ill_refresh_active(ill);
2508 /* Perhaps ilgs should use this ill */
2509 update_conn_ill(NULL, ill->ill_ipst);
2524 ill_t *ill = ipif->ipif_ill;
2525 ip_stack_t *ipst = ill->ill_ipst;
2605 ill->ill_net_type,
2612 ill->ill_net_type, /* IF_[NO]RESOLVER */
2633 ill->ill_ipif_up_count++;
2641 * Our address may already be up on the same ill. In this case,
2652 ill->ill_ipif_up_count--;
2699 ill->ill_ipif_up_count--;
2731 ill_t *ill = ipif->ipif_ill;
2732 ip_stack_t *ipst = ill->ill_ipst;
2770 ill_t *ill = ipif->ipif_ill;
2792 if (IS_UNDER_IPMP(ill))
2795 nce = nce_lookup_v6(ill, &sin6->sin6_addr);
2821 ill_t *ill = ipif->ipif_ill;
2837 if (ill->ill_phys_addr_length > sizeof (lnr->lnr_hdw_addr))
2840 return (ndp_query(ill, lnr));
2852 ill_t *ill = ipif->ipif_ill;
2877 if (IS_UNDER_IPMP(ill))
2880 if (IS_IPMP(ill)) {
2882 IRE_LOCAL, ill, ALL_ZONES, NULL,
2883 MATCH_IRE_TYPE | MATCH_IRE_ILL, 0, ill->ill_ipst, NULL);
2890 return (ndp_sioc_update(ill, lnr));