X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=datapath%2Factions.h;h=e4fc397494545ed125b764b9dad0c9fdb67b4f07;hb=3becd6c845c7d507623506795a809888f7091479;hp=bda6d55a3a3b94680064b7bf68923860ef72d9cf;hpb=34e63086edddcae06d7c1a4fa84fec0861e50758;p=openvswitch diff --git a/datapath/actions.h b/datapath/actions.h index bda6d55a..e4fc3974 100644 --- a/datapath/actions.h +++ b/datapath/actions.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Nicira Networks. + * Copyright (c) 2009, 2010 Nicira Networks. * Distributed under the terms of the GNU GPL version 2. * * Significant portions of this file may be copied from parts of the Linux @@ -10,17 +10,34 @@ #define ACTIONS_H 1 #include +#include struct datapath; struct sk_buff; struct odp_flow_key; union odp_action; -struct sk_buff *make_writable(struct sk_buff *, gfp_t gfp); -int dp_xmit_skb(struct sk_buff *); int execute_actions(struct datapath *dp, struct sk_buff *skb, - struct odp_flow_key *key, + const struct odp_flow_key *key, const union odp_action *, int n_actions, gfp_t gfp); +static inline void set_skb_csum_bits(const struct sk_buff *old_skb, + struct sk_buff *new_skb) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) + /* Before 2.6.24 these fields were not copied when + * doing an skb_copy_expand. */ + new_skb->ip_summed = old_skb->ip_summed; + new_skb->csum = old_skb->csum; +#endif +#if defined(CONFIG_XEN) && defined(HAVE_PROTO_DATA_VALID) + /* These fields are copied in skb_clone but not in + * skb_copy or related functions. We need to manually + * copy them over here. */ + new_skb->proto_data_valid = old_skb->proto_data_valid; + new_skb->proto_csum_blank = old_skb->proto_csum_blank; +#endif +} + #endif /* actions.h */