Lines Matching refs:ire

447 	 * Walk all CONNs that can have a reference on an ire or nce for this
751 * ipif/ill/ire refcnts to drop to zero in bringing down an ipif.
1168 * Walk all CONNs that can have a reference on an ire or nce for this
1232 ill_downi(ire_t *ire, char *ill_arg)
1237 mutex_enter(&ire->ire_lock);
1238 nce = ire->ire_nce_cache;
1240 ire->ire_nce_cache = NULL;
1243 mutex_exit(&ire->ire_lock);
1246 if (ire->ire_ill == ill) {
1248 * The existing interface binding for ire must be
1251 * ire after ire_delete, the caller has to ensure that
1252 * CONDEMNED (deleted) ire's are not removed from the list
1258 ASSERT(ire->ire_bucket->irb_refcnt > 0);
1259 ire_delete(ire);
1260 if (ire->ire_unbound)
1261 ire_rebind(ire);
1267 ill_downi_if_clone(ire_t *ire, char *ill_arg)
1271 ASSERT(ire->ire_type & IRE_IF_CLONE);
1272 if (ire->ire_ill == ill)
1273 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);
9776 * we have net and subnet bcast ire's for
10529 * ipif_down() will ire_delete bcast ire's for the subnet,
10863 ire_t *ire;
10887 ire = ire_ftable_lookup_v4(addr, 0, 0, IRE_BROADCAST,
10890 if (ire == NULL) {
10893 ire_refrele(ire);
10978 * Make sure we have valid net and subnet broadcast ire's
13254 * Pointers to ipif / ill from other data structures viz ire and conn.
13255 * Implicit reference to the ipif / ill by holding a reference to the ire.
13263 * ill_ire_cnt is the number of ire's associated with the
13264 * ill. This is incremented whenever a new ire is created referencing the
13265 * ill. This is done atomically inside ire_add_v[46] where the ire is
13266 * actually added to the ire hash table. The count is decremented in
13267 * ire_inactive where the ire is destroyed.
13347 * ire and nce entries used in the data path will be cleaned
13383 /* only delete if we'd added ire's before */
13420 * Walk all CONNs that can have a reference on an ire for this
13443 * Are there any ire's pointing to this ipif that are still active ?
13444 * If this is the last ipif going down, are there any ire's pointing
13459 * which in turn is called by the last refrele on the ipif/ill/ire.
14124 ire_t *ire, *nire;
14132 ire = ire_create_v6(
14143 ire = ire_create(
14154 if (ire == NULL) {
14161 ire->ire_setsrc_addr_v6 =
14164 ire->ire_setsrc_addr = ifrt->ifrt_setsrc_addr;
14180 ire->ire_type = IRE_IF_NORESOLVER;
14183 * ire held by ire_add, will be refreled' towards the
14186 nire = ire_add(ire);
14193 } else if (nire != ire) {
14194 ip1dbg(("ill_recover_saved_ire: duplicate ire %p\n",
14198 ip1dbg(("ill_recover_saved_ire: added ire %p\n",
14554 ire_t *ire;
14562 * provide some dummy ire_addr for creating the ire.
14565 ire = ire_create_v6(&dummy6, 0, 0, IRE_MULTICAST, ill,
14568 ire = ire_create((uchar_t *)&dummy4, 0, 0, IRE_MULTICAST, ill,
14571 if (ire == NULL)
14574 ill->ill_ire_multicast = ire;
15009 ip1dbg(("ipif_up_done: NULL ire found in ire_array\n"));
15114 ire_t *ire;
15116 ire = ire_ftable_lookup_v4(ipif->ipif_brd_addr, 0, 0,
15120 if (ire == NULL) {
15130 ire_refrele(ire);
15180 ire_t *ire;
15183 ire = ipif->ipif_ire_local;
15186 if (ire != NULL) {
15191 atomic_add_32(&ipif->ipif_ib_pkt_count, ire->ire_ib_pkt_count);
15193 ire_delete(ire);
15194 ire_refrele_notr(ire);
15197 ire = ipif->ipif_ire_if;
15200 if (ire != NULL) {
15201 ire_delete(ire);
15202 ire_refrele_notr(ire);
15529 * - RTF_SETSRC on the offlink ire always wins.
15722 ire_t *ire;
15731 ire = ire_lookup_bcast(ill, 0, zoneid);
15732 ASSERT(ire != NULL);
15733 ire_delete(ire); ire_refrele(ire);
15734 ire = ire_lookup_bcast(ill, INADDR_BROADCAST, zoneid);
15735 ASSERT(ire != NULL);
15736 ire_delete(ire); ire_refrele(ire);
15749 ire = ire_lookup_bcast(ill, addr, zoneid);
15750 ASSERT(ire != NULL);
15751 ire_delete(ire); ire_refrele(ire);
15752 ire = ire_lookup_bcast(ill, ~netmask | addr, zoneid);
15753 ASSERT(ire != NULL);
15754 ire_delete(ire); ire_refrele(ire);
15765 ire = ire_lookup_bcast(ill, addr, zoneid);
15766 ASSERT(ire != NULL);
15767 ire_delete(ire); ire_refrele(ire);
15768 ire = ire_lookup_bcast(ill, ~subnetmask | addr, zoneid);
15769 ASSERT(ire != NULL);
15770 ire_delete(ire); ire_refrele(ire);
17141 ill_save_ire(ill_t *ill, ire_t *ire)
17152 ifrt->ifrt_type = ire->ire_type;
17153 if (ire->ire_ipversion == IPV4_VERSION) {
17155 ifrt->ifrt_addr = ire->ire_addr;
17156 ifrt->ifrt_gateway_addr = ire->ire_gateway_addr;
17157 ifrt->ifrt_setsrc_addr = ire->ire_setsrc_addr;
17158 ifrt->ifrt_mask = ire->ire_mask;
17161 ifrt->ifrt_v6addr = ire->ire_addr_v6;
17163 mutex_enter(&ire->ire_lock);
17164 ifrt->ifrt_v6gateway_addr = ire->ire_gateway_addr_v6;
17165 mutex_exit(&ire->ire_lock);
17166 ifrt->ifrt_v6setsrc_addr = ire->ire_setsrc_addr_v6;
17167 ifrt->ifrt_v6mask = ire->ire_mask_v6;
17169 ifrt->ifrt_flags = ire->ire_flags;
17170 ifrt->ifrt_zoneid = ire->ire_zoneid;
17183 ill_remove_saved_ire(ill_t *ill, ire_t *ire)
17202 mutex_enter(&ire->ire_lock);
17203 gw_addr_v6 = ire->ire_gateway_addr_v6;
17204 mutex_exit(&ire->ire_lock);
17206 if (ifrt->ifrt_zoneid != ire->ire_zoneid ||
17207 ifrt->ifrt_type != ire->ire_type)
17212 &ire->ire_addr_v6) &&
17216 &ire->ire_mask_v6)) :
17217 (ifrt->ifrt_addr == ire->ire_addr &&
17218 ifrt->ifrt_gateway_addr == ire->ire_gateway_addr &&
17219 ifrt->ifrt_mask == ire->ire_mask)) {
17242 ip_cgtp_bcast_add(ire_t *ire, ip_stack_t *ipst)
17246 ASSERT(ire != NULL);
17248 ire_prim = ire_ftable_lookup_v4(ire->ire_gateway_addr, 0, 0,
17269 (uchar_t *)&ire->ire_addr,
17271 (uchar_t *)&ire->ire_gateway_addr,
17275 ire->ire_flags | RTF_KERNEL,
17284 if (ire->ire_flags & RTF_SETSRC) {
17286 ire->ire_setsrc_addr;
17304 * Remove the broadcast ire.
17312 ip_cgtp_bcast_delete(ire_t *ire, ip_stack_t *ipst)
17314 ASSERT(ire != NULL);
17316 if (ip_type_v4(ire->ire_addr, ipst) == IRE_BROADCAST) {
17319 ire_prim = ire_ftable_lookup_v4(ire->ire_gateway_addr, 0, 0,
17332 bcast_ire = ire_ftable_lookup_v4(ire->ire_addr, 0,
17333 ire->ire_gateway_addr, IRE_BROADCAST,
17817 * case, to quiesce ire's and nce's for ill_is_quiescent.
17821 /* no more ire/nce addition allowed */