1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
From d16939e7753dd32d6b6f8c88404709089ff61ecb Mon Sep 17 00:00:00 2001
From: Vadim Fedorenko <vvfedorenko@github.com>
Date: Fri, 6 Dec 2024 23:17:39 +0000
Subject: [PATCH] compat: Linux 6.11 support
There are several changes in linux kernel 6.11+ which are
incompatible with the module. Improve compatibility.
Signed-off-by: Vadim Fedorenko <vvfedorenko@github.com>
Origin: other, https://github.com/aabc/ipt-netflow/pull/230/commits/22b13ea090f6c5897d8331f41a6c491534fa4873
---
compat.h | 10 ++++++----
ipt_NETFLOW.c | 24 +++++++++++++-----------
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/compat.h b/compat.h
index ced9385..0c9c764 100644
--- a/compat.h
+++ b/compat.h
@@ -76,12 +76,14 @@ union nf_inet_addr {
# define BEFORE2632(x,y)
# endif
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
-# define ctl_table struct ctl_table
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(6,11,0)
+# define s_ctl_table const struct ctl_table
+# elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
+# define s_ctl_table struct ctl_table
# endif
-# ifndef HAVE_GRSECURITY_H
-# define ctl_table_no_const ctl_table
+# if !defined(HAVE_GRSECURITY_H) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
+# define ctl_table_no_const struct ctl_table
# endif
#endif
diff --git a/ipt_NETFLOW.c b/ipt_NETFLOW.c
index 6689764..d28f868 100644
--- a/ipt_NETFLOW.c
+++ b/ipt_NETFLOW.c
@@ -1520,7 +1520,7 @@ unlock:
#ifdef CONFIG_SYSCTL
/* sysctl /proc/sys/net/netflow */
-static int hsize_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int hsize_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret, hsize;
@@ -1537,7 +1537,7 @@ static int hsize_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp
return ret;
}
-static int sndbuf_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int sndbuf_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1572,7 +1572,7 @@ static int sndbuf_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fil
}
static void free_templates(void);
-static int destination_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int destination_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1589,7 +1589,7 @@ static int destination_procctl(ctl_table *ctl, int write, BEFORE2632(struct file
}
#ifdef ENABLE_AGGR
-static int aggregation_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int aggregation_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1604,7 +1604,7 @@ static int aggregation_procctl(ctl_table *ctl, int write, BEFORE2632(struct file
#endif
#ifdef ENABLE_PROMISC
-static int promisc_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int promisc_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int newpromisc = promisc;
@@ -1621,7 +1621,7 @@ static int promisc_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fi
#ifdef ENABLE_SAMPLER
static int parse_sampler(char *ptr);
-static int sampler_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int sampler_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1654,7 +1654,7 @@ static int sampler_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fi
#ifdef SNMP_RULES
static int add_snmp_rules(char *ptr);
-static int snmp_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int snmp_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1679,7 +1679,7 @@ static void clear_ipt_netflow_stat(void)
}
}
-static int flush_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int flush_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1708,7 +1708,7 @@ static int flush_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp
return ret;
}
-static int protocol_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int protocol_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1741,7 +1741,7 @@ static int protocol_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *f
#ifdef CONFIG_NF_NAT_NEEDED
static void register_ct_events(void);
static void unregister_ct_events(void);
-static int natevents_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
+static int natevents_procctl(s_ctl_table *ctl, int write, BEFORE2632(struct file *filp,)
void __user *buffer, size_t *lenp, loff_t *fpos)
{
int ret;
@@ -1778,7 +1778,7 @@ static void ctl_table_renumber(ctl_table *table)
#define _CTL_NAME(x)
#define ctl_table_renumber(x)
#endif
-static ctl_table netflow_sysctl_table[] = {
+static ctl_table_no_const netflow_sysctl_table[] = {
{
.procname = "active_timeout",
.mode = 0644,
@@ -1906,7 +1906,9 @@ static ctl_table netflow_sysctl_table[] = {
.proc_handler = &natevents_procctl,
},
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6,11,0)
{ }
+#endif
};
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
--
2.39.5
|