mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-01-26 16:41:05 +02:00
minor cleanup for packet socket type filter
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15467 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
307307cb47
commit
0c04ef4bee
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
/* These ones are invisible by user level */
|
/* These ones are invisible by user level */
|
||||||
#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */
|
#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */
|
||||||
#define PACKET_FASTROUTE 6 /* Fastrouted frame */
|
#define PACKET_FASTROUTE 6 /* Fastrouted frame */
|
||||||
+#define PACKET_ANY 0xffffffff
|
+#define PACKET_MASK_ANY 0xffffffff /* mask for packet type bits */
|
||||||
+
|
+
|
||||||
|
|
||||||
/* Packet socket options */
|
/* Packet socket options */
|
||||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
unsigned int tp_hdrlen;
|
unsigned int tp_hdrlen;
|
||||||
unsigned int tp_reserve;
|
unsigned int tp_reserve;
|
||||||
#endif
|
#endif
|
||||||
+ int pkt_type;
|
+ unsigned int pkt_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct packet_skb_cb {
|
struct packet_skb_cb {
|
||||||
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
spin_lock_init(&po->bind_lock);
|
spin_lock_init(&po->bind_lock);
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
+ po->pkt_type = PACKET_ANY & ~PACKET_LOOPBACK;
|
+ po->pkt_type = PACKET_MASK_ANY & ~PACKET_LOOPBACK;
|
||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
po->prot_hook.func = packet_rcv_spkt;
|
||||||
@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
}
|
}
|
||||||
+ case PACKET_RECV_TYPE:
|
+ case PACKET_RECV_TYPE:
|
||||||
+ {
|
+ {
|
||||||
+ int val;
|
+ unsigned int val;
|
||||||
+ if (optlen != sizeof(val))
|
+ if (optlen != sizeof(val))
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
+ if (copy_from_user(&val, optval, sizeof(val)))
|
+ if (copy_from_user(&val, optval, sizeof(val)))
|
||||||
@ -121,8 +121,8 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
data = &val;
|
data = &val;
|
||||||
break;
|
break;
|
||||||
+ case PACKET_RECV_TYPE:
|
+ case PACKET_RECV_TYPE:
|
||||||
+ if (len > sizeof(int))
|
+ if (len > sizeof(unsigned int))
|
||||||
+ len = sizeof(int);
|
+ len = sizeof(unsigned int);
|
||||||
+ val = po->pkt_type;
|
+ val = po->pkt_type;
|
||||||
+
|
+
|
||||||
+ data = &val;
|
+ data = &val;
|
||||||
|
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
/* These ones are invisible by user level */
|
/* These ones are invisible by user level */
|
||||||
#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */
|
#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */
|
||||||
#define PACKET_FASTROUTE 6 /* Fastrouted frame */
|
#define PACKET_FASTROUTE 6 /* Fastrouted frame */
|
||||||
+#define PACKET_ANY 0xffffffff
|
+#define PACKET_MASK_ANY 0xffffffff /* mask for packet type bits */
|
||||||
+
|
+
|
||||||
|
|
||||||
/* Packet socket options */
|
/* Packet socket options */
|
||||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
unsigned int tp_hdrlen;
|
unsigned int tp_hdrlen;
|
||||||
unsigned int tp_reserve;
|
unsigned int tp_reserve;
|
||||||
#endif
|
#endif
|
||||||
+ int pkt_type;
|
+ unsigned int pkt_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct packet_skb_cb {
|
struct packet_skb_cb {
|
||||||
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
spin_lock_init(&po->bind_lock);
|
spin_lock_init(&po->bind_lock);
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
+ po->pkt_type = PACKET_ANY & ~PACKET_LOOPBACK;
|
+ po->pkt_type = PACKET_MASK_ANY & ~PACKET_LOOPBACK;
|
||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
po->prot_hook.func = packet_rcv_spkt;
|
||||||
@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
}
|
}
|
||||||
+ case PACKET_RECV_TYPE:
|
+ case PACKET_RECV_TYPE:
|
||||||
+ {
|
+ {
|
||||||
+ int val;
|
+ unsigned int val;
|
||||||
+ if (optlen != sizeof(val))
|
+ if (optlen != sizeof(val))
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
+ if (copy_from_user(&val, optval, sizeof(val)))
|
+ if (copy_from_user(&val, optval, sizeof(val)))
|
||||||
@ -121,8 +121,8 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
data = &val;
|
data = &val;
|
||||||
break;
|
break;
|
||||||
+ case PACKET_RECV_TYPE:
|
+ case PACKET_RECV_TYPE:
|
||||||
+ if (len > sizeof(int))
|
+ if (len > sizeof(unsigned int))
|
||||||
+ len = sizeof(int);
|
+ len = sizeof(unsigned int);
|
||||||
+ val = po->pkt_type;
|
+ val = po->pkt_type;
|
||||||
+
|
+
|
||||||
+ data = &val;
|
+ data = &val;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user