Lines Matching defs:ire

253  * Simiarly lookup of an ire by a thread also returns a refheld ire.
254 * In addition ipif's and ill's referenced by the ire are also indirectly
275 * - ire_lock to protect some of the fields of the ire, IRE tables
407 * irb_refcnt, after the node is added to the tree. The ire itself is
2633 ire_t *ire, *nire;
2645 ire = ire_ftable_lookup_v4(gateway, 0, 0, IRE_ONLINK, NULL,
2660 if (prev_ire == NULL || ire == NULL ||
2663 !(ire->ire_type & IRE_IF_ALL) ||
2666 ip_drop_input("icmpInBadRedirects - ire", mp, ira->ira_ill);
2668 if (ire != NULL)
2669 ire_refrele(ire);
2676 ire_refrele(ire);
2699 ire = ire_create(
2710 if (ire == NULL) {
2714 nire = ire_add(ire);
2716 if (nire != NULL && nire != ire) {
2722 ire = nire;
2723 if (ire != NULL) {
2724 ire_refrele(ire); /* Held in ire_add */
2789 ire_t *ire;
2835 ire = ire_ftable_lookup_v4(ipha->ipha_dst, 0, 0,
2838 if (ire != NULL) {
2839 ire_refrele(ire);
3082 ip_send_potential_redirect_v4(mblk_t *mp, ipha_t *ipha, ire_t *ire,
3107 if ((ire->ire_type & IRE_ONLINK) ||
3111 nhop_ire = ire_nexthop(ire);
3137 * We look at the interface ire for the nexthop,
3392 ire_t *ire = NULL;
3432 ire = ip_select_route_v4(firsthop, *src_addrp, ixa,
3434 ASSERT(ire != NULL); /* IRE_NOROUTE if none found */
3439 * ire can't be a broadcast or multicast unless IPDF_ALLOW_MCBC is set.
3447 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) {
3470 if (!(ire->ire_type & IRE_HOST))
3477 if ((ire->ire_type & (IRE_BROADCAST|IRE_MULTICAST)) &&
3479 ire_refrele(ire);
3480 ire = ire_reject(ipst, B_FALSE);
3489 ire_refhold_notr(ire);
3490 ire_refrele(ire);
3492 ixa->ixa_ire = ire;
3531 ixa->ixa_postfragfn = ire->ire_postfragfn;
3534 if (!(ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))) {
3536 nce = ire_to_nce(ire, firsthop, NULL);
3554 if ((ire->ire_type & IRE_LOCAL) && ire->ire_zoneid != zoneid) {
3555 ire = NULL; /* Stored in ixa_ire */
3559 if (!(ire->ire_type & (IRE_LOOPBACK|IRE_LOCAL|IRE_MULTICAST))) {
3560 ire = NULL; /* Stored in ixa_ire */
3565 if (ire->ire_type & IRE_BROADCAST) {
3587 * the ip_select_route() invocation would have picked an ire
3590 ill = ire_nexthop_ill(ire);
3602 ire = NULL; /* Stored in ixa_ire */
3613 !(ire->ire_type & (IRE_LOCAL|IRE_LOOPBACK|IRE_MULTICAST)) &&
3614 !(ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))) {
3615 ire = NULL; /* Stored in ixa_ire */
3640 if (ire->ire_type & (IRE_BROADCAST|IRE_MULTICAST))
3666 rts_merge_metrics(uinfo, &ire->ire_metrics);
3672 uinfo->iulp_localnet = (ire->ire_type & IRE_ONLINK) != 0;
3673 uinfo->iulp_loopback = (ire->ire_type & IRE_LOOPBACK) != 0;
3674 uinfo->iulp_local = (ire->ire_type & IRE_LOCAL) != 0;
3683 if (ire != NULL)
3684 ire_refrele(ire);
3710 ip_get_base_mtu(ill_t *ill, ire_t *ire)
3713 uint_t iremtu = ire->ire_metrics.iulp_mtu;
3715 if (ire->ire_type & (IRE_MULTICAST|IRE_BROADCAST))
3743 ire_t *ire;
3746 ire = ixa->ixa_ire;
3792 if (ire->ire_metrics.iulp_mtu != 0 &&
3793 ire->ire_metrics.iulp_mtu < pmtu)
3794 pmtu = ire->ire_metrics.iulp_mtu;
3824 if (ire->ire_type & (IRE_LOCAL|IRE_LOOPBACK)) {
3827 loopback_mtu = (ire->ire_ipversion == IPV6_VERSION) ?
3839 if (ire->ire_type & (IRE_MULTICAST|IRE_BROADCAST)) {
3876 if (ire->ire_type & IRE_MULTICAST)
3887 if (ire->ire_type & IRE_MULTICAST)
3906 if ((ire->ire_flags & RTF_MULTIRT) ||
5683 ire_t *ire;
5686 ire = ire_ftable_lookup_simple_v4(addr, 0, ipst, NULL);
5687 ASSERT(ire != NULL);
5688 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))
5691 result = ire->ire_type;
5692 ire_refrele(ire);
5705 ire_t *ire;
5708 ire = ire_ftable_lookup_simple_v6(addr, 0, ipst, NULL);
5709 ASSERT(ire != NULL);
5710 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))
5713 result = ire->ire_type;
5714 ire_refrele(ire);
6362 ire_t *ire;
6440 ire = ire_ftable_lookup_v4(group, IP_HOST_MASK, 0,
6444 ire = ire_ftable_lookup_v6(&v6group, &ipv6_all_ones, 0,
6448 if (ire != NULL) {
6449 if (ire->ire_flags & RTF_MULTIRT) {
6450 error = ip_multirt_apply_membership(optfn, ire, connp,
6454 ire_refrele(ire);
6485 ire_t *ire;
6573 ire = ire_ftable_lookup_v4(group, IP_HOST_MASK, 0,
6577 ire = ire_ftable_lookup_v6(&v6group, &ipv6_all_ones, 0,
6581 if (ire != NULL) {
6582 if (ire->ire_flags & RTF_MULTIRT) {
6583 error = ip_multirt_apply_membership(optfn, ire, connp,
6587 ire_refrele(ire);
6640 ip_ire_rebind_walker(ire_t *ire, void *notused)
6642 if (!ire->ire_unbound || ire->ire_ill != NULL)
6644 ire_rebind(ire);
6645 ire_delete(ire);
6656 ip_ire_unbind_walker(ire_t *ire, void *notused)
6660 if (!ire->ire_unbound || ire->ire_ill == NULL)
6662 if (ire->ire_ipversion == IPV6_VERSION) {
6663 new_ire = ire_create_v6(&ire->ire_addr_v6, &ire->ire_mask_v6,
6664 &ire->ire_gateway_addr_v6, ire->ire_type, NULL,
6665 ire->ire_zoneid, ire->ire_flags, NULL, ire->ire_ipst);
6667 new_ire = ire_create((uchar_t *)&ire->ire_addr,
6668 (uchar_t *)&ire->ire_mask,
6669 (uchar_t *)&ire->ire_gateway_addr, ire->ire_type, NULL,
6670 ire->ire_zoneid, ire->ire_flags, NULL, ire->ire_ipst);
6676 * The bound ire must first be deleted so that we don't return
6679 ire_delete(ire);
6688 * done when going from weaker to stronger modes so that the cached ire
7730 * Returns a new ire, or the same ire, or NULL.
7733 * In no case is there any hold/release on the ire argument.
7736 ip_check_multihome(void *addr, ire_t *ire, ill_t *ill)
7749 ASSERT(ire->ire_ill != NULL);
7750 if (IS_IN_SAME_ILLGRP(ill, ire->ire_ill))
7751 return (ire);
7754 * Do another ire lookup here, using the ingress ill, to see if the
7762 * at the mercy of the initial ire lookup and the IRE_LOCAL it
7767 if (ire->ire_ipversion == IPV4_VERSION) {
7782 * If the same ire that was returned in ip_input() is found then this
7785 * the destination address. If a different ire was found then the same
7787 * unnumbered point2point interfaces. We switch to use this new ire in
7792 if (new_ire != ire)
7796 return (ire);
7802 ASSERT(ire->ire_ill != NULL);
7803 ire_ill = ire->ire_ill;
7812 return (ire);
7820 return (ire);
7822 if ((ill->ill_flags & ire->ire_ill->ill_flags & ILLF_ROUTER) != 0) {
7823 return (ire);
9459 ire_t *ire;
9536 ire = ire_ftable_lookup_v4(dst, 0, 0,
9541 if (ire == NULL) {
9547 ire_refrele(ire);
10979 ip_snmp_get2_v4(ire_t *ire, iproutedata_t *ird)
10987 ip_stack_t *ipst = ire->ire_ipst;
10989 ASSERT(ire->ire_ipversion == IPV4_VERSION);
10992 if (ire->ire_testhidden)
10994 if (ire->ire_type & IRE_IF_CLONE)
11001 if ((attrp = ire->ire_gw_secattr) != NULL) {
11013 re->ipRouteDest = ire->ire_addr;
11014 ill = ire->ire_ill;
11026 re->ipRouteNextHop = ire->ire_gateway_addr;
11028 if (ire->ire_flags & (RTF_REJECT | RTF_BLACKHOLE))
11030 else if (ire->ire_type & IRE_ONLINK)
11036 re->ipRouteAge = gethrestime_sec() - ire->ire_create_time;
11037 re->ipRouteMask = ire->ire_mask;
11039 re->ipRouteInfo.re_max_frag = ire->ire_metrics.iulp_mtu;
11040 if (ire->ire_ill != NULL && re->ipRouteInfo.re_max_frag == 0)
11041 re->ipRouteInfo.re_max_frag = ire->ire_ill->ill_mtu;
11046 re->ipRouteInfo.re_ref = ire->ire_refcnt;
11047 re->ipRouteInfo.re_obpkt = ire->ire_ob_pkt_count;
11048 re->ipRouteInfo.re_ibpkt = ire->ire_ib_pkt_count;
11049 re->ipRouteInfo.re_flags = ire->ire_flags;
11052 if (ire->ire_type & IRE_INTERFACE) {
11056 child = ire->ire_dep_children;
11065 if (ire->ire_flags & RTF_DYNAMIC) {
11068 re->ipRouteInfo.re_ire_type = ire->ire_type;
11101 ip_snmp_get2_v6_route(ire_t *ire, iproutedata_t *ird)
11109 ip_stack_t *ipst = ire->ire_ipst;
11111 ASSERT(ire->ire_ipversion == IPV6_VERSION);
11114 if (ire->ire_testhidden)
11116 if (ire->ire_type & IRE_IF_CLONE)
11123 if ((attrp = ire->ire_gw_secattr) != NULL) {
11135 re->ipv6RouteDest = ire->ire_addr_v6;
11136 re->ipv6RoutePfxLength = ip_mask_to_plen_v6(&ire->ire_mask_v6);
11139 ill = ire->ire_ill;
11146 ASSERT(!(ire->ire_type & IRE_BROADCAST));
11148 mutex_enter(&ire->ire_lock);
11149 re->ipv6RouteNextHop = ire->ire_gateway_addr_v6;
11150 mutex_exit(&ire->ire_lock);
11153 if (ire->ire_flags & (RTF_REJECT | RTF_BLACKHOLE))
11155 else if (ire->ire_type & IRE_ONLINK)
11162 re->ipv6RouteAge = gethrestime_sec() - ire->ire_create_time;
11166 re->ipv6RouteInfo.re_max_frag = ire->ire_metrics.iulp_mtu;
11167 if (ire->ire_ill != NULL && re->ipv6RouteInfo.re_max_frag == 0)
11168 re->ipv6RouteInfo.re_max_frag = ire->ire_ill->ill_mtu;
11173 re->ipv6RouteInfo.re_obpkt = ire->ire_ob_pkt_count;
11174 re->ipv6RouteInfo.re_ibpkt = ire->ire_ib_pkt_count;
11175 re->ipv6RouteInfo.re_ref = ire->ire_refcnt;
11176 re->ipv6RouteInfo.re_flags = ire->ire_flags;
11179 if (ire->ire_type & IRE_INTERFACE) {
11183 child = ire->ire_dep_children;
11191 if (ire->ire_flags & RTF_DYNAMIC) {
11194 re->ipv6RouteInfo.re_ire_type = ire->ire_type;
12552 * to complete. This involves waiting for the ire and ipif refcnts to go down
13048 ire_t *ire;
13082 ire = ire_ftable_lookup_v4(dst, 0, 0,
13087 if (ire == NULL) {
13093 ire_refrele(ire);
13779 * multicast addresses with the ire argument being the first one.
13787 ire_t *ire, conn_t *connp, boolean_t checkonly, const in6_addr_t *v6group,
13795 ip_stack_t *ipst = ire->ire_ipst;
13807 irb = ire->ire_bucket;
13812 for (; ire != NULL; ire = ire->ire_next) {
13813 if ((ire->ire_flags & RTF_MULTIRT) == 0)
13818 if (ire->ire_ill != NULL)
13822 if (!IN6_ARE_ADDR_EQUAL(&ire->ire_addr_v6, v6group))
13825 ire_gw = ire_ftable_lookup_v6(&ire->ire_gateway_addr_v6,
13826 0, 0, IRE_INTERFACE, ire->ire_ill, ALL_ZONES, NULL,
13829 if (ire->ire_addr != group)
13832 ire_gw = ire_ftable_lookup_v4(ire->ire_gateway_addr,
13833 0, 0, IRE_INTERFACE, ire->ire_ill, ALL_ZONES, NULL,
13836 /* No interface route exists for the gateway; skip this ire. */
15182 ire_t *ire;
15191 ire = ire_ftable_lookup_v4(addr, 0, 0, IRE_LOCAL | IRE_LOOPBACK,
15193 if (ire != NULL) {
15194 zoneid = IP_REAL_ZONEID(ire->ire_zoneid, ipst);
15195 ire_refrele(ire);
15205 ire_t *ire;
15217 ire = ire_ftable_lookup_v6(addr, NULL, NULL, IRE_LOCAL | IRE_LOOPBACK,
15219 if (ire != NULL) {
15220 zoneid = IP_REAL_ZONEID(ire->ire_zoneid, ipst);
15221 ire_refrele(ire);