summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/ip/ip_ire.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/inet/ip/ip_ire.c')
-rw-r--r--usr/src/uts/common/inet/ip/ip_ire.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr/src/uts/common/inet/ip/ip_ire.c b/usr/src/uts/common/inet/ip/ip_ire.c
index 16b3b50380..88c104909c 100644
--- a/usr/src/uts/common/inet/ip/ip_ire.c
+++ b/usr/src/uts/common/inet/ip/ip_ire.c
@@ -1117,10 +1117,14 @@ ire_atomic_start(irb_t *irb_ptr, ire_t *ire)
mutex_enter(&ill->ill_lock);
/*
- * Don't allow IRE's to be created on dying ills.
+ * Don't allow IRE's to be created on dying ills, or on
+ * ill's for which the last ipif is going down, or ones which
+ * don't have even a single UP interface
*/
- if (ill->ill_state_flags & ILL_CONDEMNED) {
+ if ((ill->ill_state_flags &
+ (ILL_CONDEMNED|ILL_DOWN_IN_PROGRESS)) != 0) {
ire_atomic_end(irb_ptr, ire);
+ DTRACE_PROBE1(ire__add__on__dying__ill, ire_t *, ire);
return (ENXIO);
}