MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / lwip_bind

Function lwip_bind

components/net/lwip/lwip-1.4.1/src/api/sockets.c:417–455  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

415}
416
417int
418lwip_bind(int s, const struct sockaddr *name, socklen_t namelen)
419{
420 struct lwip_sock *sock;
421 ip_addr_t local_addr;
422 u16_t local_port;
423 err_t err;
424 const struct sockaddr_in *name_in;
425
426 sock = get_socket(s);
427 if (!sock) {
428 return -1;
429 }
430
431 /* check size, familiy and alignment of 'name' */
432 LWIP_ERROR("lwip_bind: invalid address", ((namelen == sizeof(struct sockaddr_in)) &&
433 ((name->sa_family) == AF_INET) && ((((mem_ptr_t)name) % 4) == 0)),
434 sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;);
435 name_in = (const struct sockaddr_in *)(void*)name;
436
437 inet_addr_to_ipaddr(&local_addr, &name_in->sin_addr);
438 local_port = name_in->sin_port;
439
440 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_bind(%d, addr=", s));
441 ip_addr_debug_print(SOCKETS_DEBUG, &local_addr);
442 LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F")\n", ntohs(local_port)));
443
444 err = netconn_bind(sock->conn, &local_addr, ntohs(local_port));
445
446 if (err != ERR_OK) {
447 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_bind(%d) failed, err=%d\n", s, err));
448 sock_set_errno(sock, err_to_errno(err));
449 return -1;
450 }
451
452 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_bind(%d) succeeded\n", s));
453 sock_set_errno(sock, 0);
454 return 0;
455}
456
457int
458lwip_close(int s)

Callers

nothing calls this directly

Calls 3

get_socketFunction · 0.70
netconn_bindFunction · 0.70
err_to_errnoFunction · 0.50

Tested by

no test coverage detected