1# Copyright (c) 2021-2024 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/ohos.gni")
15import("//foundation/communication/netmanager_base/netmanager_base_config.gni")
16
17config("netsys_native_manager_config") {
18  include_dirs = [
19    "$INNERKITS_ROOT/include",
20    "$NETMANAGER_BASE_ROOT/services/common/include",
21    "$NETMANAGER_BASE_ROOT/utils/common_utils/include",
22    "$INNERKITS_ROOT/netmanagernative/include",
23    "include",
24    "include/manager",
25    "include/netsys",
26    "include/netsys/wrapper",
27    "$FWMARK_CLIENT_DIR/include",
28    "$NETMANAGER_BASE_ROOT/services/netmanagernative/bpf/include",
29    "$NETCONNMANAGER_SOURCE_DIR/include",
30    "$NETCONNMANAGER_SOURCE_DIR/include/stub",
31    "$INNERKITS_ROOT/netconnclient/include/proxy",
32    "$NETSYSCONTROLLER_ROOT_DIR/include",
33  ]
34
35  if (netmanager_base_enable_feature_net_firewall) {
36    defines = [ "FEATURE_NET_FIREWALL_ENABLE" ]
37  }
38}
39
40netsys_native_manager_sources = [
41  "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/dhcp_result_parcel.cpp",
42  "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/netsys_native_service_proxy.cpp",
43  "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/netsys_net_diag_data.cpp",
44  "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/notify_callback_proxy.cpp",
45  "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/uid_range.cpp",
46  "src/dhcp_controller.cpp",
47  "src/manager/bandwidth_manager.cpp",
48  "src/manager/clat_manager.cpp",
49  "src/manager/conn_manager.cpp",
50  "src/manager/dns_manager.cpp",
51  "src/manager/firewall_manager.cpp",
52  "src/manager/interface_manager.cpp",
53  "src/manager/route_manager.cpp",
54  "src/manager/sharing_manager.cpp",
55  "src/manager/traffic_manager.cpp",
56  "src/manager/vnic_manager.cpp",
57  "src/manager/vpn_manager.cpp",
58  "src/net_diag_callback_proxy.cpp",
59  "src/netsys/clat_utils.cpp",
60  "src/netsys/clatd.cpp",
61  "src/netsys/clatd_packet_converter.cpp",
62  "src/netsys/dnsresolv/dns_param_cache.cpp",
63  "src/netsys/dnsresolv/dns_proxy_listen.cpp",
64  "src/netsys/dnsresolv/dns_proxy_request_socket.cpp",
65  "src/netsys/dnsresolv/dns_quality_diag.cpp",
66  "src/netsys/dnsresolv/dns_quality_event_handler.cpp",
67  "src/netsys/dnsresolv/dns_resolv_config.cpp",
68  "src/netsys/dnsresolv/dns_resolv_listen.cpp",
69  "src/netsys/dnsresolv/net_dns_health_callback_proxy.cpp",
70  "src/netsys/dnsresolv/net_dns_health_callback_stub.cpp",
71  "src/netsys/dnsresolv/net_dns_result_callback_proxy.cpp",
72  "src/netsys/dnsresolv/net_dns_result_callback_stub.cpp",
73  "src/netsys/dnsresolv/netsys_net_dns_health_data.cpp",
74  "src/netsys/dnsresolv/netsys_net_dns_result_data.cpp",
75  "src/netsys/fwmark_network.cpp",
76  "src/netsys/iptables_wrapper.cpp",
77  "src/netsys/local_network.cpp",
78  "src/netsys/net_diag_wrapper.cpp",
79  "src/netsys/net_manager_native.cpp",
80  "src/netsys/netlink_msg.cpp",
81  "src/netsys/netlink_socket.cpp",
82  "src/netsys/netlink_socket_diag.cpp",
83  "src/netsys/netsys_network.cpp",
84  "src/netsys/netsys_udp_transfer.cpp",
85  "src/netsys/physical_network.cpp",
86  "src/netsys/virtual_network.cpp",
87  "src/netsys/wrapper/data_receiver.cpp",
88  "src/netsys/wrapper/netlink_manager.cpp",
89  "src/netsys/wrapper/netsys_event_message.cpp",
90  "src/netsys/wrapper/wrapper_decoder.cpp",
91  "src/netsys/wrapper/wrapper_distributor.cpp",
92  "src/netsys/wrapper/wrapper_listener.cpp",
93  "src/netsys_native_service.cpp",
94  "src/netsys_native_service_stub.cpp",
95  "src/notify_callback_stub.cpp",
96]
97
98netsys_native_manager_deps = [
99  "$FWMARK_CLIENT_DIR:fwmark_client",
100  "$INNERKITS_ROOT/netconnclient:net_conn_manager_if",
101  "$NETMANAGERNATIVE_ROOT:netsys_client",
102  "$NETMANAGER_BASE_ROOT/utils:net_manager_common",
103  "bpf:netsys",
104  "bpf:netsys_bpf_utils",
105]
106
107if (netmanager_base_enable_feature_net_firewall) {
108  netsys_native_manager_sources += [
109    "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/netfirewall_callback_proxy.cpp",
110    "$NETSYSNATIVE_SOURCE_DIR/src/netfirewall_callback_stub.cpp",
111  ]
112}
113
114ohos_shared_library("netsys_native_manager") {
115  sanitize = {
116    cfi = true
117    cfi_cross_dso = true
118    debug = false
119  }
120
121  branch_protector_ret = "pac_ret"
122
123  configs = [ ":netsys_native_manager_config" ]
124
125  cflags = [
126    "-fvisibility=hidden",
127    "-fdata-sections",
128    "-ffunction-sections",
129    "-Os",
130    "-fstack-protector-strong",
131    "-D_FORTIFY_SOURCE=2",
132    "-O2",
133  ]
134
135  cflags_cc = [
136    "-fvisibility-inlines-hidden",
137    "-Os",
138    "-fstack-protector-strong",
139    "-D_FORTIFY_SOURCE=2",
140    "-O2",
141  ]
142
143  ldflags = [
144    "-Wl,--exclude-libs=ALL",
145    "-Wl,--gc-sections",
146  ]
147
148  sources = netsys_native_manager_sources
149
150  deps = netsys_native_manager_deps
151
152  defines = [
153    "NETMGRNATIVE_LOG_TAG = \"NetsysNativeService\"",
154    "LOG_DOMAIN = 0xD0015B0",
155    "NETSYS_CONFIG_DEBUG=0",
156    "DNS_CONFIG_DEBUG=0",
157    "NETSYS_DNS_MONITOR=0",
158  ]
159
160  external_deps = [
161    "c_utils:utils",
162    "dhcp:dhcp_sdk",
163    "eventhandler:libeventhandler",
164    "ffrt:libffrt",
165    "init:libbegetutil",
166    "ipc:ipc_core",
167    "iptables:iptables",
168    "iptables:iptables-restore",
169    "iptables:iptables-save",
170    "safwk:system_ability_fwk",
171    "samgr:samgr_proxy",
172  ]
173
174  if (build_selinux) {
175    external_deps += [ "selinux:libselinux" ]
176    defines += [ "USE_SELINUX" ]
177  }
178
179  if (netmanager_base_enable_netsys_access_policy_diag_listen) {
180    defines += [ "ENABLE_NETSYS_ACCESS_POLICY_DIAG_LISTEN" ]
181  }
182
183  public_configs = [ "$NETMANAGER_BASE_ROOT/utils:netmgr_common_config" ]
184
185  if (enable_sys_func) {
186    defines += [ "SYS_FUNC" ]
187  }
188
189  if (enable_server_support_ipv6) {
190    defines += [ "SERVER_SUPPORT_IPV6" ]
191  }
192
193  external_deps += [ "hilog:libhilog" ]
194
195  part_name = "netmanager_base"
196  innerapi_tags = [ "platformsdk_indirect" ]
197  subsystem_name = "communication"
198}
199
200ohos_static_library("netsys_native_manager_static") {
201  testonly = true
202
203  sanitize = {
204    cfi = true
205    cfi_cross_dso = true
206    debug = false
207  }
208
209  branch_protector_ret = "pac_ret"
210
211  sources = netsys_native_manager_sources
212
213  configs = [ ":netsys_native_manager_config" ]
214
215  deps = netsys_native_manager_deps
216
217  external_deps = [
218    "bounds_checking_function:libsec_shared",
219    "c_utils:utils",
220    "dhcp:dhcp_sdk",
221    "eventhandler:libeventhandler",
222    "init:libbegetutil",
223    "ipc:ipc_core",
224    "safwk:system_ability_fwk",
225  ]
226
227  defines = [
228    "NETMGRNATIVE_LOG_TAG = \"NetsysNativeService\"",
229    "LOG_DOMAIN = 0xD0015B0",
230    "NETSYS_CONFIG_DEBUG=0",
231    "DNS_CONFIG_DEBUG=0",
232    "UNITTEST_FORBID_FFRT=1",
233  ]
234
235  if (build_selinux) {
236    external_deps += [ "selinux:libselinux" ]
237    defines += [ "USE_SELINUX" ]
238  }
239
240  if (netmanager_base_enable_netsys_access_policy_diag_listen) {
241    defines += [ "ENABLE_NETSYS_ACCESS_POLICY_DIAG_LISTEN" ]
242  }
243
244  public_configs = [ "$NETMANAGER_BASE_ROOT/utils:netmgr_common_config" ]
245
246  if (enable_sys_func) {
247    defines += [ "SYS_FUNC" ]
248  }
249
250  if (enable_server_support_ipv6) {
251    defines += [ "SERVER_SUPPORT_IPV6" ]
252  }
253
254  external_deps += [
255    "ffrt:libffrt",
256    "hilog:libhilog",
257  ]
258
259  part_name = "netmanager_base"
260  subsystem_name = "communication"
261}
262
263config("netsys_client_public_config") {
264  include_dirs = [ "include/netsys" ]
265}
266
267ohos_shared_library("netsys_client") {
268  sanitize = {
269    cfi = true
270    cfi_cross_dso = true
271    boundary_sanitize = true
272    all_ubsan = true
273    debug = false
274  }
275
276  public_configs = [ ":netsys_client_public_config" ]
277
278  branch_protector_ret = "pac_ret"
279
280  sources = [
281    "src/netsys/netsys_client.c",
282    "src/netsys/netsys_tcp_client.c",
283  ]
284
285  include_dirs = [
286    "$NETMANAGERNATIVE_ROOT/include/netsys",
287    "$FWMARK_CLIENT_DIR/include",
288  ]
289
290  cflags = [
291    "-fstack-protector-strong",
292    "-D_FORTIFY_SOURCE=2",
293    "-O2",
294  ]
295
296  cflags_cc = [
297    "-fstack-protector-strong",
298    "-D_FORTIFY_SOURCE=2",
299    "-O2",
300  ]
301
302  deps = [ "$FWMARK_CLIENT_DIR:fwmark_client" ]
303
304  external_deps = [
305    "c_utils:utils",
306    "hilog:libhilog",
307  ]
308
309  defines = [
310    "NETSYS_CONFIG_DEBUG=0",
311    "NETSYS_CLIENT_DEBUG=0",
312    "NETMGRNATIVE_LOG_TAG = \"NetsysNativeService\"",
313    "LOG_DOMAIN = 0xD0015B0",
314  ]
315
316  innerapi_tags = [ "platformsdk_indirect" ]
317  part_name = "netmanager_base"
318  subsystem_name = "communication"
319}
320