diff --git a/src/Makefile.xtables b/src/Makefile.xtables index e8babb8..1d66a71 100644 --- a/src/Makefile.xtables +++ b/src/Makefile.xtables @@ -6,7 +6,16 @@ clean: rm -f $(LIBS) install: - install -g root -o root -m 644 $(LIBS) /lib/xtables/ + if [ -d /lib/xtables ]; then \ + install -g root -o root -m 644 $(LIBS) /lib/xtables/ ; \ + elif [ -d /usr/lib/x86_64-linux-gnu/xtables ]; then \ + install -g root -o root -m 644 $(LIBS) /usr/lib/x86_64-linux-gnu/xtables; \ + elif [ -d /usr/lib/i386-linux-gnu/xtables ]; then \ + install -g root -o root -m 644 $(LIBS) /usr/lib/i386-linux-gnu/xtables; \ + else \ + echo "Unable to find xtables modules path!"; \ + exit 1; \ + fi lib%.so: lib%.o gcc -shared -fPIC -o $@ $^; diff --git a/src/compat_xtables.h b/src/compat_xtables.h index 0972086..0e86727 100644 --- a/src/compat_xtables.h +++ b/src/compat_xtables.h @@ -89,7 +89,9 @@ static inline void proc_remove(struct proc_dir_entry *de) static inline struct net *par_net(const struct xt_action_param *par) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) + return xt_net(par); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) return par->net; #else return dev_net((par->in != NULL) ? par->in : par->out); diff --git a/src/ts3init_match.c b/src/ts3init_match.c index b17a513..cec6bb2 100644 --- a/src/ts3init_match.c +++ b/src/ts3init_match.c @@ -13,6 +13,7 @@ */ #include +#include #include #include #include @@ -141,7 +142,11 @@ static inline __u8* get_payload(const struct sk_buff *skb, const struct xt_actio static int calculate_cookie(const struct sk_buff *skb, const struct xt_action_param *par, struct udphdr *udp, __u64 k0, __u64 k1, __u64* out) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) + switch (xt_family(par)) +#else switch (par->family) +#endif { case NFPROTO_IPV4: { diff --git a/src/ts3init_target.c b/src/ts3init_target.c index 88fe607..674d140 100644 --- a/src/ts3init_target.c +++ b/src/ts3init_target.c @@ -13,6 +13,7 @@ */ #include +#include #include #include #include @@ -47,7 +48,12 @@ ts3init_send_ipv6_reply(struct sk_buff *oldskb, const struct xt_action_param *pa struct udphdr *udp; struct flowi6 fl; struct dst_entry *dst = NULL; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) + struct net *net = dev_net((xt_in(par) != NULL) ? xt_in(par) : xt_out(par)); +#else struct net *net = dev_net((par->in != NULL) ? par->in : par->out); +#endif skb = alloc_skb(LL_MAX_HEADER + sizeof(*ip) + sizeof(*udp) + payload_size, GFP_ATOMIC);