1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-03-09 15:40:20 +00:00

Update NDPI patch

This commit is contained in:
Ycarus (Yannick Chabanois) 2023-12-22 20:23:25 +01:00
parent 9ccde1ef2d
commit eb899ee09f
2 changed files with 32 additions and 32 deletions

View file

@ -5,9 +5,9 @@ diff -urpN linux-6.1.38.old/include/net/netfilter/nf_conntrack.h linux-6.1.38/in
return net_generic(net, nf_conntrack_net_id); return net_generic(net, nf_conntrack_net_id);
} }
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+void register_ndpi_hook(void (*hook)(struct nf_conn *)); +void register_nf_ct_destroy_hook(void (*hook)(struct nf_conn *));
+void unregister_ndpi_hook(void); +void unregister_nf_ct_destroy_hook(void);
+#endif +#endif
+ +
#define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) #define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count)
@ -20,7 +20,7 @@ diff -urpN linux-6.1.38.old/net/netfilter/Kconfig linux-6.1.38/net/netfilter/Kco
If this option is enabled, the kernel will include support If this option is enabled, the kernel will include support
for passive OS fingerprint via NFNETLINK. for passive OS fingerprint via NFNETLINK.
+config NDPI_HOOK +config NF_CONNTRACK_DESTROY_HOOK
+ bool + bool
+ +
config NF_CONNTRACK config NF_CONNTRACK
@ -28,7 +28,7 @@ diff -urpN linux-6.1.38.old/net/netfilter/Kconfig linux-6.1.38/net/netfilter/Kco
default m if NETFILTER_ADVANCED=n default m if NETFILTER_ADVANCED=n
select NF_DEFRAG_IPV4 select NF_DEFRAG_IPV4
select NF_DEFRAG_IPV6 if IPV6 != n select NF_DEFRAG_IPV6 if IPV6 != n
+ select NDPI_HOOK + select NF_CONNTRACK_DESTROY_HOOK
help help
Connection tracking keeps a record of what packets have passed Connection tracking keeps a record of what packets have passed
through your machine, in order to figure out how they are related through your machine, in order to figure out how they are related
@ -39,28 +39,28 @@ diff -urpN linux-6.1.38.old/net/netfilter/nf_conntrack_core.c linux-6.1.38/net/n
#endif #endif
} }
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+ +
+static void (*ndpi_hook)(struct nf_conn *) __rcu __read_mostly = NULL; +static void (*nf_ct_destroy_hook)(struct nf_conn *) __rcu __read_mostly = NULL;
+ +
+void register_ndpi_hook(void (*hook)(struct nf_conn *)) +void register_nf_ct_destroy_hook(void (*hook)(struct nf_conn *))
+{ +{
+ rcu_assign_pointer(ndpi_hook, hook); + rcu_assign_pointer(nf_ct_destroy_hook, hook);
+} +}
+EXPORT_SYMBOL(register_ndpi_hook); +EXPORT_SYMBOL(register_nf_ct_destroy_hook);
+ +
+void unregister_ndpi_hook(void) +void unregister_nf_ct_destroy_hook(void)
+{ +{
+ rcu_assign_pointer(ndpi_hook, NULL); + rcu_assign_pointer(nf_ct_destroy_hook, NULL);
+} +}
+ +
+EXPORT_SYMBOL(unregister_ndpi_hook); +EXPORT_SYMBOL(unregister_nf_ct_destroy_hook);
+#endif +#endif
+ +
void nf_ct_destroy(struct nf_conntrack *nfct) void nf_ct_destroy(struct nf_conntrack *nfct)
{ {
struct nf_conn *ct = (struct nf_conn *)nfct; struct nf_conn *ct = (struct nf_conn *)nfct;
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+ void (*hook)(struct nf_conn *); + void (*hook)(struct nf_conn *);
+#endif +#endif
@ -70,8 +70,8 @@ diff -urpN linux-6.1.38.old/net/netfilter/nf_conntrack_core.c linux-6.1.38/net/n
return; return;
} }
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+ hook = rcu_dereference(ndpi_hook); + hook = rcu_dereference(nf_ct_destroy_hook);
+ if (hook) + if (hook)
+ hook(ct); + hook(ct);
+#endif +#endif

View file

@ -5,9 +5,9 @@ diff -urpN linux-6.1.38.old/include/net/netfilter/nf_conntrack.h linux-6.1.38/in
return net_generic(net, nf_conntrack_net_id); return net_generic(net, nf_conntrack_net_id);
} }
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+void register_ndpi_hook(void (*hook)(struct nf_conn *)); +void register_nf_ct_destroy_hook(void (*hook)(struct nf_conn *));
+void unregister_ndpi_hook(void); +void unregister_nf_ct_destroy_hook(void);
+#endif +#endif
+ +
#define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) #define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count)
@ -20,7 +20,7 @@ diff -urpN linux-6.1.38.old/net/netfilter/Kconfig linux-6.1.38/net/netfilter/Kco
If this option is enabled, the kernel will include support If this option is enabled, the kernel will include support
for passive OS fingerprint via NFNETLINK. for passive OS fingerprint via NFNETLINK.
+config NDPI_HOOK +config NF_CONNTRACK_DESTROY_HOOK
+ bool + bool
+ +
config NF_CONNTRACK config NF_CONNTRACK
@ -28,7 +28,7 @@ diff -urpN linux-6.1.38.old/net/netfilter/Kconfig linux-6.1.38/net/netfilter/Kco
default m if NETFILTER_ADVANCED=n default m if NETFILTER_ADVANCED=n
select NF_DEFRAG_IPV4 select NF_DEFRAG_IPV4
select NF_DEFRAG_IPV6 if IPV6 != n select NF_DEFRAG_IPV6 if IPV6 != n
+ select NDPI_HOOK + select NF_CONNTRACK_DESTROY_HOOK
help help
Connection tracking keeps a record of what packets have passed Connection tracking keeps a record of what packets have passed
through your machine, in order to figure out how they are related through your machine, in order to figure out how they are related
@ -39,28 +39,28 @@ diff -urpN linux-6.1.38.old/net/netfilter/nf_conntrack_core.c linux-6.1.38/net/n
#endif #endif
} }
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+ +
+static void (*ndpi_hook)(struct nf_conn *) __rcu __read_mostly = NULL; +static void (*nf_ct_destroy_hook)(struct nf_conn *) __rcu __read_mostly = NULL;
+ +
+void register_ndpi_hook(void (*hook)(struct nf_conn *)) +void register_nf_ct_destroy_hook(void (*hook)(struct nf_conn *))
+{ +{
+ rcu_assign_pointer(ndpi_hook, hook); + rcu_assign_pointer(nf_ct_destroy_hook, hook);
+} +}
+EXPORT_SYMBOL(register_ndpi_hook); +EXPORT_SYMBOL(register_nf_ct_destroy_hook);
+ +
+void unregister_ndpi_hook(void) +void unregister_nf_ct_destroy_hook(void)
+{ +{
+ rcu_assign_pointer(ndpi_hook, NULL); + rcu_assign_pointer(nf_ct_destroy_hook, NULL);
+} +}
+ +
+EXPORT_SYMBOL(unregister_ndpi_hook); +EXPORT_SYMBOL(unregister_nf_ct_destroy_hook);
+#endif +#endif
+ +
void nf_ct_destroy(struct nf_conntrack *nfct) void nf_ct_destroy(struct nf_conntrack *nfct)
{ {
struct nf_conn *ct = (struct nf_conn *)nfct; struct nf_conn *ct = (struct nf_conn *)nfct;
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+ void (*hook)(struct nf_conn *); + void (*hook)(struct nf_conn *);
+#endif +#endif
@ -70,8 +70,8 @@ diff -urpN linux-6.1.38.old/net/netfilter/nf_conntrack_core.c linux-6.1.38/net/n
return; return;
} }
+#ifdef CONFIG_NDPI_HOOK +#ifdef CONFIG_NF_CONNTRACK_DESTROY_HOOK
+ hook = rcu_dereference(ndpi_hook); + hook = rcu_dereference(nf_ct_destroy_hook);
+ if (hook) + if (hook)
+ hook(ct); + hook(ct);
+#endif +#endif