X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fdatapath.h;h=15a989892862a99392a70e261bd581edc2cf3e41;hb=f97ffebfb8e66d7ce0ed78517dff322aa4825aea;hp=176282bd40ef7a71964222c0dd4a3266777090fb;hpb=982b88105d0a82ab90b233bf68e4e51ac9cddd23;p=openvswitch diff --git a/datapath/datapath.h b/datapath/datapath.h index 176282bd..15a98989 100644 --- a/datapath/datapath.h +++ b/datapath/datapath.h @@ -20,8 +20,10 @@ #include #include "checksum.h" +#include "compat.h" #include "flow.h" #include "dp_sysfs.h" +#include "vlan.h" struct vport; @@ -56,7 +58,8 @@ struct dp_stats_percpu { /** * struct datapath - datapath for flow-based packet switching * @rcu: RCU callback head for deferred destruction. - * @dp_idx: Datapath number (index into the dps[] array in datapath.c). + * @dp_ifindex: ifindex of local port. + * @list_node: Element in global 'dps' list. * @ifobj: Represents /sys/class/net//brif. Protected by RTNL. * @drop_frags: Drop all IP fragments if nonzero. * @n_flows: Number of flows currently in flow table. @@ -75,7 +78,8 @@ struct dp_stats_percpu { */ struct datapath { struct rcu_head rcu; - int dp_idx; + int dp_ifindex; + struct list_head list_node; struct kobject ifobj; int drop_frags; @@ -98,18 +102,26 @@ struct datapath { * 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)