lwp_sys_socket.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2023-03-13 RT-Thread Export as header
  9. */
  10. #ifndef __LWP_SYS_SOCKET_H__
  11. #define __LWP_SYS_SOCKET_H__
  12. /* socket levels */
  13. #define INTF_SOL_SOCKET 1
  14. #define IMPL_SOL_SOCKET 0xFFF
  15. #define INTF_IPPROTO_IP 0
  16. #define IMPL_IPPROTO_IP 0
  17. #define INTF_IPPROTO_TCP 6
  18. #define IMPL_IPPROTO_TCP 6
  19. #define INTF_IPPROTO_IPV6 41
  20. #define IMPL_IPPROTO_IPV6 41
  21. /* SOL_SOCKET option names */
  22. #define INTF_SO_BROADCAST 6
  23. #define INTF_SO_KEEPALIVE 9
  24. #define INTF_SO_REUSEADDR 2
  25. #define INTF_SO_TYPE 3
  26. #define INTF_SO_ERROR 4
  27. #define INTF_SO_SNDTIMEO 21
  28. #define INTF_SO_RCVTIMEO 20
  29. #define INTF_SO_RCVBUF 8
  30. #define INTF_SO_LINGER 13
  31. #define INTF_SO_NO_CHECK 11
  32. #define INTF_SO_ACCEPTCONN 30
  33. #define INTF_SO_DONTROUTE 5
  34. #define INTF_SO_OOBINLINE 10
  35. #define INTF_SO_REUSEPORT 15
  36. #define INTF_SO_SNDBUF 7
  37. #define INTF_SO_SNDLOWAT 19
  38. #define INTF_SO_RCVLOWAT 18
  39. #define INTF_SO_BINDTODEVICE 25
  40. #define INTF_SO_TIMESTAMPNS 35
  41. #define INTF_SO_TIMESTAMPING 37
  42. #define INTF_SO_SELECT_ERR_QUEUE 45
  43. #define IMPL_SO_BROADCAST 0x0020
  44. #define IMPL_SO_KEEPALIVE 0x0008
  45. #define IMPL_SO_REUSEADDR 0x0004
  46. #define IMPL_SO_TYPE 0x1008
  47. #define IMPL_SO_ERROR 0x1007
  48. #define IMPL_SO_SNDTIMEO 0x1005
  49. #define IMPL_SO_RCVTIMEO 0x1006
  50. #define IMPL_SO_RCVBUF 0x1002
  51. #define IMPL_SO_LINGER 0x0080
  52. #define IMPL_SO_NO_CHECK 0x100a
  53. #define IMPL_SO_ACCEPTCONN 0x0002
  54. #define IMPL_SO_DONTROUTE 0x0010
  55. #define IMPL_SO_OOBINLINE 0x0100
  56. #define IMPL_SO_REUSEPORT 0x0200
  57. #define IMPL_SO_SNDBUF 0x1001
  58. #define IMPL_SO_SNDLOWAT 0x1003
  59. #define IMPL_SO_RCVLOWAT 0x1004
  60. #define IMPL_SO_BINDTODEVICE 0x100b
  61. #define IMPL_SO_TIMESTAMPNS INTF_SO_TIMESTAMPNS
  62. #define IMPL_SO_TIMESTAMPING INTF_SO_TIMESTAMPING
  63. #define IMPL_SO_SELECT_ERR_QUEUE INTF_SO_SELECT_ERR_QUEUE
  64. /* IPPROTO_IP option names */
  65. #define INTF_IP_TTL 2
  66. #define INTF_IP_TOS 1
  67. #define INTF_IP_MULTICAST_TTL 33
  68. #define INTF_IP_MULTICAST_IF 32
  69. #define INTF_IP_MULTICAST_LOOP 34
  70. #define INTF_IP_ADD_MEMBERSHIP 35
  71. #define INTF_IP_DROP_MEMBERSHIP 36
  72. #define IMPL_IP_TTL 2
  73. #define IMPL_IP_TOS 1
  74. #define IMPL_IP_MULTICAST_TTL 5
  75. #define IMPL_IP_MULTICAST_IF 6
  76. #define IMPL_IP_MULTICAST_LOOP 7
  77. #define IMPL_IP_ADD_MEMBERSHIP 3
  78. #define IMPL_IP_DROP_MEMBERSHIP 4
  79. /* IPPROTO_TCP option names */
  80. #define INTF_TCP_NODELAY 1
  81. #define INTF_TCP_KEEPALIVE 9
  82. #define INTF_TCP_KEEPIDLE 4
  83. #define INTF_TCP_KEEPINTVL 5
  84. #define INTF_TCP_KEEPCNT 6
  85. #define IMPL_TCP_NODELAY 0x01
  86. #define IMPL_TCP_KEEPALIVE 0x02
  87. #define IMPL_TCP_KEEPIDLE 0x03
  88. #define IMPL_TCP_KEEPINTVL 0x04
  89. #define IMPL_TCP_KEEPCNT 0x05
  90. /* IPPROTO_IPV6 option names */
  91. #define INTF_IPV6_V6ONLY 26
  92. #define IMPL_IPV6_V6ONLY 27
  93. struct musl_sockaddr
  94. {
  95. uint16_t sa_family;
  96. char sa_data[14];
  97. };
  98. struct musl_ifmap {
  99. unsigned long int mem_start;
  100. unsigned long int mem_end;
  101. unsigned short int base_addr;
  102. unsigned char irq;
  103. unsigned char dma;
  104. unsigned char port;
  105. };
  106. struct musl_ifreq
  107. {
  108. union
  109. {
  110. #define IFNAMSIZ 16
  111. char ifrn_name[IFNAMSIZ];
  112. } ifr_ifrn;
  113. union
  114. {
  115. struct musl_sockaddr ifru_addr;
  116. struct musl_sockaddr ifru_dstaddr;
  117. struct musl_sockaddr ifru_broadaddr;
  118. struct musl_sockaddr ifru_netmask;
  119. struct musl_sockaddr ifru_hwaddr;
  120. short int ifru_flags;
  121. int ifru_ivalue;
  122. int ifru_mtu;
  123. struct musl_ifmap ifru_map;
  124. char ifru_slave[IFNAMSIZ];
  125. char ifru_newname[IFNAMSIZ];
  126. char *ifru_data;
  127. } ifr_ifru;
  128. };
  129. struct musl_rtentry
  130. {
  131. unsigned long int rt_pad1;
  132. struct musl_sockaddr rt_dst;
  133. struct musl_sockaddr rt_gateway;
  134. struct musl_sockaddr rt_genmask;
  135. unsigned short int rt_flags;
  136. short int rt_pad2;
  137. unsigned long int rt_pad3;
  138. unsigned char rt_tos;
  139. unsigned char rt_class;
  140. short int rt_pad4[sizeof(long)/2-1];
  141. short int rt_metric;
  142. char *rt_dev;
  143. unsigned long int rt_mtu;
  144. unsigned long int rt_window;
  145. unsigned short int rt_irtt;
  146. };
  147. #endif /* __LWP_SYS_SOCKET_H__ */