Restore support for kernel 4.14 This reverts commit bf63a25a64c9223435c26e6543ba749834b47752. --- configure.ac | 2 +- extensions/compat_xtables.h | 4 ++-- extensions/pknock/xt_pknock.c | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) --- a/configure.ac +++ b/configure.ac @@ -61,7 +61,7 @@ if test -n "$kbuilddir"; then echo "WARNING: That kernel version is not officially supported yet. Continue at own luck."; elif test "$kmajor" -eq 5 -a "$kminor" -ge 0; then : - elif test "$kmajor" -eq 4 -a "$kminor" -ge 15; then + elif test "$kmajor" -eq 4 -a "$kminor" -ge 14; then : else echo "WARNING: That kernel version is not officially supported."; --- a/extensions/compat_xtables.h +++ b/extensions/compat_xtables.h @@ -8,8 +8,8 @@ #define DEBUGP Use__pr_debug__instead -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) -# warning Kernels below 4.15 not supported. +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +# warning Kernels below 4.14 not supported. #endif #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) --- a/extensions/pknock/xt_pknock.c +++ b/extensions/pknock/xt_pknock.c @@ -356,10 +356,18 @@ has_logged_during_this_minute(const stru * * @r: rule */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) static void peer_gc(struct timer_list *tl) +#else +static void peer_gc(unsigned long r) +#endif { unsigned int i; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) struct xt_pknock_rule *rule = from_timer(rule, tl, timer); +#else + struct xt_pknock_rule *rule = (struct xt_pknock_rule *)r; +#endif struct peer *peer; struct list_head *pos, *n; @@ -466,7 +474,15 @@ add_rule(struct xt_pknock_mtinfo *info) rule->peer_head = alloc_hashtable(peer_hashsize); if (rule->peer_head == NULL) goto out; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) timer_setup(&rule->timer, peer_gc, 0); +#else + init_timer(&rule->timer); + rule->timer.function = peer_gc; + rule->timer.data = (unsigned long)rule; +#endif + rule->status_proc = proc_create_data(info->rule_name, 0, pde, &pknock_proc_ops, rule); if (rule->status_proc == NULL)