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 "$NETMANAGER_BASE_ROOT/services/netmanagernative/include/netsys", 34 ] 35 36 defines = [] 37 if (netmanager_base_enable_feature_net_firewall) { 38 defines += [ "FEATURE_NET_FIREWALL_ENABLE" ] 39 } 40 41 if (netmanager_base_enable_feature_wearable_distributed_net) { 42 defines += [ "FEATURE_WEARABLE_DISTRIBUTED_NET_ENABLE" ] 43 } 44 45 if (is_emulator) { 46 defines += [ "EMLULATOR_PLATFORM" ] 47 } 48 49 if (netmanager_base_enable_public_dns_server && !is_emulator) { 50 defines += [ "ENABLE_PUBLIC_DNS_SERVER" ] 51 } 52} 53 54netsys_native_manager_sources = [ 55 "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/dhcp_result_parcel.cpp", 56 "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/netsys_native_service_proxy.cpp", 57 "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/netsys_net_diag_data.cpp", 58 "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/notify_callback_proxy.cpp", 59 "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/uid_range.cpp", 60 "src/dhcp_controller.cpp", 61 "src/manager/bandwidth_manager.cpp", 62 "src/manager/clat_manager.cpp", 63 "src/manager/conn_manager.cpp", 64 "src/manager/distributed_manager.cpp", 65 "src/manager/dns_manager.cpp", 66 "src/manager/firewall_manager.cpp", 67 "src/manager/interface_manager.cpp", 68 "src/manager/route_manager.cpp", 69 "src/manager/sharing_manager.cpp", 70 "src/manager/traffic_manager.cpp", 71 "src/manager/vnic_manager.cpp", 72 "src/manager/vpn_manager.cpp", 73 "src/net_diag_callback_proxy.cpp", 74 "src/netsys/clat_utils.cpp", 75 "src/netsys/clatd.cpp", 76 "src/netsys/clatd_packet_converter.cpp", 77 "src/netsys/dnsresolv/dns_param_cache.cpp", 78 "src/netsys/dnsresolv/dns_proxy_listen.cpp", 79 "src/netsys/dnsresolv/dns_proxy_request_socket.cpp", 80 "src/netsys/dnsresolv/dns_quality_diag.cpp", 81 "src/netsys/dnsresolv/dns_quality_event_handler.cpp", 82 "src/netsys/dnsresolv/dns_resolv_config.cpp", 83 "src/netsys/dnsresolv/dns_resolv_listen.cpp", 84 "src/netsys/dnsresolv/net_dns_health_callback_proxy.cpp", 85 "src/netsys/dnsresolv/net_dns_health_callback_stub.cpp", 86 "src/netsys/dnsresolv/net_dns_result_callback_proxy.cpp", 87 "src/netsys/dnsresolv/net_dns_result_callback_stub.cpp", 88 "src/netsys/dnsresolv/netsys_net_dns_health_data.cpp", 89 "src/netsys/dnsresolv/netsys_net_dns_result_data.cpp", 90 "src/netsys/fwmark_network.cpp", 91 "src/netsys/iptables_wrapper.cpp", 92 "src/netsys/local_network.cpp", 93 "src/netsys/net_diag_wrapper.cpp", 94 "src/netsys/net_manager_native.cpp", 95 "src/netsys/netlink_msg.cpp", 96 "src/netsys/netlink_socket.cpp", 97 "src/netsys/netlink_socket_diag.cpp", 98 "src/netsys/netsys_network.cpp", 99 "src/netsys/netsys_udp_transfer.cpp", 100 "src/netsys/physical_network.cpp", 101 "src/netsys/virtual_network.cpp", 102 "src/netsys/wrapper/data_receiver.cpp", 103 "src/netsys/wrapper/netlink_manager.cpp", 104 "src/netsys/wrapper/netsys_event_message.cpp", 105 "src/netsys/wrapper/wrapper_decoder.cpp", 106 "src/netsys/wrapper/wrapper_distributor.cpp", 107 "src/netsys/wrapper/wrapper_listener.cpp", 108 "src/netsys_native_service.cpp", 109 "src/netsys_native_service_stub.cpp", 110 "src/netsys_traffic_callback_proxy.cpp", 111 "src/netsys_traffic_callback_stub.cpp", 112 "src/notify_callback_stub.cpp", 113] 114 115netsys_native_manager_deps = [ 116 "$FWMARK_CLIENT_DIR:fwmark_client", 117 "$INNERKITS_ROOT/netconnclient:net_conn_manager_if", 118 "$NETMANAGERNATIVE_ROOT:netsys_client", 119 "$NETMANAGER_BASE_ROOT/utils:net_manager_common", 120 "bpf:netsys", 121 "bpf:netsys_bpf_utils", 122] 123 124if (netmanager_base_enable_feature_net_firewall) { 125 netsys_native_manager_sources += [ 126 "$NETSYSNATIVE_INNERKITS_SOURCE_DIR/netfirewall_callback_proxy.cpp", 127 "$NETSYSNATIVE_SOURCE_DIR/src/netfirewall_callback_stub.cpp", 128 ] 129} 130 131if (netmanager_base_enable_feature_wearable_distributed_net) { 132 netsys_native_manager_sources += 133 [ "src/manager/wearable_distributed_net_manager.cpp" ] 134} 135 136ohos_shared_library("netsys_native_manager") { 137 sanitize = { 138 cfi = true 139 cfi_cross_dso = true 140 debug = false 141 } 142 143 branch_protector_ret = "pac_ret" 144 145 configs = [ ":netsys_native_manager_config" ] 146 147 cflags = [ 148 "-fvisibility=hidden", 149 "-fdata-sections", 150 "-ffunction-sections", 151 "-Os", 152 "-fstack-protector-strong", 153 "-D_FORTIFY_SOURCE=2", 154 "-O2", 155 ] 156 157 cflags_cc = [ 158 "-fvisibility-inlines-hidden", 159 "-Os", 160 "-fstack-protector-strong", 161 "-D_FORTIFY_SOURCE=2", 162 "-O2", 163 ] 164 165 ldflags = [ 166 "-Wl,--exclude-libs=ALL", 167 "-Wl,--gc-sections", 168 ] 169 170 sources = netsys_native_manager_sources 171 if (netmanager_base_enable_feature_sysvpn) { 172 cflags += [ "-DSUPPORT_SYSVPN" ] 173 cflags_cc += [ "-DSUPPORT_SYSVPN" ] 174 sources += [ "src/netsys/system_vpn_wrapper.cpp" ] 175 } 176 deps = netsys_native_manager_deps 177 178 defines = [ 179 "NETMGRNATIVE_LOG_TAG = \"NetsysNativeService\"", 180 "LOG_DOMAIN = 0xD0015B0", 181 "NETSYS_CONFIG_DEBUG=0", 182 "DNS_CONFIG_DEBUG=0", 183 "NETSYS_DNS_MONITOR=0", 184 "IPTABLES_CONFIG_PATH = \"/system/etc/wearable_distributed_net_forward.json\"", 185 ] 186 187 external_deps = [ 188 "cJSON:cjson", 189 "c_utils:utils", 190 "dhcp:dhcp_sdk", 191 "eventhandler:libeventhandler", 192 "ffrt:libffrt", 193 "init:libbegetutil", 194 "ipc:ipc_core", 195 "iptables:iptables", 196 "iptables:iptables-restore", 197 "iptables:iptables-save", 198 "safwk:system_ability_fwk", 199 "samgr:samgr_proxy", 200 ] 201 202 if (build_selinux) { 203 external_deps += [ "selinux:libselinux" ] 204 defines += [ "USE_SELINUX" ] 205 } 206 207 if (netmanager_base_enable_netsys_access_policy_diag_listen) { 208 defines += [ "ENABLE_NETSYS_ACCESS_POLICY_DIAG_LISTEN" ] 209 } 210 211 public_configs = [ "$NETMANAGER_BASE_ROOT/utils:netmgr_common_config" ] 212 213 if (enable_sys_func) { 214 defines += [ "SYS_FUNC" ] 215 } 216 217 if (enable_server_support_ipv6) { 218 defines += [ "SERVER_SUPPORT_IPV6" ] 219 } 220 221 external_deps += [ "hilog:libhilog" ] 222 223 if (defined(global_parts_info) && 224 defined(global_parts_info.resourceschedule_qos_manager)) { 225 defines += [ "QOS_MANAGER_ENABLE" ] 226 external_deps += [ "qos_manager:qos" ] 227 external_deps += [ "qos_manager:concurrent_task_client" ] 228 } 229 230 part_name = "netmanager_base" 231 innerapi_tags = [ "platformsdk_indirect" ] 232 subsystem_name = "communication" 233} 234 235ohos_static_library("netsys_native_manager_static") { 236 testonly = true 237 238 sanitize = { 239 cfi = true 240 cfi_cross_dso = true 241 debug = false 242 } 243 244 branch_protector_ret = "pac_ret" 245 246 sources = netsys_native_manager_sources 247 248 configs = [ ":netsys_native_manager_config" ] 249 250 deps = netsys_native_manager_deps 251 252 external_deps = [ 253 "bounds_checking_function:libsec_shared", 254 "cJSON:cjson", 255 "c_utils:utils", 256 "dhcp:dhcp_sdk", 257 "eventhandler:libeventhandler", 258 "init:libbegetutil", 259 "ipc:ipc_core", 260 "safwk:system_ability_fwk", 261 ] 262 263 defines = [ 264 "NETMGRNATIVE_LOG_TAG = \"NetsysNativeService\"", 265 "LOG_DOMAIN = 0xD0015B0", 266 "NETSYS_CONFIG_DEBUG=0", 267 "DNS_CONFIG_DEBUG=0", 268 "UNITTEST_FORBID_FFRT=1", 269 "IPTABLES_CONFIG_PATH = \"/system/etc/wearable_distributed_net_forward.json\"", 270 ] 271 272 if (build_selinux) { 273 external_deps += [ "selinux:libselinux" ] 274 defines += [ "USE_SELINUX" ] 275 } 276 277 if (netmanager_base_enable_netsys_access_policy_diag_listen) { 278 defines += [ "ENABLE_NETSYS_ACCESS_POLICY_DIAG_LISTEN" ] 279 } 280 281 public_configs = [ "$NETMANAGER_BASE_ROOT/utils:netmgr_common_config" ] 282 283 if (enable_sys_func) { 284 defines += [ "SYS_FUNC" ] 285 } 286 287 if (enable_server_support_ipv6) { 288 defines += [ "SERVER_SUPPORT_IPV6" ] 289 } 290 291 external_deps += [ 292 "ffrt:libffrt", 293 "hilog:libhilog", 294 ] 295 296 if (defined(global_parts_info) && 297 defined(global_parts_info.resourceschedule_qos_manager)) { 298 defines += [ "QOS_MANAGER_ENABLE" ] 299 external_deps += [ "qos_manager:qos" ] 300 external_deps += [ "qos_manager:concurrent_task_client" ] 301 } 302 303 part_name = "netmanager_base" 304 subsystem_name = "communication" 305} 306 307config("netsys_client_public_config") { 308 include_dirs = [ "include/netsys" ] 309} 310 311ohos_shared_library("netsys_client") { 312 sanitize = { 313 cfi = true 314 cfi_cross_dso = true 315 boundary_sanitize = true 316 all_ubsan = true 317 debug = false 318 } 319 320 public_configs = [ ":netsys_client_public_config" ] 321 322 branch_protector_ret = "pac_ret" 323 324 sources = [ 325 "src/netsys/netsys_client.c", 326 "src/netsys/netsys_tcp_client.c", 327 ] 328 329 include_dirs = [ 330 "$NETMANAGERNATIVE_ROOT/include/netsys", 331 "$FWMARK_CLIENT_DIR/include", 332 ] 333 334 cflags = [ 335 "-fstack-protector-strong", 336 "-D_FORTIFY_SOURCE=2", 337 "-O2", 338 ] 339 340 cflags_cc = [ 341 "-fstack-protector-strong", 342 "-D_FORTIFY_SOURCE=2", 343 "-O2", 344 ] 345 346 deps = [ "$FWMARK_CLIENT_DIR:fwmark_client" ] 347 348 external_deps = [ 349 "cJSON:cjson", 350 "c_utils:utils", 351 "hilog:libhilog", 352 ] 353 354 defines = [ 355 "NETSYS_CONFIG_DEBUG=0", 356 "NETSYS_CLIENT_DEBUG=0", 357 "NETMGRNATIVE_LOG_TAG = \"NetsysNativeService\"", 358 "LOG_DOMAIN = 0xD0015B0", 359 ] 360 361 innerapi_tags = [ "platformsdk_indirect" ] 362 part_name = "netmanager_base" 363 subsystem_name = "communication" 364} 365