--- a/usr/src/lib/libipadm/common/ipadm_if.c Tue Jun 29 08:46:27 2010 -0700
+++ b/usr/src/lib/libipadm/common/ipadm_if.c Tue Jun 29 12:42:37 2010 -0400
@@ -1252,15 +1252,17 @@
if (ipadm_if_enabled(iph, ifname, af))
return (IPADM_IF_EXISTS);
- status = i_ipadm_if_pexists(iph, ifname, af, &p_exists);
- if (status != IPADM_SUCCESS)
- return (status);
- other_af = (af == AF_INET ? AF_INET6 : AF_INET);
- if (p_exists) {
- if (!ipadm_if_enabled(iph, ifname, other_af))
- return (IPADM_OP_DISABLE_OBJ);
- else
- ipadm_flags &= ~IPADM_OPT_PERSIST;
+ if (!(iph->iph_flags & IPH_LEGACY)) {
+ status = i_ipadm_if_pexists(iph, ifname, af, &p_exists);
+ if (status != IPADM_SUCCESS)
+ return (status);
+ other_af = (af == AF_INET ? AF_INET6 : AF_INET);
+ if (p_exists) {
+ if (!ipadm_if_enabled(iph, ifname, other_af))
+ return (IPADM_OP_DISABLE_OBJ);
+ else
+ ipadm_flags &= ~IPADM_OPT_PERSIST;
+ }
}
return (i_ipadm_plumb_if(iph, ifname, af, ipadm_flags));