#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44.c,v 1.17 2020/03/16 21:20:12 pgoyette Exp $");
#include <sys/types.h>
#include <sys/param.h>
#include <sys/kauth.h>
#include <sys/sysctl.h>
#include <sys/mount.h>
#include <sys/module.h>
#include <secmodel/bsd44/bsd44.h>
#include <secmodel/suser/suser.h>
#include <secmodel/securelevel/securelevel.h>
#include <secmodel/extensions/extensions.h>
MODULE(MODULE_CLASS_SECMODEL, secmodel_bsd44, "suser,securelevel,extensions");
static secmodel_t bsd44_sm;
SYSCTL_SETUP(sysctl_security_bsd44_setup, "secmodel_bsd44 sysctl")
{
const struct sysctlnode *rnode;
sysctl_createv(clog, 0, NULL, &rnode,
CTLFLAG_PERMANENT,
CTLTYPE_NODE, "models", NULL,
NULL, 0, NULL, 0,
CTL_SECURITY, CTL_CREATE, CTL_EOL);
sysctl_createv(clog, 0, &rnode, &rnode,
CTLFLAG_PERMANENT,
CTLTYPE_NODE, "bsd44", NULL,
NULL, 0, NULL, 0,
CTL_CREATE, CTL_EOL);
sysctl_createv(clog, 0, &rnode, NULL,
CTLFLAG_PERMANENT,
CTLTYPE_STRING, "name", NULL,
NULL, 0,
__UNCONST(SECMODEL_BSD44_NAME), 0,
CTL_CREATE, CTL_EOL);
}
void
secmodel_bsd44_init(void)
{
}
void
secmodel_bsd44_start(void)
{
}
void
secmodel_bsd44_stop(void)
{
}
static int
secmodel_bsd44_modcmd(modcmd_t cmd, void *arg)
{
int error = 0;
switch (cmd) {
case MODULE_CMD_INIT:
error = secmodel_register(&bsd44_sm,
SECMODEL_BSD44_ID, SECMODEL_BSD44_NAME,
NULL, NULL, NULL);
if (error != 0)
printf("secmodel_bsd44_modcmd::init: "
"secmodel_register returned %d\n", error);
secmodel_bsd44_init();
secmodel_bsd44_start();
break;
case MODULE_CMD_FINI:
secmodel_bsd44_stop();
error = secmodel_deregister(bsd44_sm);
if (error != 0)
printf("secmodel_bsd44_modcmd::fini: "
"secmodel_deregister returned %d\n", error);
break;
default:
error = ENOTTY;
break;
}
return error;
}