[package] update openswan to 2.6.23, convert to netdev_ops for 2.6.30+ kernels
git-svn-id: svn://svn.openwrt.org/openwrt/packages@18343 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
e1a7cbfd1a
commit
14a2be0b8c
@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=openswan
|
PKG_NAME:=openswan
|
||||||
PKG_VERSION:=2.6.22
|
PKG_VERSION:=2.6.23
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://www.openswan.org/download
|
PKG_SOURCE_URL:=http://www.openswan.org/download
|
||||||
PKG_MD5SUM:=
|
PKG_MD5SUM:=c83053471e639bf3b97e3cf7796b7e83
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
273
net/openswan/patches/130-netdev_ops.patch
Normal file
273
net/openswan/patches/130-netdev_ops.patch
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
diff -urN openswan-2.6.23/linux/net/ipsec/ipsec_mast.c openswan-2.6.23.new/linux/net/ipsec/ipsec_mast.c
|
||||||
|
--- openswan-2.6.23/linux/net/ipsec/ipsec_mast.c 2009-09-09 02:42:54.000000000 +0200
|
||||||
|
+++ openswan-2.6.23.new/linux/net/ipsec/ipsec_mast.c 2009-11-08 14:20:37.000000000 +0100
|
||||||
|
@@ -643,6 +643,18 @@
|
||||||
|
return NOTIFY_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+static const struct net_device_ops ipsec_mast_ops = {
|
||||||
|
+ .ndo_open = ipsec_mast_open,
|
||||||
|
+ .ndo_stop = ipsec_mast_close,
|
||||||
|
+ .ndo_start_xmit = ipsec_mast_start_xmit,
|
||||||
|
+ .ndo_get_stats = ipsec_mast_get_stats,
|
||||||
|
+ .ndo_do_ioctl = ipsec_mast_ioctl,
|
||||||
|
+ .ndo_neigh_setup = ipsec_mast_neigh_setup_dev,
|
||||||
|
+};
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Called when an ipsec mast device is initialized.
|
||||||
|
* The ipsec mast device structure is passed to us.
|
||||||
|
@@ -657,12 +669,17 @@
|
||||||
|
"allocating %lu bytes initialising device: %s\n",
|
||||||
|
(unsigned long) sizeof(struct mastpriv),
|
||||||
|
dev->name ? dev->name : "NULL");
|
||||||
|
-
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
/* Add our mast functions to the device */
|
||||||
|
dev->open = ipsec_mast_open;
|
||||||
|
dev->stop = ipsec_mast_close;
|
||||||
|
dev->hard_start_xmit = ipsec_mast_start_xmit;
|
||||||
|
dev->get_stats = ipsec_mast_get_stats;
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ dev->netdev_ops = &ipsec_mast_ops;
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
#ifdef alloc_netdev
|
||||||
|
dev->destructor = free_netdev;
|
||||||
|
#endif
|
||||||
|
@@ -677,9 +694,11 @@
|
||||||
|
for(i = 0; i < sizeof(zeroes); i++) {
|
||||||
|
((__u8*)(zeroes))[i] = 0;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
dev->set_multicast_list = NULL;
|
||||||
|
dev->do_ioctl = ipsec_mast_ioctl;
|
||||||
|
+#endif
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
|
||||||
|
dev->header_ops = NULL;
|
||||||
|
#else
|
||||||
|
@@ -687,8 +706,10 @@
|
||||||
|
dev->rebuild_header = NULL;
|
||||||
|
dev->header_cache_update= NULL;
|
||||||
|
#endif
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
dev->set_mac_address = NULL;
|
||||||
|
dev->neigh_setup = ipsec_mast_neigh_setup_dev;
|
||||||
|
+#endif
|
||||||
|
dev->hard_header_len = 8+20+20+8;
|
||||||
|
dev->mtu = 0;
|
||||||
|
dev->addr_len = 0;
|
||||||
|
@@ -719,6 +740,9 @@
|
||||||
|
struct net_device *im;
|
||||||
|
int vifentry;
|
||||||
|
char name[IFNAMSIZ];
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ struct net_device_ops *im_ops;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if(vifnum > IPSEC_NUM_IFMAX) {
|
||||||
|
return -ENOENT;
|
||||||
|
@@ -750,8 +774,14 @@
|
||||||
|
memset((caddr_t)im, 0, sizeof(struct net_device));
|
||||||
|
memcpy(im->name, name, IFNAMSIZ);
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
im->init = ipsec_mast_probe;
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ im_ops = (struct net_device_ops *)im->netdev_ops;
|
||||||
|
+ im_ops->ndo_init = ipsec_mast_probe;
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if(register_netdev(im) != 0) {
|
||||||
|
printk(KERN_ERR "ipsec_mast: failed to register %s\n",
|
||||||
|
diff -urN openswan-2.6.23/linux/net/ipsec/ipsec_rcv.c openswan-2.6.23.new/linux/net/ipsec/ipsec_rcv.c
|
||||||
|
--- openswan-2.6.23/linux/net/ipsec/ipsec_rcv.c 2009-09-09 02:42:54.000000000 +0200
|
||||||
|
+++ openswan-2.6.23.new/linux/net/ipsec/ipsec_rcv.c 2009-11-08 14:16:26.000000000 +0100
|
||||||
|
@@ -482,9 +482,15 @@
|
||||||
|
irs->ipsp->ips_out->name);
|
||||||
|
}
|
||||||
|
skb->dev = irs->ipsp->ips_out;
|
||||||
|
-
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
if(skb->dev && skb->dev->get_stats) {
|
||||||
|
struct net_device_stats *stats = skb->dev->get_stats(skb->dev);
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ if(skb->dev && skb->dev->netdev_ops->ndo_get_stats) {
|
||||||
|
+ struct net_device_stats *stats = skb->dev->netdev_ops->ndo_get_stats(skb->dev);
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
irs->stats = stats;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff -urN openswan-2.6.23/linux/net/ipsec/ipsec_tunnel.c openswan-2.6.23.new/linux/net/ipsec/ipsec_tunnel.c
|
||||||
|
--- openswan-2.6.23/linux/net/ipsec/ipsec_tunnel.c 2009-09-09 02:42:54.000000000 +0200
|
||||||
|
+++ openswan-2.6.23.new/linux/net/ipsec/ipsec_tunnel.c 2009-11-08 14:14:38.000000000 +0100
|
||||||
|
@@ -3,7 +3,7 @@
|
||||||
|
* Copyright (C) 1996, 1997 John Ioannidis.
|
||||||
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Richard Guy Briggs.
|
||||||
|
*
|
||||||
|
- * OCF/receive state machine written by
|
||||||
|
+ * OCF/receive statet machine written by
|
||||||
|
* David McCullough <dmccullough@cyberguard.com>
|
||||||
|
* Copyright (C) 2004-2005 Intel Corporation. All Rights Reserved.
|
||||||
|
*
|
||||||
|
@@ -1098,6 +1098,10 @@
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
struct ipsecpriv *prv = netdev_priv(dev);
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ struct net_device_ops *dev_ops;
|
||||||
|
+ struct net_device_ops *physdev_ops;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if(dev == NULL) {
|
||||||
|
KLIPS_PRINT(debug_tunnel & DB_TN_REVEC,
|
||||||
|
@@ -1113,11 +1117,17 @@
|
||||||
|
dev->name ? dev->name : "NULL");
|
||||||
|
return -ENODATA;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
dev->set_mac_address = ipsec_tunnel_set_mac_address;
|
||||||
|
prv->dev = physdev;
|
||||||
|
prv->hard_start_xmit = physdev->hard_start_xmit;
|
||||||
|
prv->get_stats = physdev->get_stats;
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ dev_ops = (struct net_device_ops *)dev->netdev_ops;
|
||||||
|
+ dev_ops->ndo_set_mac_address = ipsec_tunnel_set_mac_address;
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
|
||||||
|
if (physdev->header_ops) {
|
||||||
|
@@ -1152,18 +1162,34 @@
|
||||||
|
} else
|
||||||
|
dev->header_cache_update = NULL;
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
if (physdev->set_mac_address) {
|
||||||
|
prv->set_mac_address = physdev->set_mac_address;
|
||||||
|
dev->set_mac_address = ipsec_tunnel_set_mac_address;
|
||||||
|
} else
|
||||||
|
dev->set_mac_address = NULL;
|
||||||
|
-
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ physdev_ops = (struct net_device_ops *)physdev->netdev_ops;
|
||||||
|
+ if (physdev_ops->ndo_set_mac_address) {
|
||||||
|
+ prv->set_mac_address = physdev_ops->ndo_set_mac_address;
|
||||||
|
+ dev_ops->ndo_set_mac_address = ipsec_tunnel_set_mac_address;
|
||||||
|
+ } else
|
||||||
|
+ dev_ops->ndo_set_mac_address = NULL;
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
dev->hard_header_len = physdev->hard_header_len;
|
||||||
|
|
||||||
|
#ifdef NET_21
|
||||||
|
/* prv->neigh_setup = physdev->neigh_setup; */
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
dev->neigh_setup = ipsec_tunnel_neigh_setup_dev;
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+#endif
|
||||||
|
+ dev_ops->ndo_neigh_setup = ipsec_tunnel_neigh_setup_dev;
|
||||||
|
+#endif
|
||||||
|
#endif /* NET_21 */
|
||||||
|
dev->mtu = 16260; /* 0xfff0; */ /* dev->mtu; */
|
||||||
|
prv->mtu = physdev->mtu;
|
||||||
|
@@ -1602,6 +1628,16 @@
|
||||||
|
* Called when an ipsec tunnel device is initialized.
|
||||||
|
* The ipsec tunnel device structure is passed to us.
|
||||||
|
*/
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+static const struct net_device_ops ipsec_tunnel_netdev_ops = {
|
||||||
|
+ .ndo_open = ipsec_tunnel_open,
|
||||||
|
+ .ndo_stop = ipsec_tunnel_close,
|
||||||
|
+ .ndo_start_xmit = ipsec_tunnel_start_xmit,
|
||||||
|
+ .ndo_get_stats = ipsec_tunnel_get_stats,
|
||||||
|
+ .ndo_do_ioctl = ipsec_tunnel_ioctl,
|
||||||
|
+ .ndo_neigh_setup = ipsec_tunnel_neigh_setup_dev,
|
||||||
|
+};
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
ipsec_tunnel_init(struct net_device *dev)
|
||||||
|
@@ -1614,12 +1650,17 @@
|
||||||
|
(unsigned long) sizeof(struct ipsecpriv),
|
||||||
|
dev->name ? dev->name : "NULL");
|
||||||
|
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
/* Add our tunnel functions to the device */
|
||||||
|
dev->open = ipsec_tunnel_open;
|
||||||
|
dev->stop = ipsec_tunnel_close;
|
||||||
|
dev->hard_start_xmit = ipsec_tunnel_start_xmit;
|
||||||
|
dev->get_stats = ipsec_tunnel_get_stats;
|
||||||
|
-
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ dev->netdev_ops = &ipsec_tunnel_netdev_ops;
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
#ifndef alloc_netdev
|
||||||
|
dev->priv = kmalloc(sizeof(struct ipsecpriv), GFP_KERNEL);
|
||||||
|
if (dev->priv == NULL)
|
||||||
|
@@ -1637,8 +1678,10 @@
|
||||||
|
skb_queue_head_init(&dev->buffs[i]);
|
||||||
|
#endif /* !NET_21 */
|
||||||
|
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
dev->set_multicast_list = NULL;
|
||||||
|
dev->do_ioctl = ipsec_tunnel_ioctl;
|
||||||
|
+#endif
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
|
||||||
|
dev->header_ops = NULL;
|
||||||
|
#else
|
||||||
|
@@ -1653,7 +1696,9 @@
|
||||||
|
|
||||||
|
#ifdef NET_21
|
||||||
|
/* prv->neigh_setup = NULL; */
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
dev->neigh_setup = ipsec_tunnel_neigh_setup_dev;
|
||||||
|
+#endif
|
||||||
|
#endif /* NET_21 */
|
||||||
|
dev->hard_header_len = 0;
|
||||||
|
dev->mtu = 0;
|
||||||
|
@@ -1695,7 +1740,9 @@
|
||||||
|
char name[IFNAMSIZ];
|
||||||
|
struct net_device *dev_ipsec;
|
||||||
|
int vifentry;
|
||||||
|
-
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ struct net_device_ops *dev_ops;
|
||||||
|
+#endif
|
||||||
|
if(ifnum > IPSEC_NUM_IFMAX) {
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
@@ -1747,7 +1794,14 @@
|
||||||
|
dev_ipsec->next = NULL;
|
||||||
|
#endif
|
||||||
|
#endif /* alloc_netdev */
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
|
||||||
|
dev_ipsec->init = &ipsec_tunnel_probe;
|
||||||
|
+#else
|
||||||
|
+#if !(defined CONFIG_COMPAT_NET_DEV_OPS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
|
||||||
|
+ dev_ops = (struct net_device_ops *)dev_ipsec->netdev_ops;
|
||||||
|
+ dev_ops->ndo_init = &ipsec_tunnel_probe;
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
KLIPS_PRINT(debug_tunnel & DB_TN_INIT,
|
||||||
|
"klips_debug:ipsec_tunnel_init_devices: "
|
||||||
|
"registering device %s\n",
|
Loading…
x
Reference in New Issue
Block a user