diff options
author | Chris Gianelloni <wolf31o2@gentoo.org> | 2008-02-02 14:15:40 +0000 |
---|---|---|
committer | Chris Gianelloni <wolf31o2@gentoo.org> | 2008-02-02 14:15:40 +0000 |
commit | 1baf329ad013016e1c29579a129ab4cd784fb59f (patch) | |
tree | ba2ce41d27e59c6df1081e8e52b34920d5bac085 /net-misc/cisco-vpnclient-3des/files | |
parent | Marking tiff-3.8.2-r3 ppc64 for bug 208547 (diff) | |
download | historical-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.patch | 144 |
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; |