blob: b7ab8a7db7a1a768cf19219eb589c45c3935bc9e [file] [log] [blame]
Ben Menchaca84f36632014-02-28 20:57:38 +00001##########################################################################
Murat Sezgin6d8361e2015-01-21 11:32:06 -08002# Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
Ben Menchaca84f36632014-02-28 20:57:38 +00003# Permission to use, copy, modify, and/or distribute this software for
4# any purpose with or without fee is hereby granted, provided that the
5# above copyright notice and this permission notice appear in all copies.
6# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
7# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
8# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
10# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
11# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
12# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
13##########################################################################
14
15# ###################################################
16# Makefile for the QCA NSS ECM
17# ###################################################
18
Nicolas Costaf46c33b2014-05-15 10:02:00 -050019obj-m += ecm.o
20
Hai Shalom81f4e202014-06-04 09:30:27 -070021ecm-y := \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050022 ecm_tracker_udp.o \
23 ecm_tracker_tcp.o \
24 ecm_tracker_datagram.o \
25 ecm_tracker.o \
Murat Sezgin3ab259d2015-06-11 14:15:35 -070026 frontends/ecm_front_end_ipv4.o \
27 frontends/ecm_front_end_ipv6.o \
Murat Sezgin5f138492015-06-11 15:18:27 -070028 frontends/ecm_front_end_common.o \
Murat Sezgin8d916a12015-03-18 15:56:50 -070029 frontends/nss/ecm_nss_ipv4.o \
30 frontends/nss/ecm_nss_ported_ipv4.o \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050031 ecm_db.o \
32 ecm_classifier_default.o \
Murat Sezgin5f138492015-06-11 15:18:27 -070033 frontends/nss/ecm_nss_conntrack_notifier.o \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050034 ecm_interface.o \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050035 ecm_init.o
Ben Menchaca84f36632014-02-28 20:57:38 +000036
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080037# #############################################################################
38# Define ECM_INTERFACE_BOND_ENABLE=y in order to enable
39# Bonding / Link Aggregation support.
40# #############################################################################
Murat Sezgin2a0b2432014-11-26 14:53:57 -080041ifneq ($(findstring 3.4, $(KERNELVERSION)),)
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080042ECM_INTERFACE_BOND_ENABLE=y
43endif
44ecm-$(ECM_INTERFACE_BOND_ENABLE) += ecm_bond_notifier.o
45ccflags-$(ECM_INTERFACE_BOND_ENABLE) += -DECM_INTERFACE_BOND_ENABLE
Hai Shalom81f4e202014-06-04 09:30:27 -070046
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080047# #############################################################################
Gareth Williams141d2382014-11-25 11:35:19 -080048# Define ECM_INTERFACE_PPP_ENABLE=y in order
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080049# to enable support for PPP and, specifically, PPPoE acceleration.
50# #############################################################################
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080051ECM_INTERFACE_PPP_ENABLE=y
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080052ccflags-$(ECM_INTERFACE_PPP_ENABLE) += -DECM_INTERFACE_PPP_ENABLE
53
54# #############################################################################
Murat Sezginb3731e82014-11-26 12:20:59 -080055# Define ECM_INTERFACE_SIT_ENABLE=y in order
56# to enable support for SIT interface.
57# #############################################################################
Murat Sezgin2a0b2432014-11-26 14:53:57 -080058ifneq ($(findstring 3.4, $(KERNELVERSION)),)
Murat Sezginb3731e82014-11-26 12:20:59 -080059ECM_INTERFACE_SIT_ENABLE=y
60endif
61ccflags-$(ECM_INTERFACE_SIT_ENABLE) += -DECM_INTERFACE_SIT_ENABLE
62
63# #############################################################################
Murat Sezginc1402562015-03-12 12:32:20 -070064# Define ECM_INTERFACE_TUNIPIP6_ENABLE=y in order
65# to enable support for TUNIPIP6 interface.
66# #############################################################################
67ifneq ($(findstring 3.4, $(KERNELVERSION)),)
68ECM_INTERFACE_TUNIPIP6_ENABLE=y
69endif
70ccflags-$(ECM_INTERFACE_TUNIPIP6_ENABLE) += -DECM_INTERFACE_TUNIPIP6_ENABLE
71
72# #############################################################################
Shyam Sunder1f037262015-05-18 20:04:13 +053073# Define ECM_MULTICAST_ENABLE=y in order to enable support for ECM Multicast
74# #############################################################################
75ifneq ($(findstring 3.4, $(KERNELVERSION)),)
Kiran Kumar C.S.K9e209e02015-06-25 12:01:27 +053076ECM_MULTICAST_ENABLE=y
Shyam Sunder1f037262015-05-18 20:04:13 +053077endif
Shyam Sunderdd682692015-05-04 18:15:18 +053078ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv4.o
Murat Sezgin3ab259d2015-06-11 14:15:35 -070079ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv6.o
Shyam Sunder1f037262015-05-18 20:04:13 +053080ccflags-$(ECM_MULTICAST_ENABLE) += -DECM_MULTICAST_ENABLE
81
82# #############################################################################
Gareth Williams141d2382014-11-25 11:35:19 -080083# Define ECM_INTERFACE_VLAN_ENABLE=y in order to enable support for VLAN
84# #############################################################################
Gareth Williams141d2382014-11-25 11:35:19 -080085ECM_INTERFACE_VLAN_ENABLE=y
Gareth Williams141d2382014-11-25 11:35:19 -080086ccflags-$(ECM_INTERFACE_VLAN_ENABLE) += -DECM_INTERFACE_VLAN_ENABLE
87
88# #############################################################################
Murat Sezgin69a27532015-03-12 14:09:40 -070089# Define ECM_INTERFACE_IPSEC_ENABLE=y in order to enable support for IPSEC
90# #############################################################################
91ECM_INTERFACE_IPSEC_ENABLE=y
92ccflags-$(ECM_INTERFACE_IPSEC_ENABLE) += -DECM_INTERFACE_IPSEC_ENABLE
93
94# #############################################################################
Gareth Williams8ac34292015-03-17 14:06:58 +000095# Define ECM_IPV6_ENABLE=y in order to enable IPv6 support in the ECM.
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080096# #############################################################################
Gareth Williams8ac34292015-03-17 14:06:58 +000097ECM_IPV6_ENABLE=y
Murat Sezgin3ab259d2015-06-11 14:15:35 -070098ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ipv6.o
99ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ported_ipv6.o
Gareth Williams8ac34292015-03-17 14:06:58 +0000100ccflags-$(ECM_IPV6_ENABLE) += -DECM_IPV6_ENABLE
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800101
102# #############################################################################
103# Define ECM_CLASSIFIER_NL_ENABLE=y in order to enable NL classifier.
104# #############################################################################
Murat Sezgin2a0b2432014-11-26 14:53:57 -0800105ifneq ($(findstring 3.4, $(KERNELVERSION)),)
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800106ECM_CLASSIFIER_NL_ENABLE=y
107endif
108ecm-$(ECM_CLASSIFIER_NL_ENABLE) += ecm_classifier_nl.o
109ccflags-$(ECM_CLASSIFIER_NL_ENABLE) += -DECM_CLASSIFIER_NL_ENABLE
110
111# #############################################################################
112# Define ECM_CLASSIFIER_DSCP_ENABLE=y in order to enable DSCP classifier.
113# #############################################################################
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800114ECM_CLASSIFIER_DSCP_ENABLE=y
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800115ecm-$(ECM_CLASSIFIER_DSCP_ENABLE) += ecm_classifier_dscp.o
116ccflags-$(ECM_CLASSIFIER_DSCP_ENABLE) += -DECM_CLASSIFIER_DSCP_ENABLE
117
118# #############################################################################
119# Define ECM_CLASSIFIER_HYFI_ENABLE=y in order to enable
120# the Hy-Fi classifier in ECM. Currently disabled until the integration
121# with Hy-Fi is completed.
122# #############################################################################
123ecm-$(ECM_CLASSIFIER_HYFI_ENABLE) += ecm_classifier_hyfi.o
124ccflags-$(ECM_CLASSIFIER_HYFI_ENABLE) += -DECM_CLASSIFIER_HYFI_ENABLE
125
126# #############################################################################
Gareth Williamsdcda9b92015-05-13 10:08:15 +0100127# Define ECM_CLASSIFIER_PCC_ENABLE=y in order to enable
128# the Parental Controls subsystem classifier in ECM. Currently disabled until
129# customers require it / if they need to integrate their Parental Controls with it.
130# #############################################################################
131ECM_CLASSIFIER_PCC_ENABLE=y
132ecm-$(ECM_CLASSIFIER_PCC_ENABLE) += ecm_classifier_pcc.o
133ccflags-$(ECM_CLASSIFIER_PCC_ENABLE) += -DECM_CLASSIFIER_PCC_ENABLE
134
135# #############################################################################
Murat Sezgin8d916a12015-03-18 15:56:50 -0700136# Define ECM_NON_PORTED_SUPPORT_ENABLE=y in order to enable non-ported protocol.
137# #############################################################################
138ECM_NON_PORTED_SUPPORT_ENABLE=y
139ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv4.o
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700140ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv6.o
Murat Sezgin8d916a12015-03-18 15:56:50 -0700141ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE) += -DECM_NON_PORTED_SUPPORT_ENABLE
142
Gareth Williamsf98d4192015-03-11 16:55:41 +0000143# #############################################################################
144# Define ECM_STATE_OUTPUT_ENABLE=y to support XML state output
145# #############################################################################
146ECM_STATE_OUTPUT_ENABLE=y
147ecm-$(ECM_STATE_OUTPUT_ENABLE) += ecm_state.o
148ccflags-$(ECM_STATE_OUTPUT_ENABLE) += -DECM_STATE_OUTPUT_ENABLE
Murat Sezgin8d916a12015-03-18 15:56:50 -0700149
150# #############################################################################
Gareth Williams85331c92015-03-11 20:39:18 +0000151# Define ECM_DB_ADVANCED_STATS_ENABLE to support XML state output
152# #############################################################################
153ECM_DB_ADVANCED_STATS_ENABLE=y
154ccflags-$(ECM_DB_ADVANCED_STATS_ENABLE) += -DECM_DB_ADVANCED_STATS_ENABLE
155
156# #############################################################################
Gareth Williamsb5903892015-03-20 15:13:07 +0000157# Define ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y in order to enable
158# the database to track relationships between objects.
159# #############################################################################
160ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y
161ccflags-$(ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE) += -DECM_DB_XREF_ENABLE
162
163# #############################################################################
Gareth Williams88be3722015-03-23 19:51:01 +0000164# Define ECM_TRACKER_DPI_SUPPORT_ENABLE=y in order to enable support for
165# deep packet inspection and tracking of data with the trackers.
166# #############################################################################
167ECM_TRACKER_DPI_SUPPORT_ENABLE=y
168ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE
169
170# #############################################################################
Gareth Williamsb39e7c22015-03-25 10:15:33 +0000171# Define ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y in order to enable
172# support for the database keeping lists of connections that are assigned
173# on a per TYPE of classifier basis.
174# #############################################################################
175ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y
176ccflags-$(ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE) += -DECM_DB_CTA_TRACK_ENABLE
177
178# #############################################################################
Murat Sezgin8c345822015-05-27 15:35:38 -0700179# Define ECM_BAND_STEERING_ENABLE=y in order to enable
180# band steering feature.
181# #############################################################################
182ECM_BAND_STEERING_ENABLE=y
183ccflags-$(ECM_BAND_STEERING_ENABLE) += -DECM_BAND_STEERING_ENABLE
184
185# #############################################################################
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800186# Debug flags, set these to = 0 if you want to disable all debugging for that
187# file.
188# By turning off debugs you gain maximum ECM performance.
189# #############################################################################
Gareth Williams8932a912014-06-11 18:06:25 -0700190ccflags-y += -DECM_CLASSIFIER_DSCP_DEBUG_LEVEL=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000191ccflags-y += -DECM_CLASSIFIER_HYFI_DEBUG_LEVEL=1
Gareth Williamsdcda9b92015-05-13 10:08:15 +0100192ccflags-y += -DECM_CLASSIFIER_PCC_DEBUG_LEVEL=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000193ccflags-y += -DECM_CLASSIFIER_NL_DEBUG_LEVEL=1
194ccflags-y += -DECM_CLASSIFIER_DEFAULT_DEBUG_LEVEL=1
195ccflags-y += -DECM_DB_DEBUG_LEVEL=1
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700196ccflags-y += -DECM_INIT_DEBUG_LEVEL=3
Ben Menchaca84f36632014-02-28 20:57:38 +0000197ccflags-y += -DECM_FRONT_END_IPV4_DEBUG_LEVEL=1
198ccflags-y += -DECM_FRONT_END_IPV6_DEBUG_LEVEL=1
Murat Sezgin5f138492015-06-11 15:18:27 -0700199ccflags-y += -DECM_FRONT_END_COMMON_DEBUG_LEVEL=1
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700200ccflags-y += -DECM_NSS_IPV4_DEBUG_LEVEL=1
201ccflags-y += -DECM_NSS_PORTED_IPV4_DEBUG_LEVEL=1
202ccflags-y += -DECM_NSS_NON_PORTED_IPV4_DEBUG_LEVEL=1
203ccflags-y += -DECM_NSS_MULTICAST_IPV4_DEBUG_LEVEL=1
204ccflags-y += -DECM_NSS_IPV6_DEBUG_LEVEL=1
205ccflags-y += -DECM_NSS_PORTED_IPV6_DEBUG_LEVEL=1
206ccflags-y += -DECM_NSS_NON_PORTED_IPV6_DEBUG_LEVEL=1
207ccflags-y += -DECM_NSS_MULTICAST_IPV6_DEBUG_LEVEL=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000208ccflags-y += -DECM_CONNTRACK_NOTIFIER_DEBUG_LEVEL=1
209ccflags-y += -DECM_TRACKER_DEBUG_LEVEL=1
210ccflags-y += -DECM_TRACKER_DATAGRAM_DEBUG_LEVEL=1
211ccflags-y += -DECM_TRACKER_TCP_DEBUG_LEVEL=1
212ccflags-y += -DECM_TRACKER_UDP_DEBUG_LEVEL=1
213ccflags-y += -DECM_BOND_NOTIFIER_DEBUG_LEVEL=1
214ccflags-y += -DECM_INTERFACE_DEBUG_LEVEL=1
Gareth Williamsf98d4192015-03-11 16:55:41 +0000215ccflags-y += -DECM_STATE_DEBUG_LEVEL=1
Stephen Wangaa7e5f72015-05-12 15:25:12 -0700216ccflags-y += -DECM_OPENWRT_SUPPORT=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000217
Murat Sezgin8d916a12015-03-18 15:56:50 -0700218ccflags-y += -I$(obj)/ -I$(obj)/frontends/include -I$(obj)/frontends/nss
Murat Sezgin7c12aba2015-03-16 12:01:57 -0700219
Ben Menchaca84f36632014-02-28 20:57:38 +0000220obj ?= .
221