diff options
author | tn143363 <none@none> | 2007-05-04 14:10:43 -0700 |
---|---|---|
committer | tn143363 <none@none> | 2007-05-04 14:10:43 -0700 |
commit | fee38f6fd6a6fbebea04db28cf9e4d351fb48311 (patch) | |
tree | 3f6e8ee960f86678d955c8a8eb01550f965c7450 /usr/src/lib/libscf/common/midlevel.c | |
parent | a58015d190b6b71c8046b81cc6ed79be65308539 (diff) | |
download | illumos-joyent-fee38f6fd6a6fbebea04db28cf9e4d351fb48311.tar.gz |
6537863 set_inst_enabled should always make sure general/enabled exists
Diffstat (limited to 'usr/src/lib/libscf/common/midlevel.c')
-rw-r--r-- | usr/src/lib/libscf/common/midlevel.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/usr/src/lib/libscf/common/midlevel.c b/usr/src/lib/libscf/common/midlevel.c index a9cc196816..ec642baaa3 100644 --- a/usr/src/lib/libscf/common/midlevel.c +++ b/usr/src/lib/libscf/common/midlevel.c @@ -551,18 +551,34 @@ set_inst_enabled(const scf_instance_t *inst, uint8_t desired, (ent = scf_entry_create(h)) == NULL) goto out; -get: - if (scf_instance_get_pg(inst, pgname, gpg) == -1) { +general_pg_get: + if (scf_instance_get_pg(inst, SCF_PG_GENERAL, gpg) == -1) { if (scf_error() != SCF_ERROR_NOT_FOUND) goto out; - if (scf_instance_add_pg(inst, pgname, SCF_GROUP_FRAMEWORK, - pgflags, gpg) == -1) { + if (scf_instance_add_pg(inst, SCF_PG_GENERAL, + SCF_GROUP_FRAMEWORK, SCF_PG_GENERAL_FLAGS, gpg) == -1) { if (scf_error() != SCF_ERROR_EXISTS) goto out; - goto get; + goto general_pg_get; } } + + if (strcmp(pgname, SCF_PG_GENERAL) != 0) { +get: + if (scf_instance_get_pg(inst, pgname, gpg) == -1) { + if (scf_error() != SCF_ERROR_NOT_FOUND) + goto out; + + if (scf_instance_add_pg(inst, pgname, + SCF_GROUP_FRAMEWORK, pgflags, gpg) == -1) { + if (scf_error() != SCF_ERROR_EXISTS) + goto out; + goto get; + } + } + } + if (scf_pg_get_property(gpg, SCF_PROPERTY_ENABLED, eprop) == -1) { if (scf_error() != SCF_ERROR_NOT_FOUND) goto out; |