diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2004-02-27 17:13:23 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2004-02-27 17:13:23 +0000 |
commit | 21885af505b396ec8136e19022143ea2c9b2dff5 (patch) | |
tree | b34b3f1667fc72cfd515f56ff650e807463b5109 /sys/kern/kern_sysctl.c | |
parent | b7db4d072384a5321803b28742f50bc43c9e6836 (diff) | |
download | src-21885af505b396ec8136e19022143ea2c9b2dff5.tar.gz src-21885af505b396ec8136e19022143ea2c9b2dff5.zip |
Add sysctl_move_oid() which reparents an existing OID.
Notes
Notes:
svn path=/head/; revision=126319
Diffstat (limited to 'sys/kern/kern_sysctl.c')
-rw-r--r-- | sys/kern/kern_sysctl.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 62f87e769b98..e608b64e7917 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -416,6 +416,26 @@ sysctl_add_oid(struct sysctl_ctx_list *clist, struct sysctl_oid_list *parent, } /* + * Reparent an existing oid. + */ +int +sysctl_move_oid(struct sysctl_oid *oid, struct sysctl_oid_list *parent) +{ + struct sysctl_oid *oidp; + + if (oid->oid_parent == parent) + return (0); + oidp = sysctl_find_oidname(oid->oid_name, parent); + if (oidp != NULL) + return (EEXIST); + sysctl_unregister_oid(oid); + oid->oid_parent = parent; + oid->oid_number = OID_AUTO; + sysctl_register_oid(oid); + return (0); +} + +/* * Register the kernel's oids on startup. */ SET_DECLARE(sysctl_set, struct sysctl_oid); |