1 /*
2 * Copyright (c) 2021-2023 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 #include "softbus_adapter_socket.h"
17
18 #include <arpa/inet.h>
19 #include <errno.h>
20 #include <fcntl.h>
21 #include <netinet/in.h>
22 #include <net/if.h>
23 #include <securec.h>
24 #include <string.h>
25 #include <sys/ioctl.h>
26 #include <sys/select.h>
27 #include <sys/socket.h>
28 #include <unistd.h>
29
30 #include "comm_log.h"
31 #include "conn_event.h"
32 #include "endian.h" /* liteos_m htons */
33 #include "softbus_adapter_errcode.h"
34 #include "softbus_error_code.h"
35 #include "softbus_def.h"
36
ShiftByte(uint8_t * in,int8_t inSize)37 static void ShiftByte(uint8_t *in, int8_t inSize)
38 {
39 int8_t left = 0;
40 int8_t right = inSize - 1;
41 while (left < right) {
42 in[left] ^= in[right];
43 in[right] ^= in[left];
44 in[left] ^= in[right];
45 ++left;
46 --right;
47 }
48 }
49
GetErrorCode(void)50 static int32_t GetErrorCode(void)
51 {
52 int32_t errCode;
53 switch (errno) {
54 case EINTR:
55 errCode = SOFTBUS_ADAPTER_SOCKET_EINTR;
56 break;
57 case EINPROGRESS:
58 errCode = SOFTBUS_ADAPTER_SOCKET_EINPROGRESS;
59 break;
60 case EAGAIN:
61 errCode = SOFTBUS_ADAPTER_SOCKET_EAGAIN;
62 break;
63 case EBADF:
64 errCode = SOFTBUS_ADAPTER_SOCKET_EBADF;
65 break;
66 case EINVAL:
67 errCode = SOFTBUS_ADAPTER_SOCKET_EINVAL;
68 break;
69 case ENETUNREACH:
70 errCode = SOFTBUS_ADAPTER_SOCKET_ENETUNREACH;
71 break;
72 default:
73 errCode = SOFTBUS_ADAPTER_ERR;
74 break;
75 }
76 return errCode;
77 }
78
DfxReportAdapterSocket(ConnEventScene scene,int32_t res,int32_t fd,int32_t cfd)79 static void DfxReportAdapterSocket(ConnEventScene scene, int32_t res, int32_t fd, int32_t cfd)
80 {
81 ConnEventExtra extra = {
82 .fd = fd,
83 .cfd = cfd,
84 .errcode = res,
85 .result = res == SOFTBUS_OK ? EVENT_STAGE_RESULT_OK : EVENT_STAGE_RESULT_FAILED
86 };
87 CONN_EVENT(scene, EVENT_STAGE_TCP_COMMON_ONE, extra);
88 }
89
SockOptErrorToSoftBusError(int32_t errorCode)90 static int32_t SockOptErrorToSoftBusError(int32_t errorCode)
91 {
92 return SOFTBUS_ERRNO(KERNELS_SUB_MODULE_CODE) + abs(errorCode);
93 }
94
SoftBusSocketCreate(int32_t domain,int32_t type,int32_t protocol,int32_t * socketFd)95 int32_t SoftBusSocketCreate(int32_t domain, int32_t type, int32_t protocol, int32_t *socketFd)
96 {
97 if (socketFd == NULL) {
98 COMM_LOGE(COMM_ADAPTER, "socketFd is null");
99 return SOFTBUS_ADAPTER_INVALID_PARAM;
100 }
101 int32_t ret = socket(domain, type, protocol);
102 if (ret < 0) {
103 COMM_LOGE(COMM_ADAPTER, "socket errno=%{public}s", strerror(errno));
104 return SOFTBUS_ADAPTER_ERR;
105 } else {
106 *socketFd = ret;
107 return SOFTBUS_ADAPTER_OK;
108 }
109 }
110
SoftBusSocketSetOpt(int32_t socketFd,int32_t level,int32_t optName,const void * optVal,int32_t optLen)111 int32_t SoftBusSocketSetOpt(int32_t socketFd, int32_t level, int32_t optName, const void *optVal, int32_t optLen)
112 {
113 int32_t ret = setsockopt(socketFd, level, optName, optVal, (socklen_t)optLen);
114 if (ret != 0) {
115 COMM_LOGE(COMM_ADAPTER, "setsockopt errno=%{public}s", strerror(errno));
116 return SOFTBUS_ADAPTER_ERR;
117 }
118
119 return SOFTBUS_ADAPTER_OK;
120 }
121
SoftBusSocketGetOpt(int32_t socketFd,int32_t level,int32_t optName,void * optVal,int32_t * optLen)122 int32_t SoftBusSocketGetOpt(int32_t socketFd, int32_t level, int32_t optName, void *optVal, int32_t *optLen)
123 {
124 int32_t ret = getsockopt(socketFd, level, optName, optVal, (socklen_t *)optLen);
125 if (ret != 0) {
126 COMM_LOGE(COMM_ADAPTER, "getsockopt errno=%{public}s", strerror(errno));
127 return SOFTBUS_ADAPTER_ERR;
128 }
129 return SOFTBUS_ADAPTER_OK;
130 }
131
SoftBusSocketGetError(int32_t socketFd)132 int32_t SoftBusSocketGetError(int32_t socketFd)
133 {
134 int32_t err = 0;
135 socklen_t errSize = sizeof(err);
136 int32_t ret = getsockopt(socketFd, SOL_SOCKET, SO_ERROR, &err, &errSize);
137 if (ret < 0) {
138 COMM_LOGE(COMM_ADAPTER, "getsockopt fd=%{public}d, errno=%{public}d", socketFd, errno);
139 return SockOptErrorToSoftBusError(errno);
140 }
141 if (err != 0) {
142 COMM_LOGD(COMM_ADAPTER, "getsockopt fd=%{public}d, err=%{public}d", socketFd, err);
143 return SockOptErrorToSoftBusError(err);
144 }
145 return SOFTBUS_ADAPTER_OK;
146 }
147
SoftBusSocketGetLocalName(int32_t socketFd,SoftBusSockAddr * addr)148 int32_t SoftBusSocketGetLocalName(int32_t socketFd, SoftBusSockAddr *addr)
149 {
150 if (addr == NULL) {
151 COMM_LOGE(COMM_ADAPTER, "get local name invalid input");
152 return SOFTBUS_ADAPTER_ERR;
153 }
154 uint32_t len = sizeof(*addr);
155 int32_t ret = getsockname(socketFd, (struct sockaddr *)addr, (socklen_t *)&len);
156 if (ret != 0) {
157 COMM_LOGE(COMM_ADAPTER, "getsockname errno=%{public}s", strerror(errno));
158 return SOFTBUS_ADAPTER_ERR;
159 }
160 return SOFTBUS_ADAPTER_OK;
161 }
162
SoftBusSocketGetPeerName(int32_t socketFd,SoftBusSockAddr * addr)163 int32_t SoftBusSocketGetPeerName(int32_t socketFd, SoftBusSockAddr *addr)
164 {
165 if (addr == NULL) {
166 COMM_LOGE(COMM_ADAPTER, "get peer name invalid input");
167 return SOFTBUS_ADAPTER_ERR;
168 }
169
170 uint32_t len = sizeof(*addr);
171 int32_t ret = getpeername(socketFd, (struct sockaddr *)addr, (socklen_t *)&len);
172 if (ret != 0) {
173 COMM_LOGE(COMM_ADAPTER, "getpeername errno=%{public}s", strerror(errno));
174 return SOFTBUS_ADAPTER_ERR;
175 }
176 return SOFTBUS_ADAPTER_OK;
177 }
178
SoftBusSocketBind(int32_t socketFd,SoftBusSockAddr * addr,int32_t addrLen)179 int32_t SoftBusSocketBind(int32_t socketFd, SoftBusSockAddr *addr, int32_t addrLen)
180 {
181 if (addr == NULL || addrLen < 0) {
182 COMM_LOGE(COMM_ADAPTER, "socket bind invalid input");
183 return SOFTBUS_ADAPTER_ERR;
184 }
185
186 int32_t ret = bind(socketFd, (struct sockaddr *)addr, (socklen_t)addrLen);
187 if (ret != 0) {
188 COMM_LOGE(COMM_ADAPTER, "bind strerror=%{public}s, errno=%{public}d", strerror(errno), errno);
189 return GetErrorCode();
190 }
191
192 return SOFTBUS_ADAPTER_OK;
193 }
194
SoftBusSocketListen(int32_t socketFd,int32_t backLog)195 int32_t SoftBusSocketListen(int32_t socketFd, int32_t backLog)
196 {
197 int32_t ret = listen(socketFd, backLog);
198 if (ret != 0) {
199 COMM_LOGE(COMM_ADAPTER, "listen strerror=%{public}s, errno=%{public}d", strerror(errno), errno);
200 DfxReportAdapterSocket(EVENT_SCENE_SOCKET_LISTEN, SOFTBUS_TCPCONNECTION_SOCKET_ERR, socketFd, 0);
201 return SOFTBUS_ADAPTER_ERR;
202 }
203
204 DfxReportAdapterSocket(EVENT_SCENE_SOCKET_LISTEN, SOFTBUS_OK, socketFd, 0);
205 return SOFTBUS_ADAPTER_OK;
206 }
207
SoftBusSocketAccept(int32_t socketFd,SoftBusSockAddr * addr,int32_t * acceptFd)208 int32_t SoftBusSocketAccept(int32_t socketFd, SoftBusSockAddr *addr, int32_t *acceptFd)
209 {
210 if (addr == NULL || acceptFd == NULL) {
211 COMM_LOGE(COMM_ADAPTER, "socket accept invalid input");
212 return SOFTBUS_ADAPTER_INVALID_PARAM;
213 }
214
215 uint32_t len = sizeof(*addr);
216 int32_t ret = accept(socketFd, (struct sockaddr *)addr, (socklen_t *)&len);
217 if (ret < 0) {
218 COMM_LOGD(COMM_ADAPTER, "accept strerror=%{public}s, errno=%{public}d", strerror(errno), errno);
219 DfxReportAdapterSocket(EVENT_SCENE_SOCKET_ACCEPT, SOFTBUS_TCPCONNECTION_SOCKET_ERR, socketFd, 0);
220 return GetErrorCode();
221 }
222 *acceptFd = ret;
223 DfxReportAdapterSocket(EVENT_SCENE_SOCKET_ACCEPT, SOFTBUS_OK, socketFd, *acceptFd);
224 return SOFTBUS_ADAPTER_OK;
225 }
226
SoftBusSocketConnect(int32_t socketFd,const SoftBusSockAddr * addr,int32_t addrLen)227 int32_t SoftBusSocketConnect(int32_t socketFd, const SoftBusSockAddr *addr, int32_t addrLen)
228 {
229 if (addr == NULL || addrLen < 0) {
230 COMM_LOGE(COMM_ADAPTER, "socket connect invalid input");
231 return SOFTBUS_ADAPTER_ERR;
232 }
233 int32_t ret = connect(socketFd, (struct sockaddr *)addr, (socklen_t)addrLen);
234 if (ret < 0) {
235 COMM_LOGE(COMM_ADAPTER, "connect=%{public}s", strerror(errno));
236 int32_t result = GetErrorCode();
237 if (result == SOFTBUS_ADAPTER_SOCKET_EINPROGRESS || result == SOFTBUS_ADAPTER_SOCKET_EAGAIN) {
238 DfxReportAdapterSocket(EVENT_SCENE_SOCKET_CONNECT, SOFTBUS_OK, socketFd, 0);
239 } else {
240 DfxReportAdapterSocket(EVENT_SCENE_SOCKET_CONNECT, SOFTBUS_TCPCONNECTION_SOCKET_ERR, socketFd, 0);
241 }
242 return result;
243 }
244 DfxReportAdapterSocket(EVENT_SCENE_SOCKET_CONNECT, SOFTBUS_OK, socketFd, 0);
245 return SOFTBUS_ADAPTER_OK;
246 }
247
SoftBusSocketFdZero(SoftBusFdSet * set)248 void SoftBusSocketFdZero(SoftBusFdSet *set)
249 {
250 if (set == NULL) {
251 COMM_LOGE(COMM_ADAPTER, "set is null");
252 return;
253 }
254
255 FD_ZERO((fd_set *)set->fdsBits);
256 }
257
SoftBusSocketFdSet(int32_t socketFd,SoftBusFdSet * set)258 void SoftBusSocketFdSet(int32_t socketFd, SoftBusFdSet *set)
259 {
260 if (set == NULL) {
261 COMM_LOGE(COMM_ADAPTER, "set is null");
262 return;
263 }
264 if (socketFd >= SOFTBUS_FD_SETSIZE) {
265 COMM_LOGE(COMM_ADAPTER, "socketFd %{public}d is too big", socketFd);
266 return;
267 }
268
269 FD_SET(socketFd, (fd_set *)set->fdsBits);
270 }
271
SoftBusSocketFdClr(int32_t socketFd,SoftBusFdSet * set)272 void SoftBusSocketFdClr(int32_t socketFd, SoftBusFdSet *set)
273 {
274 if (set == NULL) {
275 COMM_LOGE(COMM_ADAPTER, "set is null");
276 return;
277 }
278
279 FD_CLR(socketFd, (fd_set *)set->fdsBits);
280 }
281
SoftBusSocketFdIsset(int32_t socketFd,SoftBusFdSet * set)282 int32_t SoftBusSocketFdIsset(int32_t socketFd, SoftBusFdSet *set)
283 {
284 if (set == NULL) {
285 COMM_LOGE(COMM_ADAPTER, "set is null");
286 return 0;
287 }
288 if (socketFd >= SOFTBUS_FD_SETSIZE) {
289 COMM_LOGE(COMM_ADAPTER, "socketFd %{public}d is too big", socketFd);
290 return 0;
291 }
292
293 if (FD_ISSET(socketFd, (fd_set *)set->fdsBits) == true) {
294 return 1;
295 } else {
296 return 0;
297 }
298 }
299
SoftBusSocketSelect(int32_t nfds,SoftBusFdSet * readFds,SoftBusFdSet * writeFds,SoftBusFdSet * exceptFds,SoftBusSockTimeOut * timeout)300 int32_t SoftBusSocketSelect(
301 int32_t nfds, SoftBusFdSet *readFds, SoftBusFdSet *writeFds, SoftBusFdSet *exceptFds, SoftBusSockTimeOut *timeout)
302 {
303 fd_set *tempReadSet = NULL;
304 fd_set *tempWriteSet = NULL;
305 fd_set *tempExceptSet = NULL;
306
307 if (readFds != NULL) {
308 tempReadSet = (fd_set *)readFds->fdsBits;
309 }
310 if (writeFds != NULL) {
311 tempWriteSet = (fd_set *)writeFds->fdsBits;
312 }
313 if (exceptFds != NULL) {
314 tempExceptSet = (fd_set *)exceptFds->fdsBits;
315 }
316
317 struct timeval *timeoutPtr = NULL;
318 struct timeval tv = { 0 };
319 if (timeout != NULL) {
320 tv.tv_sec = timeout->sec;
321 tv.tv_usec = timeout->usec;
322 timeoutPtr = &tv;
323 }
324 #define SELECT_INTERVAL_US (100 * 1000)
325 #ifdef __LITEOS__
326 tv.tv_sec = 0;
327 tv.tv_usec = SELECT_INTERVAL_US;
328 timeoutPtr = &tv;
329 #endif
330 int32_t ret = select(nfds, tempReadSet, tempWriteSet, tempExceptSet, timeoutPtr);
331 if (ret < 0) {
332 COMM_LOGE(COMM_ADAPTER, "select errno=%{public}s", strerror(errno));
333 return GetErrorCode();
334 }
335
336 return ret;
337 }
338
SoftBusSocketIoctl(int32_t socketFd,long cmd,void * argp)339 int32_t SoftBusSocketIoctl(int32_t socketFd, long cmd, void *argp)
340 {
341 int32_t ret = ioctl(socketFd, cmd, argp);
342 if (ret < 0) {
343 COMM_LOGE(COMM_ADAPTER, "ioctl errno=%{public}s", strerror(errno));
344 return SOFTBUS_ADAPTER_ERR;
345 }
346
347 return ret;
348 }
349
SoftBusSocketFcntl(int32_t socketFd,long cmd,long flag)350 int32_t SoftBusSocketFcntl(int32_t socketFd, long cmd, long flag)
351 {
352 int32_t ret = fcntl(socketFd, cmd, flag);
353 if (ret < 0) {
354 COMM_LOGE(COMM_ADAPTER, "fcntl errno=%{public}s", strerror(errno));
355 return SOFTBUS_ADAPTER_ERR;
356 }
357
358 return ret;
359 }
360
SoftBusSocketSend(int32_t socketFd,const void * buf,uint32_t len,uint32_t flags)361 int32_t SoftBusSocketSend(int32_t socketFd, const void *buf, uint32_t len, uint32_t flags)
362 {
363 int32_t wrapperFlag = flags | MSG_NOSIGNAL;
364 int32_t ret = send(socketFd, buf, len, wrapperFlag);
365 if (ret < 0) {
366 COMM_LOGE(COMM_ADAPTER, "send errno=%{public}s", strerror(errno));
367 return GetErrorCode();
368 }
369
370 return ret;
371 }
372
SoftBusSocketSendTo(int32_t socketFd,const void * buf,uint32_t len,int32_t flags,const SoftBusSockAddr * toAddr,int32_t toAddrLen)373 int32_t SoftBusSocketSendTo(int32_t socketFd, const void *buf, uint32_t len, int32_t flags,
374 const SoftBusSockAddr *toAddr, int32_t toAddrLen)
375 {
376 if ((toAddr == NULL) || (toAddrLen <= 0)) {
377 COMM_LOGE(COMM_ADAPTER, "toAddr is null or toAddrLen <= 0");
378 return SOFTBUS_ADAPTER_ERR;
379 }
380 int32_t ret = sendto(socketFd, buf, len, flags, (struct sockaddr *)toAddr, toAddrLen);
381 if (ret < 0) {
382 COMM_LOGE(COMM_ADAPTER, "sendto errno=%{public}s", strerror(errno));
383 return SOFTBUS_ADAPTER_ERR;
384 }
385
386 return ret;
387 }
388
SoftBusSocketRecv(int32_t socketFd,void * buf,uint32_t len,int32_t flags)389 int32_t SoftBusSocketRecv(int32_t socketFd, void *buf, uint32_t len, int32_t flags)
390 {
391 int32_t ret = recv(socketFd, buf, len, flags);
392 if (ret < 0) {
393 COMM_LOGE(COMM_ADAPTER, "recv socketFd=%{public}d, errno=%{public}s", socketFd, strerror(errno));
394 return GetErrorCode();
395 }
396
397 return ret;
398 }
399
SoftBusSocketRecvFrom(int32_t socketFd,void * buf,uint32_t len,int32_t flags,SoftBusSockAddr * fromAddr,int32_t * fromAddrLen)400 int32_t SoftBusSocketRecvFrom(int32_t socketFd, void *buf, uint32_t len, int32_t flags, SoftBusSockAddr *fromAddr,
401 int32_t *fromAddrLen)
402 {
403 if ((fromAddr == NULL) || (fromAddrLen == NULL)) {
404 COMM_LOGE(COMM_ADAPTER, "fromAddr or fromAddrLen is null");
405 return SOFTBUS_ADAPTER_ERR;
406 }
407
408 int32_t ret = recvfrom(socketFd, buf, len, flags, (struct sockaddr *)fromAddr, (socklen_t *)fromAddrLen);
409 if (ret < 0) {
410 COMM_LOGE(COMM_ADAPTER, "recvfrom errno=%{public}s", strerror(errno));
411 return SOFTBUS_ADAPTER_ERR;
412 }
413
414 return ret;
415 }
416
SoftBusSocketShutDown(int32_t socketFd,int32_t how)417 int32_t SoftBusSocketShutDown(int32_t socketFd, int32_t how)
418 {
419 int32_t ret = shutdown(socketFd, how);
420 if (ret != 0) {
421 COMM_LOGD(COMM_ADAPTER, "shutdown=%{public}s", strerror(errno));
422 return SOFTBUS_ADAPTER_ERR;
423 }
424
425 return SOFTBUS_ADAPTER_OK;
426 }
427
SoftBusSocketClose(int32_t socketFd)428 int32_t SoftBusSocketClose(int32_t socketFd)
429 {
430 int32_t ret = close(socketFd);
431 if (ret != 0) {
432 COMM_LOGD(COMM_ADAPTER, "close errno=%{public}s", strerror(errno));
433 return SOFTBUS_ADAPTER_ERR;
434 }
435
436 return SOFTBUS_ADAPTER_OK;
437 }
438
SoftBusInetPtoN(int32_t af,const char * src,void * dst)439 int32_t SoftBusInetPtoN(int32_t af, const char *src, void *dst)
440 {
441 if (src == NULL || dst == NULL) {
442 COMM_LOGE(COMM_ADAPTER, "src or dst is null");
443 return SOFTBUS_ADAPTER_ERR;
444 }
445 int32_t ret = inet_pton(af, src, dst);
446 if (ret == 1) {
447 return SOFTBUS_ADAPTER_OK;
448 } else if (ret == 0) {
449 COMM_LOGE(COMM_ADAPTER, "invalid str input fromat");
450 return SOFTBUS_ADAPTER_INVALID_PARAM;
451 } else {
452 COMM_LOGE(COMM_ADAPTER, "inet_pton failed");
453 return SOFTBUS_ADAPTER_ERR;
454 }
455 }
456
SoftBusInetNtoP(int32_t af,const void * src,char * dst,int32_t size)457 const char *SoftBusInetNtoP(int32_t af, const void *src, char *dst, int32_t size)
458 {
459 return (inet_ntop(af, src, dst, size));
460 }
461
SoftBusHtoNl(uint32_t hostlong)462 uint32_t SoftBusHtoNl(uint32_t hostlong)
463 {
464 return htonl(hostlong);
465 }
466
SoftBusHtoNs(uint16_t hostshort)467 uint16_t SoftBusHtoNs(uint16_t hostshort)
468 {
469 return htons(hostshort);
470 }
471
SoftBusNtoHl(uint32_t netlong)472 uint32_t SoftBusNtoHl(uint32_t netlong)
473 {
474 return ntohl(netlong);
475 }
476
SoftBusNtoHs(uint16_t netshort)477 uint16_t SoftBusNtoHs(uint16_t netshort)
478 {
479 return ntohs(netshort);
480 }
481
SoftBusInetAddr(const char * cp)482 uint32_t SoftBusInetAddr(const char *cp)
483 {
484 return inet_addr(cp);
485 }
486
SoftBusIfNameToIndex(const char * name)487 uint32_t SoftBusIfNameToIndex(const char *name)
488 {
489 return if_nametoindex(name);
490 }
491
SoftBusIndexToIfName(int32_t index,char * ifname,uint32_t nameLen)492 int32_t SoftBusIndexToIfName(int32_t index, char *ifname, uint32_t nameLen)
493 {
494 if (index < 0 || ifname == NULL || nameLen < IF_NAME_SIZE) {
495 COMM_LOGE(COMM_ADAPTER, "Invalid parm nameLen=%{public}d", nameLen);
496 return SOFTBUS_ADAPTER_ERR;
497 }
498 if (if_indextoname(index, ifname) == NULL) {
499 COMM_LOGE(COMM_ADAPTER, "get ifname faild! errno=%{public}s", strerror(errno));
500 return SOFTBUS_INVALID_PARAM;
501 }
502 return SOFTBUS_ADAPTER_OK;
503 }
504
IsLittleEndian(void)505 static bool IsLittleEndian(void)
506 {
507 uint32_t data = 0x1;
508 if (data == ntohl(data)) {
509 return false;
510 } else {
511 return true;
512 }
513 }
514
ProcByteOrder(uint8_t * value,int8_t size)515 static void ProcByteOrder(uint8_t *value, int8_t size)
516 {
517 if (IsLittleEndian()) {
518 return;
519 }
520 ShiftByte(value, size);
521 }
522
SoftBusHtoLs(uint16_t value)523 uint16_t SoftBusHtoLs(uint16_t value)
524 {
525 uint16_t res = value;
526 ProcByteOrder((uint8_t *)&res, (int8_t)sizeof(res));
527 return res;
528 }
529
SoftBusHtoLl(uint32_t value)530 uint32_t SoftBusHtoLl(uint32_t value)
531 {
532 uint32_t res = value;
533 ProcByteOrder((uint8_t *)&res, (int8_t)sizeof(res));
534 return res;
535 }
536
SoftBusHtoLll(uint64_t value)537 uint64_t SoftBusHtoLll(uint64_t value)
538 {
539 uint64_t res = value;
540 ProcByteOrder((uint8_t *)&res, (int8_t)sizeof(res));
541 return res;
542 }
543
SoftBusLtoHs(uint16_t value)544 uint16_t SoftBusLtoHs(uint16_t value)
545 {
546 uint16_t res = value;
547 ProcByteOrder((uint8_t *)&res, (int8_t)sizeof(res));
548 return res;
549 }
550
SoftBusLtoHl(uint32_t value)551 uint32_t SoftBusLtoHl(uint32_t value)
552 {
553 uint32_t res = value;
554 ProcByteOrder((uint8_t *)&res, (int8_t)sizeof(res));
555 return res;
556 }
557
SoftBusLtoHll(uint64_t value)558 uint64_t SoftBusLtoHll(uint64_t value)
559 {
560 uint64_t res = value;
561 ProcByteOrder((uint8_t *)&res, (int8_t)sizeof(res));
562 return res;
563 }
564
SoftBusLEtoBEs(uint16_t value)565 uint16_t SoftBusLEtoBEs(uint16_t value)
566 {
567 if (!IsLittleEndian()) {
568 return value;
569 }
570 uint16_t res = value;
571 ShiftByte((uint8_t *)&res, (int8_t)sizeof(res));
572 return res;
573 }
574
SoftBusBEtoLEs(uint16_t value)575 uint16_t SoftBusBEtoLEs(uint16_t value)
576 {
577 if (!IsLittleEndian()) {
578 return value;
579 }
580 uint16_t res = value;
581 ShiftByte((uint8_t *)&res, (int8_t)sizeof(res));
582 return res;
583 }