summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-08-31 09:08:42 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-08-31 09:08:42 +0000
commitc110ba78ff68f63dd35d6bdbd4c2423d1ff3bcbd (patch)
tree1beaf6a0aa836b0a3d21fd08ce1fd8de67462bdc
parentfd16ce4706d108cc9e35140095edaa28394396aa (diff)
downloadaports-c110ba78ff68f63dd35d6bdbd4c2423d1ff3bcbd.tar.bz2
aports-c110ba78ff68f63dd35d6bdbd4c2423d1ff3bcbd.tar.xz
main/linux-headers: upgrade to 2.6.30.x
-rw-r--r--main/linux-headers/APKBUILD13
-rw-r--r--main/linux-headers/linux-nbma-mroute-v4-2.6.29.diff321
2 files changed, 4 insertions, 330 deletions
diff --git a/main/linux-headers/APKBUILD b/main/linux-headers/APKBUILD
index 25bb30b3..66f3851f 100644
--- a/main/linux-headers/APKBUILD
+++ b/main/linux-headers/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=linux-headers
-pkgver=2.6.29.5
-_kernver=2.6.29
+pkgver=2.6.30.5
+_kernver=2.6.30
pkgrel=0
pkgdesc="Linux system headers"
url="http://kernel.org"
@@ -10,7 +10,6 @@ makedepends="perl"
options="!strip !tracedeps"
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
- linux-nbma-mroute-v4-2.6.29.diff
"
build() {
@@ -19,9 +18,6 @@ build() {
bunzip2 -c < ../patch-$pkgver.bz2 | patch -p1 || return 1
fi
- # opennhrp needs this ABI compat breaker
- patch -p1 < ../linux-nbma-mroute-v4-2.6.29.diff || return 1
-
mkdir -p "$pkgdir/usr"
make headers_install INSTALL_HDR_PATH="$pkgdir/usr"
@@ -32,6 +28,5 @@ build() {
rm -rf "$pkgdir"/usr/include/drm
}
-md5sums="64921b5ff5cdadbccfcd3820f03be7d8 linux-2.6.29.tar.bz2
-bd23086872a85c9fd00163e9ab78038a patch-2.6.29.5.bz2
-0b9670600a6af0261f8c994fc585ef82 linux-nbma-mroute-v4-2.6.29.diff"
+md5sums="7a80058a6382e5108cdb5554d1609615 linux-2.6.30.tar.bz2
+47841c7ff5c81a7b349a79f2fa8e9138 patch-2.6.30.5.bz2"
diff --git a/main/linux-headers/linux-nbma-mroute-v4-2.6.29.diff b/main/linux-headers/linux-nbma-mroute-v4-2.6.29.diff
deleted file mode 100644
index a79adc28..00000000
--- a/main/linux-headers/linux-nbma-mroute-v4-2.6.29.diff
+++ /dev/null
@@ -1,321 +0,0 @@
-diff --git a/include/linux/mroute.h b/include/linux/mroute.h
-index 8a45569..13500a3 100644
---- a/include/linux/mroute.h
-+++ b/include/linux/mroute.h
-@@ -33,7 +33,7 @@
- #define SIOCGETSGCNT (SIOCPROTOPRIVATE+1)
- #define SIOCGETRPF (SIOCPROTOPRIVATE+2)
-
--#define MAXVIFS 32
-+#define MAXVIFS 256
- typedef unsigned long vifbitmap_t; /* User mode code depends on this lot */
- typedef unsigned short vifi_t;
- #define ALL_VIFS ((vifi_t)(-1))
-@@ -41,7 +41,7 @@ typedef unsigned short vifi_t;
- /*
- * Same idea as select
- */
--
-+
- #define VIFM_SET(n,m) ((m)|=(1<<(n)))
- #define VIFM_CLR(n,m) ((m)&=~(1<<(n)))
- #define VIFM_ISSET(n,m) ((m)&(1<<(n)))
-@@ -53,7 +53,7 @@ typedef unsigned short vifi_t;
- * Passed by mrouted for an MRT_ADD_VIF - again we use the
- * mrouted 3.6 structures for compatibility
- */
--
-+
- struct vifctl {
- vifi_t vifc_vifi; /* Index of VIF */
- unsigned char vifc_flags; /* VIFF_ flags */
-@@ -66,11 +66,12 @@ struct vifctl {
- #define VIFF_TUNNEL 0x1 /* IPIP tunnel */
- #define VIFF_SRCRT 0x2 /* NI */
- #define VIFF_REGISTER 0x4 /* register vif */
-+#define VIFF_NBMA 0x10
-
- /*
- * Cache manipulation structures for mrouted and PIMd
- */
--
-+
- struct mfcctl
- {
- struct in_addr mfcc_origin; /* Origin of mcast */
-@@ -83,10 +84,10 @@ struct mfcctl
- int mfcc_expire;
- };
-
--/*
-+/*
- * Group count retrieval for mrouted
- */
--
-+
- struct sioc_sg_req
- {
- struct in_addr src;
-@@ -113,7 +114,7 @@ struct sioc_vif_req
- * This is the format the mroute daemon expects to see IGMP control
- * data. Magically happens to be like an IP packet as per the original
- */
--
-+
- struct igmpmsg
- {
- __u32 unused1,unused2;
-@@ -190,7 +191,7 @@ struct vif_device
-
- #define VIFF_STATIC 0x8000
-
--struct mfc_cache
-+struct mfc_cache
- {
- struct mfc_cache *next; /* Next entry on cache line */
- __be32 mfc_mcastgrp; /* Group the entry belongs to */
-@@ -224,7 +225,7 @@ struct mfc_cache
- #define MFC_HASH(a,b) (((((__force u32)(__be32)a)>>24)^(((__force u32)(__be32)b)>>26))&(MFC_LINES-1))
- #else
- #define MFC_HASH(a,b) ((((__force u32)(__be32)a)^(((__force u32)(__be32)b)>>2))&(MFC_LINES-1))
--#endif
-+#endif
-
- #endif
-
-diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
-index 1466644..5adea03 100644
---- a/net/ipv4/ipmr.c
-+++ b/net/ipv4/ipmr.c
-@@ -116,6 +116,31 @@ static struct net_protocol pim_protocol;
-
- static struct timer_list ipmr_expire_timer;
-
-+static __be32 ipmr_get_skb_nbma(struct sk_buff *skb)
-+{
-+ union {
-+ char addr[MAX_ADDR_LEN];
-+ __be32 inaddr;
-+ } u;
-+
-+ if (dev_parse_header(skb, u.addr) != 4)
-+ return INADDR_ANY;
-+
-+ return u.inaddr;
-+}
-+
-+static int ip_mr_match_vif_skb(struct vif_device *vif, struct sk_buff *skb)
-+{
-+ if (vif->dev != skb->dev)
-+ return 0;
-+
-+ if (vif->flags & VIFF_NBMA)
-+ return ipmr_get_skb_nbma(skb) == vif->remote;
-+
-+ return 1;
-+}
-+
-+
- /* Service routines creating virtual interfaces: DVMRP tunnels and PIMREG */
-
- static void ipmr_del_tunnel(struct net_device *dev, struct vifctl *v)
-@@ -468,6 +493,7 @@ static int vif_add(struct vifctl *vifc, int mrtsock)
- return err;
- }
- break;
-+ case VIFF_NBMA:
- case 0:
- dev = ip_dev_find(&init_net, vifc->vifc_lcl_addr.s_addr);
- if (!dev)
-@@ -502,7 +528,7 @@ static int vif_add(struct vifctl *vifc, int mrtsock)
- v->pkt_in = 0;
- v->pkt_out = 0;
- v->link = dev->ifindex;
-- if (v->flags&(VIFF_TUNNEL|VIFF_REGISTER))
-+ if (v->flags&(VIFF_TUNNEL|VIFF_REGISTER|VIFF_NBMA))
- v->link = dev->iflink;
-
- /* And finish update writing critical data */
-@@ -1191,12 +1217,15 @@ static inline int ipmr_forward_finish(struct sk_buff *skb)
- {
- struct ip_options * opt = &(IPCB(skb)->opt);
-
-- IP_INC_STATS_BH(dev_net(skb->dst->dev), IPSTATS_MIB_OUTFORWDATAGRAMS);
-+ IP_INC_STATS_BH(dev_net(skb->dev), IPSTATS_MIB_OUTFORWDATAGRAMS);
-
- if (unlikely(opt->optlen))
- ip_forward_options(skb);
-
-- return dst_output(skb);
-+ if (skb->dst != NULL)
-+ return dst_output(skb);
-+ else
-+ return dev_queue_xmit(skb);
- }
-
- /*
-@@ -1208,7 +1237,8 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
- const struct iphdr *iph = ip_hdr(skb);
- struct vif_device *vif = &vif_table[vifi];
- struct net_device *dev;
-- struct rtable *rt;
-+ struct net_device *fromdev = skb->dev;
-+ struct rtable *rt = NULL;
- int encap = 0;
-
- if (vif->dev == NULL)
-@@ -1236,6 +1266,19 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
- if (ip_route_output_key(&init_net, &rt, &fl))
- goto out_free;
- encap = sizeof(struct iphdr);
-+ dev = rt->u.dst.dev;
-+ } else if (vif->flags&VIFF_NBMA) {
-+ /* Fixme, we should take tunnel source address from the
-+ * tunnel device binding if it exists */
-+ struct flowi fl = { .oif = vif->link,
-+ .nl_u = { .ip4_u =
-+ { .daddr = vif->remote,
-+ .tos = RT_TOS(iph->tos) } },
-+ .proto = IPPROTO_GRE };
-+ if (ip_route_output_key(&init_net, &rt, &fl))
-+ goto out_free;
-+ encap = LL_RESERVED_SPACE(rt->u.dst.dev);
-+ dev = vif->dev;
- } else {
- struct flowi fl = { .oif = vif->link,
- .nl_u = { .ip4_u =
-@@ -1244,34 +1287,39 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
- .proto = IPPROTO_IPIP };
- if (ip_route_output_key(&init_net, &rt, &fl))
- goto out_free;
-+ dev = rt->u.dst.dev;
- }
-
-- dev = rt->u.dst.dev;
-+ if (!(vif->flags & VIFF_NBMA)) {
-+ if (skb->len+encap > dst_mtu(&rt->u.dst) && (ntohs(iph->frag_off) & IP_DF)) {
-+ /* Do not fragment multicasts. Alas, IPv4 does not
-+ allow to send ICMP, so that packets will disappear
-+ to blackhole.
-+ */
-
-- if (skb->len+encap > dst_mtu(&rt->u.dst) && (ntohs(iph->frag_off) & IP_DF)) {
-- /* Do not fragment multicasts. Alas, IPv4 does not
-- allow to send ICMP, so that packets will disappear
-- to blackhole.
-- */
--
-- IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_FRAGFAILS);
-- ip_rt_put(rt);
-- goto out_free;
-+ IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_FRAGFAILS);
-+ goto out_free_rt;
-+ }
- }
-
- encap += LL_RESERVED_SPACE(dev) + rt->u.dst.header_len;
-
-- if (skb_cow(skb, encap)) {
-- ip_rt_put(rt);
-- goto out_free;
-- }
-+ if (skb_cow(skb, encap))
-+ goto out_free_rt;
-
- vif->pkt_out++;
- vif->bytes_out += skb->len;
-
- dst_release(skb->dst);
-- skb->dst = &rt->u.dst;
-+ if (vif->flags & VIFF_NBMA) {
-+ ip_rt_put(rt);
-+ skb->dst = NULL;
-+ rt = NULL;
-+ } else {
-+ skb->dst = &rt->u.dst;
-+ }
- ip_decrease_ttl(ip_hdr(skb));
-+ skb->dev = dev;
-
- /* FIXME: forward and output firewalls used to be called here.
- * What do we do with netfilter? -- RR */
-@@ -1280,6 +1328,10 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
- /* FIXME: extra output firewall step used to be here. --RR */
- vif->dev->stats.tx_packets++;
- vif->dev->stats.tx_bytes += skb->len;
-+ } else if (vif->flags & VIFF_NBMA) {
-+ if (dev_hard_header(skb, dev, ntohs(skb->protocol),
-+ &vif->remote, NULL, 4) < 0)
-+ goto out_free_rt;
- }
-
- IPCB(skb)->flags |= IPSKB_FORWARDED;
-@@ -1295,20 +1347,29 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
- * not mrouter) cannot join to more than one interface - it will
- * result in receiving multiple packets.
- */
-- NF_HOOK(PF_INET, NF_INET_FORWARD, skb, skb->dev, dev,
-+ NF_HOOK(PF_INET, NF_INET_FORWARD, skb, fromdev, dev,
- ipmr_forward_finish);
- return;
-
-+out_free_rt:
-+ if (rt != NULL)
-+ ip_rt_put(rt);
- out_free:
- kfree_skb(skb);
- return;
- }
-
--static int ipmr_find_vif(struct net_device *dev)
-+static int ipmr_find_vif(struct net_device *dev, __be32 nbma_origin)
- {
- int ct;
- for (ct=maxvif-1; ct>=0; ct--) {
-- if (vif_table[ct].dev == dev)
-+ if (vif_table[ct].dev != dev)
-+ continue;
-+
-+ if (vif_table[ct].flags & VIFF_NBMA) {
-+ if (vif_table[ct].remote == nbma_origin)
-+ break;
-+ } else if (nbma_origin == INADDR_ANY)
- break;
- }
- return ct;
-@@ -1328,7 +1389,7 @@ static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local
- /*
- * Wrong interface: drop packet and (maybe) send PIM assert.
- */
-- if (vif_table[vif].dev != skb->dev) {
-+ if (!ip_mr_match_vif_skb(&vif_table[vif], skb)) {
- int true_vifi;
-
- if (skb->rtable->fl.iif == 0) {
-@@ -1347,7 +1408,7 @@ static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local
- }
-
- cache->mfc_un.res.wrong_if++;
-- true_vifi = ipmr_find_vif(skb->dev);
-+ true_vifi = ipmr_find_vif(skb->dev, ipmr_get_skb_nbma(skb));
-
- if (true_vifi >= 0 && mroute_do_assert &&
- /* pimsm uses asserts, when switching from RPT to SPT,
-@@ -1454,7 +1515,7 @@ int ip_mr_input(struct sk_buff *skb)
- skb = skb2;
- }
-
-- vif = ipmr_find_vif(skb->dev);
-+ vif = ipmr_find_vif(skb->dev, ipmr_get_skb_nbma(skb));
- if (vif >= 0) {
- int err = ipmr_cache_unresolved(vif, skb);
- read_unlock(&mrt_lock);
-@@ -1634,7 +1695,7 @@ int ipmr_get_route(struct sk_buff *skb, struct rtmsg *rtm, int nowait)
- }
-
- dev = skb->dev;
-- if (dev == NULL || (vif = ipmr_find_vif(dev)) < 0) {
-+ if (dev == NULL || (vif = ipmr_find_vif(dev, INADDR_ANY)) < 0) {
- read_unlock(&mrt_lock);
- return -ENODEV;
- }