summaryrefslogtreecommitdiff
path: root/usr/src/cmd/dlmgmtd
diff options
context:
space:
mode:
authorCathy Zhou <Cathy.Zhou@Sun.COM>2009-02-05 11:25:19 -0800
committerCathy Zhou <Cathy.Zhou@Sun.COM>2009-02-05 11:25:19 -0800
commit5093e10312724e92dd76c008a15bdb59d414708a (patch)
tree4b2703a0590aa8a3c754c11992267a98d9474071 /usr/src/cmd/dlmgmtd
parent5c0b6a79c494b543020a5d970d3f10597234672c (diff)
downloadillumos-joyent-5093e10312724e92dd76c008a15bdb59d414708a.tar.gz
6551032 ip_rcm performs erroneous IP interface configuration
Diffstat (limited to 'usr/src/cmd/dlmgmtd')
-rw-r--r--usr/src/cmd/dlmgmtd/dlmgmt_door.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/usr/src/cmd/dlmgmtd/dlmgmt_door.c b/usr/src/cmd/dlmgmtd/dlmgmt_door.c
index 90c923920d..cbbdf40de9 100644
--- a/usr/src/cmd/dlmgmtd/dlmgmt_door.c
+++ b/usr/src/cmd/dlmgmtd/dlmgmt_door.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -74,14 +74,17 @@ dlmgmt_getlink_by_dev(char *devname)
* be consumed by the datalink sysevent module.
*/
static void
-dlmgmt_post_sysevent(const char *subclass, datalink_id_t linkid)
+dlmgmt_post_sysevent(const char *subclass, datalink_id_t linkid,
+ boolean_t reconfigured)
{
nvlist_t *nvl = NULL;
sysevent_id_t eid;
int err;
if (((err = nvlist_alloc(&nvl, NV_UNIQUE_NAME_TYPE, 0)) != 0) ||
- ((err = nvlist_add_uint64(nvl, RCM_NV_LINKID, linkid)) != 0)) {
+ ((err = nvlist_add_uint64(nvl, RCM_NV_LINKID, linkid)) != 0) ||
+ ((err = nvlist_add_boolean_value(nvl, RCM_NV_RECONFIGURED,
+ reconfigured)) != 0)) {
goto done;
}
@@ -110,6 +113,7 @@ dlmgmt_upcall_create(void *argp, void *retp)
uint32_t flags;
int err = 0;
boolean_t created = B_FALSE;
+ boolean_t reconfigured = B_FALSE;
/*
* Determine whether this link is persistent. Note that this request
@@ -153,8 +157,15 @@ dlmgmt_upcall_create(void *argp, void *retp)
if (err != 0)
goto done;
+ /*
+ * This is a device that is dynamic reconfigured.
+ */
+ if ((linkp->ll_flags & DLMGMT_ACTIVE) == 0)
+ reconfigured = B_TRUE;
+
linkp->ll_flags |= flags;
linkp->ll_gen++;
+
goto done;
}
@@ -216,7 +227,8 @@ noupdate:
* is consumed by the datalink sysevent module which in
* turn generates the RCM_RESOURCE_LINK_NEW RCM event.
*/
- dlmgmt_post_sysevent(ESC_DATALINK_PHYS_ADD, retvalp->lr_linkid);
+ dlmgmt_post_sysevent(ESC_DATALINK_PHYS_ADD,
+ retvalp->lr_linkid, reconfigured);
}
retvalp->lr_err = err;