Lines Matching defs:ire

249  * Simiarly lookup of an ire by a thread also returns a refheld ire.
250 * In addition ipif's and ill's referenced by the ire are also indirectly
271 * - ire_lock to protect some of the fields of the ire, IRE tables
403 * irb_refcnt, after the node is added to the tree. The ire itself is
2629 ire_t *ire, *nire;
2641 ire = ire_ftable_lookup_v4(gateway, 0, 0, IRE_ONLINK, NULL,
2656 if (prev_ire == NULL || ire == NULL ||
2659 !(ire->ire_type & IRE_IF_ALL) ||
2662 ip_drop_input("icmpInBadRedirects - ire", mp, ira->ira_ill);
2664 if (ire != NULL)
2665 ire_refrele(ire);
2672 ire_refrele(ire);
2695 ire = ire_create(
2706 if (ire == NULL) {
2710 nire = ire_add(ire);
2712 if (nire != NULL && nire != ire) {
2718 ire = nire;
2719 if (ire != NULL) {
2720 ire_refrele(ire); /* Held in ire_add */
2785 ire_t *ire;
2831 ire = ire_ftable_lookup_v4(ipha->ipha_dst, 0, 0,
2834 if (ire != NULL) {
2835 ire_refrele(ire);
3057 ip_send_potential_redirect_v4(mblk_t *mp, ipha_t *ipha, ire_t *ire,
3082 if ((ire->ire_type & IRE_ONLINK) ||
3086 nhop_ire = ire_nexthop(ire);
3112 * We look at the interface ire for the nexthop,
3367 ire_t *ire = NULL;
3407 ire = ip_select_route_v4(firsthop, *src_addrp, ixa,
3409 ASSERT(ire != NULL); /* IRE_NOROUTE if none found */
3414 * ire can't be a broadcast or multicast unless IPDF_ALLOW_MCBC is set.
3422 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) {
3445 if (!(ire->ire_type & IRE_HOST))
3452 if ((ire->ire_type & (IRE_BROADCAST|IRE_MULTICAST)) &&
3454 ire_refrele(ire);
3455 ire = ire_reject(ipst, B_FALSE);
3464 ire_refhold_notr(ire);
3465 ire_refrele(ire);
3467 ixa->ixa_ire = ire;
3506 ixa->ixa_postfragfn = ire->ire_postfragfn;
3509 if (!(ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))) {
3511 nce = ire_to_nce(ire, firsthop, NULL);
3529 if ((ire->ire_type & IRE_LOCAL) && ire->ire_zoneid != zoneid) {
3530 ire = NULL; /* Stored in ixa_ire */
3534 if (!(ire->ire_type & (IRE_LOOPBACK|IRE_LOCAL|IRE_MULTICAST))) {
3535 ire = NULL; /* Stored in ixa_ire */
3540 if (ire->ire_type & IRE_BROADCAST) {
3562 * the ip_select_route() invocation would have picked an ire
3565 ill = ire_nexthop_ill(ire);
3577 ire = NULL; /* Stored in ixa_ire */
3588 !(ire->ire_type & (IRE_LOCAL|IRE_LOOPBACK|IRE_MULTICAST)) &&
3589 !(ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))) {
3590 ire = NULL; /* Stored in ixa_ire */
3615 if (ire->ire_type & (IRE_BROADCAST|IRE_MULTICAST))
3641 rts_merge_metrics(uinfo, &ire->ire_metrics);
3647 uinfo->iulp_localnet = (ire->ire_type & IRE_ONLINK) != 0;
3648 uinfo->iulp_loopback = (ire->ire_type & IRE_LOOPBACK) != 0;
3649 uinfo->iulp_local = (ire->ire_type & IRE_LOCAL) != 0;
3658 if (ire != NULL)
3659 ire_refrele(ire);
3685 ip_get_base_mtu(ill_t *ill, ire_t *ire)
3688 uint_t iremtu = ire->ire_metrics.iulp_mtu;
3690 if (ire->ire_type & (IRE_MULTICAST|IRE_BROADCAST))
3718 ire_t *ire;
3721 ire = ixa->ixa_ire;
3760 if (ire->ire_metrics.iulp_mtu != 0 &&
3761 ire->ire_metrics.iulp_mtu < pmtu)
3762 pmtu = ire->ire_metrics.iulp_mtu;
3792 if (ire->ire_type & (IRE_LOCAL|IRE_LOOPBACK)) {
3795 loopback_mtu = (ire->ire_ipversion == IPV6_VERSION) ?
3807 if (ire->ire_type & (IRE_MULTICAST|IRE_BROADCAST)) {
3844 if (ire->ire_type & IRE_MULTICAST)
3855 if (ire->ire_type & IRE_MULTICAST)
3876 (ire->ire_flags & RTF_MULTIRT) ||
5639 ire_t *ire;
5642 ire = ire_ftable_lookup_simple_v4(addr, 0, ipst, NULL);
5643 ASSERT(ire != NULL);
5644 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))
5647 result = ire->ire_type;
5648 ire_refrele(ire);
5661 ire_t *ire;
5664 ire = ire_ftable_lookup_simple_v6(addr, 0, ipst, NULL);
5665 ASSERT(ire != NULL);
5666 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))
5669 result = ire->ire_type;
5670 ire_refrele(ire);
6316 ire_t *ire;
6391 ire = ire_ftable_lookup_v4(group, IP_HOST_MASK, 0,
6395 ire = ire_ftable_lookup_v6(&v6group, &ipv6_all_ones, 0,
6399 if (ire != NULL) {
6400 if (ire->ire_flags & RTF_MULTIRT) {
6401 error = ip_multirt_apply_membership(optfn, ire, connp,
6405 ire_refrele(ire);
6436 ire_t *ire;
6521 ire = ire_ftable_lookup_v4(group, IP_HOST_MASK, 0,
6525 ire = ire_ftable_lookup_v6(&v6group, &ipv6_all_ones, 0,
6529 if (ire != NULL) {
6530 if (ire->ire_flags & RTF_MULTIRT) {
6531 error = ip_multirt_apply_membership(optfn, ire, connp,
6535 ire_refrele(ire);
6588 ip_ire_rebind_walker(ire_t *ire, void *notused)
6590 if (!ire->ire_unbound || ire->ire_ill != NULL)
6592 ire_rebind(ire);
6593 ire_delete(ire);
6604 ip_ire_unbind_walker(ire_t *ire, void *notused)
6608 if (!ire->ire_unbound || ire->ire_ill == NULL)
6610 if (ire->ire_ipversion == IPV6_VERSION) {
6611 new_ire = ire_create_v6(&ire->ire_addr_v6, &ire->ire_mask_v6,
6612 &ire->ire_gateway_addr_v6, ire->ire_type, NULL,
6613 ire->ire_zoneid, ire->ire_flags, NULL, ire->ire_ipst);
6615 new_ire = ire_create((uchar_t *)&ire->ire_addr,
6616 (uchar_t *)&ire->ire_mask,
6617 (uchar_t *)&ire->ire_gateway_addr, ire->ire_type, NULL,
6618 ire->ire_zoneid, ire->ire_flags, NULL, ire->ire_ipst);
6624 * The bound ire must first be deleted so that we don't return
6627 ire_delete(ire);
6636 * done when going from weaker to stronger modes so that the cached ire
7678 * Returns a new ire, or the same ire, or NULL.
7681 * In no case is there any hold/release on the ire argument.
7684 ip_check_multihome(void *addr, ire_t *ire, ill_t *ill)
7697 ASSERT(ire->ire_ill != NULL);
7698 if (IS_IN_SAME_ILLGRP(ill, ire->ire_ill))
7699 return (ire);
7702 * Do another ire lookup here, using the ingress ill, to see if the
7710 * at the mercy of the initial ire lookup and the IRE_LOCAL it
7715 if (ire->ire_ipversion == IPV4_VERSION) {
7730 * If the same ire that was returned in ip_input() is found then this
7733 * the destination address. If a different ire was found then the same
7735 * unnumbered point2point interfaces. We switch to use this new ire in
7740 if (new_ire != ire)
7744 return (ire);
7750 ASSERT(ire->ire_ill != NULL);
7751 ire_ill = ire->ire_ill;
7760 return (ire);
7768 return (ire);
7770 if ((ill->ill_flags & ire->ire_ill->ill_flags & ILLF_ROUTER) != 0) {
7771 return (ire);
9403 ire_t *ire;
9479 ire = ire_ftable_lookup_v4(dst, 0, 0,
9484 if (ire == NULL) {
9490 ire_refrele(ire);
10915 ip_snmp_get2_v4(ire_t *ire, iproutedata_t *ird)
10923 ip_stack_t *ipst = ire->ire_ipst;
10925 ASSERT(ire->ire_ipversion == IPV4_VERSION);
10928 if (ire->ire_testhidden)
10930 if (ire->ire_type & IRE_IF_CLONE)
10937 if ((attrp = ire->ire_gw_secattr) != NULL) {
10949 re->ipRouteDest = ire->ire_addr;
10950 ill = ire->ire_ill;
10962 re->ipRouteNextHop = ire->ire_gateway_addr;
10964 if (ire->ire_flags & (RTF_REJECT | RTF_BLACKHOLE))
10966 else if (ire->ire_type & IRE_ONLINK)
10972 re->ipRouteAge = gethrestime_sec() - ire->ire_create_time;
10973 re->ipRouteMask = ire->ire_mask;
10975 re->ipRouteInfo.re_max_frag = ire->ire_metrics.iulp_mtu;
10976 if (ire->ire_ill != NULL && re->ipRouteInfo.re_max_frag == 0)
10977 re->ipRouteInfo.re_max_frag = ire->ire_ill->ill_mtu;
10982 re->ipRouteInfo.re_ref = ire->ire_refcnt;
10983 re->ipRouteInfo.re_obpkt = ire->ire_ob_pkt_count;
10984 re->ipRouteInfo.re_ibpkt = ire->ire_ib_pkt_count;
10985 re->ipRouteInfo.re_flags = ire->ire_flags;
10988 if (ire->ire_type & IRE_INTERFACE) {
10992 child = ire->ire_dep_children;
11001 if (ire->ire_flags & RTF_DYNAMIC) {
11004 re->ipRouteInfo.re_ire_type = ire->ire_type;
11037 ip_snmp_get2_v6_route(ire_t *ire, iproutedata_t *ird)
11045 ip_stack_t *ipst = ire->ire_ipst;
11047 ASSERT(ire->ire_ipversion == IPV6_VERSION);
11050 if (ire->ire_testhidden)
11052 if (ire->ire_type & IRE_IF_CLONE)
11059 if ((attrp = ire->ire_gw_secattr) != NULL) {
11071 re->ipv6RouteDest = ire->ire_addr_v6;
11072 re->ipv6RoutePfxLength = ip_mask_to_plen_v6(&ire->ire_mask_v6);
11075 ill = ire->ire_ill;
11082 ASSERT(!(ire->ire_type & IRE_BROADCAST));
11084 mutex_enter(&ire->ire_lock);
11085 re->ipv6RouteNextHop = ire->ire_gateway_addr_v6;
11086 mutex_exit(&ire->ire_lock);
11089 if (ire->ire_flags & (RTF_REJECT | RTF_BLACKHOLE))
11091 else if (ire->ire_type & IRE_ONLINK)
11098 re->ipv6RouteAge = gethrestime_sec() - ire->ire_create_time;
11102 re->ipv6RouteInfo.re_max_frag = ire->ire_metrics.iulp_mtu;
11103 if (ire->ire_ill != NULL && re->ipv6RouteInfo.re_max_frag == 0)
11104 re->ipv6RouteInfo.re_max_frag = ire->ire_ill->ill_mtu;
11109 re->ipv6RouteInfo.re_obpkt = ire->ire_ob_pkt_count;
11110 re->ipv6RouteInfo.re_ibpkt = ire->ire_ib_pkt_count;
11111 re->ipv6RouteInfo.re_ref = ire->ire_refcnt;
11112 re->ipv6RouteInfo.re_flags = ire->ire_flags;
11115 if (ire->ire_type & IRE_INTERFACE) {
11119 child = ire->ire_dep_children;
11127 if (ire->ire_flags & RTF_DYNAMIC) {
11130 re->ipv6RouteInfo.re_ire_type = ire->ire_type;
12489 * to complete. This involves waiting for the ire and ipif refcnts to go down
12982 ire_t *ire;
13015 ire = ire_ftable_lookup_v4(dst, 0, 0,
13020 if (ire == NULL) {
13026 ire_refrele(ire);
13711 * multicast addresses with the ire argument being the first one.
13719 ire_t *ire, conn_t *connp, boolean_t checkonly, const in6_addr_t *v6group,
13727 ip_stack_t *ipst = ire->ire_ipst;
13739 irb = ire->ire_bucket;
13744 for (; ire != NULL; ire = ire->ire_next) {
13745 if ((ire->ire_flags & RTF_MULTIRT) == 0)
13750 if (ire->ire_ill != NULL)
13754 if (!IN6_ARE_ADDR_EQUAL(&ire->ire_addr_v6, v6group))
13757 ire_gw = ire_ftable_lookup_v6(&ire->ire_gateway_addr_v6,
13758 0, 0, IRE_INTERFACE, ire->ire_ill, ALL_ZONES, NULL,
13761 if (ire->ire_addr != group)
13764 ire_gw = ire_ftable_lookup_v4(ire->ire_gateway_addr,
13765 0, 0, IRE_INTERFACE, ire->ire_ill, ALL_ZONES, NULL,
13768 /* No interface route exists for the gateway; skip this ire. */
15100 ire_t *ire;
15109 ire = ire_ftable_lookup_v4(addr, NULL, NULL, IRE_LOCAL | IRE_LOOPBACK,
15111 if (ire != NULL) {
15112 zoneid = IP_REAL_ZONEID(ire->ire_zoneid, ipst);
15113 ire_refrele(ire);
15123 ire_t *ire;
15135 ire = ire_ftable_lookup_v6(addr, NULL, NULL, IRE_LOCAL | IRE_LOOPBACK,
15137 if (ire != NULL) {
15138 zoneid = IP_REAL_ZONEID(ire->ire_zoneid, ipst);
15139 ire_refrele(ire);