git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
include
/
linux
/
if_vlan.h
diff --git
a/include/linux/if_vlan.h
b/include/linux/if_vlan.h
index
420767f
..
35cb385
100644
(file)
--- a/
include/linux/if_vlan.h
+++ b/
include/linux/if_vlan.h
@@
-18,14
+18,13
@@
/* externally defined structs */
struct vlan_group;
struct net_device;
/* externally defined structs */
struct vlan_group;
struct net_device;
-struct sk_buff;
struct packet_type;
struct vlan_collection;
struct vlan_dev_info;
struct hlist_node;
struct packet_type;
struct vlan_collection;
struct vlan_dev_info;
struct hlist_node;
-#include <linux/proc_fs.h> /* for proc_dir_entry */
#include <linux/netdevice.h>
#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
#define VLAN_HLEN 4 /* The additional bytes (on top of the Ethernet header)
* that VLAN requires.
#define VLAN_HLEN 4 /* The additional bytes (on top of the Ethernet header)
* that VLAN requires.
@@
-43,14
+42,21
@@
struct hlist_node;
struct vlan_ethhdr {
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
unsigned char h_source[ETH_ALEN]; /* source ether addr */
struct vlan_ethhdr {
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
unsigned char h_source[ETH_ALEN]; /* source ether addr */
-
unsigned short
h_vlan_proto; /* Should always be 0x8100 */
-
unsigned short
h_vlan_TCI; /* Encapsulates priority and VLAN ID */
-
unsigned short
h_vlan_encapsulated_proto; /* packet type ID field (or len) */
+
__be16
h_vlan_proto; /* Should always be 0x8100 */
+
__be16
h_vlan_TCI; /* Encapsulates priority and VLAN ID */
+
__be16
h_vlan_encapsulated_proto; /* packet type ID field (or len) */
};
};
+#include <linux/skbuff.h>
+
+static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb)
+{
+ return (struct vlan_ethhdr *)skb->mac.raw;
+}
+
struct vlan_hdr {
struct vlan_hdr {
-
unsigned short
h_vlan_TCI; /* Encapsulates priority and VLAN ID */
-
unsigned short
h_vlan_encapsulated_proto; /* packet type ID field (or len) */
+
__be16
h_vlan_TCI; /* Encapsulates priority and VLAN ID */
+
__be16
h_vlan_encapsulated_proto; /* packet type ID field (or len) */
};
#define VLAN_VID_MASK 0xfff
};
#define VLAN_VID_MASK 0xfff
@@
-149,10
+155,14
@@
static inline int __vlan_hwaccel_rx(struct sk_buff *skb,
{
struct net_device_stats *stats;
{
struct net_device_stats *stats;
- skb->real_dev = skb->dev;
+ if (skb_bond_should_drop(skb)) {
+ dev_kfree_skb_any(skb);
+ return NET_RX_DROP;
+ }
+
skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK];
if (skb->dev == NULL) {
skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK];
if (skb->dev == NULL) {
-
kfree_skb
(skb);
+
dev_kfree_skb_any
(skb);
/* Not NET_RX_DROP, this is not being dropped
* due to congestion.
/* Not NET_RX_DROP, this is not being dropped
* due to congestion.
@@
-180,7
+190,8
@@
static inline int __vlan_hwaccel_rx(struct sk_buff *skb,
* This allows the VLAN to have a different MAC than the underlying
* device, and still route correctly.
*/
* This allows the VLAN to have a different MAC than the underlying
* device, and still route correctly.
*/
- if (!memcmp(skb->mac.ethernet->h_dest, skb->dev->dev_addr, ETH_ALEN))
+ if (!compare_ether_addr(eth_hdr(skb)->h_dest,
+ skb->dev->dev_addr))
skb->pkt_type = PACKET_HOST;
break;
};
skb->pkt_type = PACKET_HOST;
break;
};
@@
-360,7
+371,9
@@
enum vlan_ioctl_cmds {
GET_VLAN_INGRESS_PRIORITY_CMD,
GET_VLAN_EGRESS_PRIORITY_CMD,
SET_VLAN_NAME_TYPE_CMD,
GET_VLAN_INGRESS_PRIORITY_CMD,
GET_VLAN_EGRESS_PRIORITY_CMD,
SET_VLAN_NAME_TYPE_CMD,
- SET_VLAN_FLAG_CMD
+ SET_VLAN_FLAG_CMD,
+ GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
+ GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
};
enum vlan_name_types {
};
enum vlan_name_types {