This patch fixes a problem, which exists if you have IPSEC compiled in and want to have crypto support loaded as KLD. By moving zlib to separate module and adding MODULE_DEPEND directives, it is possible to use such configuration without complication. Otherwise, since IPSEC is linked with zlib (just like crypto.ko) you'll get following message: interface zlib.1 already present in the KLD 'kernel'! MFC after: 1 week Patch against FreeBSD 7.0-CURRENT, kern.osreldate: 700014. diff --exclude=CVS -upr /usr/src/sys/modules/Makefile src/sys/modules/Makefile --- /usr/src/sys/modules/Makefile Thu Feb 23 13:30:39 2006 +++ src/sys/modules/Makefile Sun Feb 26 22:30:37 2006 @@ -281,7 +281,8 @@ SUBDIR= ${_3dfx} \ wlan_xauth \ ${_xe} \ xfs \ - xl + xl \ + zlib .if ${MACHINE_ARCH} != "powerpc" _syscons= syscons diff --exclude=CVS -upr /usr/src/sys/modules/crypto/Makefile src/sys/modules/crypto/Makefile --- /usr/src/sys/modules/crypto/Makefile Fri Mar 11 18:24:46 2005 +++ src/sys/modules/crypto/Makefile Sun Feb 26 22:31:19 2006 @@ -6,7 +6,6 @@ .PATH: ${.CURDIR}/../../crypto/des .PATH: ${.CURDIR}/../../crypto/rijndael .PATH: ${.CURDIR}/../../crypto/sha2 -.PATH: ${.CURDIR}/../../net KMOD = crypto SRCS = crypto.c @@ -15,7 +14,6 @@ SRCS += cast.c deflate.c rmd160.c rijnda SRCS += skipjack.c bf_enc.c bf_skey.c SRCS += des_ecb.c des_enc.c des_setkey.c SRCS += sha1.c sha2.c -SRCS += zlib.c SRCS += opt_param.h .include diff --exclude=CVS -upr /usr/src/sys/modules/if_ppp/Makefile src/sys/modules/if_ppp/Makefile --- /usr/src/sys/modules/if_ppp/Makefile Sat Oct 15 01:30:11 2005 +++ src/sys/modules/if_ppp/Makefile Sun Feb 26 23:51:00 2006 @@ -16,7 +16,7 @@ PPP_IPX?= 0 # 0/1 - requires IPX to be c SRCS+= bsd_comp.c .endif .if ${PPP_DEFLATE} > 0 -SRCS+= ppp_deflate.c zlib.c +SRCS+= ppp_deflate.c .endif .if !defined(KERNBUILDDIR) diff --exclude=CVS -upr /usr/src/sys/net/ppp_deflate.c src/sys/net/ppp_deflate.c --- /usr/src/sys/net/ppp_deflate.c Fri Jan 7 02:45:35 2005 +++ src/sys/net/ppp_deflate.c Sun Feb 26 23:49:51 2006 @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -676,3 +677,4 @@ z_incomp(arg, mi) state->stats.unc_bytes += rlen; state->stats.unc_packets++; } +MODULE_DEPEND(ppp_deflate, zlib, 1, 1, 1); diff --exclude=CVS -upr /usr/src/sys/opencrypto/cryptodev.c src/sys/opencrypto/cryptodev.c --- /usr/src/sys/opencrypto/cryptodev.c Thu Aug 18 14:20:28 2005 +++ src/sys/opencrypto/cryptodev.c Sun Feb 26 23:44:53 2006 @@ -820,3 +820,4 @@ static moduledata_t cryptodev_mod = { MODULE_VERSION(cryptodev, 1); DECLARE_MODULE(cryptodev, cryptodev_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); MODULE_DEPEND(cryptodev, crypto, 1, 1, 1); +MODULE_DEPEND(cryptodev, zlib, 1, 1, 1);