]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv6/mip6.c
[IPV6] ROUTE: Routing by Traffic Class.
[linux-2.6-omap-h63xx.git] / net / ipv6 / mip6.c
index 31445d09261e402272444f30d58b914da55b303b..99d116caecda4a503be815ec921afc2e3e5a976f 100644 (file)
@@ -121,7 +121,8 @@ int mip6_mh_filter(struct sock *sk, struct sk_buff *skb)
                                    &skb->nh.ipv6h->daddr,
                                    mhlen, IPPROTO_MH,
                                    skb_checksum(skb, 0, mhlen, 0))) {
-                       LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH checksum failed [%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x > %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x]\n",
+                       LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH checksum failed "
+                                      "[" NIP6_FMT " > " NIP6_FMT "]\n",
                                       NIP6(skb->nh.ipv6h->saddr),
                                       NIP6(skb->nh.ipv6h->daddr));
                        return -1;
@@ -234,6 +235,10 @@ static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb, struct
        struct timeval stamp;
        int err = 0;
 
+       if (unlikely(fl->proto == IPPROTO_MH &&
+                    fl->fl_mh_type <= IP6_MH_TYPE_MAX))
+               goto out;
+
        if (likely(opt->dsthao)) {
                offset = ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO);
                if (likely(offset >= 0))