diff options
| author | Cathy Zhou <Cathy.Zhou@Sun.COM> | 2009-02-05 11:25:19 -0800 |
|---|---|---|
| committer | Cathy Zhou <Cathy.Zhou@Sun.COM> | 2009-02-05 11:25:19 -0800 |
| commit | 5093e10312724e92dd76c008a15bdb59d414708a (patch) | |
| tree | 4b2703a0590aa8a3c754c11992267a98d9474071 /usr/src/cmd/dlmgmtd | |
| parent | 5c0b6a79c494b543020a5d970d3f10597234672c (diff) | |
| download | illumos-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.c | 20 |
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; |
