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

Function lwip_socket

components/net/lwip/lwip-2.1.2/src/api/sockets.c:1706–1765  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1704}
1705
1706int
1707lwip_socket(int domain, int type, int protocol)
1708{
1709 struct netconn *conn;
1710 int i;
1711
1712 LWIP_UNUSED_ARG(domain); /* @todo: check this */
1713
1714 /* create a netconn */
1715 switch (type) {
1716 case SOCK_RAW:
1717 conn = netconn_new_with_proto_and_callback(DOMAIN_TO_NETCONN_TYPE(domain, NETCONN_RAW),
1718 (u8_t)protocol, DEFAULT_SOCKET_EVENTCB);
1719 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_RAW, %d) = ",
1720 domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol));
1721 break;
1722 case SOCK_DGRAM:
1723 conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain,
1724 ((protocol == IPPROTO_UDPLITE) ? NETCONN_UDPLITE : NETCONN_UDP)),
1725 DEFAULT_SOCKET_EVENTCB);
1726 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_DGRAM, %d) = ",
1727 domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol));
1728#if LWIP_NETBUF_RECVINFO
1729 if (conn) {
1730 /* netconn layer enables pktinfo by default, sockets default to off */
1731 conn->flags &= ~NETCONN_FLAG_PKTINFO;
1732 }
1733#endif /* LWIP_NETBUF_RECVINFO */
1734 break;
1735 case SOCK_STREAM:
1736 conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain, NETCONN_TCP), DEFAULT_SOCKET_EVENTCB);
1737 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_STREAM, %d) = ",
1738 domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol));
1739 break;
1740 default:
1741 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%d, %d/UNKNOWN, %d) = -1\n",
1742 domain, type, protocol));
1743 set_errno(EINVAL);
1744 return -1;
1745 }
1746
1747 if (!conn) {
1748 LWIP_DEBUGF(SOCKETS_DEBUG, ("-1 / ENOBUFS (could not create netconn)\n"));
1749 set_errno(ENOBUFS);
1750 return -1;
1751 }
1752
1753 i = alloc_socket(conn, 0);
1754
1755 if (i == -1) {
1756 netconn_delete(conn);
1757 set_errno(ENFILE);
1758 return -1;
1759 }
1760 conn->socket = i;
1761 done_socket(&sockets[i - LWIP_SOCKET_OFFSET]);
1762 LWIP_DEBUGF(SOCKETS_DEBUG, ("%d\n", i));
1763 set_errno(0);

Callers 14

test_sockets.cFile · 0.50
START_TESTFunction · 0.50
pingFunction · 0.50
lwip_netdev_pingFunction · 0.50
inet_socketFunction · 0.50
tcp_client_entryFunction · 0.50
tcp_server_entryFunction · 0.50
udp_client_entryFunction · 0.50

Calls 4

done_socketFunction · 0.85
alloc_socketFunction · 0.70
netconn_deleteFunction · 0.70