Lines Matching refs:ill
92 * Supports IP_BOUND_IF by following the ipif/ill when recursing.
96 int type, const ill_t *ill, zoneid_t zoneid, const ts_label_t *tsl,
104 ASSERT(ill == NULL || !ill->ill_isv6);
107 * ire_match_args() will dereference ill if MATCH_IRE_ILL
110 if ((flags & (MATCH_IRE_ILL|MATCH_IRE_SRC_ILL)) && (ill == NULL))
128 margs.ift_ill = ill;
198 * same ill.
203 ire = ire_alt_local(ire, zoneid, tsl, ill, generationp);
323 * Find the ill matching a multicast group.
331 * the ill when recursing.
345 ill_t *ill;
358 ill = ire_nexthop_ill(ire);
360 return (ill);
481 ill_t *ill;
502 ill = ire_nexthop_ill(ire);
503 if (ill != NULL) {
504 ifindex = ill->ill_phyint->phyint_ifindex;
505 ill_refrele(ill);
992 ill_t *ill;
1004 ill = ipif->ipif_ill;
1005 ill_refhold(ill);
1007 return (ill);
1011 * verify that v6src is configured on ill
1014 ip_verify_src_on_ill(const in6_addr_t v6src, ill_t *ill, zoneid_t zoneid)
1020 if (ill == NULL)
1022 ipst = ill->ill_ipst;
1024 if (ill->ill_isv6) {
1025 ipif = ipif_lookup_addr_nondup_v6(&v6src, ill, zoneid, ipst);
1028 ipif = ipif_lookup_addr_nondup(v4src, ill, zoneid, ipst);
1051 * (i.e., that the route points out an ill on which the source is assigned), but
1067 ill_t *ill = NULL;
1100 /* Pick up the IRE_MULTICAST for the ill */
1102 ill = ill_lookup_on_ifindex(ixa->ixa_multicast_ifindex,
1107 ill = ill_lookup_on_ifindex(ixa->ixa_scopeid,
1115 ill = ill_lookup_on_ifindex(ixa->ixa_ifindex,
1118 /* Look up the ill based on the source address */
1119 ill = ip_select_src_ill(&v6src, ixa->ixa_zoneid, ipst);
1121 * Since we looked up the ill from the source there
1122 * is no need to verify that the source is on the ill
1126 if (ill != NULL && IS_VNI(ill)) {
1127 ill_t *usesrc = ill;
1129 ill = ill_lookup_usesrc(usesrc);
1135 ill = ill_lookup_group_v4(v4dst, ixa->ixa_zoneid,
1140 ill = ill_lookup_group_v6(v6dst, ixa->ixa_zoneid,
1143 if (ill != NULL && IS_VNI(ill)) {
1144 ill_refrele(ill);
1145 ill = NULL;
1147 if (ill == NULL) {
1154 if (!(ill->ill_flags & ILLF_MULTICAST)) {
1155 ill_refrele(ill);
1168 !ip_verify_src_on_ill(v6src, ill, ixa->ixa_zoneid)) {
1171 ill_refrele(ill);
1176 /* Get a refcnt on the single IRE_MULTICAST per ill */
1177 ire = ire_multicast(ill);
1178 ill_refrele(ill);
1193 ill = ill_lookup_on_ifindex(ixa->ixa_scopeid,
1197 ill = ill_lookup_on_ifindex(ixa->ixa_ifindex,
1200 if (ill != NULL && IS_VNI(ill)) {
1201 ill_refrele(ill);
1202 ill = NULL;
1204 if (ill == NULL) {
1219 if (IS_UNDER_IPMP(ill))
1228 !ip_verify_src_on_ill(v6src, ill, ixa->ixa_zoneid)) {
1231 ill_refrele(ill);
1237 /* Look up the ill based on the source address */
1238 ill = ip_select_src_ill(&v6src, ixa->ixa_zoneid, ipst);
1239 if (ill == NULL) {
1279 ire = ire_route_recursive_v4(v4nexthop, ire_type, ill,
1285 ire = ire_route_recursive_v6(&v6nexthop, ire_type, ill,
1296 if (ill != NULL) {
1297 ill_refrele(ill);
1298 ill = NULL;
1306 * address retry after relaxing the ill matching
1381 * the zoneid, ill, and label. Used for the data paths. See also
1410 ill_t *ill = NULL;
1428 (ill != NULL? ill : ill_arg), zoneid, tsl,
1598 * ire_ill, so we set ill to the ire_ill;
1602 if (ill == NULL && ire->ire_ill != NULL) {
1603 ill = ire->ire_ill;
1605 ill_refhold(ill);
1616 ill_refrele(ill);
1644 ill_refrele(ill);
1645 ill = NULL;
1695 ire_route_recursive_v4(ipaddr_t nexthop, uint_t ire_type, const ill_t *ill,
1700 return (ire_route_recursive_impl_v4(NULL, nexthop, ire_type, ill,