Browse Source

wifidog-ng: Update to 2.0.2

Compatible with Linux kernel 5.3 and above

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
lilik-openwrt-22.03
Jianhui Zhao 4 years ago
parent
commit
447e65c539
5 changed files with 34 additions and 10 deletions
  1. +2
    -2
      net/wifidog-ng/Makefile
  2. +16
    -2
      net/wifidog-ng/src/config.c
  3. +1
    -1
      net/wifidog-ng/src/config.h
  4. +14
    -4
      net/wifidog-ng/src/main.c
  5. +1
    -1
      net/wifidog-ng/src/utils.h

+ 2
- 2
net/wifidog-ng/Makefile 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


+ 16
- 2
net/wifidog-ng/src/config.c 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);


+ 1
- 1
net/wifidog-ng/src/config.h 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
- 4
net/wifidog-ng/src/main.c 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");

+ 1
- 1
net/wifidog-ng/src/utils.h 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


Loading…
Cancel
Save