Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / net / core / dv.c
index 05c76cb..29ee77f 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>
@@ -52,26 +53,17 @@ int alloc_divert_blk(struct net_device *dev)
 {
        int alloc_size = (sizeof(struct divert_blk) + 3) & ~3;
 
+       dev->divert = NULL;
        if (dev->type == ARPHRD_ETHER) {
-               printk(KERN_DEBUG "divert: allocating divert_blk for %s\n",
-                      dev->name);
-
-               dev->divert = (struct divert_blk *)
-                       kmalloc(alloc_size, GFP_KERNEL);
+               dev->divert = kzalloc(alloc_size, GFP_KERNEL);
                if (dev->divert == NULL) {
-                       printk(KERN_DEBUG "divert: unable to allocate divert_blk for %s\n",
+                       printk(KERN_INFO "divert: unable to allocate divert_blk for %s\n",
                               dev->name);
                        return -ENOMEM;
-               } else {
-                       memset(dev->divert, 0, sizeof(struct divert_blk));
                }
                dev_hold(dev);
-       } else {
-               printk(KERN_DEBUG "divert: not allocating divert_blk for non-ethernet device %s\n",
-                      dev->name);
-
-               dev->divert = NULL;
        }
+
        return 0;
 } 
 
@@ -85,11 +77,6 @@ void free_divert_blk(struct net_device *dev)
                kfree(dev->divert);
                dev->divert=NULL;
                dev_put(dev);
-               printk(KERN_DEBUG "divert: freeing divert_blk for %s\n",
-                      dev->name);
-       } else {
-               printk(KERN_DEBUG "divert: no divert_blk to free, %s not ethernet\n",
-                      dev->name);
        }
 }
 
@@ -192,8 +179,12 @@ out:
 /*
  * control function of the diverter
  */
+#if 0
 #define        DVDBG(a)        \
        printk(KERN_DEBUG "divert_ioctl() line %d %s\n", __LINE__, (a))
+#else
+#define        DVDBG(a)
+#endif
 
 int divert_ioctl(unsigned int cmd, struct divert_cf __user *arg)
 {
@@ -464,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 (!memcmp(eth, skb->dev->dev_addr, ETH_ALEN))
+       if (!compare_ether_addr(eth->h_dest, skb->dev->dev_addr))
                return;
        
        /* proto is not IP, do nothing */