X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Flinux%2Fcompat%2Finclude%2Flinux%2Fskbuff.h;h=01e524ef717d37c9ea9982e39d1161948e296cf7;hb=b9c15df93753b640008f879315e26833c2e95468;hp=b728c51793d3c4658a37adea2bb6861954b29f87;hpb=22bcc0e70becd88bf895c44885d63704affe4284;p=sliver-openvswitch.git diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h index b728c5179..01e524ef7 100644 --- a/datapath/linux/compat/include/linux/skbuff.h +++ b/datapath/linux/compat/include/linux/skbuff.h @@ -12,28 +12,34 @@ #define skb_headroom rpl_skb_headroom static inline unsigned int rpl_skb_headroom(const struct sk_buff *skb) { - return skb->data - skb->head; + 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, - const unsigned int len) + const int offset, void *to, + const unsigned int len) { memcpy(to, skb->data + offset, len); } static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb, - const int offset, - const void *from, - const unsigned int len) + const int offset, + const void *from, + const unsigned int len) { memcpy(skb->data + offset, from, len); } #endif /* !HAVE_SKB_COPY_FROM_LINEAR_DATA_OFFSET */ +#ifndef HAVE_SKB_RESET_TAIL_POINTER +static inline void skb_reset_tail_pointer(struct sk_buff *skb) +{ + skb->tail = skb->data; +} +#endif /* * The networking layer reserves some headroom in skb data (via * dev_alloc_skb). This is used to avoid having to reallocate skb data when @@ -55,7 +61,7 @@ static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb, #ifndef HAVE_SKB_COW_HEAD static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom, - int cloned) + int cloned) { int delta = 0; @@ -174,7 +180,7 @@ static inline void skb_set_mac_header(struct sk_buff *skb, const int offset) static inline int skb_transport_offset(const struct sk_buff *skb) { - return skb_transport_header(skb) - skb->data; + return skb_transport_header(skb) - skb->data; } static inline int skb_network_offset(const struct sk_buff *skb) @@ -232,4 +238,17 @@ static inline bool skb_warn_if_lro(const struct sk_buff *skb) #define consume_skb kfree_skb #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) +static inline struct page *skb_frag_page(const skb_frag_t *frag) +{ + return frag->page; +} +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40) +static inline void skb_reset_mac_len(struct sk_buff *skb) +{ + skb->mac_len = skb->network_header - skb->mac_header; +} +#endif #endif