/*
- * 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
#include <linux/uaccess.h>
#include <linux/inetdevice.h>
#include <linux/seq_file.h>
+#include <linux/version.h>
#include "config.h"
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) {
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);
/*
- * 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
#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"
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;
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);
{
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);
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");