1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef NET_CONNECTION_COMMON_H 17 #define NET_CONNECTION_COMMON_H 18 19 #include <cstdint> 20 21 #ifdef __cplusplus 22 #define EXTERN_C_START extern "C" { 23 #define EXTERN_C_END } 24 #else 25 #define EXTERN_C_START 26 #define EXTERN_C_END 27 #endif 28 29 EXTERN_C_START 30 struct CNetCapabilities { 31 int64_t bearedTypeSize; 32 int64_t networkCapSize; 33 uint32_t linkUpBandwidthKbps; 34 uint32_t linkDownBandwidthKbps; 35 int32_t *bearerTypes; 36 int32_t *networkCap; 37 }; 38 39 struct CNetAddress { 40 char *address; 41 uint32_t family; 42 uint16_t port; 43 }; 44 45 struct RetNetAddressArr { 46 int32_t code; 47 int64_t size; 48 CNetAddress *data; 49 }; 50 51 struct CLinkAddress { 52 CNetAddress address; 53 int32_t prefixLength; 54 }; 55 56 struct CRouteInfo { 57 char *interfaceName; 58 CLinkAddress destination; 59 CNetAddress gateway; 60 bool hasGateway; 61 bool isDefaultRoute; 62 }; 63 64 struct CConnectionProperties { 65 char *interfaceName; 66 char *domains; 67 int64_t linkAddressSize; 68 int64_t dnsSize; 69 int64_t routeSize; 70 uint16_t mtu; 71 CLinkAddress *linkAddresses; 72 CNetAddress *dnses; 73 CRouteInfo *routes; 74 }; 75 76 struct CNetSpecifier { 77 CNetCapabilities netCapabilities; 78 char *bearerPrivateIdentifier; 79 bool hasSpecifier; 80 }; 81 82 struct CHttpProxy { 83 char *host; 84 uint16_t port; 85 char **exclusionList; 86 int64_t exclusionListSize; 87 }; 88 89 struct CNetCapabilityInfo { 90 int32_t netHandle; 91 CNetCapabilities netCap; 92 }; 93 EXTERN_C_END 94 95 #endif