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

Function lwip_socket

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

Source from the content-addressed store, hash-verified

958}
959
960int
961lwip_socket(int domain, int type, int protocol)
962{
963 struct netconn *conn;
964 int i;
965
966 LWIP_UNUSED_ARG(domain);
967
968 /* create a netconn */
969 switch (type) {
970 case SOCK_RAW:
971 conn = netconn_new_with_proto_and_callback(NETCONN_RAW, (u8_t)protocol, event_callback);
972 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_RAW, %d) = ",
973 domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol));
974 break;
975 case SOCK_DGRAM:
976 conn = netconn_new_with_callback( (protocol == IPPROTO_UDPLITE) ?
977 NETCONN_UDPLITE : NETCONN_UDP, event_callback);
978 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_DGRAM, %d) = ",
979 domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol));
980 break;
981 case SOCK_STREAM:
982 conn = netconn_new_with_callback(NETCONN_TCP, event_callback);
983 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_STREAM, %d) = ",
984 domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol));
985 if (conn != NULL) {
986 /* Prevent automatic window updates, we do this on our own! */
987 netconn_set_noautorecved(conn, 1);
988 }
989 break;
990 default:
991 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%d, %d/UNKNOWN, %d) = -1\n",
992 domain, type, protocol));
993 set_errno(EINVAL);
994 return -1;
995 }
996
997 if (!conn) {
998 LWIP_DEBUGF(SOCKETS_DEBUG, ("-1 / ENOBUFS (could not create netconn)\n"));
999 set_errno(ENOBUFS);
1000 return -1;
1001 }
1002
1003 i = alloc_socket(conn, 0);
1004
1005 if (i == -1) {
1006 netconn_delete(conn);
1007 set_errno(ENFILE);
1008 return -1;
1009 }
1010 conn->socket = i;
1011 LWIP_DEBUGF(SOCKETS_DEBUG, ("%d\n", i));
1012 set_errno(0);
1013 return i;
1014}
1015
1016int
1017lwip_write(int s, const void *data, size_t size)

Callers 1

pingFunction · 0.50

Calls 3

alloc_socketFunction · 0.70
netconn_deleteFunction · 0.70

Tested by

no test coverage detected