<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>Hi,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>I've been building OpenSwan 2.6.18 on a Linux kernel
2.6.22 without a problem. But now I'm upgrading to OpenSwan version 2.6.23, and
I'm running into a couple of problems with KLIPS.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>First, the file ipsec_kversion.h now defines the
identifier HAVE_KMEM_CACHE_MACRO when using a kernel version 2.6.22 (line 241)
which causes compilation to fail. This define seems to be in direct
contradiction to the next define of this identifier (at line 292) where the
comment explicitly says that &quot;The macro got introduced in 2,6,22 but it
does not work properly&quot;.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>It seems like this first define at line 242 is
incorrect and should be reverted. If I do so, I get past this hurdle.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>Second, when loading the KLIPS ipsec kernel module,
the network interface statistics are all garbled in /proc/net/dev and the
command &quot;ifconfig&quot; does not work properly. The problem here seems to
be the change from using dev-&gt;priv to using netdev_priv(dev). The code in
ipsec_tunnel.c and ipsec_mast.c checks for the presence of alloc_netdev with
#ifdefs but in Linux kernel 2.6.22, alloc_netdev is a plain function, not a
macro. This means that kmalloc() is used rather than alloc_netdev(), which in
turn means that netdev_priv(dev) does not return the correct value. If kmalloc
is used, the old usage of dev-&gt;priv should be preserved.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>I can work around this by adding the line<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>#define alloc_netdev alloc_netdev<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>to ipsec_kversion.h, but I think that the correct
solution would be to only use netdev_priv(dev) if alloc_netdev is used. That
is, the use of netdev_priv() must be tied to the same decision that the use of
alloc_netdev() is based on. The cleanest solution would probably be to
introduce a level of indirection by using another macro for both the allocation
of the device as well as the access of its private data and set both of these
macros to either kmalloc and dev-&gt;priv or alloc_netdev and netdev_priv(dev).<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>Both of these problems seem to be an issue only when
using Linux kernel 2.6.22 specifically. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>Regards / Mattias<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>