]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv4/ah4.c
Merge commit 'kumar/kumar-next' into next
[linux-2.6-omap-h63xx.git] / net / ipv4 / ah4.c
index 9d4555ec0b59136eb4e1ba259531c5d57cd7d451..e878e494296ef948958bb0ff845a145742cb90ec 100644 (file)
@@ -96,7 +96,7 @@ static int ah_output(struct xfrm_state *x, struct sk_buff *skb)
 
        ah->reserved = 0;
        ah->spi = x->id.spi;
-       ah->seq_no = htonl(XFRM_SKB_CB(skb)->seq);
+       ah->seq_no = htonl(XFRM_SKB_CB(skb)->seq.output);
 
        spin_lock_bh(&x->lock);
        err = ah_mac_digest(ahp, skb, ah->auth_data);
@@ -201,15 +201,16 @@ out:
 
 static void ah4_err(struct sk_buff *skb, u32 info)
 {
-       struct iphdr *iph = (struct iphdr*)skb->data;
-       struct ip_auth_hdr *ah = (struct ip_auth_hdr*)(skb->data+(iph->ihl<<2));
+       struct net *net = dev_net(skb->dev);
+       struct iphdr *iph = (struct iphdr *)skb->data;
+       struct ip_auth_hdr *ah = (struct ip_auth_hdr *)(skb->data+(iph->ihl<<2));
        struct xfrm_state *x;
 
        if (icmp_hdr(skb)->type != ICMP_DEST_UNREACH ||
            icmp_hdr(skb)->code != ICMP_FRAG_NEEDED)
                return;
 
-       x = xfrm_state_lookup((xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET);
+       x = xfrm_state_lookup(net, (xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET);
        if (!x)
                return;
        printk(KERN_DEBUG "pmtu discovery on SA AH/%08x/%08x\n",
@@ -293,9 +294,7 @@ static void ah_destroy(struct xfrm_state *x)
                return;
 
        kfree(ahp->work_icv);
-       ahp->work_icv = NULL;
        crypto_free_hash(ahp->tfm);
-       ahp->tfm = NULL;
        kfree(ahp);
 }
 
@@ -316,6 +315,7 @@ static struct net_protocol ah4_protocol = {
        .handler        =       xfrm4_rcv,
        .err_handler    =       ah4_err,
        .no_policy      =       1,
+       .netns_ok       =       1,
 };
 
 static int __init ah4_init(void)