fix a small bug in the socket type patch which broke dhcp
authorFelix Fietkau <nbd@openwrt.org>
Tue, 28 Apr 2009 19:16:24 +0000 (19:16 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 28 Apr 2009 19:16:24 +0000 (19:16 +0000)
SVN-Revision: 15471

target/linux/generic-2.6/patches-2.6.28/240-packet_socket_type.patch
target/linux/generic-2.6/patches-2.6.29/240-packet_socket_type.patch
target/linux/generic-2.6/patches-2.6.30/240-packet_socket_type.patch

index 710b7c0..720d320 100644 (file)
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        spin_lock_init(&po->bind_lock);
        mutex_init(&po->pg_vec_lock);
        po->prot_hook.func = packet_rcv;
-+      po->pkt_type = PACKET_MASK_ANY & ~PACKET_LOOPBACK;
++      po->pkt_type = PACKET_MASK_ANY & ~(1 << PACKET_LOOPBACK);
  
        if (sock->type == SOCK_PACKET)
                po->prot_hook.func = packet_rcv_spkt;
index 710b7c0..720d320 100644 (file)
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        spin_lock_init(&po->bind_lock);
        mutex_init(&po->pg_vec_lock);
        po->prot_hook.func = packet_rcv;
-+      po->pkt_type = PACKET_MASK_ANY & ~PACKET_LOOPBACK;
++      po->pkt_type = PACKET_MASK_ANY & ~(1 << PACKET_LOOPBACK);
  
        if (sock->type == SOCK_PACKET)
                po->prot_hook.func = packet_rcv_spkt;
index b5af225..d86fcf3 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  /* These ones are invisible by user level */
  #define PACKET_LOOPBACK               5               /* MC/BRD frame looped back */
  #define PACKET_FASTROUTE      6               /* Fastrouted frame     */
-+#define PACKET_ANY            0xffffffff
++#define PACKET_MASK_ANY               0xffffffff      /* mask for packet type bits */
 +
  
  /* Packet socket options */
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        unsigned int            tp_hdrlen;
        unsigned int            tp_reserve;
  #endif
-+      int                     pkt_type;
++      unsigned int            pkt_type;
  };
  
  struct packet_skb_cb {
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        spin_lock_init(&po->bind_lock);
        mutex_init(&po->pg_vec_lock);
        po->prot_hook.func = packet_rcv;
-+      po->pkt_type = PACKET_ANY & ~PACKET_LOOPBACK;
++      po->pkt_type = PACKET_MASK_ANY & ~(1 << PACKET_LOOPBACK);
  
        if (sock->type == SOCK_PACKET)
                po->prot_hook.func = packet_rcv_spkt;
@@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        }
 +      case PACKET_RECV_TYPE:
 +      {
-+              int val;
++              unsigned int val;
 +              if (optlen != sizeof(val))
 +                      return -EINVAL;
 +              if (copy_from_user(&val, optval, sizeof(val)))
@@ -121,8 +121,8 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
                data = &val;
                break;
 +      case PACKET_RECV_TYPE:
-+              if (len > sizeof(int))
-+                      len = sizeof(int);
++              if (len > sizeof(unsigned int))
++                      len = sizeof(unsigned int);
 +              val = po->pkt_type;
 +
 +              data = &val;