summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Gianelloni <wolf31o2@gentoo.org>2008-02-02 14:15:40 +0000
committerChris Gianelloni <wolf31o2@gentoo.org>2008-02-02 14:15:40 +0000
commit1baf329ad013016e1c29579a129ab4cd784fb59f (patch)
treeba2ce41d27e59c6df1081e8e52b34920d5bac085 /net-misc/cisco-vpnclient-3des/files
parentMarking tiff-3.8.2-r3 ppc64 for bug 208547 (diff)
downloadhistorical-1baf329ad013016e1c29579a129ab4cd784fb59f.tar.gz
historical-1baf329ad013016e1c29579a129ab4cd784fb59f.tar.bz2
historical-1baf329ad013016e1c29579a129ab4cd784fb59f.zip
Added a patch for 2.6.24 support. Closing bug #207536.
Package-Manager: portage-2.1.4.1
Diffstat (limited to 'net-misc/cisco-vpnclient-3des/files')
-rw-r--r--net-misc/cisco-vpnclient-3des/files/2.6.24.patch144
1 files changed, 144 insertions, 0 deletions
diff --git a/net-misc/cisco-vpnclient-3des/files/2.6.24.patch b/net-misc/cisco-vpnclient-3des/files/2.6.24.patch
new file mode 100644
index 000000000000..14f7485c38bb
--- /dev/null
+++ b/net-misc/cisco-vpnclient-3des/files/2.6.24.patch
@@ -0,0 +1,144 @@
+diff -Nur vpnclient/GenDefs.h vpnclient.new/GenDefs.h
+--- vpnclient/GenDefs.h 2007-08-22 21:30:31.000000000 +0200
++++ vpnclient.new/GenDefs.h 2008-01-25 08:56:46.000000000 +0100
+@@ -105,6 +105,12 @@
+ #define _INTPTR_T_DEFINED
+ #endif
+
++/* uintptr_t has been defined in include/linux/types.h in 2.6.24.
++ * No need to define it here again (will only lead to compile errors)
++ *
++ * by Alexander Griesser <work@tuxx-home.at>, 2008-01-11
++ */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
+ #ifndef _UINTPTR_T_DEFINED
+ #if defined(_LP64)
+ #warning 64 bit
+@@ -114,6 +120,7 @@
+ #endif
+ #define _UINTPTR_T_DEFINED
+ #endif
++#endif
+
+
+ typedef int BOOL;
+diff -Nur vpnclient/interceptor.c vpnclient.new/interceptor.c
+--- vpnclient/interceptor.c 2007-08-22 21:30:31.000000000 +0200
++++ vpnclient.new/interceptor.c 2008-01-25 09:50:52.000000000 +0100
+@@ -28,6 +28,10 @@
+ #include <linux/udp.h>
+ #include <net/protocol.h>
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
++#include <net/net_namespace.h>
++#endif
++
+ #include "linux_os.h"
+
+ #include "vpn_ioctl_linux.h"
+@@ -48,7 +52,7 @@
+ unsigned long rx_bytes;
+
+ /*methods of the cipsec network device*/
+-static int interceptor_init(struct net_device *);
++static void interceptor_init(struct net_device *);
+ static struct net_device_stats *interceptor_stats(struct net_device *dev);
+ static int interceptor_ioctl(struct net_device *dev, struct ifreq *ifr,
+ int cmd);
+@@ -107,18 +111,27 @@
+
+ BINDING Bindings[MAX_INTERFACES];
+
++/* 2.6.24 handles net_devices a little bit different
++ *
++ * by Alexander Griesser <work@tuxx-home.at>, 2008-01-11
++ */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
++static struct net_device* interceptor_dev;
++#else
+ static struct net_device interceptor_dev = {
+ .name = interceptor_name,
+ .init = interceptor_init
+ };
++#endif
++
+ static struct notifier_block interceptor_notifier = {
+ .notifier_call = handle_netdev_event,
+ };
+
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+-static int
++static void
+ #else
+-static int __init
++static void __init
+ #endif
+ interceptor_init(struct net_device *dev)
+ {
+@@ -133,8 +146,6 @@
+ dev->flags |= IFF_NOARP;
+ dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
+ kernel_memset(dev->broadcast, 0xFF, ETH_ALEN);
+-
+- return 0;
+ }
+
+ static struct net_device_stats *
+@@ -362,8 +373,13 @@
+
+ dp = NULL;
+ num_target_devices = 0;
++
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+- for_each_netdev(dp)
++ for_each_netdev(
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
++ &init_net,
++#endif
++ dp)
+ #else
+ for (dp = dev_base; dp != NULL; dp = dp->next)
+ #endif
+@@ -919,15 +935,29 @@
+
+ rc = CniPluginLoad(&pcDeviceName, &PCNICallbackTable);
+
++/* 2.6.24 needs to allocate each netdevice before registering it, otherwise
++ * the kernel BUG()s.
++ *
++ * by Alexander Griesser <work@tuxx-home.at>, 2008-01-11
++ */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
++ if(! (interceptor_dev = alloc_netdev(sizeof(struct net_device), interceptor_name, interceptor_init)))
++ return 0;
++#endif
++
+ if (CNI_IS_SUCCESS(rc))
+ {
+
+ CNICallbackTable = *PCNICallbackTable;
+ CniPluginDeviceCreated();
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
++ if ((status = register_netdev(interceptor_dev)) != 0)
++#else
+ if ((status = register_netdev(&interceptor_dev)) != 0)
++#endif
+ {
+ printk(KERN_INFO "%s: error %d registering device \"%s\".\n",
+- LINUX_VPN_IFNAME, status, interceptor_dev.name);
++ LINUX_VPN_IFNAME, status, interceptor_name);
+ CniPluginUnload();
+
+ }
+@@ -947,7 +977,11 @@
+ cleanup_frag_queue();
+ CniPluginUnload();
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
++ unregister_netdev(interceptor_dev);
++#else
+ unregister_netdev(&interceptor_dev);
++#endif
+ unregister_netdevice_notifier(&interceptor_notifier);
+
+ return;