diff options
Diffstat (limited to 'usr/src/uts/common/inet/ip/ip_ire.c')
-rw-r--r-- | usr/src/uts/common/inet/ip/ip_ire.c | 8 |
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); } |