2 * Copyright (c) 2009, 2010 Nicira Networks.
3 * Distributed under the terms of the GNU GPL version 2.
5 * Significant portions of this file may be copied from parts of the Linux
6 * kernel, by Linus Torvalds and others.
12 #include <linux/gfp.h>
13 #include <linux/skbuff.h>
20 int execute_actions(struct datapath *dp, struct sk_buff *skb,
21 const struct odp_flow_key *key,
22 const union odp_action *, int n_actions,
25 static inline void set_skb_csum_bits(const struct sk_buff *old_skb,
26 struct sk_buff *new_skb)
28 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
29 /* Before 2.6.24 these fields were not copied when
30 * doing an skb_copy_expand. */
31 new_skb->ip_summed = old_skb->ip_summed;
32 new_skb->csum = old_skb->csum;
34 #if defined(CONFIG_XEN) && defined(HAVE_PROTO_DATA_VALID)
35 /* These fields are copied in skb_clone but not in
36 * skb_copy or related functions. We need to manually
37 * copy them over here. */
38 new_skb->proto_data_valid = old_skb->proto_data_valid;
39 new_skb->proto_csum_blank = old_skb->proto_csum_blank;
43 #endif /* actions.h */