1########################################################################## 2# Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. 3# 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 19obj-m += ecm.o 20 21ecm-y := \ 22 ecm_tracker_udp.o \ 23 ecm_tracker_tcp.o \ 24 ecm_tracker_datagram.o \ 25 ecm_tracker.o \ 26 frontends/ecm_front_end_ipv4.o \ 27 frontends/ecm_front_end_ipv6.o \ 28 frontends/ecm_front_end_common.o \ 29 ecm_db.o \ 30 ecm_classifier_default.o \ 31 ecm_interface.o \ 32 ecm_init.o 33 34# ############################################################################# 35# Define ECM_FRONT_END_NSS_ENABLE=y in order to select 36# nss as ECM's front end. 37# ############################################################################# 38ifeq ($(ECM_FRONT_END_NSS_ENABLE),) 39ECM_FRONT_END_NSS_ENABLE=y 40endif 41ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_ipv4.o 42ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_ported_ipv4.o 43ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_conntrack_notifier.o 44ccflags-$(ECM_FRONT_END_NSS_ENABLE) += -DECM_FRONT_END_NSS_ENABLE 45 46# ############################################################################# 47# Define ECM_FRONT_END_SFE_ENABLE=y in order to select 48# sfe as ECM's front end. 49# ############################################################################# 50ifeq ($(ECM_FRONT_END_SFE_ENABLE),) 51ECM_FRONT_END_SFE_ENABLE=y 52endif 53ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_ipv4.o 54ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_ported_ipv4.o 55ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_conntrack_notifier.o 56ccflags-$(ECM_FRONT_END_SFE_ENABLE) += -DECM_FRONT_END_SFE_ENABLE 57 58# ############################################################################# 59# Define ECM_INTERFACE_BOND_ENABLE=y in order to enable 60# Bonding / Link Aggregation support. 61# ############################################################################# 62ifeq ($(ECM_FRONT_END_NSS_ENABLE), y) 63ifneq ($(findstring 3.4, $(KERNELVERSION)),) 64ECM_INTERFACE_BOND_ENABLE=y 65endif 66endif 67ecm-$(ECM_INTERFACE_BOND_ENABLE) += frontends/nss/ecm_nss_bond_notifier.o 68ccflags-$(ECM_INTERFACE_BOND_ENABLE) += -DECM_INTERFACE_BOND_ENABLE 69 70# ############################################################################# 71# Define ECM_INTERFACE_PPP_ENABLE=y in order 72# to enable support for PPP and, specifically, PPPoE acceleration. 73# ############################################################################# 74ECM_INTERFACE_PPP_ENABLE=y 75ccflags-$(ECM_INTERFACE_PPP_ENABLE) += -DECM_INTERFACE_PPP_ENABLE 76 77# ############################################################################# 78# Define ECM_INTERFACE_SIT_ENABLE=y in order 79# to enable support for SIT interface. 80# ############################################################################# 81ECM_INTERFACE_SIT_ENABLE=y 82ccflags-$(ECM_INTERFACE_SIT_ENABLE) += -DECM_INTERFACE_SIT_ENABLE 83 84# ############################################################################# 85# Define ECM_INTERFACE_TUNIPIP6_ENABLE=y in order 86# to enable support for TUNIPIP6 interface. 87# ############################################################################# 88ECM_INTERFACE_TUNIPIP6_ENABLE=y 89ccflags-$(ECM_INTERFACE_TUNIPIP6_ENABLE) += -DECM_INTERFACE_TUNIPIP6_ENABLE 90 91# ############################################################################# 92# Define ECM_MULTICAST_ENABLE=y in order to enable support for ECM Multicast 93# ############################################################################# 94ifeq ($(ECM_FRONT_END_NSS_ENABLE), y) 95ifneq ($(findstring 3.4, $(KERNELVERSION)),) 96ECM_MULTICAST_ENABLE=y 97endif 98endif 99ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv4.o 100ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv6.o 101ccflags-$(ECM_MULTICAST_ENABLE) += -DECM_MULTICAST_ENABLE 102 103# ############################################################################# 104# Define ECM_INTERFACE_VLAN_ENABLE=y in order to enable support for VLAN 105# ############################################################################# 106ECM_INTERFACE_VLAN_ENABLE=y 107ccflags-$(ECM_INTERFACE_VLAN_ENABLE) += -DECM_INTERFACE_VLAN_ENABLE 108 109# ############################################################################# 110# Define ECM_INTERFACE_IPSEC_ENABLE=y in order to enable support for IPSEC 111# ############################################################################# 112ECM_INTERFACE_IPSEC_ENABLE=y 113ccflags-$(ECM_INTERFACE_IPSEC_ENABLE) += -DECM_INTERFACE_IPSEC_ENABLE 114 115# ############################################################################# 116# Define ECM_IPV6_ENABLE=y in order to enable IPv6 support in the ECM. 117# ############################################################################# 118ECM_IPV6_ENABLE=y 119ifeq ($(ECM_FRONT_END_NSS_ENABLE), y) 120ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ipv6.o 121ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ported_ipv6.o 122endif 123ifeq ($(ECM_FRONT_END_SFE_ENABLE), y) 124ecm-$(ECM_IPV6_ENABLE) += frontends/sfe/ecm_sfe_ipv6.o 125ecm-$(ECM_IPV6_ENABLE) += frontends/sfe/ecm_sfe_ported_ipv6.o 126endif 127ccflags-$(ECM_IPV6_ENABLE) += -DECM_IPV6_ENABLE 128 129# ############################################################################# 130# Define ECM_CLASSIFIER_NL_ENABLE=y in order to enable NL classifier. 131# ############################################################################# 132ifneq ($(findstring 3.4, $(KERNELVERSION)),) 133ECM_CLASSIFIER_NL_ENABLE=y 134endif 135ecm-$(ECM_CLASSIFIER_NL_ENABLE) += ecm_classifier_nl.o 136ccflags-$(ECM_CLASSIFIER_NL_ENABLE) += -DECM_CLASSIFIER_NL_ENABLE 137 138# ############################################################################# 139# Define ECM_CLASSIFIER_DSCP_ENABLE=y in order to enable DSCP classifier. 140# ############################################################################# 141ECM_CLASSIFIER_DSCP_ENABLE=y 142ecm-$(ECM_CLASSIFIER_DSCP_ENABLE) += ecm_classifier_dscp.o 143ccflags-$(ECM_CLASSIFIER_DSCP_ENABLE) += -DECM_CLASSIFIER_DSCP_ENABLE 144 145# ############################################################################# 146# Define ECM_CLASSIFIER_HYFI_ENABLE=y in order to enable 147# the Hy-Fi classifier in ECM. Currently disabled until the integration 148# with Hy-Fi is completed. 149# ############################################################################# 150ecm-$(ECM_CLASSIFIER_HYFI_ENABLE) += ecm_classifier_hyfi.o 151ccflags-$(ECM_CLASSIFIER_HYFI_ENABLE) += -DECM_CLASSIFIER_HYFI_ENABLE 152 153# ############################################################################# 154# Define ECM_CLASSIFIER_PCC_ENABLE=y in order to enable 155# the Parental Controls subsystem classifier in ECM. Currently disabled until 156# customers require it / if they need to integrate their Parental Controls with it. 157# ############################################################################# 158ECM_CLASSIFIER_PCC_ENABLE=y 159ecm-$(ECM_CLASSIFIER_PCC_ENABLE) += ecm_classifier_pcc.o 160ccflags-$(ECM_CLASSIFIER_PCC_ENABLE) += -DECM_CLASSIFIER_PCC_ENABLE 161 162# ############################################################################# 163# Define ECM_NON_PORTED_SUPPORT_ENABLE=y in order to enable non-ported protocol. 164# ############################################################################# 165ECM_NON_PORTED_SUPPORT_ENABLE=y 166ifeq ($(ECM_FRONT_END_NSS_ENABLE), y) 167ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv4.o 168ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv6.o 169endif 170ifeq ($(ECM_FRONT_END_SFE_ENABLE), y) 171ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/sfe/ecm_sfe_non_ported_ipv4.o 172ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/sfe/ecm_sfe_non_ported_ipv6.o 173endif 174ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE) += -DECM_NON_PORTED_SUPPORT_ENABLE 175 176# ############################################################################# 177# Define ECM_STATE_OUTPUT_ENABLE=y to support XML state output 178# ############################################################################# 179ECM_STATE_OUTPUT_ENABLE=y 180ecm-$(ECM_STATE_OUTPUT_ENABLE) += ecm_state.o 181ccflags-$(ECM_STATE_OUTPUT_ENABLE) += -DECM_STATE_OUTPUT_ENABLE 182 183# ############################################################################# 184# Define ECM_DB_ADVANCED_STATS_ENABLE to support XML state output 185# ############################################################################# 186ECM_DB_ADVANCED_STATS_ENABLE=y 187ccflags-$(ECM_DB_ADVANCED_STATS_ENABLE) += -DECM_DB_ADVANCED_STATS_ENABLE 188 189# ############################################################################# 190# Define ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y in order to enable 191# the database to track relationships between objects. 192# ############################################################################# 193ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y 194ccflags-$(ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE) += -DECM_DB_XREF_ENABLE 195 196# ############################################################################# 197# Define ECM_TRACKER_DPI_SUPPORT_ENABLE=y in order to enable support for 198# deep packet inspection and tracking of data with the trackers. 199# ############################################################################# 200ECM_TRACKER_DPI_SUPPORT_ENABLE=y 201ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE 202 203# ############################################################################# 204# Define ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y in order to enable 205# support for the database keeping lists of connections that are assigned 206# on a per TYPE of classifier basis. 207# ############################################################################# 208ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y 209ccflags-$(ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE) += -DECM_DB_CTA_TRACK_ENABLE 210 211# ############################################################################# 212# Define ECM_BAND_STEERING_ENABLE=y in order to enable 213# band steering feature. 214# ############################################################################# 215ECM_BAND_STEERING_ENABLE=y 216ccflags-$(ECM_BAND_STEERING_ENABLE) += -DECM_BAND_STEERING_ENABLE 217 218# ############################################################################# 219# Debug flags, set these to = 0 if you want to disable all debugging for that 220# file. 221# By turning off debugs you gain maximum ECM performance. 222# ############################################################################# 223ccflags-y += -DECM_CLASSIFIER_DSCP_DEBUG_LEVEL=1 224ccflags-y += -DECM_CLASSIFIER_HYFI_DEBUG_LEVEL=1 225ccflags-y += -DECM_CLASSIFIER_PCC_DEBUG_LEVEL=1 226ccflags-y += -DECM_CLASSIFIER_NL_DEBUG_LEVEL=1 227ccflags-y += -DECM_CLASSIFIER_DEFAULT_DEBUG_LEVEL=1 228ccflags-y += -DECM_DB_DEBUG_LEVEL=1 229ccflags-y += -DECM_INIT_DEBUG_LEVEL=3 230ccflags-y += -DECM_FRONT_END_IPV4_DEBUG_LEVEL=1 231ccflags-y += -DECM_FRONT_END_IPV6_DEBUG_LEVEL=1 232ccflags-y += -DECM_FRONT_END_COMMON_DEBUG_LEVEL=1 233ccflags-y += -DECM_NSS_IPV4_DEBUG_LEVEL=1 234ccflags-y += -DECM_NSS_PORTED_IPV4_DEBUG_LEVEL=1 235ccflags-y += -DECM_NSS_NON_PORTED_IPV4_DEBUG_LEVEL=1 236ccflags-y += -DECM_NSS_MULTICAST_IPV4_DEBUG_LEVEL=1 237ccflags-y += -DECM_NSS_IPV6_DEBUG_LEVEL=1 238ccflags-y += -DECM_NSS_PORTED_IPV6_DEBUG_LEVEL=1 239ccflags-y += -DECM_NSS_NON_PORTED_IPV6_DEBUG_LEVEL=1 240ccflags-y += -DECM_NSS_MULTICAST_IPV6_DEBUG_LEVEL=1 241ccflags-y += -DECM_SFE_IPV4_DEBUG_LEVEL=1 242ccflags-y += -DECM_SFE_PORTED_IPV4_DEBUG_LEVEL=1 243ccflags-y += -DECM_SFE_NON_PORTED_IPV4_DEBUG_LEVEL=1 244ccflags-y += -DECM_SFE_IPV6_DEBUG_LEVEL=1 245ccflags-y += -DECM_SFE_PORTED_IPV6_DEBUG_LEVEL=1 246ccflags-y += -DECM_SFE_NON_PORTED_IPV6_DEBUG_LEVEL=1 247ccflags-y += -DECM_CONNTRACK_NOTIFIER_DEBUG_LEVEL=1 248ccflags-y += -DECM_TRACKER_DEBUG_LEVEL=1 249ccflags-y += -DECM_TRACKER_DATAGRAM_DEBUG_LEVEL=1 250ccflags-y += -DECM_TRACKER_TCP_DEBUG_LEVEL=1 251ccflags-y += -DECM_TRACKER_UDP_DEBUG_LEVEL=1 252ccflags-y += -DECM_BOND_NOTIFIER_DEBUG_LEVEL=1 253ccflags-y += -DECM_INTERFACE_DEBUG_LEVEL=1 254ccflags-y += -DECM_STATE_DEBUG_LEVEL=1 255ccflags-y += -DECM_OPENWRT_SUPPORT=1 256 257ccflags-y += -I$(obj)/ -I$(obj)/frontends/include -I$(obj)/frontends/nss -I$(obj)/frontends/sfe 258 259obj ?= . 260 261