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