]> err.no Git - linux-2.6/blobdiff - net/core/dv.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6] / net / core / dv.c
index c5deb365525782cdfe16ba5c9438e60cf03ff069..29ee77f15932465115d64f7f5d01d395e69af6d6 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
 #include <linux/skbuff.h>
+#include <linux/capability.h>
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <net/dst.h>
@@ -54,15 +55,12 @@ int alloc_divert_blk(struct net_device *dev)
 
        dev->divert = NULL;
        if (dev->type == ARPHRD_ETHER) {
-               dev->divert = (struct divert_blk *)
-                       kmalloc(alloc_size, GFP_KERNEL);
+               dev->divert = kzalloc(alloc_size, GFP_KERNEL);
                if (dev->divert == NULL) {
                        printk(KERN_INFO "divert: unable to allocate divert_blk for %s\n",
                               dev->name);
                        return -ENOMEM;
                }
-
-               memset(dev->divert, 0, sizeof(struct divert_blk));
                dev_hold(dev);
        }
 
@@ -457,7 +455,7 @@ void divert_frame(struct sk_buff *skb)
        unsigned char                   *skb_data_end = skb->data + skb->len;
 
        /* Packet is already aimed at us, return */
-       if (!compare_ether_addr(eth, skb->dev->dev_addr))
+       if (!compare_ether_addr(eth->h_dest, skb->dev->dev_addr))
                return;
        
        /* proto is not IP, do nothing */