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