| #ifndef __BACKPORT__NET_FRAG_H__ |
| #define __BACKPORT__NET_FRAG_H__ |
| #include_next <net/inet_frag.h> |
| #include <linux/version.h> |
| |
| #if LINUX_VERSION_IS_LESS(3,9,0) |
| /* Memory Tracking Functions. */ |
| #define frag_mem_limit LINUX_BACKPORT(frag_mem_limit) |
| static inline int frag_mem_limit(struct netns_frags *nf) |
| { |
| return atomic_read(&nf->mem); |
| } |
| |
| #define init_frag_mem_limit LINUX_BACKPORT(init_frag_mem_limit) |
| static inline void init_frag_mem_limit(struct netns_frags *nf) |
| { |
| atomic_set(&nf->mem, 0); |
| } |
| |
| #define sum_frag_mem_limit LINUX_BACKPORT(sum_frag_mem_limit) |
| static inline int sum_frag_mem_limit(struct netns_frags *nf) |
| { |
| return atomic_read(&nf->mem); |
| } |
| |
| #define inet_frag_maybe_warn_overflow LINUX_BACKPORT(inet_frag_maybe_warn_overflow) |
| void inet_frag_maybe_warn_overflow(struct inet_frag_queue *q, |
| const char *prefix); |
| #endif /* LINUX_VERSION_IS_LESS(3,9,0) */ |
| |
| /* the type of the paramater changed with kernel 4.3 */ |
| #if LINUX_VERSION_IS_LESS(3,9,0) |
| #define sub_frag_mem_limit LINUX_BACKPORT(sub_frag_mem_limit) |
| static inline void sub_frag_mem_limit(struct netns_frags *nf, int i) |
| { |
| atomic_sub(i, &nf->mem); |
| } |
| |
| #define add_frag_mem_limit LINUX_BACKPORT(add_frag_mem_limit) |
| static inline void add_frag_mem_limit(struct netns_frags *nf, int i) |
| { |
| atomic_add(i, &nf->mem); |
| } |
| #elif LINUX_VERSION_IS_LESS(4,3,0) |
| #define sub_frag_mem_limit LINUX_BACKPORT(sub_frag_mem_limit) |
| static inline void sub_frag_mem_limit(struct netns_frags *nf, int i) |
| { |
| __percpu_counter_add(&nf->mem, -i, frag_percpu_counter_batch); |
| } |
| |
| #define add_frag_mem_limit LINUX_BACKPORT(add_frag_mem_limit) |
| static inline void add_frag_mem_limit(struct netns_frags *nf, int i) |
| { |
| __percpu_counter_add(&nf->mem, i, frag_percpu_counter_batch); |
| } |
| #endif /* LINUX_VERSION_IS_LESS(4,3,0) */ |
| |
| #if LINUX_VERSION_IS_LESS(4,4,0) && \ |
| LINUX_VERSION_IS_GEQ(3,9,0) |
| #define inet_frags_uninit_net LINUX_BACKPORT(inet_frags_uninit_net) |
| static inline void inet_frags_uninit_net(struct netns_frags *nf) |
| { |
| percpu_counter_destroy(&nf->mem); |
| } |
| #endif /* < 4.4 && >= 3.9 */ |
| |
| #if LINUX_VERSION_IS_LESS(4,4,0) |
| static inline int backport_inet_frags_init_net(struct netns_frags *nf) |
| { |
| inet_frags_init_net(nf); |
| return 0; |
| } |
| #define inet_frags_init_net LINUX_BACKPORT(inet_frags_init_net) |
| #endif /* < 4.4 */ |
| |
| #endif /* __BACKPORT__NET_FRAG_H__ */ |