Lines Matching refs:ire

247  * Simiarly lookup of an ire by a thread also returns a refheld ire.
248 * In addition ipif's and ill's referenced by the ire are also indirectly
269 * - ire_lock to protect some of the fields of the ire, IRE tables
401 * irb_refcnt, after the node is added to the tree. The ire itself is
2626 ire_t *ire, *nire;
2638 ire = ire_ftable_lookup_v4(gateway, 0, 0, IRE_ONLINK, NULL,
2653 if (prev_ire == NULL || ire == NULL ||
2656 !(ire->ire_type & IRE_IF_ALL) ||
2659 ip_drop_input("icmpInBadRedirects - ire", mp, ira->ira_ill);
2661 if (ire != NULL)
2662 ire_refrele(ire);
2669 ire_refrele(ire);
2692 ire = ire_create(
2703 if (ire == NULL) {
2707 nire = ire_add(ire);
2709 if (nire != NULL && nire != ire) {
2715 ire = nire;
2716 if (ire != NULL) {
2717 ire_refrele(ire); /* Held in ire_add */
2782 ire_t *ire;
2828 ire = ire_ftable_lookup_v4(ipha->ipha_dst, 0, 0,
2831 if (ire != NULL) {
2832 ire_refrele(ire);
3054 ip_send_potential_redirect_v4(mblk_t *mp, ipha_t *ipha, ire_t *ire,
3079 if ((ire->ire_type & IRE_ONLINK) ||
3083 nhop_ire = ire_nexthop(ire);
3109 * We look at the interface ire for the nexthop,
3364 ire_t *ire = NULL;
3404 ire = ip_select_route_v4(firsthop, *src_addrp, ixa,
3406 ASSERT(ire != NULL); /* IRE_NOROUTE if none found */
3411 * ire can't be a broadcast or multicast unless IPDF_ALLOW_MCBC is set.
3419 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) {
3442 if (!(ire->ire_type & IRE_HOST))
3449 if ((ire->ire_type & (IRE_BROADCAST|IRE_MULTICAST)) &&
3451 ire_refrele(ire);
3452 ire = ire_reject(ipst, B_FALSE);
3461 ire_refhold_notr(ire);
3462 ire_refrele(ire);
3464 ixa->ixa_ire = ire;
3503 ixa->ixa_postfragfn = ire->ire_postfragfn;
3506 if (!(ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))) {
3508 nce = ire_to_nce(ire, firsthop, NULL);
3526 if ((ire->ire_type & IRE_LOCAL) && ire->ire_zoneid != zoneid) {
3527 ire = NULL; /* Stored in ixa_ire */
3531 if (!(ire->ire_type & (IRE_LOOPBACK|IRE_LOCAL|IRE_MULTICAST))) {
3532 ire = NULL; /* Stored in ixa_ire */
3537 if (ire->ire_type & IRE_BROADCAST) {
3559 * the ip_select_route() invocation would have picked an ire
3562 ill = ire_nexthop_ill(ire);
3574 ire = NULL; /* Stored in ixa_ire */
3585 !(ire->ire_type & (IRE_LOCAL|IRE_LOOPBACK|IRE_MULTICAST)) &&
3586 !(ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))) {
3587 ire = NULL; /* Stored in ixa_ire */
3612 if (ire->ire_type & (IRE_BROADCAST|IRE_MULTICAST))
3638 rts_merge_metrics(uinfo, &ire->ire_metrics);
3644 uinfo->iulp_localnet = (ire->ire_type & IRE_ONLINK) != 0;
3645 uinfo->iulp_loopback = (ire->ire_type & IRE_LOOPBACK) != 0;
3646 uinfo->iulp_local = (ire->ire_type & IRE_LOCAL) != 0;
3655 if (ire != NULL)
3656 ire_refrele(ire);
3682 ip_get_base_mtu(ill_t *ill, ire_t *ire)
3685 uint_t iremtu = ire->ire_metrics.iulp_mtu;
3687 if (ire->ire_type & (IRE_MULTICAST|IRE_BROADCAST))
3715 ire_t *ire;
3718 ire = ixa->ixa_ire;
3757 if (ire->ire_metrics.iulp_mtu != 0 &&
3758 ire->ire_metrics.iulp_mtu < pmtu)
3759 pmtu = ire->ire_metrics.iulp_mtu;
3789 if (ire->ire_type & (IRE_LOCAL|IRE_LOOPBACK)) {
3792 loopback_mtu = (ire->ire_ipversion == IPV6_VERSION) ?
3804 if (ire->ire_type & (IRE_MULTICAST|IRE_BROADCAST)) {
3841 if (ire->ire_type & IRE_MULTICAST)
3852 if (ire->ire_type & IRE_MULTICAST)
3873 (ire->ire_flags & RTF_MULTIRT) ||
5604 ire_t *ire;
5607 ire = ire_ftable_lookup_simple_v4(addr, 0, ipst, NULL);
5608 ASSERT(ire != NULL);
5609 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))
5612 result = ire->ire_type;
5613 ire_refrele(ire);
5626 ire_t *ire;
5629 ire = ire_ftable_lookup_simple_v6(addr, 0, ipst, NULL);
5630 ASSERT(ire != NULL);
5631 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE))
5634 result = ire->ire_type;
5635 ire_refrele(ire);
6281 ire_t *ire;
6356 ire = ire_ftable_lookup_v4(group, IP_HOST_MASK, 0,
6360 ire = ire_ftable_lookup_v6(&v6group, &ipv6_all_ones, 0,
6364 if (ire != NULL) {
6365 if (ire->ire_flags & RTF_MULTIRT) {
6366 error = ip_multirt_apply_membership(optfn, ire, connp,
6370 ire_refrele(ire);
6401 ire_t *ire;
6486 ire = ire_ftable_lookup_v4(group, IP_HOST_MASK, 0,
6490 ire = ire_ftable_lookup_v6(&v6group, &ipv6_all_ones, 0,
6494 if (ire != NULL) {
6495 if (ire->ire_flags & RTF_MULTIRT) {
6496 error = ip_multirt_apply_membership(optfn, ire, connp,
6500 ire_refrele(ire);
6553 ip_ire_rebind_walker(ire_t *ire, void *notused)
6555 if (!ire->ire_unbound || ire->ire_ill != NULL)
6557 ire_rebind(ire);
6558 ire_delete(ire);
6569 ip_ire_unbind_walker(ire_t *ire, void *notused)
6573 if (!ire->ire_unbound || ire->ire_ill == NULL)
6575 if (ire->ire_ipversion == IPV6_VERSION) {
6576 new_ire = ire_create_v6(&ire->ire_addr_v6, &ire->ire_mask_v6,
6577 &ire->ire_gateway_addr_v6, ire->ire_type, NULL,
6578 ire->ire_zoneid, ire->ire_flags, NULL, ire->ire_ipst);
6580 new_ire = ire_create((uchar_t *)&ire->ire_addr,
6581 (uchar_t *)&ire->ire_mask,
6582 (uchar_t *)&ire->ire_gateway_addr, ire->ire_type, NULL,
6583 ire->ire_zoneid, ire->ire_flags, NULL, ire->ire_ipst);
6589 * The bound ire must first be deleted so that we don't return
6592 ire_delete(ire);
6601 * done when going from weaker to stronger modes so that the cached ire
7643 * Returns a new ire, or the same ire, or NULL.
7646 * In no case is there any hold/release on the ire argument.
7649 ip_check_multihome(void *addr, ire_t *ire, ill_t *ill)
7662 ASSERT(ire->ire_ill != NULL);
7663 if (IS_IN_SAME_ILLGRP(ill, ire->ire_ill))
7664 return (ire);
7667 * Do another ire lookup here, using the ingress ill, to see if the
7675 * at the mercy of the initial ire lookup and the IRE_LOCAL it
7680 if (ire->ire_ipversion == IPV4_VERSION) {
7695 * If the same ire that was returned in ip_input() is found then this
7698 * the destination address. If a different ire was found then the same
7700 * unnumbered point2point interfaces. We switch to use this new ire in
7705 if (new_ire != ire)
7709 return (ire);
7715 ASSERT(ire->ire_ill != NULL);
7716 ire_ill = ire->ire_ill;
7725 return (ire);
7733 return (ire);
7735 if ((ill->ill_flags & ire->ire_ill->ill_flags & ILLF_ROUTER) != 0) {
7736 return (ire);
9368 ire_t *ire;
9444 ire = ire_ftable_lookup_v4(dst, 0, 0,
9449 if (ire == NULL) {
9455 ire_refrele(ire);
10880 ip_snmp_get2_v4(ire_t *ire, iproutedata_t *ird)
10888 ip_stack_t *ipst = ire->ire_ipst;
10890 ASSERT(ire->ire_ipversion == IPV4_VERSION);
10893 if (ire->ire_testhidden)
10895 if (ire->ire_type & IRE_IF_CLONE)
10902 if ((attrp = ire->ire_gw_secattr) != NULL) {
10914 re->ipRouteDest = ire->ire_addr;
10915 ill = ire->ire_ill;
10927 re->ipRouteNextHop = ire->ire_gateway_addr;
10929 if (ire->ire_flags & (RTF_REJECT | RTF_BLACKHOLE))
10931 else if (ire->ire_type & IRE_ONLINK)
10937 re->ipRouteAge = gethrestime_sec() - ire->ire_create_time;
10938 re->ipRouteMask = ire->ire_mask;
10940 re->ipRouteInfo.re_max_frag = ire->ire_metrics.iulp_mtu;
10941 if (ire->ire_ill != NULL && re->ipRouteInfo.re_max_frag == 0)
10942 re->ipRouteInfo.re_max_frag = ire->ire_ill->ill_mtu;
10947 re->ipRouteInfo.re_ref = ire->ire_refcnt;
10948 re->ipRouteInfo.re_obpkt = ire->ire_ob_pkt_count;
10949 re->ipRouteInfo.re_ibpkt = ire->ire_ib_pkt_count;
10950 re->ipRouteInfo.re_flags = ire->ire_flags;
10953 if (ire->ire_type & IRE_INTERFACE) {
10957 child = ire->ire_dep_children;
10966 if (ire->ire_flags & RTF_DYNAMIC) {
10969 re->ipRouteInfo.re_ire_type = ire->ire_type;
11002 ip_snmp_get2_v6_route(ire_t *ire, iproutedata_t *ird)
11010 ip_stack_t *ipst = ire->ire_ipst;
11012 ASSERT(ire->ire_ipversion == IPV6_VERSION);
11015 if (ire->ire_testhidden)
11017 if (ire->ire_type & IRE_IF_CLONE)
11024 if ((attrp = ire->ire_gw_secattr) != NULL) {
11036 re->ipv6RouteDest = ire->ire_addr_v6;
11037 re->ipv6RoutePfxLength = ip_mask_to_plen_v6(&ire->ire_mask_v6);
11040 ill = ire->ire_ill;
11047 ASSERT(!(ire->ire_type & IRE_BROADCAST));
11049 mutex_enter(&ire->ire_lock);
11050 re->ipv6RouteNextHop = ire->ire_gateway_addr_v6;
11051 mutex_exit(&ire->ire_lock);
11054 if (ire->ire_flags & (RTF_REJECT | RTF_BLACKHOLE))
11056 else if (ire->ire_type & IRE_ONLINK)
11063 re->ipv6RouteAge = gethrestime_sec() - ire->ire_create_time;
11067 re->ipv6RouteInfo.re_max_frag = ire->ire_metrics.iulp_mtu;
11068 if (ire->ire_ill != NULL && re->ipv6RouteInfo.re_max_frag == 0)
11069 re->ipv6RouteInfo.re_max_frag = ire->ire_ill->ill_mtu;
11074 re->ipv6RouteInfo.re_obpkt = ire->ire_ob_pkt_count;
11075 re->ipv6RouteInfo.re_ibpkt = ire->ire_ib_pkt_count;
11076 re->ipv6RouteInfo.re_ref = ire->ire_refcnt;
11077 re->ipv6RouteInfo.re_flags = ire->ire_flags;
11080 if (ire->ire_type & IRE_INTERFACE) {
11084 child = ire->ire_dep_children;
11092 if (ire->ire_flags & RTF_DYNAMIC) {
11095 re->ipv6RouteInfo.re_ire_type = ire->ire_type;
12455 * to complete. This involves waiting for the ire and ipif refcnts to go down
12948 ire_t *ire;
12981 ire = ire_ftable_lookup_v4(dst, 0, 0,
12986 if (ire == NULL) {
12992 ire_refrele(ire);
13677 * multicast addresses with the ire argument being the first one.
13685 ire_t *ire, conn_t *connp, boolean_t checkonly, const in6_addr_t *v6group,
13693 ip_stack_t *ipst = ire->ire_ipst;
13705 irb = ire->ire_bucket;
13710 for (; ire != NULL; ire = ire->ire_next) {
13711 if ((ire->ire_flags & RTF_MULTIRT) == 0)
13716 if (ire->ire_ill != NULL)
13720 if (!IN6_ARE_ADDR_EQUAL(&ire->ire_addr_v6, v6group))
13723 ire_gw = ire_ftable_lookup_v6(&ire->ire_gateway_addr_v6,
13724 0, 0, IRE_INTERFACE, ire->ire_ill, ALL_ZONES, NULL,
13727 if (ire->ire_addr != group)
13730 ire_gw = ire_ftable_lookup_v4(ire->ire_gateway_addr,
13731 0, 0, IRE_INTERFACE, ire->ire_ill, ALL_ZONES, NULL,
13734 /* No interface route exists for the gateway; skip this ire. */
15066 ire_t *ire;
15075 ire = ire_ftable_lookup_v4(addr, NULL, NULL, IRE_LOCAL | IRE_LOOPBACK,
15077 if (ire != NULL) {
15078 zoneid = IP_REAL_ZONEID(ire->ire_zoneid, ipst);
15079 ire_refrele(ire);
15089 ire_t *ire;
15101 ire = ire_ftable_lookup_v6(addr, NULL, NULL, IRE_LOCAL | IRE_LOOPBACK,
15103 if (ire != NULL) {
15104 zoneid = IP_REAL_ZONEID(ire->ire_zoneid, ipst);
15105 ire_refrele(ire);