|
Lines 281-295
Link Here
|
| 281 |
*/ |
281 |
*/ |
| 282 |
if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) { |
282 |
if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) { |
| 283 |
if (oidp->oid_refcnt == 1) { |
283 |
if (oidp->oid_refcnt == 1) { |
| 284 |
SLIST_FOREACH(p, SYSCTL_CHILDREN(oidp), oid_link) { |
284 |
if (!SLIST_EMPTY(SYSCTL_CHILDREN(oidp)) && !recurse) |
| 285 |
if (!recurse) |
|
|
| 286 |
return (ENOTEMPTY); |
285 |
return (ENOTEMPTY); |
| 287 |
error = sysctl_remove_oid(p, del, recurse); |
286 |
|
| 288 |
if (error) |
287 |
if (del) { |
| 289 |
return (error); |
288 |
while (!SLIST_EMPTY(SYSCTL_CHILDREN(oidp))) { |
| 290 |
} |
289 |
p = SLIST_FIRST(SYSCTL_CHILDREN(oidp)); |
| 291 |
if (del) |
290 |
error = sysctl_remove_oid(p, del, recurse); |
|
|
291 |
if (error) |
| 292 |
return (error); |
| 293 |
} |
| 292 |
free(SYSCTL_CHILDREN(oidp), M_SYSCTLOID); |
294 |
free(SYSCTL_CHILDREN(oidp), M_SYSCTLOID); |
|
|
295 |
} else { |
| 296 |
SLIST_FOREACH(p, SYSCTL_CHILDREN(oidp), oid_link) { |
| 297 |
if (!recurse) |
| 298 |
return (ENOTEMPTY); |
| 299 |
error = sysctl_remove_oid(p, del, recurse); |
| 300 |
if (error) |
| 301 |
return (error); |
| 302 |
} |
| 303 |
} |
| 293 |
} |
304 |
} |
| 294 |
} |
305 |
} |
| 295 |
if (oidp->oid_refcnt > 1 ) { |
306 |
if (oidp->oid_refcnt > 1 ) { |