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