X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Flinux-2.6%2Fcompat-2.6%2Finclude%2Flinux%2Fskbuff.h;h=d9f043ac6442960e8f5841b06dd070b1881a86da;hb=a4af00400a835eb87569ba40e21874c05e872c0f;hp=2831721264e11c6d8c4f0185058cbd1a63e80084;hpb=aed944953be7c8d71beada565ac9923ab86855e5;p=openvswitch diff --git a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h index 28317212..d9f043ac 100644 --- a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h +++ b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h @@ -5,6 +5,17 @@ #include +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) +/* In version 2.6.24 the return type of skb_headroom() changed from 'int' to + * 'unsigned int'. We use skb_headroom() as one arm of a min(a,b) invocation + * in make_writable() in actions.c, so we need the correct type. */ +#define skb_headroom rpl_skb_headroom +static inline unsigned int rpl_skb_headroom(const struct sk_buff *skb) +{ + return skb->data - skb->head; +} +#endif + #ifndef HAVE_SKB_COPY_FROM_LINEAR_DATA_OFFSET static inline void skb_copy_from_linear_data_offset(const struct sk_buff *skb, const int offset, void *to, @@ -65,6 +76,29 @@ static inline int skb_cow_head(struct sk_buff *skb, unsigned int headroom) } #endif /* !HAVE_SKB_COW */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) +static inline int skb_clone_writable(struct sk_buff *skb, int len) +{ + return false; +} +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) +static inline struct dst_entry *skb_dst(const struct sk_buff *skb) +{ + return (struct dst_entry *)skb->dst; +} + +static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst) +{ + skb->dst = dst; +} + +static inline struct rtable *skb_rtable(const struct sk_buff *skb) +{ + return (struct rtable *)skb->dst; +} +#endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17) /* Emulate Linux 2.6.17 and later behavior, in which kfree_skb silently ignores @@ -79,9 +113,7 @@ static inline void kfree_skb_maybe_null(struct sk_buff *skb) #ifndef CHECKSUM_PARTIAL -/* Note that CHECKSUM_PARTIAL is not implemented, but this allows us to at - * least test against it: see update_csum() in forward.c. */ -#define CHECKSUM_PARTIAL 3 +#define CHECKSUM_PARTIAL CHECKSUM_HW #endif #ifndef CHECKSUM_COMPLETE #define CHECKSUM_COMPLETE CHECKSUM_HW @@ -90,6 +122,7 @@ static inline void kfree_skb_maybe_null(struct sk_buff *skb) #ifdef HAVE_MAC_RAW #define mac_header mac.raw #define network_header nh.raw +#define transport_header h.raw #endif #ifndef HAVE_SKBUFF_HEADER_HELPERS @@ -114,6 +147,11 @@ static inline unsigned char *skb_network_header(const struct sk_buff *skb) return skb->nh.raw; } +static inline void skb_reset_network_header(struct sk_buff *skb) +{ + skb->nh.raw = skb->data; +} + static inline void skb_set_network_header(struct sk_buff *skb, const int offset) { skb->nh.raw = skb->data + offset;