X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Factions.h;h=f2962a73fbbfa22344f2a1be5faaba777c060403;hb=3c8552c1db717d2018adbc5e17cbf2583f0a6639;hp=04bc65444494ab4350e0a8450ebfe65f51a4dc08;hpb=f2459fe7d91c4c325dfaa3ed18f56200b63ae27e;p=openvswitch diff --git a/datapath/actions.h b/datapath/actions.h index 04bc6544..f2962a73 100644 --- a/datapath/actions.h +++ b/datapath/actions.h @@ -9,7 +9,8 @@ #ifndef ACTIONS_H #define ACTIONS_H 1 -#include +#include +#include struct datapath; struct sk_buff; @@ -17,8 +18,25 @@ struct odp_flow_key; union odp_action; int execute_actions(struct datapath *dp, struct sk_buff *skb, - struct odp_flow_key *key, - const union odp_action *, int n_actions, - gfp_t gfp); + const struct odp_flow_key *key, + const union odp_action *, int n_actions); + +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 */