blob: 958eda6cd34cc01651c4dc6926989263807ab173 [file] [log] [blame]
Kyle Swenson1aa0e0d2021-03-18 14:20:24 -06001# ###################################################
2# Makefile for the QCA NSS ECM for 5.4 kernel
3# ###################################################
4
5obj-m += ecm.o
6
7ifeq ($(EXAMPLES_BUILD_OVS),y)
8obj-m += examples/ecm_ovs.o
9endif
10
11ecm-y := \
12 ecm_tracker_udp.o \
13 ecm_tracker_tcp.o \
14 ecm_tracker_datagram.o \
15 ecm_tracker.o \
16 frontends/ecm_front_end_ipv4.o \
17 frontends/ecm_front_end_ipv6.o \
18 frontends/ecm_front_end_common.o \
19 ecm_db/ecm_db.o \
20 ecm_db/ecm_db_connection.o \
21 ecm_db/ecm_db_mapping.o \
22 ecm_db/ecm_db_host.o \
23 ecm_db/ecm_db_node.o \
24 ecm_db/ecm_db_iface.o \
25 ecm_db/ecm_db_listener.o \
26 ecm_db/ecm_db_timer.o \
27 ecm_classifier.o \
28 ecm_classifier_default.o \
29 ecm_interface.o \
30 ecm_conntrack_notifier.o \
31 ecm_init.o \
32 ecm_notifier.o
33
34# #############################################################################
35# Define ECM_FRONT_END_NSS_ENABLE=y in order to select
36# nss as ECM's front end.
37# #############################################################################
38ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_ipv4.o
39ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_ported_ipv4.o
40ccflags-$(ECM_FRONT_END_NSS_ENABLE) += -DECM_FRONT_END_NSS_ENABLE
41
42# #############################################################################
43# Define ECM_FRONT_END_SFE_ENABLE=y in order to select
44# sfe as ECM's front end.
45# #############################################################################
46ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_ipv4.o
47ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_ported_ipv4.o
48ccflags-$(ECM_FRONT_END_SFE_ENABLE) += -DECM_FRONT_END_SFE_ENABLE
49
50# #############################################################################
51# Define ECM_INTERFACE_PPPOE_ENABLE=y in order
52# to enable support for PPPoE acceleration.
53# #############################################################################
54ECM_INTERFACE_PPPOE_ENABLE=y
55ccflags-$(ECM_INTERFACE_PPPOE_ENABLE) += -DECM_INTERFACE_PPPOE_ENABLE
56
57# #############################################################################
58# Define ECM_INTERFACE_L2TPV2_ENABLE=y in order
59# to enable support for l2tpv2 acceleration.
60# #############################################################################
61ccflags-$(ECM_INTERFACE_L2TPV2_ENABLE) += -DECM_INTERFACE_L2TPV2_ENABLE
62
63# #############################################################################
64# Define ECM_INTERFACE_PPTP_ENABLE=y in order
65# to enable support for pptp acceleration.
66# #############################################################################
67ccflags-$(ECM_INTERFACE_PPTP_ENABLE) += -DECM_INTERFACE_PPTP_ENABLE
68
69# #############################################################################
70# if pppoe, l2tpv2, pptp acceleration is enabled, ppp should
71# be enabled automatically
72# #############################################################################
73ECM_INTERFACE_PPP_ENABLE=y
74ifeq "$(ECM_INTERFACE_PPPOE_ENABLE)" "n"
75ifeq "$(ECM_INTERFACE_L2TPV2_ENABLE)" "n"
76ifeq "$(ECM_INTERFACE_PPTP_ENABLE)" "n"
77ECM_INTERFACE_PPP_ENABLE=n
78endif
79endif
80endif
81ccflags-$(ECM_INTERFACE_PPP_ENABLE) += -DECM_INTERFACE_PPP_ENABLE
82
83# #############################################################################
84# Define ECM_INTERFACE_MAP_T_ENABLE=y in order
85# to enable support for MAP-T interface.
86# #############################################################################
87ccflags-$(ECM_INTERFACE_MAP_T_ENABLE) += -DECM_INTERFACE_MAP_T_ENABLE
88
89# #############################################################################
90# Define ECM_INTERFACE_SIT_ENABLE=y in order
91# to enable support for SIT interface.
92# #############################################################################
93ccflags-$(ECM_INTERFACE_SIT_ENABLE) += -DECM_INTERFACE_SIT_ENABLE
94
95# #############################################################################
96# Define ECM_INTERFACE_GRE_TAP_ENABLE=y in order
97# to enable support for GRE TAP interface.
98# #############################################################################
99ccflags-$(ECM_INTERFACE_GRE_TAP_ENABLE) += -DECM_INTERFACE_GRE_TAP_ENABLE
100
101# #############################################################################
102# Define ECM_INTERFACE_GRE_TUN_ENABLE=y in order
103# to enable support for GRE TUN interface.
104# #############################################################################
105ccflags-$(ECM_INTERFACE_GRE_TUN_ENABLE) += -DECM_INTERFACE_GRE_TUN_ENABLE
106
107# #############################################################################
108# Define ECM_INTERFACE_TUNIPIP6_ENABLE=y in order
109# to enable support for TUNIPIP6 interface.
110# #############################################################################
111ccflags-$(ECM_INTERFACE_TUNIPIP6_ENABLE) += -DECM_INTERFACE_TUNIPIP6_ENABLE
112
113# #############################################################################
114# Define ECM_INTERFACE_RAWIP_ENABLE=y in order
115# to enable support for RAWIP interface.
116# #############################################################################
117ccflags-$(ECM_INTERFACE_RAWIP_ENABLE) += -DECM_INTERFACE_RAWIP_ENABLE
118
119# #############################################################################
120# Define ECM_INTERFACE_VXLAN_ENABLE=y in order
121# to enable support for VXLAN interface.
122# #############################################################################
123ccflags-$(ECM_INTERFACE_VXLAN_ENABLE) += -DECM_INTERFACE_VXLAN_ENABLE
124
125# #############################################################################
126# Define ECM_MULTICAST_ENABLE=y in order to enable support for ECM Multicast
127# #############################################################################
128ifeq ($(ECM_FRONT_END_NSS_ENABLE), y)
129#
130# TODO: This is a workaround for external builds in which the qca-mcs source
131# code is not available. This will be fixed later by breaking the dependency from ECM
132# to qca-mcs
133#
134MCS_CONFIG:=$(shell grep "CONFIG_PACKAGE_kmod-qca-mcs=y" $(TOPDIR)/.config)
135MCS_ENABLED:=CONFIG_PACKAGE_kmod-qca-mcs=y
136ifeq ($(MCS_CONFIG),$(MCS_ENABLED))
137ECM_MULTICAST_ENABLE=y
138ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv4.o
139ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv6.o
140ecm-$(ECM_MULTICAST_ENABLE) += ecm_db/ecm_db_multicast.o
141ccflags-$(ECM_MULTICAST_ENABLE) += -DECM_MULTICAST_ENABLE
142endif
143endif
144
145# #############################################################################
146# Define ECM_INTERFACE_OVS_BRIDGE_ENABLE=y in order to enable support for OVS
147# #############################################################################
148ccflags-$(ECM_INTERFACE_OVS_BRIDGE_ENABLE) += -DECM_INTERFACE_OVS_BRIDGE_ENABLE
149
150# #############################################################################
151# Define ECM_INTERFACE_VLAN_ENABLE=y in order to enable support for VLAN
152# #############################################################################
153ECM_INTERFACE_VLAN_ENABLE=y
154ccflags-$(ECM_INTERFACE_VLAN_ENABLE) += -DECM_INTERFACE_VLAN_ENABLE
155
156# #############################################################################
157# Define ECM_INTERFACE_IPSEC_ENABLE=y in order to enable support for IPSEC
158# #############################################################################
159ccflags-$(ECM_INTERFACE_IPSEC_ENABLE) += -DECM_INTERFACE_IPSEC_ENABLE
160
161ECM_INTERFACE_IPSEC_GLUE_LAYER_SUPPORT_ENABLE=n
162ifeq ($(SoC),$(filter $(SoC), ipq807x ipq807x_64 ipq60xx ipq60xx_64 ipq50xx ipq50xx_64))
163ECM_INTERFACE_IPSEC_GLUE_LAYER_SUPPORT_ENABLE=$(ECM_INTERFACE_IPSEC_ENABLE)
164ccflags-$(ECM_INTERFACE_IPSEC_GLUE_LAYER_SUPPORT_ENABLE) += -DECM_INTERFACE_IPSEC_GLUE_LAYER_SUPPORT_ENABLE
165endif
166
167# #############################################################################
168# Define ECM_IPV6_ENABLE=y in order to enable IPv6 support in the ECM.
169# #############################################################################
170ECM_IPV6_ENABLE=y
171ifeq ($(ECM_FRONT_END_NSS_ENABLE), y)
172ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ipv6.o
173ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ported_ipv6.o
174endif
175ifeq ($(ECM_FRONT_END_SFE_ENABLE), y)
176ecm-$(ECM_IPV6_ENABLE) += frontends/sfe/ecm_sfe_ipv6.o
177ecm-$(ECM_IPV6_ENABLE) += frontends/sfe/ecm_sfe_ported_ipv6.o
178endif
179ccflags-$(ECM_IPV6_ENABLE) += -DECM_IPV6_ENABLE
180
181# #############################################################################
182# Define ECM_CLASSIFIER_OVS_ENABLE=y in order to enable ovs classifier.
183# #############################################################################
184ecm-$(ECM_CLASSIFIER_OVS_ENABLE) += ecm_classifier_ovs.o
185ccflags-$(ECM_CLASSIFIER_OVS_ENABLE) += -DECM_CLASSIFIER_OVS_ENABLE
186
187# #############################################################################
188# Define ECM_CLASSIFIER_MARK_ENABLE=y in order to enable mark classifier.
189# #############################################################################
190ECM_CLASSIFIER_MARK_ENABLE=y
191ecm-$(ECM_CLASSIFIER_MARK_ENABLE) += ecm_classifier_mark.o
192ccflags-$(ECM_CLASSIFIER_MARK_ENABLE) += -DECM_CLASSIFIER_MARK_ENABLE
193
194# #############################################################################
195# Define ECM_CLASSIFIER_DSCP_ENABLE=y in order to enable DSCP classifier.
196# #############################################################################
197ECM_CLASSIFIER_DSCP_ENABLE=y
198ecm-$(ECM_CLASSIFIER_DSCP_ENABLE) += ecm_classifier_dscp.o
199ccflags-$(ECM_CLASSIFIER_DSCP_ENABLE) += -DECM_CLASSIFIER_DSCP_ENABLE
200
201# #############################################################################
202# Define ECM_CLASSIFIER_PCC_ENABLE=y in order to enable
203# the Parental Controls subsystem classifier in ECM. Currently disabled until
204# customers require it / if they need to integrate their Parental Controls with it.
205# #############################################################################
206ECM_CLASSIFIER_PCC_ENABLE=y
207ecm-$(ECM_CLASSIFIER_PCC_ENABLE) += ecm_classifier_pcc.o
208ccflags-$(ECM_CLASSIFIER_PCC_ENABLE) += -DECM_CLASSIFIER_PCC_ENABLE
209
210# #############################################################################
211# Define ECM_NON_PORTED_SUPPORT_ENABLE=y in order to enable non-ported protocol.
212# #############################################################################
213ECM_NON_PORTED_SUPPORT_ENABLE=y
214ifeq ($(ECM_FRONT_END_NSS_ENABLE), y)
215ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv4.o
216ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv6.o
217endif
218ifeq ($(ECM_FRONT_END_SFE_ENABLE), y)
219ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/sfe/ecm_sfe_non_ported_ipv4.o
220ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/sfe/ecm_sfe_non_ported_ipv6.o
221endif
222ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE) += -DECM_NON_PORTED_SUPPORT_ENABLE
223
224# #############################################################################
225# Define ECM_INTERFACE_BOND_ENABLE=y in order to enable
226# Bonding / Link Aggregation support.
227# #############################################################################
228ecm-$(ECM_INTERFACE_BOND_ENABLE) += frontends/nss/ecm_nss_bond_notifier.o
229ccflags-$(ECM_INTERFACE_BOND_ENABLE) += -DECM_INTERFACE_BOND_ENABLE
230
231# #############################################################################
232# Define ECM_STATE_OUTPUT_ENABLE=y to support XML state output
233# #############################################################################
234ECM_STATE_OUTPUT_ENABLE=y
235ecm-$(ECM_STATE_OUTPUT_ENABLE) += ecm_state.o
236ccflags-$(ECM_STATE_OUTPUT_ENABLE) += -DECM_STATE_OUTPUT_ENABLE
237
238# #############################################################################
239# Define ECM_DB_ADVANCED_STATS_ENABLE to support XML state output
240# #############################################################################
241ECM_DB_ADVANCED_STATS_ENABLE=y
242ccflags-$(ECM_DB_ADVANCED_STATS_ENABLE) += -DECM_DB_ADVANCED_STATS_ENABLE
243
244# #############################################################################
245# Define ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y in order to enable
246# the database to track relationships between objects.
247# #############################################################################
248ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y
249ccflags-$(ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE) += -DECM_DB_XREF_ENABLE
250
251# #############################################################################
252# Define ECM_TRACKER_DPI_SUPPORT_ENABLE=y in order to enable support for
253# deep packet inspection and tracking of data with the trackers.
254# #############################################################################
255ECM_TRACKER_DPI_SUPPORT_ENABLE=y
256ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE
257
258# #############################################################################
259# Define ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y in order to enable
260# support for the database keeping lists of connections that are assigned
261# on a per TYPE of classifier basis.
262# #############################################################################
263ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y
264ccflags-$(ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE) += -DECM_DB_CTA_TRACK_ENABLE
265
266# #############################################################################
267# Define ECM_BAND_STEERING_ENABLE=y in order to enable
268# band steering feature.
269# #############################################################################
270ECM_BAND_STEERING_ENABLE=y
271ccflags-$(ECM_BAND_STEERING_ENABLE) += -DECM_BAND_STEERING_ENABLE
272
273# #############################################################################
274# Define ECM_INTERFACE_OVPN_ENABLE=y in order
275# to enable support for OVPN acceleration.
276# #############################################################################
277ccflags-$(ECM_INTERFACE_OVPN_ENABLE) += -DECM_INTERFACE_OVPN_ENABLE
278
279# #############################################################################
280# Debug flags, set these to = 0 if you want to disable all debugging for that
281# file.
282# By turning off debugs you gain maximum ECM performance.
283# #############################################################################
284ccflags-y += -DECM_CLASSIFIER_DEBUG_LEVEL=1
285ccflags-y += -DECM_CLASSIFIER_OVS_DEBUG_LEVEL=1
286ccflags-y += -DECM_CLASSIFIER_MARK_DEBUG_LEVEL=1
287ccflags-y += -DECM_CLASSIFIER_DSCP_DEBUG_LEVEL=1
288ccflags-y += -DECM_CLASSIFIER_PCC_DEBUG_LEVEL=1
289ccflags-y += -DECM_CLASSIFIER_DEFAULT_DEBUG_LEVEL=1
290ccflags-y += -DECM_DB_DEBUG_LEVEL=1
291ccflags-y += -DECM_INIT_DEBUG_LEVEL=3
292ccflags-y += -DECM_FRONT_END_IPV4_DEBUG_LEVEL=1
293ccflags-y += -DECM_FRONT_END_IPV6_DEBUG_LEVEL=1
294ccflags-y += -DECM_FRONT_END_COMMON_DEBUG_LEVEL=1
295ccflags-y += -DECM_NSS_IPV4_DEBUG_LEVEL=1
296ccflags-y += -DECM_NSS_PORTED_IPV4_DEBUG_LEVEL=1
297ccflags-y += -DECM_NSS_NON_PORTED_IPV4_DEBUG_LEVEL=1
298ccflags-y += -DECM_NSS_MULTICAST_IPV4_DEBUG_LEVEL=1
299ccflags-y += -DECM_NSS_MULTICAST_IPV6_DEBUG_LEVEL=1
300ccflags-y += -DECM_NSS_IPV6_DEBUG_LEVEL=1
301ccflags-y += -DECM_NSS_PORTED_IPV6_DEBUG_LEVEL=1
302ccflags-y += -DECM_NSS_NON_PORTED_IPV6_DEBUG_LEVEL=1
303ccflags-y += -DECM_SFE_IPV4_DEBUG_LEVEL=1
304ccflags-y += -DECM_SFE_PORTED_IPV4_DEBUG_LEVEL=1
305ccflags-y += -DECM_SFE_NON_PORTED_IPV4_DEBUG_LEVEL=1
306ccflags-y += -DECM_SFE_IPV6_DEBUG_LEVEL=1
307ccflags-y += -DECM_SFE_PORTED_IPV6_DEBUG_LEVEL=1
308ccflags-y += -DECM_SFE_NON_PORTED_IPV6_DEBUG_LEVEL=1
309ccflags-y += -DECM_CONNTRACK_NOTIFIER_DEBUG_LEVEL=1
310ccflags-y += -DECM_TRACKER_DEBUG_LEVEL=1
311ccflags-y += -DECM_TRACKER_DATAGRAM_DEBUG_LEVEL=1
312ccflags-y += -DECM_TRACKER_TCP_DEBUG_LEVEL=1
313ccflags-y += -DECM_TRACKER_UDP_DEBUG_LEVEL=1
314ccflags-y += -DECM_BOND_NOTIFIER_DEBUG_LEVEL=1
315ccflags-y += -DECM_INTERFACE_DEBUG_LEVEL=1
316ccflags-y += -DECM_STATE_DEBUG_LEVEL=1
317ccflags-y += -DECM_OPENWRT_SUPPORT=1
318ccflags-y += -DECM_NOTIFIER_DEBUG_LEVEL=1
319
320ccflags-y += -I$(obj)/ -I$(obj)/ecm_db -I$(obj)/frontends/include -I$(obj)/frontends/nss -I$(obj)/frontends/sfe -I$(obj)/exports
321ccflags-y += -Werror
322
323obj ?= .