Cisco VPN Client Problems with Linux

[back to Sony VAIO on Linux]

If you are using linux kernel 2.6.9+ with the Cisco VPN client you may not be able to compile the vpn client. The other problem may be that the system will hang / freeze when using the Cisco VPN client with linux kernels 2.6.9 or greater.

If you are having problems with the Cisco VPN client for linux then the following should remedy the situation:

The Cisco VPN client (cisco_vpnclient) doesn't work with kernel 2.6.9+. In order to get the Cisco VPN client for linux to work you must patch the interceptor.c file by moving the supported_device function above the definition of add_netdev and recompile with make.

The following is the patch that works to rectify problems with the Cisco VPN client for linux with kernel 2.6.9:

--- interceptor.c.orig  2005-01-04 14:55:44.246848280 -0500
+++ interceptor.c       2005-01-04 14:56:15.955027904 -0500
@@ -236,6 +236,24 @@
     dev_kfree_skb(skb);
     return 0;
 }
+
+static int
+inline supported_device(struct net_device* dev)
+{
+    int rc=0;
+
+    if(dev->type == ARPHRD_ETHER)
+    {
+        rc=1;
+    }
+    else if(dev->type == ARPHRD_PPP)
+    {
+        rc=1;
+    }
+
+    return rc;
+}
+
 static int
 add_netdev(struct net_device *dev)
 {
@@ -476,23 +494,6 @@
     s->rc = 0;
 }

-static int
-inline supported_device(struct net_device* dev)
-{
-    int rc=0;
-
-    if(dev->type == ARPHRD_ETHER)
-    {
-        rc=1;
-    }
-    else if(dev->type == ARPHRD_PPP)
-    {
-        rc=1;
-    }
-
-    return rc;
-}
-

 static BINDING *
 getbindingbydev(struct net_device *dev)

Save the above patch in a file called patch.txt and issue patch -p0 < patch.txt in the vpnclient directory. Everything should now work fine with FC3s 724 or later kernels.

In addition, for kernel 2.6.10 or greater you must change the first parameter to the calls to the function skb_checksum_help() to skb and not &skb in the file interceptor.c. The following shows the diff between before and after the change to interceptor.c of the source to the Cisco VPN client for linux. If you do not do the following changes before recompiling the Cisco VPN client for linux the system will hang / freeze if using the vpnclient that works for 2.6.9:

$ diff vpnclient/interceptor.c vpnclient.1/interceptor.c
607c607
< if (skb_checksum_help(&skb,1))
---
> if (skb_checksum_help(skb,1))
732c732
< if (skb_checksum_help(&skb,0))
---
> if (skb_checksum_help(skb,0))

Credit goes to slacker775 and urr on linuxquestions.org.

[back to Sony VAIO on Linux]

Updated: 2005-04-06 Kevin J. Smith