Lines Matching defs:ire

443 	 * Walk all CONNs that can have a reference on an ire or nce for this
747 * ipif/ill/ire refcnts to drop to zero in bringing down an ipif.
1164 * Walk all CONNs that can have a reference on an ire or nce for this
1228 ill_downi(ire_t *ire, char *ill_arg)
1233 mutex_enter(&ire->ire_lock);
1234 nce = ire->ire_nce_cache;
1236 ire->ire_nce_cache = NULL;
1239 mutex_exit(&ire->ire_lock);
1242 if (ire->ire_ill == ill) {
1244 * The existing interface binding for ire must be
1247 * ire after ire_delete, the caller has to ensure that
1248 * CONDEMNED (deleted) ire's are not removed from the list
1254 ASSERT(ire->ire_bucket->irb_refcnt > 0);
1255 ire_delete(ire);
1256 if (ire->ire_unbound)
1257 ire_rebind(ire);
1263 ill_downi_if_clone(ire_t *ire, char *ill_arg)
1267 ASSERT(ire->ire_type & IRE_IF_CLONE);
1268 if (ire->ire_ill == ill)
1269 ire_delete(ire);
4083 /* Every ire pointing to the ill adds 1 to ill_refcnt */
4780 * ire.
4795 * old values. However structure updates/creates (ire, ilg, ilm etc)
4903 * with zero references from ire/ilm to it.
4914 * The ipif/ill/ire has been refreled. Do the tail processing.
5410 ire_t *ire, *nire;
5471 ire = ire_ftable_lookup_v4(dst_addr, 0, 0, IRE_LOOPBACK,
5474 if (ire != NULL) {
5475 ire_refrele(ire);
5483 ire = ire_create(
5494 if (ire == NULL) {
5500 ire->ire_setsrc_addr = src_addr;
5502 nire = ire_add(ire);
5506 * already deleted the ire in question, so there
5516 if (nire != ire) {
5523 ire = nire;
5628 ire = ire_ftable_lookup_v4(dst_addr, mask, gw_addr,
5631 if (ire != NULL) {
5632 ire_refrele(ire);
5664 ire = ire_create(
5674 if (ire == NULL) {
5681 ire->ire_setsrc_addr = src_addr;
5683 nire = ire_add(ire);
5687 * already deleted the ire in question, so there
5697 if (nire != ire) {
5703 ire = nire;
5771 ire = ire_ftable_lookup_v4(dst_addr, mask, gw_addr, type, ill,
5774 if (ire != NULL) {
5778 ire_refrele(ire);
5818 ire = ire_create(
5830 * The ire holds a reference to the 'gc' and the 'gc' holds a
5836 if (ire == NULL) {
5847 ip_type_v4(ire->ire_addr, ipst) == IRE_BROADCAST);
5851 ire->ire_setsrc_addr = src_addr;
5853 ire->ire_unbound = unbound;
5861 nire = ire_add(ire);
5865 * already deleted the ire in question, so there
5877 if (nire != ire) {
5885 ire = nire;
5899 ip_cgtp_bcast_add(ire, ipst);
5903 !CLASSD(ire->ire_addr)) {
5914 ire->ire_addr,
5915 ire->ire_gateway_addr,
5916 ire->ire_setsrc_addr,
5926 ire_delete(ire);
5927 ire_refrele(ire); /* Held in ire_add */
5947 ill_save_ire(ill, ire);
5950 ip_rts_rtmsg(RTM_OLDADD, ire, 0, ipst);
5953 * Store the ire that was successfully added into where ire_arg
5956 * the ire when they are finished with it).
5958 *ire_arg = ire;
5960 ire_refrele(ire); /* Held in ire_add */
5977 ire_t *ire = NULL;
6025 ire = ire_ftable_lookup_v4(dst_addr, mask, 0,
6029 if (ire == NULL) {
6031 ire = ire_ftable_lookup_v4(dst_addr, mask, gw_addr,
6036 if (ire != NULL && (ire->ire_flags & RTF_KERNEL)) {
6037 ire_refrele(ire);
6038 ire = NULL;
6045 if (ire == NULL) {
6064 ire = ire_ftable_lookup_v4(dst_addr, mask, gw_addr, type, ill,
6073 if (ire == NULL)
6076 if (ire->ire_flags & RTF_MULTIRT) {
6086 ire->ire_addr, ire->ire_gateway_addr);
6088 ip_cgtp_bcast_delete(ire, ipst);
6091 ill = ire->ire_ill;
6093 ill_remove_saved_ire(ill, ire);
6095 ip_rts_rtmsg(RTM_OLDDEL, ire, 0, ipst);
6096 ire_delete(ire);
6097 ire_refrele(ire);
6738 * the ipif/ill/ire refcnts to drop to zero. In such a case the ipx_pending_mp
7875 ire_t *ire;
7932 ire = ire_route_recursive_v4(v4daddr, 0, NULL, zoneid,
7937 ire = ire_route_recursive_v6(daddr, 0, NULL, zoneid,
7941 ASSERT(ire != NULL);
7942 if (ire->ire_flags & (RTF_REJECT|RTF_BLACKHOLE)) {
7943 ire_refrele(ire);
7951 dst_ill = ire_nexthop_ill(ire);
7953 ire_refrele(ire);
7983 ire_refrele(ire);
7991 * Skips interfaces that are down by using ire checks.
8009 ire_t *ire;
8033 ire = ire_ftable_lookup_v4(v4_addr, 0, 0,
8040 ire = ire_ftable_lookup_v6(&v6addr, 0, 0,
8050 ire = ire_ftable_lookup_v4(v4addr, 0, 0,
8058 if (ire != NULL) {
8060 ire_refrele(ire);
8089 ire_t *ire = NULL;
8118 ire = ire_ftable_lookup_v4(v4_addr, 0, 0, 0,
8127 ire = ire_ftable_lookup_v6(&v6addr, 0, 0, 0,
8139 ire = ire_ftable_lookup_v4(v4addr, 0, 0, 0, NULL,
8148 if (ire != NULL) {
8149 ASSERT(!(ire->ire_type & IRE_MULTICAST));
8151 if ((ire->ire_type & IRE_ONLINK) &&
8152 !(ire->ire_type & IRE_BROADCAST))
8154 ire_refrele(ire);
8420 ire_t *ire = NULL;
8475 ire = ire_ftable_lookup_v4(sin->sin_addr.s_addr,
8478 if (ire == NULL || ((ill = ire->ire_ill) == NULL)) {
8479 if (ire != NULL)
8480 ire_refrele(ire);
8483 ASSERT(ire != NULL && ill != NULL);
8486 ire_refrele(ire);
9800 * we have net and subnet bcast ire's for
10549 * ipif_down() will ire_delete bcast ire's for the subnet,
10883 ire_t *ire;
10907 ire = ire_ftable_lookup_v4(addr, 0, 0, IRE_BROADCAST,
10910 if (ire == NULL) {
10913 ire_refrele(ire);
10998 * Make sure we have valid net and subnet broadcast ire's
13274 * Pointers to ipif / ill from other data structures viz ire and conn.
13275 * Implicit reference to the ipif / ill by holding a reference to the ire.
13283 * ill_ire_cnt is the number of ire's associated with the
13284 * ill. This is incremented whenever a new ire is created referencing the
13285 * ill. This is done atomically inside ire_add_v[46] where the ire is
13286 * actually added to the ire hash table. The count is decremented in
13287 * ire_inactive where the ire is destroyed.
13367 * ire and nce entries used in the data path will be cleaned
13403 /* only delete if we'd added ire's before */
13440 * Walk all CONNs that can have a reference on an ire for this
13463 * Are there any ire's pointing to this ipif that are still active ?
13464 * If this is the last ipif going down, are there any ire's pointing
13479 * which in turn is called by the last refrele on the ipif/ill/ire.
14144 ire_t *ire, *nire;
14152 ire = ire_create_v6(
14163 ire = ire_create(
14174 if (ire == NULL) {
14181 ire->ire_setsrc_addr_v6 =
14184 ire->ire_setsrc_addr = ifrt->ifrt_setsrc_addr;
14200 ire->ire_type = IRE_IF_NORESOLVER;
14203 * ire held by ire_add, will be refreled' towards the
14206 nire = ire_add(ire);
14213 } else if (nire != ire) {
14214 ip1dbg(("ill_recover_saved_ire: duplicate ire %p\n",
14218 ip1dbg(("ill_recover_saved_ire: added ire %p\n",
14574 ire_t *ire;
14582 * provide some dummy ire_addr for creating the ire.
14585 ire = ire_create_v6(&dummy6, 0, 0, IRE_MULTICAST, ill,
14588 ire = ire_create((uchar_t *)&dummy4, 0, 0, IRE_MULTICAST, ill,
14591 if (ire == NULL)
14594 ill->ill_ire_multicast = ire;
15029 ip1dbg(("ipif_up_done: NULL ire found in ire_array\n"));
15134 ire_t *ire;
15136 ire = ire_ftable_lookup_v4(ipif->ipif_brd_addr, 0, 0,
15140 if (ire == NULL) {
15150 ire_refrele(ire);
15200 ire_t *ire;
15203 ire = ipif->ipif_ire_local;
15206 if (ire != NULL) {
15211 atomic_add_32(&ipif->ipif_ib_pkt_count, ire->ire_ib_pkt_count);
15213 ire_delete(ire);
15214 ire_refrele_notr(ire);
15217 ire = ipif->ipif_ire_if;
15220 if (ire != NULL) {
15221 ire_delete(ire);
15222 ire_refrele_notr(ire);
15549 * - RTF_SETSRC on the offlink ire always wins.
15742 ire_t *ire;
15751 ire = ire_lookup_bcast(ill, 0, zoneid);
15752 ASSERT(ire != NULL);
15753 ire_delete(ire); ire_refrele(ire);
15754 ire = ire_lookup_bcast(ill, INADDR_BROADCAST, zoneid);
15755 ASSERT(ire != NULL);
15756 ire_delete(ire); ire_refrele(ire);
15769 ire = ire_lookup_bcast(ill, addr, zoneid);
15770 ASSERT(ire != NULL);
15771 ire_delete(ire); ire_refrele(ire);
15772 ire = ire_lookup_bcast(ill, ~netmask | addr, zoneid);
15773 ASSERT(ire != NULL);
15774 ire_delete(ire); ire_refrele(ire);
15785 ire = ire_lookup_bcast(ill, addr, zoneid);
15786 ASSERT(ire != NULL);
15787 ire_delete(ire); ire_refrele(ire);
15788 ire = ire_lookup_bcast(ill, ~subnetmask | addr, zoneid);
15789 ASSERT(ire != NULL);
15790 ire_delete(ire); ire_refrele(ire);
17161 ill_save_ire(ill_t *ill, ire_t *ire)
17172 ifrt->ifrt_type = ire->ire_type;
17173 if (ire->ire_ipversion == IPV4_VERSION) {
17175 ifrt->ifrt_addr = ire->ire_addr;
17176 ifrt->ifrt_gateway_addr = ire->ire_gateway_addr;
17177 ifrt->ifrt_setsrc_addr = ire->ire_setsrc_addr;
17178 ifrt->ifrt_mask = ire->ire_mask;
17181 ifrt->ifrt_v6addr = ire->ire_addr_v6;
17183 mutex_enter(&ire->ire_lock);
17184 ifrt->ifrt_v6gateway_addr = ire->ire_gateway_addr_v6;
17185 mutex_exit(&ire->ire_lock);
17186 ifrt->ifrt_v6setsrc_addr = ire->ire_setsrc_addr_v6;
17187 ifrt->ifrt_v6mask = ire->ire_mask_v6;
17189 ifrt->ifrt_flags = ire->ire_flags;
17190 ifrt->ifrt_zoneid = ire->ire_zoneid;
17203 ill_remove_saved_ire(ill_t *ill, ire_t *ire)
17222 mutex_enter(&ire->ire_lock);
17223 gw_addr_v6 = ire->ire_gateway_addr_v6;
17224 mutex_exit(&ire->ire_lock);
17226 if (ifrt->ifrt_zoneid != ire->ire_zoneid ||
17227 ifrt->ifrt_type != ire->ire_type)
17232 &ire->ire_addr_v6) &&
17236 &ire->ire_mask_v6)) :
17237 (ifrt->ifrt_addr == ire->ire_addr &&
17238 ifrt->ifrt_gateway_addr == ire->ire_gateway_addr &&
17239 ifrt->ifrt_mask == ire->ire_mask)) {
17262 ip_cgtp_bcast_add(ire_t *ire, ip_stack_t *ipst)
17266 ASSERT(ire != NULL);
17268 ire_prim = ire_ftable_lookup_v4(ire->ire_gateway_addr, 0, 0,
17289 (uchar_t *)&ire->ire_addr,
17291 (uchar_t *)&ire->ire_gateway_addr,
17295 ire->ire_flags | RTF_KERNEL,
17304 if (ire->ire_flags & RTF_SETSRC) {
17306 ire->ire_setsrc_addr;
17324 * Remove the broadcast ire.
17332 ip_cgtp_bcast_delete(ire_t *ire, ip_stack_t *ipst)
17334 ASSERT(ire != NULL);
17336 if (ip_type_v4(ire->ire_addr, ipst) == IRE_BROADCAST) {
17339 ire_prim = ire_ftable_lookup_v4(ire->ire_gateway_addr, 0, 0,
17352 bcast_ire = ire_ftable_lookup_v4(ire->ire_addr, 0,
17353 ire->ire_gateway_addr, IRE_BROADCAST,
17837 * case, to quiesce ire's and nce's for ill_is_quiescent.
17841 /* no more ire/nce addition allowed */