wifidog-ng: Update to 2.0.2 11745/head
authorJianhui Zhao <zhaojh329@gmail.com>
Thu, 2 Apr 2020 13:28:03 +0000 (21:28 +0800)
committerJianhui Zhao <zhaojh329@gmail.com>
Thu, 2 Apr 2020 16:12:09 +0000 (00:12 +0800)
Compatible with Linux kernel 5.3 and above

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
net/wifidog-ng/Makefile
net/wifidog-ng/src/config.c
net/wifidog-ng/src/config.h
net/wifidog-ng/src/main.c
net/wifidog-ng/src/utils.h

index b9d7d764105c0ce6ad3779c3f23f2ca0fe3bc4c7..b893ff38bb5ada14f7afe7847cfaea802c6a1055 100644 (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
 
index 3ccad8438016474cfa3cd0858a8d5ec0756798d9..c692d9ea3ef5cf80f6fd3787be11bfc37d552c62 100644 (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);
 
index a7414affa2463fcdbcf6d4b0cdcb155d6af6087b..60bde1a480685cd8174d4ac1acd7e2946a4c794d 100644 (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
index afb1b038ed6a8be41378860742d0a39aed832410..ac17078e558a3393c090009ae210ef3d22034a0d 100644 (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");
index 5f7aa08c47920b000ad70b24fa4596dc8ed8c05f..816bacb464a9075bc9f454471e049c92a6f71feb 100644 (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