271 |
((struct sockaddr_in *)from)->sin_port = port; |
((struct sockaddr_in *)from)->sin_port = port; |
272 |
*fromlen = sizeof(struct sockaddr_in); |
*fromlen = sizeof(struct sockaddr_in); |
273 |
} |
} |
|
|
|
274 |
|
|
275 |
/* if the length of the received data is larger than |
return copylen; |
|
len, this data is discarded and we return len. |
|
|
otherwise we return the actual length of the received |
|
|
data */ |
|
|
if(len > copylen) { |
|
|
return copylen; |
|
|
} else { |
|
|
return len; |
|
|
} |
|
276 |
} |
} |
277 |
/*-----------------------------------------------------------------------------------*/ |
/*-----------------------------------------------------------------------------------*/ |
278 |
int |
int |
402 |
int |
int |
403 |
lwip_write(int s, void *data, int size) |
lwip_write(int s, void *data, int size) |
404 |
{ |
{ |
405 |
struct lwip_socket *sock; |
return lwip_send(s, data, size, 0); |
|
err_t err; |
|
|
|
|
|
DEBUGF(SOCKETS_DEBUG, ("write: socket %d, size %d\n", s, size)); |
|
|
|
|
|
sock = get_socket(s); |
|
|
if(sock == NULL) { |
|
|
return -1; |
|
|
} |
|
|
|
|
|
switch(netconn_type(sock->conn)) { |
|
|
case NETCONN_UDP: |
|
|
return lwip_send(s, data, size, 0); |
|
|
|
|
|
case NETCONN_TCP: |
|
|
err = netconn_write(sock->conn, data, size, NETCONN_COPY); |
|
|
break; |
|
|
default: |
|
|
err = ERR_ARG; |
|
|
break; |
|
|
} |
|
|
if(err != ERR_OK) { |
|
|
/* errno = ... */ |
|
|
return -1; |
|
|
} |
|
|
return size; |
|
406 |
} |
} |
407 |
/*-----------------------------------------------------------------------------------*/ |
/*-----------------------------------------------------------------------------------*/ |