[PATCH] netfilter: uapi: Fix file names for case-insensitive filesystem.

egyszeregy@freemail.hu posted 1 patch 1 week, 5 days ago
.../netfilter/{xt_CONNMARK.h => xt_CONNMARK_TARGET.h}     | 0
.../uapi/linux/netfilter/{xt_DSCP.h => xt_DSCP_TARGET.h}  | 0
.../uapi/linux/netfilter/{xt_MARK.h => xt_MARK_TARGET.h}  | 0
.../linux/netfilter/{xt_RATEEST.h => xt_RATEEST_TARGET.h} | 0
.../linux/netfilter/{xt_TCPMSS.h => xt_TCPMSS_TARGET.h}   | 0
.../linux/netfilter_ipv4/{ipt_ECN.h => ipt_ECN_TARGET.h}  | 2 +-
.../linux/netfilter_ipv4/{ipt_TTL.h => ipt_TTL_TARGET.h}  | 0
.../linux/netfilter_ipv6/{ip6t_HL.h => ip6t_HL_TARGET.h}  | 0
net/ipv4/netfilter/Makefile                               | 2 +-
net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c}        | 2 +-
net/netfilter/Makefile                                    | 8 ++++----
net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c}             | 2 +-
net/netfilter/{xt_HL.c => xt_HL_TARGET.c}                 | 0
net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c}       | 2 +-
net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c}         | 2 +-
15 files changed, 10 insertions(+), 10 deletions(-)
rename include/uapi/linux/netfilter/{xt_CONNMARK.h => xt_CONNMARK_TARGET.h} (100%)
rename include/uapi/linux/netfilter/{xt_DSCP.h => xt_DSCP_TARGET.h} (100%)
rename include/uapi/linux/netfilter/{xt_MARK.h => xt_MARK_TARGET.h} (100%)
rename include/uapi/linux/netfilter/{xt_RATEEST.h => xt_RATEEST_TARGET.h} (100%)
rename include/uapi/linux/netfilter/{xt_TCPMSS.h => xt_TCPMSS_TARGET.h} (100%)
rename include/uapi/linux/netfilter_ipv4/{ipt_ECN.h => ipt_ECN_TARGET.h} (95%)
rename include/uapi/linux/netfilter_ipv4/{ipt_TTL.h => ipt_TTL_TARGET.h} (100%)
rename include/uapi/linux/netfilter_ipv6/{ip6t_HL.h => ip6t_HL_TARGET.h} (100%)
rename net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c} (98%)
rename net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c} (98%)
rename net/netfilter/{xt_HL.c => xt_HL_TARGET.c} (100%)
rename net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c} (99%)
rename net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c} (99%)
[PATCH] netfilter: uapi: Fix file names for case-insensitive filesystem.
Posted by egyszeregy@freemail.hu 1 week, 5 days ago
From: Benjamin Szőke <egyszeregy@freemail.hu>

The goal is to fix Linux repository for case-insensitive filesystem,
to able to clone it and editable on any operating systems.

In netfilter, many of source files has duplaction with uppercase filename
style. They was fixed by renaming.

Signed-off-by: Benjamin Szőke <egyszeregy@freemail.hu>
---
 .../netfilter/{xt_CONNMARK.h => xt_CONNMARK_TARGET.h}     | 0
 .../uapi/linux/netfilter/{xt_DSCP.h => xt_DSCP_TARGET.h}  | 0
 .../uapi/linux/netfilter/{xt_MARK.h => xt_MARK_TARGET.h}  | 0
 .../linux/netfilter/{xt_RATEEST.h => xt_RATEEST_TARGET.h} | 0
 .../linux/netfilter/{xt_TCPMSS.h => xt_TCPMSS_TARGET.h}   | 0
 .../linux/netfilter_ipv4/{ipt_ECN.h => ipt_ECN_TARGET.h}  | 2 +-
 .../linux/netfilter_ipv4/{ipt_TTL.h => ipt_TTL_TARGET.h}  | 0
 .../linux/netfilter_ipv6/{ip6t_HL.h => ip6t_HL_TARGET.h}  | 0
 net/ipv4/netfilter/Makefile                               | 2 +-
 net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c}        | 2 +-
 net/netfilter/Makefile                                    | 8 ++++----
 net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c}             | 2 +-
 net/netfilter/{xt_HL.c => xt_HL_TARGET.c}                 | 0
 net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c}       | 2 +-
 net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c}         | 2 +-
 15 files changed, 10 insertions(+), 10 deletions(-)
 rename include/uapi/linux/netfilter/{xt_CONNMARK.h => xt_CONNMARK_TARGET.h} (100%)
 rename include/uapi/linux/netfilter/{xt_DSCP.h => xt_DSCP_TARGET.h} (100%)
 rename include/uapi/linux/netfilter/{xt_MARK.h => xt_MARK_TARGET.h} (100%)
 rename include/uapi/linux/netfilter/{xt_RATEEST.h => xt_RATEEST_TARGET.h} (100%)
 rename include/uapi/linux/netfilter/{xt_TCPMSS.h => xt_TCPMSS_TARGET.h} (100%)
 rename include/uapi/linux/netfilter_ipv4/{ipt_ECN.h => ipt_ECN_TARGET.h} (95%)
 rename include/uapi/linux/netfilter_ipv4/{ipt_TTL.h => ipt_TTL_TARGET.h} (100%)
 rename include/uapi/linux/netfilter_ipv6/{ip6t_HL.h => ip6t_HL_TARGET.h} (100%)
 rename net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c} (98%)
 rename net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c} (98%)
 rename net/netfilter/{xt_HL.c => xt_HL_TARGET.c} (100%)
 rename net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c} (99%)
 rename net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c} (99%)

diff --git a/include/uapi/linux/netfilter/xt_CONNMARK.h b/include/uapi/linux/netfilter/xt_CONNMARK_TARGET.h
similarity index 100%
rename from include/uapi/linux/netfilter/xt_CONNMARK.h
rename to include/uapi/linux/netfilter/xt_CONNMARK_TARGET.h
diff --git a/include/uapi/linux/netfilter/xt_DSCP.h b/include/uapi/linux/netfilter/xt_DSCP_TARGET.h
similarity index 100%
rename from include/uapi/linux/netfilter/xt_DSCP.h
rename to include/uapi/linux/netfilter/xt_DSCP_TARGET.h
diff --git a/include/uapi/linux/netfilter/xt_MARK.h b/include/uapi/linux/netfilter/xt_MARK_TARGET.h
similarity index 100%
rename from include/uapi/linux/netfilter/xt_MARK.h
rename to include/uapi/linux/netfilter/xt_MARK_TARGET.h
diff --git a/include/uapi/linux/netfilter/xt_RATEEST.h b/include/uapi/linux/netfilter/xt_RATEEST_TARGET.h
similarity index 100%
rename from include/uapi/linux/netfilter/xt_RATEEST.h
rename to include/uapi/linux/netfilter/xt_RATEEST_TARGET.h
diff --git a/include/uapi/linux/netfilter/xt_TCPMSS.h b/include/uapi/linux/netfilter/xt_TCPMSS_TARGET.h
similarity index 100%
rename from include/uapi/linux/netfilter/xt_TCPMSS.h
rename to include/uapi/linux/netfilter/xt_TCPMSS_TARGET.h
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_ECN.h b/include/uapi/linux/netfilter_ipv4/ipt_ECN_TARGET.h
similarity index 95%
rename from include/uapi/linux/netfilter_ipv4/ipt_ECN.h
rename to include/uapi/linux/netfilter_ipv4/ipt_ECN_TARGET.h
index e3630fd045b8..195a124f9bfa 100644
--- a/include/uapi/linux/netfilter_ipv4/ipt_ECN.h
+++ b/include/uapi/linux/netfilter_ipv4/ipt_ECN_TARGET.h
@@ -11,7 +11,7 @@
 #define _IPT_ECN_TARGET_H
 
 #include <linux/types.h>
-#include <linux/netfilter/xt_DSCP.h>
+#include <linux/netfilter/xt_DSCP_TARGET.h>
 
 #define IPT_ECN_IP_MASK	(~XT_DSCP_MASK)
 
diff --git a/include/uapi/linux/netfilter_ipv4/ipt_TTL.h b/include/uapi/linux/netfilter_ipv4/ipt_TTL_TARGET.h
similarity index 100%
rename from include/uapi/linux/netfilter_ipv4/ipt_TTL.h
rename to include/uapi/linux/netfilter_ipv4/ipt_TTL_TARGET.h
diff --git a/include/uapi/linux/netfilter_ipv6/ip6t_HL.h b/include/uapi/linux/netfilter_ipv6/ip6t_HL_TARGET.h
similarity index 100%
rename from include/uapi/linux/netfilter_ipv6/ip6t_HL.h
rename to include/uapi/linux/netfilter_ipv6/ip6t_HL_TARGET.h
diff --git a/net/ipv4/netfilter/Makefile b/net/ipv4/netfilter/Makefile
index 85502d4dfbb4..5bdb9dedcd63 100644
--- a/net/ipv4/netfilter/Makefile
+++ b/net/ipv4/netfilter/Makefile
@@ -39,7 +39,7 @@ obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
 obj-$(CONFIG_IP_NF_MATCH_RPFILTER) += ipt_rpfilter.o
 
 # targets
-obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o
+obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN_TARGET.o
 obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o
 obj-$(CONFIG_IP_NF_TARGET_SYNPROXY) += ipt_SYNPROXY.o
 
diff --git a/net/ipv4/netfilter/ipt_ECN.c b/net/ipv4/netfilter/ipt_ECN_TARGET.c
similarity index 98%
rename from net/ipv4/netfilter/ipt_ECN.c
rename to net/ipv4/netfilter/ipt_ECN_TARGET.c
index 5930d3b02555..5a18103a29b2 100644
--- a/net/ipv4/netfilter/ipt_ECN.c
+++ b/net/ipv4/netfilter/ipt_ECN_TARGET.c
@@ -14,7 +14,7 @@
 
 #include <linux/netfilter/x_tables.h>
 #include <linux/netfilter_ipv4/ip_tables.h>
-#include <linux/netfilter_ipv4/ipt_ECN.h>
+#include <linux/netfilter_ipv4/ipt_ECN_TARGET.h>
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
index f0aa4d7ef499..277befb4d1e9 100644
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
@@ -167,20 +167,20 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CHECKSUM) += xt_CHECKSUM.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIFY) += xt_CLASSIFY.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
-obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
-obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
+obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP_TARGET.o
+obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL_TARGET.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_NFQUEUE) += xt_NFQUEUE.o
-obj-$(CONFIG_NETFILTER_XT_TARGET_RATEEST) += xt_RATEEST.o
+obj-$(CONFIG_NETFILTER_XT_TARGET_RATEEST) += xt_RATEEST_TARGET.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_REDIRECT) += xt_REDIRECT.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_MASQUERADE) += xt_MASQUERADE.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_SECMARK) += xt_SECMARK.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_TPROXY) += xt_TPROXY.o
-obj-$(CONFIG_NETFILTER_XT_TARGET_TCPMSS) += xt_TCPMSS.o
+obj-$(CONFIG_NETFILTER_XT_TARGET_TCPMSS) += xt_TCPMSS_TARGET.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP) += xt_TCPOPTSTRIP.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_TEE) += xt_TEE.o
 obj-$(CONFIG_NETFILTER_XT_TARGET_TRACE) += xt_TRACE.o
diff --git a/net/netfilter/xt_DSCP.c b/net/netfilter/xt_DSCP_TARGET.c
similarity index 98%
rename from net/netfilter/xt_DSCP.c
rename to net/netfilter/xt_DSCP_TARGET.c
index cfa44515ab72..347335b0d69a 100644
--- a/net/netfilter/xt_DSCP.c
+++ b/net/netfilter/xt_DSCP_TARGET.c
@@ -14,7 +14,7 @@
 #include <net/dsfield.h>
 
 #include <linux/netfilter/x_tables.h>
-#include <linux/netfilter/xt_DSCP.h>
+#include <linux/netfilter/xt_DSCP_TARGET.h>
 
 MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
 MODULE_DESCRIPTION("Xtables: DSCP/TOS field modification");
diff --git a/net/netfilter/xt_HL.c b/net/netfilter/xt_HL_TARGET.c
similarity index 100%
rename from net/netfilter/xt_HL.c
rename to net/netfilter/xt_HL_TARGET.c
diff --git a/net/netfilter/xt_RATEEST.c b/net/netfilter/xt_RATEEST_TARGET.c
similarity index 99%
rename from net/netfilter/xt_RATEEST.c
rename to net/netfilter/xt_RATEEST_TARGET.c
index 4f49cfc27831..ca21d5da6833 100644
--- a/net/netfilter/xt_RATEEST.c
+++ b/net/netfilter/xt_RATEEST_TARGET.c
@@ -14,7 +14,7 @@
 #include <net/netns/generic.h>
 
 #include <linux/netfilter/x_tables.h>
-#include <linux/netfilter/xt_RATEEST.h>
+#include <linux/netfilter/xt_RATEEST_TARGET.h>
 #include <net/netfilter/xt_rateest.h>
 
 #define RATEEST_HSIZE	16
diff --git a/net/netfilter/xt_TCPMSS.c b/net/netfilter/xt_TCPMSS_TARGET.c
similarity index 99%
rename from net/netfilter/xt_TCPMSS.c
rename to net/netfilter/xt_TCPMSS_TARGET.c
index 116a885adb3c..fec2f0942fc6 100644
--- a/net/netfilter/xt_TCPMSS.c
+++ b/net/netfilter/xt_TCPMSS_TARGET.c
@@ -22,7 +22,7 @@
 #include <linux/netfilter_ipv6/ip6_tables.h>
 #include <linux/netfilter/x_tables.h>
 #include <linux/netfilter/xt_tcpudp.h>
-#include <linux/netfilter/xt_TCPMSS.h>
+#include <linux/netfilter/xt_TCPMSS_TARGET.h>
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Marc Boucher <marc@mbsi.ca>");
-- 
2.47.0.windows.2

Re: [PATCH] netfilter: uapi: Fix file names for case-insensitive filesystem.
Posted by Florian Westphal 1 week, 5 days ago
egyszeregy@freemail.hu <egyszeregy@freemail.hu> wrote:
>  rename net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c} (98%)
>  rename net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c} (98%)
>  rename net/netfilter/{xt_HL.c => xt_HL_TARGET.c} (100%)
>  rename net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c} (99%)
>  rename net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c} (99%)

No, please, if we have to do this, then lets merge the targets
(uppercase name) into the match (lowercase), i.e. most of the contents
of xt_DSCP.c go into xt_dscp.c.

Same for tcpmss and others where applicable.

Renaming ip6t_ECN to ip6t_ECN_TARGET makes no sense to me,
there is no ip6t_ecn.c, so no collision exists for case-insensitive
file systems.

> --- a/include/uapi/linux/netfilter_ipv4/ipt_ECN.h
> +++ b/include/uapi/linux/netfilter_ipv4/ipt_ECN_TARGET.h
> @@ -11,7 +11,7 @@
>  #define _IPT_ECN_TARGET_H

I don't think this can be done, for any of these files, as this
is UAPI code.

Best you can do is follow what
include/uapi/linux/netfilter/xt_MARK.h does (did).
Re: [PATCH] netfilter: uapi: Fix file names for case-insensitive filesystem.
Posted by Pablo Neira Ayuso 1 week, 4 days ago
On Mon, Nov 11, 2024 at 05:56:06PM +0100, Florian Westphal wrote:
> egyszeregy@freemail.hu <egyszeregy@freemail.hu> wrote:
> >  rename net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c} (98%)
> >  rename net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c} (98%)
> >  rename net/netfilter/{xt_HL.c => xt_HL_TARGET.c} (100%)
> >  rename net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c} (99%)
> >  rename net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c} (99%)
> 
> No, please, if we have to do this, then lets merge the targets
> (uppercase name) into the match (lowercase), i.e. most of the contents
> of xt_DSCP.c go into xt_dscp.c.

Agreed, please don't do this.

We have seen people sending patches like this one for several years,
this breaks stuff.
Re: [PATCH] netfilter: uapi: Fix file names for case-insensitive filesystem.
Posted by Szőke Benjamin 1 week, 4 days ago
2024. 11. 11. 19:34 keltezéssel, Pablo Neira Ayuso írta:
> On Mon, Nov 11, 2024 at 05:56:06PM +0100, Florian Westphal wrote:
>> egyszeregy@freemail.hu <egyszeregy@freemail.hu> wrote:
>>>   rename net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c} (98%)
>>>   rename net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c} (98%)
>>>   rename net/netfilter/{xt_HL.c => xt_HL_TARGET.c} (100%)
>>>   rename net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c} (99%)
>>>   rename net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c} (99%)
>>
>> No, please, if we have to do this, then lets merge the targets
>> (uppercase name) into the match (lowercase), i.e. most of the contents
>> of xt_DSCP.c go into xt_dscp.c.
> 
> Agreed, please don't do this.
> 
> We have seen people sending patches like this one for several years,
> this breaks stuff.

These all files are broken in case-insensitive filesystem.

warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

   'include/uapi/linux/netfilter/xt_CONNMARK.h'
   'include/uapi/linux/netfilter/xt_connmark.h'
   'include/uapi/linux/netfilter/xt_DSCP.h'
   'include/uapi/linux/netfilter/xt_dscp.h'
   'include/uapi/linux/netfilter/xt_MARK.h'
   'include/uapi/linux/netfilter/xt_mark.h'
   'include/uapi/linux/netfilter/xt_RATEEST.h'
   'include/uapi/linux/netfilter/xt_rateest.h'
   'include/uapi/linux/netfilter/xt_TCPMSS.h'
   'include/uapi/linux/netfilter/xt_tcpmss.h'
   'include/uapi/linux/netfilter_ipv4/ipt_ECN.h'
   'include/uapi/linux/netfilter_ipv4/ipt_ecn.h'
   'include/uapi/linux/netfilter_ipv4/ipt_TTL.h'
   'include/uapi/linux/netfilter_ipv4/ipt_ttl.h'
   'include/uapi/linux/netfilter_ipv6/ip6t_HL.h'
   'include/uapi/linux/netfilter_ipv6/ip6t_hl.h'
   'net/netfilter/xt_DSCP.c'
   'net/netfilter/xt_dscp.c'
   'net/netfilter/xt_HL.c'
   'net/netfilter/xt_hl.c'
   'net/netfilter/xt_RATEEST.c'
   'net/netfilter/xt_rateest.c'
   'net/netfilter/xt_TCPMSS.c'
   'net/netfilter/xt_tcpmss.c'


What is your detailed plans to solve it? Maybe the contents of both upper and 
lower case *.h files can be merged to a common header files like 
"xt_dscp_common.h" but what about the *.c sources? For example if xt_DSCP.c 
removed and its content merged to xt_dscp.c before, what is the plan with kernel 
config options of CONFIG_NETFILTER_XT_TARGET_DSCP which was made for only 
xt_DSCP.c source to use in Makefile? Can we remove all of 
CONFIG_NETFILTER_XT_TARGET* config in the future which will lost their *.c 
source files?

obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
...
obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o

Re: [PATCH] netfilter: uapi: Fix file names for case-insensitive filesystem.
Posted by Jan Engelhardt 1 week, 4 days ago
On Monday 2024-11-11 21:28, Szőke Benjamin wrote:
> What is your detailed plans to solve it? Maybe the contents of both upper and
> lower case *.h files can be merged to a common header files like
> "xt_dscp_common.h" but what about the *.c sources? For example if xt_DSCP.c
> removed and its content merged to xt_dscp.c before, what is the plan with
> kernel config options of CONFIG_NETFILTER_XT_TARGET_DSCP which was made for
> only xt_DSCP.c source to use in Makefile? Can we remove all of
> CONFIG_NETFILTER_XT_TARGET* config in the future which will lost their *.c
> source files?
>
> obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
> ...
> obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o

This issue you would approach by unconditionally building a .c file
and using #ifdef IS_ENABLED(...) inside the .c file.

Truth to be told, the overhead for a module (12288 bytes on on x86_64)
completely dwarfs the code inside it (xt_dscp.o: 765 bytes), so combining
modules should provide some decent memory savings.
Re: [PATCH] netfilter: uapi: Fix file names for case-insensitive filesystem.
Posted by Jan Engelhardt 1 week, 4 days ago
On Monday 2024-11-11 19:34, Pablo Neira Ayuso wrote:
>On Mon, Nov 11, 2024 at 05:56:06PM +0100, Florian Westphal wrote:
>> egyszeregy@freemail.hu <egyszeregy@freemail.hu> wrote:
>> >  rename net/ipv4/netfilter/{ipt_ECN.c => ipt_ECN_TARGET.c} (98%)
>> >  rename net/netfilter/{xt_DSCP.c => xt_DSCP_TARGET.c} (98%)
>> >  rename net/netfilter/{xt_HL.c => xt_HL_TARGET.c} (100%)
>> >  rename net/netfilter/{xt_RATEEST.c => xt_RATEEST_TARGET.c} (99%)
>> >  rename net/netfilter/{xt_TCPMSS.c => xt_TCPMSS_TARGET.c} (99%)
>> 
>> No, please, if we have to do this, then lets merge the targets
>> (uppercase name) into the match (lowercase), i.e. most of the contents
>> of xt_DSCP.c go into xt_dscp.c.
>
>Agreed, please don't do this.
>
>We have seen people sending patches like this one for several years,
>this breaks stuff.

Because all those submissions renamed (e.g.) xt_DSCP.h to something
else.

It's kinda obvious that #include <xt_dscp.h> and <xt_DSCP.h>
must produce the same declarations as previously available.
Which seems doable with a layout like so:

xt_DSCP.h:
	#include "xt_dscp_1.h"
xt_dscp.h:
	#include "xt_dscp_1.h"
xt_dscp_1.h:
	<the usual contents>

That way, xt_DSCP.h overwriting xt_dscp.h as a result of `make
install` (or some other file creation action) becomes
inconsequential since they have the same content under that model.