[Openswan dev] status of klips26 in HEAD

Nate Carlson natecars at natecarlson.com
Thu Aug 26 12:26:03 CEST 2004


Just tried a modules26 build again; ran into the same match686.S error.
Applied the attached patch to module26.make; after that, it builds up to
the following point:

natecars at knight:~/tmp/openswan-2$ make V=1 KERNELSRC=/home/natecars/build/kernel/knight/2.6.8.1/linux-2.6.8.1/ module26
<....>
  gcc -Wp,-MD,/home/natecars/tmp/openswan-2/modobj26/.ipsec_ah.s.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2  -march=pentium4 -Iinclude/asm-i386/mach-default -O2 -fomit-frame-pointer  -include /home/natecars/tmp/openswan-2/packaging/linus/config-all.h -I/home/natecars/tmp/openswan-2/linux/include -DIPCOMP_PREFIX  -DMODULE -DKBUILD_BASENAME=ipsec_ah -DKBUILD_MODNAME=ipsec -S -o /home/natecars/tmp/openswan-2/modobj26/ipsec_ah.s /home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:333: error: variable `ah_protocol' has initializer but incomplete type
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:334: error: unknown field `handler' specified in initializer
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:334: warning: excess elements in struct initializer
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:334: warning: (near initialization for `ah_protocol')
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:335: error: unknown field `no_policy' specified in initializer
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:335: warning: excess elements in struct initializer
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:335: warning: (near initialization for `ah_protocol')
/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.c:333: error: storage size of `ah_protocol' isn't known
make[2]: *** [/home/natecars/tmp/openswan-2/modobj26/ipsec_ah.s] Error 1
make[1]: *** [_module_/home/natecars/tmp/openswan-2/modobj26] Error 2
make[1]: Leaving directory `/home/natecars/build/kernel/knight/2.6.8.1/linux-2.6.8.1'
make: *** [module26] Error 2

Hmm, interesting - just tested with 2.6.7, module builds just fine. Looks
like something changed in 2.6.8.1 that's breaking the build process. Ah, I
see - looks like 2.6.8.1 changed 'inet_protocol' to 'net_protocol' in
include/net/protocol.h. I replaced all occurances of 'inet_protocol' with
'net_protocol' in Openswan, and get a successful build. Not sure if that's
the right thing to do, however - in fact, I'm fairly certain that it's
*not* the right thing to do.  :) The resultant module does load and work,
however (yay!).

Buglet #1: If I set things to 'y' instead of 'm' in
           packaging/makefiles/module.defs, they don't seem to get built.


Buglet #2: If I disable AES and enable CryptoAPI in
           packaging/makefiles/module.defs, and rebuild the module, I get:

*** Warning: "ipsec_aes_init" [/home/natecars/tmp/openswan-2/modobj26/ipsec.ko] undefined!

in ipsec_alg.c, it's setup as:

        /* If we are suppose to use our AES, and don't have CryptoAPI enabled... */
#if defined(CONFIG_KLIPS_ENC_AES) && CONFIG_KLIPS_ENC_AES && !defined(CONFIG_KLIPS_ENC_AES_MODULE) && !CONFIG_KLIPS_ENC_CRYPTOAPI && !defined(CONFIG_KLIPS_ENC_CRYPTOAPI_MODULE)
        {
                extern int ipsec_aes_init(void);
                ipsec_aes_init();
        }
#endif

Since I am not defining CONFIG_KLIPS_ENC_AES and am defining
CONFIG_KLIPS_ENC_CRYPTOAPI, shouldn't ipsec_aes_init never be called? Are
the definitions not being passed in properly? (When I hacked up my
makefile, I was passing them directly to the compiler with '-Dwhatever' if
it was defined in the module config; not sure how it does it when you've
set things up correctly, like you have. I've attached patch #2 that
adds the manual -D's to the Makefile - with those defined, CryptoAPI
works fine. So, yeah, looks like something isn't getting passed in
correctly.)

In any case, great work! I can actually get a working module for 2.6
without too much patching now.  :)

Now, just have to be patient for NAT Traversal.

------------------------------------------------------------------------
| nate carlson | natecars at natecarlson.com | http://www.natecarlson.com |
|       depriving some poor village of its idiot since 1981            |
------------------------------------------------------------------------
-------------- next part --------------
--- module26.make       2004-08-26 10:29:52.000000000 -0500
+++ module26.make.NATE  2004-08-26 10:28:04.000000000 -0500
@@ -31,6 +31,9 @@
 ${BUILDDIR}/%.h : ${KLIPSSRC}/%.h
        ln -s -f $< $@

+${BUILDDIR}/%.S : ${KLIPSSRC}/%.S
+       ln -s -f $< $@
+
 ${BUILDDIR}/%.c : ${KLIPSSRC}/des/%.c
        ln -s -f $< $@

@@ -43,7 +46,7 @@
 ${BUILDDIR}/%.c : ${KLIPSSRC}/alg/%.c
        ln -s -f $< $@

-.PRECIOUS: ${BUILDDIR}/%.c ${BUILDDIR}/%.h
+.PRECIOUS: ${BUILDDIR}/%.c ${BUILDDIR}/%.h ${BUILDDIR}/%.S

 # I'm not fixing this in a better way, because we should use the
 # in-kernel zlib!
-------------- next part --------------
--- Makefile.fs2_6	2004-08-26 11:22:57.000000000 -0500
+++ Makefile.fs2_6.nate	2004-08-26 11:21:45.000000000 -0500
@@ -99,7 +99,25 @@
 
 obj-$(CONFIG_KLIPS_IPCOMP) += ${base-ipcomp-objs}
 
-EXTRA_CFLAGS += -DIPCOMP_PREFIX
+macros-y :=
+macros-m :=
+
+macros-$(CONFIG_KLIPS) += -DCONFIG_KLIPS
+macros-$(CONFIG_KLIPS_ESP) += -DCONFIG_KLIPS_ESP
+macros-$(CONFIG_KLIPS_AH) += -DCONFIG_KLIPS_AH
+macros-$(CONFIG_KLIPS_ALG) += -DCONFIG_KLIPS_ALG
+macros-$(CONFIG_KLIPS_DEBUG) += -DCONFIG_KLIPS_DEBUG
+macros-$(CONFIG_KLIPS_IPIP) += -DCONFIG_KLIPS_IPIP
+macros-$(CONFIG_KLIPS_AUTH_HMAC_MD5) += -DCONFIG_KLIPS_AUTH_HMAC_MD5
+macros-$(CONFIG_KLIPS_AUTH_HMAC_SHA1) += -DCONFIG_KLIPS_AUTH_HMAC_SHA1
+macros-$(CONFIG_KLIPS_ENC_3DES) += -DCONFIG_KLIPS_ENC_3DES
+macros-$(CONFIG_KLIPS_ENC_CRYPTOAPI) += -DCONFIG_KLIPS_ENC_CRYPTOAPI
+macros-$(CONFIG_KLIPS_ENC_3DES) += -DCONFIG_KLIPS_ENC_3DES
+macros-$(CONFIG_KLIPS_IPCOMP) += -DCONFIG_KLIPS_IPCOMP -DIPCOMP_PREFIX
+macros-$(CONFIG_KLIPS_NAT_TRAVERSAL) += -DCONFIG_KLIPS_NAT_TRAVERSAL
+
+EXTRA_CFLAGS += -DIPCOMP_PREFIX \
+                $(macros-y) $(macros-m)
 
 #
 # $Log: Makefile.fs2_6,v $


More information about the Dev mailing list