aboutsummaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/linux-vserver-sources/0001-linux-2.6.28.5-ipgre-strict-binding.patch207
-rw-r--r--testing/linux-vserver-sources/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch140
-rw-r--r--testing/linux-vserver-sources/APKBUILD39
3 files changed, 0 insertions, 386 deletions
diff --git a/testing/linux-vserver-sources/0001-linux-2.6.28.5-ipgre-strict-binding.patch b/testing/linux-vserver-sources/0001-linux-2.6.28.5-ipgre-strict-binding.patch
deleted file mode 100644
index fd0cfeb2a2..0000000000
--- a/testing/linux-vserver-sources/0001-linux-2.6.28.5-ipgre-strict-binding.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From: Timo Teras <timo.teras@iki.fi>
-Date: Tue, 20 Jan 2009 01:22:12 +0000 (-0800)
-Subject: gre: strict physical device binding
-X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fdavem%2Fnet-next-2.6.git;a=commitdiff_plain;h=749c10f931923451a4c59b4435d182aa9ae27a4f;hp=57a574993d94671b495cdbe8aeb78b745abfe14f
-
-gre: strict physical device binding
-
-Check the device on receive path and allow otherwise identical devices
-as long as the physical device differs.
-
-This is useful for NBMA tunnels, where you want to use different gre IP
-for each public IP available via different physical devices.
-
-Signed-off-by: Timo Teras <timo.teras@iki.fi>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
-
-diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
-index 0101521..4a43739 100644
---- a/net/ipv4/ip_gre.c
-+++ b/net/ipv4/ip_gre.c
-@@ -164,67 +164,113 @@ static DEFINE_RWLOCK(ipgre_lock);
-
- /* Given src, dst and key, find appropriate for input tunnel. */
-
--static struct ip_tunnel * ipgre_tunnel_lookup(struct net *net,
-+static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
- __be32 remote, __be32 local,
- __be32 key, __be16 gre_proto)
- {
-+ struct net *net = dev_net(dev);
-+ int link = dev->ifindex;
- unsigned h0 = HASH(remote);
- unsigned h1 = HASH(key);
-- struct ip_tunnel *t;
-- struct ip_tunnel *t2 = NULL;
-+ struct ip_tunnel *t, *sel[4] = { NULL, NULL, NULL, NULL };
- struct ipgre_net *ign = net_generic(net, ipgre_net_id);
- int dev_type = (gre_proto == htons(ETH_P_TEB)) ?
- ARPHRD_ETHER : ARPHRD_IPGRE;
-+ int idx;
-
- for (t = ign->tunnels_r_l[h0^h1]; t; t = t->next) {
-- if (local == t->parms.iph.saddr && remote == t->parms.iph.daddr) {
-- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
-- if (t->dev->type == dev_type)
-- return t;
-- if (t->dev->type == ARPHRD_IPGRE && !t2)
-- t2 = t;
-- }
-- }
-+ if (local != t->parms.iph.saddr ||
-+ remote != t->parms.iph.daddr ||
-+ key != t->parms.i_key ||
-+ !(t->dev->flags & IFF_UP))
-+ continue;
-+
-+ if (t->dev->type != ARPHRD_IPGRE &&
-+ t->dev->type != dev_type)
-+ continue;
-+
-+ idx = 0;
-+ if (t->parms.link != link)
-+ idx |= 1;
-+ if (t->dev->type != dev_type)
-+ idx |= 2;
-+ if (idx == 0)
-+ return t;
-+ if (sel[idx] == NULL)
-+ sel[idx] = t;
- }
-
- for (t = ign->tunnels_r[h0^h1]; t; t = t->next) {
-- if (remote == t->parms.iph.daddr) {
-- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
-- if (t->dev->type == dev_type)
-- return t;
-- if (t->dev->type == ARPHRD_IPGRE && !t2)
-- t2 = t;
-- }
-- }
-+ if (remote != t->parms.iph.daddr ||
-+ key != t->parms.i_key ||
-+ !(t->dev->flags & IFF_UP))
-+ continue;
-+
-+ if (t->dev->type != ARPHRD_IPGRE &&
-+ t->dev->type != dev_type)
-+ continue;
-+
-+ idx = 0;
-+ if (t->parms.link != link)
-+ idx |= 1;
-+ if (t->dev->type != dev_type)
-+ idx |= 2;
-+ if (idx == 0)
-+ return t;
-+ if (sel[idx] == NULL)
-+ sel[idx] = t;
- }
-
- for (t = ign->tunnels_l[h1]; t; t = t->next) {
-- if (local == t->parms.iph.saddr ||
-- (local == t->parms.iph.daddr &&
-- ipv4_is_multicast(local))) {
-- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
-- if (t->dev->type == dev_type)
-- return t;
-- if (t->dev->type == ARPHRD_IPGRE && !t2)
-- t2 = t;
-- }
-- }
-+ if ((local != t->parms.iph.saddr &&
-+ (local != t->parms.iph.daddr ||
-+ !ipv4_is_multicast(local))) ||
-+ key != t->parms.i_key ||
-+ !(t->dev->flags & IFF_UP))
-+ continue;
-+
-+ if (t->dev->type != ARPHRD_IPGRE &&
-+ t->dev->type != dev_type)
-+ continue;
-+
-+ idx = 0;
-+ if (t->parms.link != link)
-+ idx |= 1;
-+ if (t->dev->type != dev_type)
-+ idx |= 2;
-+ if (idx == 0)
-+ return t;
-+ if (sel[idx] == NULL)
-+ sel[idx] = t;
- }
-
- for (t = ign->tunnels_wc[h1]; t; t = t->next) {
-- if (t->parms.i_key == key && t->dev->flags & IFF_UP) {
-- if (t->dev->type == dev_type)
-- return t;
-- if (t->dev->type == ARPHRD_IPGRE && !t2)
-- t2 = t;
-- }
-+ if (t->parms.i_key != key ||
-+ !(t->dev->flags & IFF_UP))
-+ continue;
-+
-+ if (t->dev->type != ARPHRD_IPGRE &&
-+ t->dev->type != dev_type)
-+ continue;
-+
-+ idx = 0;
-+ if (t->parms.link != link)
-+ idx |= 1;
-+ if (t->dev->type != dev_type)
-+ idx |= 2;
-+ if (idx == 0)
-+ return t;
-+ if (sel[idx] == NULL)
-+ sel[idx] = t;
- }
-
-- if (t2)
-- return t2;
-+ for (idx = 1; idx < ARRAY_SIZE(sel); idx++)
-+ if (sel[idx] != NULL)
-+ return sel[idx];
-
-- if (ign->fb_tunnel_dev->flags&IFF_UP)
-+ if (ign->fb_tunnel_dev->flags & IFF_UP)
- return netdev_priv(ign->fb_tunnel_dev);
-+
- return NULL;
- }
-
-@@ -284,6 +330,7 @@ static struct ip_tunnel *ipgre_tunnel_find(struct net *net,
- __be32 remote = parms->iph.daddr;
- __be32 local = parms->iph.saddr;
- __be32 key = parms->i_key;
-+ int link = parms->link;
- struct ip_tunnel *t, **tp;
- struct ipgre_net *ign = net_generic(net, ipgre_net_id);
-
-@@ -291,6 +338,7 @@ static struct ip_tunnel *ipgre_tunnel_find(struct net *net,
- if (local == t->parms.iph.saddr &&
- remote == t->parms.iph.daddr &&
- key == t->parms.i_key &&
-+ link == t->parms.link &&
- type == t->dev->type)
- break;
-
-@@ -421,7 +469,7 @@ static void ipgre_err(struct sk_buff *skb, u32 info)
- }
-
- read_lock(&ipgre_lock);
-- t = ipgre_tunnel_lookup(dev_net(skb->dev), iph->daddr, iph->saddr,
-+ t = ipgre_tunnel_lookup(skb->dev, iph->daddr, iph->saddr,
- flags & GRE_KEY ?
- *(((__be32 *)p) + (grehlen / 4) - 1) : 0,
- p[1]);
-@@ -518,7 +566,7 @@ static int ipgre_rcv(struct sk_buff *skb)
- gre_proto = *(__be16 *)(h + 2);
-
- read_lock(&ipgre_lock);
-- if ((tunnel = ipgre_tunnel_lookup(dev_net(skb->dev),
-+ if ((tunnel = ipgre_tunnel_lookup(skb->dev,
- iph->saddr, iph->daddr, key,
- gre_proto))) {
- struct net_device_stats *stats = &tunnel->dev->stats;
diff --git a/testing/linux-vserver-sources/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch b/testing/linux-vserver-sources/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch
deleted file mode 100644
index fbfef33b9b..0000000000
--- a/testing/linux-vserver-sources/0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From: Timo Teras <timo.teras@iki.fi>
-Date: Tue, 27 Jan 2009 04:56:10 +0000 (-0800)
-Subject: gre: optimize hash lookup
-X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fdavem%2Fnet-next-2.6.git;a=commitdiff_plain;h=afcf12422ec8236dc8b9238fef7a475876eea8da;hp=3eacdf58c2c0b9507afedfc19108e98b992c31e4
-
-gre: optimize hash lookup
-
-Instead of keeping candidate tunnel device from all categories,
-keep only one candidate with best score. This optimizes stack
-usage and speeds up exit code.
-
-Signed-off-by: Timo Teras <timo.teras@iki.fi>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
-
-diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
-index 4a43739..07a188a 100644
---- a/net/ipv4/ip_gre.c
-+++ b/net/ipv4/ip_gre.c
-@@ -172,11 +172,11 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
- int link = dev->ifindex;
- unsigned h0 = HASH(remote);
- unsigned h1 = HASH(key);
-- struct ip_tunnel *t, *sel[4] = { NULL, NULL, NULL, NULL };
-+ struct ip_tunnel *t, *cand = NULL;
- struct ipgre_net *ign = net_generic(net, ipgre_net_id);
- int dev_type = (gre_proto == htons(ETH_P_TEB)) ?
- ARPHRD_ETHER : ARPHRD_IPGRE;
-- int idx;
-+ int score, cand_score = 4;
-
- for (t = ign->tunnels_r_l[h0^h1]; t; t = t->next) {
- if (local != t->parms.iph.saddr ||
-@@ -189,15 +189,18 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
- t->dev->type != dev_type)
- continue;
-
-- idx = 0;
-+ score = 0;
- if (t->parms.link != link)
-- idx |= 1;
-+ score |= 1;
- if (t->dev->type != dev_type)
-- idx |= 2;
-- if (idx == 0)
-+ score |= 2;
-+ if (score == 0)
- return t;
-- if (sel[idx] == NULL)
-- sel[idx] = t;
-+
-+ if (score < cand_score) {
-+ cand = t;
-+ cand_score = score;
-+ }
- }
-
- for (t = ign->tunnels_r[h0^h1]; t; t = t->next) {
-@@ -210,15 +213,18 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
- t->dev->type != dev_type)
- continue;
-
-- idx = 0;
-+ score = 0;
- if (t->parms.link != link)
-- idx |= 1;
-+ score |= 1;
- if (t->dev->type != dev_type)
-- idx |= 2;
-- if (idx == 0)
-+ score |= 2;
-+ if (score == 0)
- return t;
-- if (sel[idx] == NULL)
-- sel[idx] = t;
-+
-+ if (score < cand_score) {
-+ cand = t;
-+ cand_score = score;
-+ }
- }
-
- for (t = ign->tunnels_l[h1]; t; t = t->next) {
-@@ -233,15 +239,18 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
- t->dev->type != dev_type)
- continue;
-
-- idx = 0;
-+ score = 0;
- if (t->parms.link != link)
-- idx |= 1;
-+ score |= 1;
- if (t->dev->type != dev_type)
-- idx |= 2;
-- if (idx == 0)
-+ score |= 2;
-+ if (score == 0)
- return t;
-- if (sel[idx] == NULL)
-- sel[idx] = t;
-+
-+ if (score < cand_score) {
-+ cand = t;
-+ cand_score = score;
-+ }
- }
-
- for (t = ign->tunnels_wc[h1]; t; t = t->next) {
-@@ -253,20 +262,22 @@ static struct ip_tunnel * ipgre_tunnel_lookup(struct net_device *dev,
- t->dev->type != dev_type)
- continue;
-
-- idx = 0;
-+ score = 0;
- if (t->parms.link != link)
-- idx |= 1;
-+ score |= 1;
- if (t->dev->type != dev_type)
-- idx |= 2;
-- if (idx == 0)
-+ score |= 2;
-+ if (score == 0)
- return t;
-- if (sel[idx] == NULL)
-- sel[idx] = t;
-+
-+ if (score < cand_score) {
-+ cand = t;
-+ cand_score = score;
-+ }
- }
-
-- for (idx = 1; idx < ARRAY_SIZE(sel); idx++)
-- if (sel[idx] != NULL)
-- return sel[idx];
-+ if (cand != NULL)
-+ return cand;
-
- if (ign->fb_tunnel_dev->flags & IFF_UP)
- return netdev_priv(ign->fb_tunnel_dev);
diff --git a/testing/linux-vserver-sources/APKBUILD b/testing/linux-vserver-sources/APKBUILD
deleted file mode 100644
index 22097641d4..0000000000
--- a/testing/linux-vserver-sources/APKBUILD
+++ /dev/null
@@ -1,39 +0,0 @@
-# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
-_suff=vserver
-pkgname=linux-$_suff-sources
-pkgver=2.6.29.2
-pkgdesc="Linux kernel sources with vserver patch"
-_kernver=2.6.29
-_vsver=2.3.0.36.10
-pkgrel=0
-options="!strip"
-license=GPL-2
-url="http://linux-vserver.org"
-source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2
- ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-$pkgver.bz2
- http://vserver.13thfloor.at/Experimental/patch-$pkgver-vs$_vsver.diff
- 0001-linux-2.6.28.5-ipgre-strict-binding.patch
- 0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch
- "
-
-build() {
- cd $srcdir/linux-$_kernver
- if [ "$_kernver" != "$pkgver" ]; then
- bunzip2 -c < ../patch-$pkgver.bz2 | patch -p1 || return 1
- fi
-
- for i in ../*.patch ../*.diff; do
- msg "Applying $i..."
- patch -p1 < $i || return 1
- done
-
- mkdir -p "$pkgdir/usr/src"
- cd "$srcdir"
- mv "linux-$_kernver" "$pkgdir/usr/src/linux-$pkgver-$_suff"
-}
-
-md5sums="64921b5ff5cdadbccfcd3820f03be7d8 linux-2.6.29.tar.bz2
-a3e79545ef18ff2a172f82fffef92deb patch-2.6.29.2.bz2
-df8fc25982478856480e8040c76d402c patch-2.6.29.2-vs2.3.0.36.10.diff
-7673b4521283ad41434a18ca18b16ad8 0001-linux-2.6.28.5-ipgre-strict-binding.patch
-8f405c738b150c532c46eaad5390cca2 0002-linux-2.6.28.5-ipgre-optimize-hash-lookup.patch"