wifidog-ng: Update to 2.0.2

Compatible with Linux kernel 5.3 and above

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
This commit is contained in:
Jianhui Zhao 2020-04-02 21:28:03 +08:00
parent 803dd9c739
commit 447e65c539
5 changed files with 34 additions and 10 deletions

View File

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wifidog-ng
PKG_VERSION:=2.0.1
PKG_VERSION:=2.0.2
PKG_RELEASE:=1
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)
@ -16,7 +16,7 @@ PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)
PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Jianhui Zhao <jianhuizhao329@gmail.com>
PKG_MAINTAINER:=Jianhui Zhao <zhaojh329@gmail.com>
include $(INCLUDE_DIR)/package.mk

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
* Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@ -9,6 +9,7 @@
#include <linux/uaccess.h>
#include <linux/inetdevice.h>
#include <linux/seq_file.h>
#include <linux/version.h>
#include "config.h"
@ -20,6 +21,9 @@ static int update_gw_interface(const char *interface)
int ret = 0;
struct net_device *dev;
struct in_device *in_dev;
#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 2, 21)
const struct in_ifaddr *ifa;
#endif
dev = dev_get_by_name(&init_net, interface);
if (!dev) {
@ -36,15 +40,25 @@ static int update_gw_interface(const char *interface)
goto QUIT;
}
#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 2, 21)
in_dev_for_each_ifa_rcu(ifa, in_dev) {
if (ifa->ifa_flags & IFA_F_SECONDARY)
continue;
#else
for_primary_ifa(in_dev) {
#endif
conf.interface_ipaddr = ifa->ifa_local;
conf.interface_mask = ifa->ifa_mask;
conf.interface_broadcast = ifa->ifa_broadcast;
pr_info("Found ip from %s: %pI4\n", interface, &conf.interface_ipaddr);
break;
#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 2, 21)
}
#else
} endfor_ifa(in_dev)
#endif
QUIT:
dev_put(dev);

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
* Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
* Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@ -14,7 +14,9 @@
#include <linux/tcp.h>
#include <linux/udp.h>
#include <net/netfilter/nf_nat.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
#include <net/netfilter/nf_nat_l3proto.h>
#endif
#include "utils.h"
#include "config.h"
@ -85,7 +87,11 @@ static u32 wifidog_hook(void *priv, struct sk_buff *skb, const struct nf_hook_st
if (ct->status & IPS_HIJACKED) {
if (is_allowed_mac(skb, state)) {
/* Avoid duplication of authentication */
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
nf_reset(skb);
#else
nf_reset_ct(skb);
#endif
nf_ct_kill(ct);
}
return NF_ACCEPT;
@ -149,7 +155,9 @@ static int __init wifidog_init(void)
if (ret)
return ret;
#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 0, 21)
ret = nf_nat_ipv4_register_fn(&init_net, &wifidog_ops);
#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
ret = nf_nat_l3proto_ipv4_register_fn(&init_net, &wifidog_ops);
#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 12, 14)
ret = nf_register_net_hook(&init_net, &wifidog_ops);
@ -174,7 +182,9 @@ static void __exit wifidog_exit(void)
{
deinit_config();
#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 0, 21)
nf_nat_ipv4_unregister_fn(&init_net, &wifidog_ops);
#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 17, 19)
nf_nat_l3proto_ipv4_unregister_fn(&init_net, &wifidog_ops);
#elif LINUX_VERSION_CODE > KERNEL_VERSION(4, 12, 14)
nf_unregister_net_hook(&init_net, &wifidog_ops);
@ -188,5 +198,5 @@ static void __exit wifidog_exit(void)
module_init(wifidog_init);
module_exit(wifidog_exit);
MODULE_AUTHOR("jianhui zhao <jianhuizhao329@gmail.com>");
MODULE_AUTHOR("jianhui zhao <zhaojh329@gmail.com>");
MODULE_LICENSE("GPL");

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
* Copyright (C) 2017 jianhui zhao <zhaojh329@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as