Lines Matching refs:ire
138 ire_t *ire;
161 ire = ixa->ixa_ire;
169 ire->ire_badcnt = 0;
175 * - the cached ire being deleted (by means of the special
177 * - A potentially better ire being added (ire_generation being
179 * - A deletion of the nexthop ire that was used when we did the
181 * - An addition of a potentially better nexthop ire.
190 if (ire->ire_generation != ixa->ixa_ire_generation) {
193 ip_drop_output("ipIfStatsOutDiscards - verify ire",
197 ire = ixa->ixa_ire;
198 ASSERT(ire != NULL);
199 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) {
204 ire->ire_ob_pkt_count++;
206 return ((ire->ire_sendfn)(ire, mp, mp->b_rptr, ixa,
216 * Note that ire->ire_generation could already have changed.
254 ire = ixa->ixa_ire;
255 ASSERT(ire != NULL);
256 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) {
261 ire->ire_ob_pkt_count++;
263 return ((ire->ire_sendfn)(ire, mp, mp->b_rptr,
359 ire->ire_ob_pkt_count++;
375 return ((ire->ire_sendfn)(ire, mp, mp->b_rptr, ixa, &dce->dce_ident));
447 ire_t *ire;
458 ire = ip_select_route_pkt(mp, ixa, &gen, &error, &multirt);
459 ASSERT(ire != NULL); /* IRE_NOROUTE if none found */
461 ire_refrele(ire);
468 ire_refhold_notr(ire);
469 ire_refrele(ire);
471 ixa->ixa_ire = ire;
480 ixa->ixa_postfragfn = ire->ire_postfragfn;
489 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) {
496 nce = ire_to_nce_pkt(ire, mp);
499 * Allocation failure. Make sure we redo ire/nce selection
531 ire_t *ire = ixa->ixa_ire;
537 if (ire->ire_ipversion == IPV4_VERSION)
542 nce = ire_handle_condemned_nce(ixa->ixa_nce, ire, ipha, ip6h, B_TRUE);
544 /* Try to find a better ire */
738 * We acquire the ire and after calling ire_sendfn we release
739 * the hold on the ire. Ditto for the nce and dce.
808 ire_t *ire;
850 ire = ip_select_route_v4(firsthop, ipha->ipha_src, ixa, NULL,
852 ASSERT(ire != NULL); /* IRE_NOROUTE if none found */
861 if (ire->ire_flags & (RTF_BLACKHOLE|RTF_REJECT)) {
868 ire->ire_ob_pkt_count++;
871 error = (ire->ire_sendfn)(ire, mp, ipha, ixa,
877 nce = ire_to_nce(ire, ipha->ipha_dst, NULL);
888 nce1 = ire_handle_condemned_nce(nce, ire, ipha, NULL, B_TRUE);
894 ire_refrele(ire);
918 ixa->ixa_postfragfn = ire->ire_postfragfn;
931 ixa->ixa_fragsize = ip_get_base_mtu(nce->nce_ill, ire);
948 ixa->ixa_fragsize = ip_get_base_mtu(nce->nce_ill, ire);
952 fragsize = ip_get_base_mtu(nce->nce_ill, ire);
958 ixa->ixa_fragsize = ip_get_base_mtu(nce->nce_ill, ire);
965 ill = ire_nexthop_ill(ire);
1034 ire->ire_ob_pkt_count++;
1045 error = (ire->ire_sendfn)(ire, mp, ipha, ixa, &dce->dce_ident);
1047 ire_refrele(ire);
1076 ire_send_local_v4(ire_t *ire, mblk_t *mp, void *iph_arg,
1081 ill_t *ill = ire->ire_ill;
1137 dzone = ire->ire_zoneid;
1185 ire->ire_ib_pkt_count++;
1190 iras.ira_zoneid = ire->ire_zoneid;
1228 ire_send_broadcast_v4(ire_t *ire, mblk_t *mp, void *iph_arg,
1233 irb_t *irb = ire->ire_bucket;
1268 return (ire_send_wire_v4(ire, mp, ipha, ixa, identp));
1277 if (ire1 == ire)
1288 ASSERT(ire1->ire_addr == ire->ire_addr);
1296 ire->ire_zoneid != ire1->ire_zoneid)
1299 ASSERT(ire->ire_ill != ire1->ire_ill && ire1->ire_ill != NULL);
1378 * the main ire below
1394 if (IS_UNDER_IPMP(ire->ire_ill)) {
1399 return (ire_send_wire_v4(ire, mp, ipha, ixa, identp));
1427 multirt_check_v4(ire_t *ire, ipha_t *ipha, ip_xmit_attr_t *ixa)
1432 if (ire->ire_type & IRE_MULTICAST) {
1436 ipha->ipha_ttl, ntohl(ire->ire_addr)));
1455 ire_send_multicast_v4(ire_t *ire, mblk_t *mp, void *iph_arg,
1460 ill_t *ill = ire->ire_ill;
1468 multirt_check_v4(ire, ipha, ixa);
1525 return (ire_send_wire_v4(ire, mp, ipha, ixa, identp));
1532 ire_send_multirt_v4(ire_t *ire, mblk_t *mp, void *iph_arg,
1537 multirt_check_v4(ire, ipha, ixa);
1539 if (ire->ire_type & IRE_MULTICAST)
1540 return (ire_send_multicast_v4(ire, mp, ipha, ixa, identp));
1541 else if (ire->ire_type & IRE_BROADCAST)
1542 return (ire_send_broadcast_v4(ire, mp, ipha, ixa, identp));
1544 return (ire_send_wire_v4(ire, mp, ipha, ixa, identp));
1551 ire_send_noroute_v4(ire_t *ire, mblk_t *mp, void *iph_arg,
1565 if (ire->ire_type & IRE_NOROUTE) {
1571 if (ire->ire_flags & RTF_BLACKHOLE) {
1821 * Assumes that the caller has a hold on the ire.
1828 ire_send_wire_v4(ire_t *ire, mblk_t *mp, void *iph_arg,
2208 ire_t *ire;
2242 * Use the nce (nexthop) and ipha_dst to find the ire.
2249 ire = ire_ftable_lookup_v4(ipha->ipha_dst, 0, 0, 0,
2255 ire = ire_ftable_lookup_v4(ipha->ipha_dst, 0, v4addr, 0,
2259 if (ire == NULL ||
2260 (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) ||
2261 !(ire->ire_flags & RTF_MULTIRT)) {
2265 if (ire != NULL)
2266 ire_refrele(ire);
2270 irb = ire->ire_bucket;
2281 ire1->ire_type != ire->ire_type)
2284 /* Do the ire argument one after the loop */
2285 if (ire1 == ire)
2291 * This ire might not have been picked by
2377 ire_refrele(ire);
2400 ire_t *ire = ixa->ixa_ire;
2402 if (!(ire->ire_type & (IRE_LOCAL | IRE_LOOPBACK)))