rtt_socket.c 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. /*
  2. * Copyright 2024 Sony Semiconductor Solutions Corporation.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  5. */
  6. #include "platform_api_vmcore.h"
  7. #include "platform_api_extension.h"
  8. int
  9. os_socket_accept(bh_socket_t server_sock, bh_socket_t *sock, void *addr,
  10. unsigned int *addrlen)
  11. {
  12. return BHT_ERROR;
  13. }
  14. int
  15. os_socket_connect(bh_socket_t socket, const char *addr, int port)
  16. {
  17. return BHT_ERROR;
  18. }
  19. int
  20. os_socket_recv_from(bh_socket_t socket, void *buf, unsigned int len, int flags,
  21. bh_sockaddr_t *src_addr)
  22. {
  23. return BHT_ERROR;
  24. }
  25. int
  26. os_socket_send_to(bh_socket_t socket, const void *buf, unsigned int len,
  27. int flags, const bh_sockaddr_t *dest_addr)
  28. {
  29. return BHT_ERROR;
  30. }
  31. int
  32. os_socket_addr_resolve(const char *host, const char *service,
  33. uint8_t *hint_is_tcp, uint8_t *hint_is_ipv4,
  34. bh_addr_info_t *addr_info, size_t addr_info_size,
  35. size_t *max_info_size)
  36. {
  37. return BHT_ERROR;
  38. }
  39. int
  40. os_socket_close(bh_socket_t socket)
  41. {
  42. return BHT_ERROR;
  43. }
  44. int
  45. os_socket_addr_local(bh_socket_t socket, bh_sockaddr_t *sockaddr)
  46. {
  47. return BHT_ERROR;
  48. }
  49. int
  50. os_socket_addr_remote(bh_socket_t socket, bh_sockaddr_t *sockaddr)
  51. {
  52. return BHT_ERROR;
  53. }
  54. int
  55. os_socket_bind(bh_socket_t socket, const char *host, int *port)
  56. {
  57. return BHT_ERROR;
  58. }
  59. int
  60. os_socket_listen(bh_socket_t socket, int max_client)
  61. {
  62. return BHT_ERROR;
  63. }
  64. int
  65. os_socket_create(bh_socket_t *sock, bool is_ipv4, bool is_tcp)
  66. {
  67. return BHT_ERROR;
  68. }
  69. int
  70. os_socket_send(bh_socket_t socket, const void *buf, unsigned int len)
  71. {
  72. return BHT_ERROR;
  73. }
  74. __wasi_errno_t
  75. os_socket_shutdown(bh_socket_t socket)
  76. {
  77. return __WASI_ENOSYS;
  78. }
  79. int
  80. os_socket_inet_network(bool is_ipv4, const char *cp, bh_ip_addr_buffer_t *out)
  81. {
  82. return BHT_ERROR;
  83. }
  84. int
  85. os_socket_set_send_timeout(bh_socket_t socket, uint64 timeout_us)
  86. {
  87. return BHT_ERROR;
  88. }
  89. int
  90. os_socket_get_recv_timeout(bh_socket_t socket, uint64 *timeout_us)
  91. {
  92. return BHT_ERROR;
  93. }
  94. int
  95. os_socket_set_send_buf_size(bh_socket_t socket, size_t bufsiz)
  96. {
  97. return BHT_ERROR;
  98. }
  99. int
  100. os_socket_get_send_buf_size(bh_socket_t socket, size_t *bufsiz)
  101. {
  102. return BHT_ERROR;
  103. }
  104. int
  105. os_socket_set_recv_buf_size(bh_socket_t socket, size_t bufsiz)
  106. {
  107. return BHT_ERROR;
  108. }
  109. int
  110. os_socket_get_recv_buf_size(bh_socket_t socket, size_t *bufsiz)
  111. {
  112. return BHT_ERROR;
  113. }
  114. int
  115. os_socket_set_broadcast(bh_socket_t socket, bool is_enabled)
  116. {
  117. return BHT_ERROR;
  118. }
  119. int
  120. os_socket_get_broadcast(bh_socket_t socket, bool *is_enabled)
  121. {
  122. return BHT_ERROR;
  123. }
  124. int
  125. os_socket_get_send_timeout(bh_socket_t socket, uint64 *timeout_us)
  126. {
  127. return BHT_ERROR;
  128. }
  129. int
  130. os_socket_set_recv_timeout(bh_socket_t socket, uint64 timeout_us)
  131. {
  132. return BHT_ERROR;
  133. }
  134. int
  135. os_socket_set_keep_alive(bh_socket_t socket, bool is_enabled)
  136. {
  137. return BHT_ERROR;
  138. }
  139. int
  140. os_socket_get_keep_alive(bh_socket_t socket, bool *is_enabled)
  141. {
  142. return BHT_ERROR;
  143. }
  144. int
  145. os_socket_set_reuse_addr(bh_socket_t socket, bool is_enabled)
  146. {
  147. return BHT_ERROR;
  148. }
  149. int
  150. os_socket_get_reuse_addr(bh_socket_t socket, bool *is_enabled)
  151. {
  152. return BHT_ERROR;
  153. }
  154. int
  155. os_socket_set_reuse_port(bh_socket_t socket, bool is_enabled)
  156. {
  157. return BHT_ERROR;
  158. }
  159. int
  160. os_socket_get_reuse_port(bh_socket_t socket, bool *is_enabled)
  161. {
  162. return BHT_ERROR;
  163. }
  164. int
  165. os_socket_set_linger(bh_socket_t socket, bool is_enabled, int linger_s)
  166. {
  167. return BHT_ERROR;
  168. }
  169. int
  170. os_socket_get_linger(bh_socket_t socket, bool *is_enabled, int *linger_s)
  171. {
  172. return BHT_ERROR;
  173. }
  174. int
  175. os_socket_set_tcp_no_delay(bh_socket_t socket, bool is_enabled)
  176. {
  177. return BHT_ERROR;
  178. }
  179. int
  180. os_socket_get_tcp_no_delay(bh_socket_t socket, bool *is_enabled)
  181. {
  182. return BHT_ERROR;
  183. }
  184. int
  185. os_socket_set_tcp_quick_ack(bh_socket_t socket, bool is_enabled)
  186. {
  187. return BHT_ERROR;
  188. }
  189. int
  190. os_socket_get_tcp_quick_ack(bh_socket_t socket, bool *is_enabled)
  191. {
  192. return BHT_ERROR;
  193. }
  194. int
  195. os_socket_set_tcp_keep_idle(bh_socket_t socket, uint32 time_s)
  196. {
  197. return BHT_ERROR;
  198. }
  199. int
  200. os_socket_get_tcp_keep_idle(bh_socket_t socket, uint32 *time_s)
  201. {
  202. return BHT_ERROR;
  203. }
  204. int
  205. os_socket_set_tcp_keep_intvl(bh_socket_t socket, uint32 time_s)
  206. {
  207. return BHT_ERROR;
  208. }
  209. int
  210. os_socket_get_tcp_keep_intvl(bh_socket_t socket, uint32 *time_s)
  211. {
  212. return BHT_ERROR;
  213. }
  214. int
  215. os_socket_set_tcp_fastopen_connect(bh_socket_t socket, bool is_enabled)
  216. {
  217. return BHT_ERROR;
  218. }
  219. int
  220. os_socket_get_tcp_fastopen_connect(bh_socket_t socket, bool *is_enabled)
  221. {
  222. return BHT_ERROR;
  223. }
  224. int
  225. os_socket_set_ip_multicast_loop(bh_socket_t socket, bool ipv6, bool is_enabled)
  226. {
  227. return BHT_ERROR;
  228. }
  229. int
  230. os_socket_get_ip_multicast_loop(bh_socket_t socket, bool ipv6, bool *is_enabled)
  231. {
  232. return BHT_ERROR;
  233. }
  234. int
  235. os_socket_set_ip_add_membership(bh_socket_t socket,
  236. bh_ip_addr_buffer_t *imr_multiaddr,
  237. uint32_t imr_interface, bool is_ipv6)
  238. {
  239. return BHT_ERROR;
  240. }
  241. int
  242. os_socket_set_ip_drop_membership(bh_socket_t socket,
  243. bh_ip_addr_buffer_t *imr_multiaddr,
  244. uint32_t imr_interface, bool is_ipv6)
  245. {
  246. return BHT_ERROR;
  247. }
  248. int
  249. os_socket_set_ip_ttl(bh_socket_t socket, uint8_t ttl_s)
  250. {
  251. return BHT_ERROR;
  252. }
  253. int
  254. os_socket_get_ip_ttl(bh_socket_t socket, uint8_t *ttl_s)
  255. {
  256. return BHT_ERROR;
  257. }
  258. int
  259. os_socket_set_ip_multicast_ttl(bh_socket_t socket, uint8_t ttl_s)
  260. {
  261. return BHT_ERROR;
  262. }
  263. int
  264. os_socket_get_ip_multicast_ttl(bh_socket_t socket, uint8_t *ttl_s)
  265. {
  266. return BHT_ERROR;
  267. }
  268. int
  269. os_socket_set_ipv6_only(bh_socket_t socket, bool is_enabled)
  270. {
  271. return BHT_ERROR;
  272. }
  273. int
  274. os_socket_get_ipv6_only(bh_socket_t socket, bool *is_enabled)
  275. {
  276. return BHT_ERROR;
  277. }
  278. static void
  279. swap16(uint8 *pData)
  280. {
  281. uint8 value = *pData;
  282. *(pData) = *(pData + 1);
  283. *(pData + 1) = value;
  284. }
  285. static void
  286. swap32(uint8 *pData)
  287. {
  288. uint8 value = *pData;
  289. *pData = *(pData + 3);
  290. *(pData + 3) = value;
  291. value = *(pData + 1);
  292. *(pData + 1) = *(pData + 2);
  293. *(pData + 2) = value;
  294. }
  295. /** In-enclave implementation of POSIX functions **/
  296. static bool
  297. is_little_endian()
  298. {
  299. long i = 0x01020304;
  300. unsigned char *c = (unsigned char *)&i;
  301. return (*c == 0x04) ? true : false;
  302. }
  303. uint16
  304. htons(uint16 value)
  305. {
  306. uint16 ret;
  307. if (is_little_endian()) {
  308. ret = value;
  309. swap16((uint8 *)&ret);
  310. return ret;
  311. }
  312. return value;
  313. }
  314. uint32
  315. htonl(uint32 value)
  316. {
  317. uint32 ret;
  318. if (is_little_endian()) {
  319. ret = value;
  320. swap32((uint8 *)&ret);
  321. return ret;
  322. }
  323. return value;
  324. }