Module Name: src Committed By: pgoyette Date: Wed Jan 1 16:06:01 UTC 2014
Modified Files: src/sys/modules: Makefile src/sys/opencrypto: crypto.c cryptodev.c cryptosoft.c ocryptodev.c Log Message: Modularize the opencrypto components and link to the build To generate a diff of this commit: cvs rdiff -u -r1.133 -r1.134 src/sys/modules/Makefile cvs rdiff -u -r1.41 -r1.42 src/sys/opencrypto/crypto.c cvs rdiff -u -r1.69 -r1.70 src/sys/opencrypto/cryptodev.c cvs rdiff -u -r1.43 -r1.44 src/sys/opencrypto/cryptosoft.c cvs rdiff -u -r1.4 -r1.5 src/sys/opencrypto/ocryptodev.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/modules/Makefile diff -u src/sys/modules/Makefile:1.133 src/sys/modules/Makefile:1.134 --- src/sys/modules/Makefile:1.133 Wed Jan 1 15:18:57 2014 +++ src/sys/modules/Makefile Wed Jan 1 16:06:00 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.133 2014/01/01 15:18:57 pgoyette Exp $ +# $NetBSD: Makefile,v 1.134 2014/01/01 16:06:00 pgoyette Exp $ .include <bsd.own.mk> @@ -16,6 +16,7 @@ SUBDIR+= ccd SUBDIR+= cd9660 SUBDIR+= cgd SUBDIR+= chfs +SUBDIR+= crypto SUBDIR+= coda SUBDIR+= coda5 SUBDIR+= compat @@ -67,6 +68,7 @@ SUBDIR+= npf_ext_rndblock SUBDIR+= ntfs SUBDIR+= null SUBDIR+= onewire +SUBDIR+= opencrypto SUBDIR+= overlay SUBDIR+= pciverbose SUBDIR+= pf @@ -87,6 +89,7 @@ SUBDIR+= smbfs SUBDIR+= spdmem SUBDIR+= sysvbfs SUBDIR+= suser +SUBDIR+= swcrypto SUBDIR+= swsensor SUBDIR+= tmpfs SUBDIR+= uatp Index: src/sys/opencrypto/crypto.c diff -u src/sys/opencrypto/crypto.c:1.41 src/sys/opencrypto/crypto.c:1.42 --- src/sys/opencrypto/crypto.c:1.41 Thu Jun 9 14:41:24 2011 +++ src/sys/opencrypto/crypto.c Wed Jan 1 16:06:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: crypto.c,v 1.41 2011/06/09 14:41:24 drochner Exp $ */ +/* $NetBSD: crypto.c,v 1.42 2014/01/01 16:06:01 pgoyette Exp $ */ /* $FreeBSD: src/sys/opencrypto/crypto.c,v 1.4.2.5 2003/02/26 00:14:05 sam Exp $ */ /* $OpenBSD: crypto.c,v 1.41 2002/07/17 23:52:38 art Exp $ */ @@ -53,7 +53,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: crypto.c,v 1.41 2011/06/09 14:41:24 drochner Exp $"); +__KERNEL_RCSID(0, "$NetBSD: crypto.c,v 1.42 2014/01/01 16:06:01 pgoyette Exp $"); #include <sys/param.h> #include <sys/reboot.h> @@ -65,8 +65,13 @@ __KERNEL_RCSID(0, "$NetBSD: crypto.c,v 1 #include <sys/once.h> #include <sys/sysctl.h> #include <sys/intr.h> +#include <sys/errno.h> +#include <sys/module.h> +#if defined(_KERNEL_OPT) #include "opt_ocf.h" +#endif + #include <opencrypto/cryptodev.h> #include <opencrypto/xform.h> /* XXX for M_XDATA */ @@ -1329,3 +1334,21 @@ cryptoret(void) mutex_spin_enter(&crypto_ret_q_mtx); } } + +/* NetBSD module interface */ + +MODULE(MODULE_CLASS_MISC, opencrypto, NULL); + +static int +opencrypto_modcmd(modcmd_t cmd, void *opaque) +{ + + switch (cmd) { + case MODULE_CMD_INIT: + return 0; + case MODULE_CMD_FINI: + return 0; + default: + return ENOTTY; + } +} Index: src/sys/opencrypto/cryptodev.c diff -u src/sys/opencrypto/cryptodev.c:1.69 src/sys/opencrypto/cryptodev.c:1.70 --- src/sys/opencrypto/cryptodev.c:1.69 Thu Sep 12 13:02:37 2013 +++ src/sys/opencrypto/cryptodev.c Wed Jan 1 16:06:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cryptodev.c,v 1.69 2013/09/12 13:02:37 martin Exp $ */ +/* $NetBSD: cryptodev.c,v 1.70 2014/01/01 16:06:01 pgoyette Exp $ */ /* $FreeBSD: src/sys/opencrypto/cryptodev.c,v 1.4.2.4 2003/06/03 00:09:02 sam Exp $ */ /* $OpenBSD: cryptodev.c,v 1.53 2002/07/10 22:21:30 mickey Exp $ */ @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cryptodev.c,v 1.69 2013/09/12 13:02:37 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cryptodev.c,v 1.70 2014/01/01 16:06:01 pgoyette Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -85,9 +85,13 @@ __KERNEL_RCSID(0, "$NetBSD: cryptodev.c, #include <sys/poll.h> #include <sys/atomic.h> #include <sys/stat.h> +#include <sys/module.h> +#ifdef _KERNEL_OPT #include "opt_ocf.h" #include "opt_compat_netbsd.h" +#endif + #include <opencrypto/cryptodev.h> #include <opencrypto/cryptodev_internal.h> #include <opencrypto/xform.h> @@ -2090,3 +2094,120 @@ cryptoattach(int num) pool_prime(&fcrpl, 64); pool_prime(&csepl, 64 * 5); } + +void crypto_attach(device_t, device_t, void *); + +void +crypto_attach(device_t parent, device_t self, void * opaque) +{ + + cryptoattach(0); +} + +int crypto_detach(device_t, int); + +int +crypto_detach(device_t self, int num) +{ + pool_destroy(&fcrpl); + pool_destroy(&csepl); + + return 0; +} + +int crypto_match(device_t, cfdata_t, void *); + +int +crypto_match(device_t parent, cfdata_t data, void *opaque) +{ + + return 1; +} + +MODULE(MODULE_CLASS_DRIVER, crypto, NULL); + +CFDRIVER_DECL(crypto, DV_DULL, NULL); + +CFATTACH_DECL2_NEW(crypto, 0, crypto_match, crypto_attach, crypto_detach, + NULL, NULL, NULL); + +static int cryptoloc[] = { -1, -1 }; + +static struct cfdata crypto_cfdata[] = { + { + .cf_name = "crypto", + .cf_atname = "crypto", + .cf_unit = 0, + .cf_fstate = 0, + .cf_loc = cryptoloc, + .cf_flags = 0, + .cf_pspec = NULL, + }, + { NULL, NULL, 0, 0, NULL, 0, NULL } +}; + +static int +crypto_modcmd(modcmd_t cmd, void *arg) +{ + devmajor_t cmajor = NODEVMAJOR, bmajor = NODEVMAJOR; + int error; + + switch (cmd) { + case MODULE_CMD_INIT: + error = config_cfdriver_attach(&crypto_cd); + if (error) { + return error; + } + + error = config_cfattach_attach(crypto_cd.cd_name, &crypto_ca); + if (error) { + config_cfdriver_detach(&crypto_cd); + aprint_error("%s: unable to register cfattach\n", + crypto_cd.cd_name); + + return error; + } + + error = config_cfdata_attach(crypto_cfdata, 1); + if (error) { + config_cfattach_detach(crypto_cd.cd_name, &crypto_ca); + config_cfdriver_detach(&crypto_cd); + aprint_error("%s: unable to register cfdata\n", + crypto_cd.cd_name); + + return error; + } + + error = devsw_attach(crypto_cd.cd_name, NULL, &bmajor, + &crypto_cdevsw, &cmajor); + if (error) { + error = config_cfdata_detach(crypto_cfdata); + if (error) { + return error; + } + config_cfattach_detach(crypto_cd.cd_name, &crypto_ca); + config_cfdriver_detach(&crypto_cd); + aprint_error("%s: unable to register devsw\n", + crypto_cd.cd_name); + + return error; + } + + (void)config_attach_pseudo(crypto_cfdata); + + return 0; + case MODULE_CMD_FINI: + error = config_cfdata_detach(crypto_cfdata); + if (error) { + return error; + } + + config_cfattach_detach(crypto_cd.cd_name, &crypto_ca); + config_cfdriver_detach(&crypto_cd); + devsw_detach(NULL, &crypto_cdevsw); + + return 0; + default: + return ENOTTY; + } +} Index: src/sys/opencrypto/cryptosoft.c diff -u src/sys/opencrypto/cryptosoft.c:1.43 src/sys/opencrypto/cryptosoft.c:1.44 --- src/sys/opencrypto/cryptosoft.c:1.43 Thu Sep 12 13:12:35 2013 +++ src/sys/opencrypto/cryptosoft.c Wed Jan 1 16:06:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cryptosoft.c,v 1.43 2013/09/12 13:12:35 martin Exp $ */ +/* $NetBSD: cryptosoft.c,v 1.44 2014/01/01 16:06:01 pgoyette Exp $ */ /* $FreeBSD: src/sys/opencrypto/cryptosoft.c,v 1.2.2.1 2002/11/21 23:34:23 sam Exp $ */ /* $OpenBSD: cryptosoft.c,v 1.35 2002/04/26 08:43:50 deraadt Exp $ */ @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cryptosoft.c,v 1.43 2013/09/12 13:12:35 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cryptosoft.c,v 1.44 2014/01/01 16:06:01 pgoyette Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -33,8 +33,13 @@ __KERNEL_RCSID(0, "$NetBSD: cryptosoft.c #include <sys/sysctl.h> #include <sys/errno.h> #include <sys/cprng.h> +#include <sys/module.h> +#include <sys/device.h> +#ifdef _KERNEL_OPT #include "opt_ocf.h" +#endif + #include <opencrypto/cryptodev.h> #include <opencrypto/cryptosoft.h> #include <opencrypto/xform.h> @@ -1320,3 +1325,105 @@ swcryptoattach(int num) swcr_init(); } + +void swcrypto_attach(device_t, device_t, void *); + +void +swcrypto_attach(device_t parent, device_t self, void *opaque) +{ + + swcr_init(); +} + +int swcrypto_detach(device_t, int); + +int +swcrypto_detach(device_t self, int flag) +{ + if (swcr_id >= 0) + crypto_unregister_all(swcr_id); + return 0; +} + +int swcrypto_match(device_t, cfdata_t, void *); + +int +swcrypto_match(device_t parent, cfdata_t data, void *opaque) +{ + + return 1; +} + +MODULE(MODULE_CLASS_DRIVER, swcrypto, + "opencrypto,zlib,blowfish,des,cast128,camellia,skipjack"); + +CFDRIVER_DECL(swcrypto, DV_DULL, NULL); + +CFATTACH_DECL2_NEW(swcrypto, 0, swcrypto_match, swcrypto_attach, + swcrypto_detach, NULL, NULL, NULL); + +static int swcryptoloc[] = { -1, -1 }; + +static struct cfdata swcrypto_cfdata[] = { + { + .cf_name = "swcrypto", + .cf_atname = "swcrypto", + .cf_unit = 0, + .cf_fstate = 0, + .cf_loc = swcryptoloc, + .cf_flags = 0, + .cf_pspec = NULL, + }, + { NULL, NULL, 0, 0, NULL, 0, NULL } +}; + +static int +swcrypto_modcmd(modcmd_t cmd, void *arg) +{ + int error; + + switch (cmd) { + case MODULE_CMD_INIT: + error = config_cfdriver_attach(&swcrypto_cd); + if (error) { + return error; + } + + error = config_cfattach_attach(swcrypto_cd.cd_name, + &swcrypto_ca); + if (error) { + config_cfdriver_detach(&swcrypto_cd); + aprint_error("%s: unable to register cfattach\n", + swcrypto_cd.cd_name); + + return error; + } + + error = config_cfdata_attach(swcrypto_cfdata, 1); + if (error) { + config_cfattach_detach(swcrypto_cd.cd_name, + &swcrypto_ca); + config_cfdriver_detach(&swcrypto_cd); + aprint_error("%s: unable to register cfdata\n", + swcrypto_cd.cd_name); + + return error; + } + + (void)config_attach_pseudo(swcrypto_cfdata); + + return 0; + case MODULE_CMD_FINI: + error = config_cfdata_detach(swcrypto_cfdata); + if (error) { + return error; + } + + config_cfattach_detach(swcrypto_cd.cd_name, &swcrypto_ca); + config_cfdriver_detach(&swcrypto_cd); + + return 0; + default: + return ENOTTY; + } +} Index: src/sys/opencrypto/ocryptodev.c diff -u src/sys/opencrypto/ocryptodev.c:1.4 src/sys/opencrypto/ocryptodev.c:1.5 --- src/sys/opencrypto/ocryptodev.c:1.4 Mon May 16 10:27:49 2011 +++ src/sys/opencrypto/ocryptodev.c Wed Jan 1 16:06:01 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ocryptodev.c,v 1.4 2011/05/16 10:27:49 drochner Exp $ */ +/* $NetBSD: ocryptodev.c,v 1.5 2014/01/01 16:06:01 pgoyette Exp $ */ /* $FreeBSD: src/sys/opencrypto/cryptodev.c,v 1.4.2.4 2003/06/03 00:09:02 sam Exp $ */ /* $OpenBSD: cryptodev.c,v 1.53 2002/07/10 22:21:30 mickey Exp $ */ @@ -69,7 +69,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ocryptodev.c,v 1.4 2011/05/16 10:27:49 drochner Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ocryptodev.c,v 1.5 2014/01/01 16:06:01 pgoyette Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -90,7 +90,10 @@ __KERNEL_RCSID(0, "$NetBSD: ocryptodev.c #include <sys/poll.h> #include <sys/atomic.h> +#ifdef _KERNEL_OPT #include "opt_ocf.h" +#endif + #include <opencrypto/cryptodev.h> #include <opencrypto/cryptodev_internal.h> #include <opencrypto/ocryptodev.h>