|
32 | 32 |
|
33 | 33 | int accept(int s, struct sockaddr *addr, socklen_t *addrlen) |
34 | 34 | { |
35 | | - int new_client = -1; |
| 35 | + int new_client = -1; |
36 | 36 | int sock = dfs_lwip_getsocket(s); |
37 | 37 |
|
38 | 38 | new_client = lwip_accept(sock, addr, addrlen); |
39 | | - if (new_client != -1) |
40 | | - { |
41 | | - /* this is a new socket, create it in file system fd */ |
42 | | - int fd; |
43 | | - struct dfs_fd *d; |
44 | | - |
45 | | - /* allocate a fd */ |
46 | | - fd = fd_new(); |
47 | | - if (fd < 0) |
48 | | - { |
49 | | - rt_set_errno(-DFS_STATUS_ENOMEM); |
50 | | - lwip_close(sock); |
51 | | - |
52 | | - printf("no fd yet!\n"); |
53 | | - return -1; |
54 | | - } |
55 | | - d = fd_get(fd); |
56 | | - |
57 | | - /* this is a socket fd */ |
58 | | - d->type = FT_SOCKET; |
59 | | - d->path = RT_NULL; |
60 | | - |
61 | | - d->fs = dfs_lwip_get_fs(); |
62 | | - |
63 | | - d->flags = DFS_O_RDWR; /* set flags as read and write */ |
64 | | - d->size = 0; |
65 | | - d->pos = 0; |
66 | | - |
67 | | - /* set socket to the data of dfs_fd */ |
68 | | - d->data = (void*) new_client; |
69 | | - |
70 | | - /* release the ref-count of fd */ |
71 | | - fd_put(d); |
72 | | - |
| 39 | + if (new_client != -1) |
| 40 | + { |
| 41 | + /* this is a new socket, create it in file system fd */ |
| 42 | + int fd; |
| 43 | + struct dfs_fd *d; |
| 44 | + |
| 45 | + /* allocate a fd */ |
| 46 | + fd = fd_new(); |
| 47 | + if (fd < 0) |
| 48 | + { |
| 49 | + rt_set_errno(-DFS_STATUS_ENOMEM); |
| 50 | + lwip_close(sock); |
| 51 | + |
| 52 | + rt_kprintf("no fd yet!\n"); |
| 53 | + return -1; |
| 54 | + } |
| 55 | + d = fd_get(fd); |
| 56 | + |
| 57 | + /* this is a socket fd */ |
| 58 | + d->type = FT_SOCKET; |
| 59 | + d->path = RT_NULL; |
| 60 | + |
| 61 | + d->fs = dfs_lwip_get_fs(); |
| 62 | + |
| 63 | + d->flags = DFS_O_RDWR; /* set flags as read and write */ |
| 64 | + d->size = 0; |
| 65 | + d->pos = 0; |
| 66 | + |
| 67 | + /* set socket to the data of dfs_fd */ |
| 68 | + d->data = (void *) new_client; |
| 69 | + |
| 70 | + /* release the ref-count of fd */ |
| 71 | + fd_put(d); |
| 72 | + |
73 | 73 | return fd; |
74 | | - } |
| 74 | + } |
75 | 75 |
|
76 | | - return new_client; |
| 76 | + return new_client; |
77 | 77 | } |
| 78 | +RTM_EXPORT(accept); |
78 | 79 |
|
79 | 80 | int bind(int s, const struct sockaddr *name, socklen_t namelen) |
80 | 81 | { |
81 | 82 | int sock = dfs_lwip_getsocket(s); |
82 | | - |
| 83 | + |
83 | 84 | return lwip_bind(sock, name, namelen); |
84 | 85 | } |
| 86 | +RTM_EXPORT(bind); |
85 | 87 |
|
86 | 88 | int shutdown(int s, int how) |
87 | 89 | { |
88 | 90 | int sock; |
89 | | - struct dfs_fd *d; |
| 91 | + struct dfs_fd *d; |
90 | 92 |
|
91 | | - d = fd_get(s); |
92 | | - if (d == RT_NULL) |
93 | | - { |
94 | | - rt_set_errno(-DFS_STATUS_EBADF); |
95 | | - |
96 | | - return -1; |
97 | | - } |
| 93 | + d = fd_get(s); |
| 94 | + if (d == RT_NULL) |
| 95 | + { |
| 96 | + rt_set_errno(-DFS_STATUS_EBADF); |
98 | 97 |
|
99 | | - sock = dfs_lwip_getsocket(s); |
| 98 | + return -1; |
| 99 | + } |
| 100 | + |
| 101 | + sock = dfs_lwip_getsocket(s); |
100 | 102 | if (lwip_shutdown(sock, how) == 0) |
101 | 103 | { |
102 | | - /* socket has been closed, delete it from file system fd */ |
103 | | - fd_put(d); |
104 | | - fd_put(d); |
105 | | - |
106 | | - return 0; |
| 104 | + /* socket has been closed, delete it from file system fd */ |
| 105 | + fd_put(d); |
| 106 | + fd_put(d); |
| 107 | + |
| 108 | + return 0; |
107 | 109 | } |
108 | 110 |
|
109 | | - return -1; |
| 111 | + return -1; |
110 | 112 | } |
| 113 | +RTM_EXPORT(shutdown); |
111 | 114 |
|
112 | | -int getpeername (int s, struct sockaddr *name, socklen_t *namelen) |
| 115 | +int getpeername(int s, struct sockaddr *name, socklen_t *namelen) |
113 | 116 | { |
114 | 117 | int sock = dfs_lwip_getsocket(s); |
115 | 118 |
|
116 | 119 | return lwip_getpeername(sock, name, namelen); |
117 | 120 | } |
| 121 | +RTM_EXPORT(getpeername); |
118 | 122 |
|
119 | | -int getsockname (int s, struct sockaddr *name, socklen_t *namelen) |
| 123 | +int getsockname(int s, struct sockaddr *name, socklen_t *namelen) |
120 | 124 | { |
121 | 125 | int sock = dfs_lwip_getsocket(s); |
122 | | - |
| 126 | + |
123 | 127 | return lwip_getsockname(sock, name, namelen); |
124 | 128 | } |
| 129 | +RTM_EXPORT(getsockname); |
125 | 130 |
|
126 | | -int getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen) |
| 131 | +int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen) |
127 | 132 | { |
128 | 133 | int sock = dfs_lwip_getsocket(s); |
129 | | - |
| 134 | + |
130 | 135 | return lwip_getsockopt(sock, level, optname, optval, optlen); |
131 | 136 | } |
| 137 | +RTM_EXPORT(getsockopt); |
132 | 138 |
|
133 | | -int setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen) |
| 139 | +int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen) |
134 | 140 | { |
135 | 141 | int sock = dfs_lwip_getsocket(s); |
136 | | - |
| 142 | + |
137 | 143 | return lwip_setsockopt(sock, level, optname, optval, optlen); |
138 | 144 | } |
| 145 | +RTM_EXPORT(setsockopt); |
139 | 146 |
|
140 | 147 | int connect(int s, const struct sockaddr *name, socklen_t namelen) |
141 | 148 | { |
142 | 149 | int sock = dfs_lwip_getsocket(s); |
143 | | - |
| 150 | + |
144 | 151 | return lwip_connect(sock, name, namelen); |
145 | 152 | } |
| 153 | +RTM_EXPORT(connect); |
146 | 154 |
|
147 | 155 | int listen(int s, int backlog) |
148 | 156 | { |
149 | 157 | int sock = dfs_lwip_getsocket(s); |
150 | | - |
| 158 | + |
151 | 159 | return lwip_listen(sock, backlog); |
152 | 160 | } |
| 161 | +RTM_EXPORT(listen); |
153 | 162 |
|
154 | 163 | int recv(int s, void *mem, size_t len, int flags) |
155 | 164 | { |
156 | 165 | int sock = dfs_lwip_getsocket(s); |
157 | | - |
| 166 | + |
158 | 167 | return lwip_recv(sock, mem, len, flags); |
159 | 168 | } |
| 169 | +RTM_EXPORT(recv); |
160 | 170 |
|
161 | 171 | int recvfrom(int s, void *mem, size_t len, int flags, |
162 | | - struct sockaddr *from, socklen_t *fromlen) |
| 172 | + struct sockaddr *from, socklen_t *fromlen) |
163 | 173 | { |
164 | 174 | int sock = dfs_lwip_getsocket(s); |
165 | | - |
| 175 | + |
166 | 176 | return lwip_recvfrom(sock, mem, len, flags, from, fromlen); |
167 | 177 | } |
| 178 | +RTM_EXPORT(recvfrom); |
168 | 179 |
|
169 | 180 | int send(int s, const void *dataptr, size_t size, int flags) |
170 | 181 | { |
171 | 182 | int sock = dfs_lwip_getsocket(s); |
172 | | - |
| 183 | + |
173 | 184 | return lwip_send(sock, dataptr, size, flags); |
174 | 185 | } |
| 186 | +RTM_EXPORT(send); |
175 | 187 |
|
176 | 188 | int sendto(int s, const void *dataptr, size_t size, int flags, |
177 | | - const struct sockaddr *to, socklen_t tolen) |
| 189 | + const struct sockaddr *to, socklen_t tolen) |
178 | 190 | { |
179 | 191 | int sock = dfs_lwip_getsocket(s); |
180 | | - |
| 192 | + |
181 | 193 | return lwip_sendto(sock, dataptr, size, flags, to, tolen); |
182 | 194 | } |
| 195 | +RTM_EXPORT(sendto); |
183 | 196 |
|
184 | 197 | int socket(int domain, int type, int protocol) |
185 | 198 | { |
@@ -207,18 +220,18 @@ int socket(int domain, int type, int protocol) |
207 | 220 | d->path = RT_NULL; |
208 | 221 |
|
209 | 222 | d->fs = dfs_lwip_get_fs(); |
210 | | - |
| 223 | + |
211 | 224 | d->flags = DFS_O_RDWR; /* set flags as read and write */ |
212 | 225 | d->size = 0; |
213 | 226 | d->pos = 0; |
214 | | - |
| 227 | + |
215 | 228 | /* set socket to the data of dfs_fd */ |
216 | | - d->data = (void*) sock; |
| 229 | + d->data = (void *) sock; |
217 | 230 | } |
218 | 231 |
|
219 | 232 | /* release the ref-count of fd */ |
220 | 233 | fd_put(d); |
221 | 234 |
|
222 | 235 | return fd; |
223 | 236 | } |
224 | | - |
| 237 | +RTM_EXPORT(socket); |
0 commit comments