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
29EXTERN_C_START
30struct 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
39struct CNetAddress {
40    char *address;
41    uint32_t family;
42    uint16_t port;
43};
44
45struct RetNetAddressArr {
46    int32_t code;
47    int64_t size;
48    CNetAddress *data;
49};
50
51struct CLinkAddress {
52    CNetAddress address;
53    int32_t prefixLength;
54};
55
56struct CRouteInfo {
57    char *interfaceName;
58    CLinkAddress destination;
59    CNetAddress gateway;
60    bool hasGateway;
61    bool isDefaultRoute;
62};
63
64struct 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
76struct CNetSpecifier {
77    CNetCapabilities netCapabilities;
78    char *bearerPrivateIdentifier;
79    bool hasSpecifier;
80};
81
82struct CHttpProxy {
83    char *host;
84    uint16_t port;
85    char **exclusionList;
86    int64_t exclusionListSize;
87};
88
89struct CNetCapabilityInfo {
90    int32_t netHandle;
91    CNetCapabilities netCap;
92};
93EXTERN_C_END
94
95#endif