#include <linux/version.h>
#include "checksum.h"
+#include "compat.h"
#include "flow.h"
#include "dp_sysfs.h"
+#include "vlan.h"
struct vport;
* struct ovs_skb_cb - OVS data in skb CB
* @vport: The datapath port on which the skb entered the switch.
* @flow: The flow associated with this packet. May be %NULL if no flow.
+ * @tun_id: ID of the tunnel that encapsulated this packet. It is 0 if the
* @ip_summed: Consistently stores L4 checksumming status across different
* kernel versions.
- * @tun_id: ID of the tunnel that encapsulated this packet. It is 0 if the
+ * @csum_start: Stores the offset from which to start checksumming independent
+ * of the transport header on all kernel versions.
* packet was not received on a tunnel.
+ * @vlan_tci: Provides a substitute for the skb->vlan_tci field on kernels
+ * before 2.6.27.
*/
struct ovs_skb_cb {
struct vport *vport;
struct sw_flow *flow;
+ __be64 tun_id;
#ifdef NEED_CSUM_NORMALIZE
enum csum_type ip_summed;
+ u16 csum_start;
+#endif
+#ifdef NEED_VLAN_FIELD
+ u16 vlan_tci;
#endif
- __be64 tun_id;
};
#define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)