1 /* 2 * Copyright (c) 2021 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 #ifndef SOFTBUS_DEF_H 16 #define SOFTBUS_DEF_H 17 18 #include <pthread.h> 19 #include "common_list.h" 20 #include "softbus_adapter_thread.h" 21 #include "stdint.h" 22 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" { 27 #endif 28 #endif 29 30 #ifndef NO_SANITIZE 31 #ifdef __has_attribute 32 #if __has_attribute(no_sanitize) 33 #define NO_SANITIZE(type) __attribute__((no_sanitize(type))) 34 #endif 35 #endif 36 #endif 37 38 #ifndef NO_SANITIZE 39 #define NO_SANITIZE(type) 40 #endif 41 42 #define INVALID_SESSION_ID (-1) 43 #define INVALID_CHANNEL_ID (-1) 44 #define INVALID_ROUTE_TYPE (-1) 45 #define INVALID_DATA_CONFIG (0) 46 #define INVALID_SEQ_ID (0x7fffffff) 47 48 #define PKG_NAME_SIZE_MAX 65 49 #define SESSION_NAME_SIZE_MAX 256 50 #define DEVICE_ID_SIZE_MAX 65 51 #define GROUP_ID_SIZE_MAX 128 52 #define REQ_ID_SIZE_MAX 65 53 #define AUTH_STATE_SIZE_MAX 65 54 #define FILE_RECV_ROOT_DIR_SIZE_MAX 256 55 56 #define MAX_DEV_INFO_VALUE_LEN 65 57 #define MAX_CAPABILITY_LEN 33 58 #define MAX_CAPABILITY_DATA_LEN 512 59 #define MAX_PACKAGE_NAME_LEN 33 60 #define MAX_DEV_INFO_COUNT 32 61 #define MAX_PUBLISH_INFO_COUNT 32 62 #define IP_LEN 46 63 #define MAX_PEERS_NUM 32 64 #define MAX_OPERATION_CODE_LEN 32 65 #define SESSION_KEY_LENGTH 32 66 #define DEVICE_KEY_LEN 16 67 68 #define MAX_SOCKET_ADDR_LEN 46 69 70 #define MAX_SESSION_ID 16 71 #define MAX_SESSION_SERVER_NUMBER 10 72 73 #define WAIT_SERVER_READY_INTERVAL 200 74 75 #define NODE_ADDR_LOOPBACK "0" 76 77 #define MAX_UDP_CHANNEL_ID_COUNT 20 78 79 typedef struct { 80 SoftBusMutex lock; 81 unsigned int cnt; 82 ListNode list; 83 } SoftBusList; 84 85 typedef enum { 86 SEC_TYPE_UNKNOWN = 0, 87 SEC_TYPE_PLAINTEXT = 1, 88 SEC_TYPE_CIPHERTEXT = 2, 89 } SoftBusSecType; 90 91 /* Timer type */ 92 enum { 93 TIMER_TYPE_ONCE, 94 TIMER_TYPE_PERIOD, 95 TIMER_TYPE_MAX, 96 }; 97 98 typedef enum { 99 TRANS_SESSION_BYTES = 0, 100 TRANS_SESSION_ACK, 101 TRANS_SESSION_MESSAGE, 102 TRANS_SESSION_FILE_FIRST_FRAME = 3, 103 TRANS_SESSION_FILE_ONGOINE_FRAME, 104 TRANS_SESSION_FILE_LAST_FRAME, 105 TRANS_SESSION_FILE_ONLYONE_FRAME, 106 TRANS_SESSION_FILE_ALLFILE_SENT, 107 TRANS_SESSION_FILE_CRC_CHECK_FRAME, 108 TRANS_SESSION_FILE_RESULT_FRAME, 109 TRANS_SESSION_FILE_ACK_REQUEST_SENT, 110 TRANS_SESSION_FILE_ACK_RESPONSE_SENT, 111 TRANS_SESSION_ASYNC_MESSAGE, 112 } SessionPktType; 113 114 typedef enum { 115 CHANNEL_TYPE_TCP_DIRECT = 0, 116 CHANNEL_TYPE_PROXY, 117 CHANNEL_TYPE_UDP, 118 CHANNEL_TYPE_AUTH, 119 CHANNEL_TYPE_BUTT, 120 } ChannelType; 121 122 typedef enum { 123 BUSINESS_TYPE_MESSAGE = 1, 124 BUSINESS_TYPE_BYTE = 2, 125 BUSINESS_TYPE_FILE = 3, 126 BUSINESS_TYPE_STREAM = 4, 127 128 BUSINESS_TYPE_NOT_CARE, 129 BUSINESS_TYPE_BUTT, 130 } BusinessType; 131 132 typedef struct { 133 int32_t channelId; 134 int32_t channelType; 135 int32_t businessType; 136 int32_t fd; 137 bool isServer; 138 bool isEnabled; 139 bool isEncrypt; 140 int32_t peerUid; 141 int32_t peerPid; 142 char *groupId; 143 uint32_t keyLen; 144 char *sessionKey; 145 char *peerSessionName; 146 char *peerDeviceId; 147 char *myIp; 148 char *peerIp; 149 int32_t peerPort; 150 int32_t routeType; 151 int32_t streamType; 152 int32_t encrypt; 153 int32_t fileEncrypt; 154 int32_t algorithm; 155 int32_t crc; 156 int32_t autoCloseTime; 157 bool isUdpFile; 158 int myHandleId; 159 int peerHandleId; 160 char *reqId; 161 int64_t timeStart; 162 int32_t linkType; 163 bool isFastData; 164 uint32_t dataConfig; 165 } ChannelInfo; 166 167 #ifdef __cplusplus 168 #if __cplusplus 169 } 170 #endif /* __cplusplus */ 171 #endif /* __cplusplus */ 172 #endif /* SOFTBUS_DEF_H */ 173 174