Lines Matching refs:sock

112 #define SOCK_ADDR_TYPE_MATCH(name, sock) \  argument
113 ((((name)->sa_family == AF_INET) && !(NETCONNTYPE_ISIPV6((sock)->conn->type))) || \
114 (((name)->sa_family == AF_INET6) && (NETCONNTYPE_ISIPV6((sock)->conn->type))))
127 #define SOCK_ADDR_TYPE_MATCH(name, sock) 1 argument
136 #define SOCK_ADDR_TYPE_MATCH(name, sock) 1 argument
146 #define SOCK_ADDR_TYPE_MATCH_OR_UNSPEC(name, sock) (((name)->sa_family == AF_UNSPEC) || \ argument
147 SOCK_ADDR_TYPE_MATCH(name, sock))
152 #define LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, optlen, opttype) do { \ argument
154 if ((sock)->conn == NULL) { return EINVAL; } }while(0)
155 #define LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, opttype) do { \ argument
157 if (((sock)->conn == NULL) || ((sock)->conn->pcb.tcp == NULL)) { return EINVAL; } }while(0)
158 #define LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, opttype, netconntype) do { \ argument
159 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, opttype); \
160 …if (NETCONNTYPE_GROUP(netconn_type((sock)->conn)) != netconntype) { return ENOPROTOOPT; } }while(0)
167 #define LWIP_SETGETSOCKOPT_DATA_VAR_ALLOC(name, sock) do { \ argument
170 sock_set_errno(sock, ENOMEM); \
174 #define LWIP_SETGETSOCKOPT_DATA_VAR_ALLOC(name, sock) argument
279 struct lwip_sock* sock; member
361 struct lwip_sock *sock; in get_socket() local
371 sock = &sockets[s]; in get_socket()
373 if (!sock->conn) { in get_socket()
379 return sock; in get_socket()
461 free_socket(struct lwip_sock *sock, int is_tcp) in free_socket() argument
465 lastdata = sock->lastdata; in free_socket()
466 sock->lastdata = NULL; in free_socket()
467 sock->lastoffset = 0; in free_socket()
468 sock->err = 0; in free_socket()
471 SYS_ARCH_SET(sock->conn, NULL); in free_socket()
492 struct lwip_sock *sock, *nsock; in lwip_accept() local
501 sock = get_socket(s); in lwip_accept()
502 if (!sock) { in lwip_accept()
506 if (netconn_is_nonblocking(sock->conn) && (sock->rcvevent <= 0)) { in lwip_accept()
513 err = netconn_accept(sock->conn, &newconn); in lwip_accept()
516 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { in lwip_accept()
517 sock_set_errno(sock, EOPNOTSUPP); in lwip_accept()
519 sock_set_errno(sock, EINVAL); in lwip_accept()
521 sock_set_errno(sock, err_to_errno(err)); in lwip_accept()
530 sock_set_errno(sock, ENFILE); in lwip_accept()
559 sock_set_errno(sock, err_to_errno(err)); in lwip_accept()
577 sock_set_errno(sock, 0); in lwip_accept()
584 struct lwip_sock *sock; in lwip_bind() local
589 sock = get_socket(s); in lwip_bind()
590 if (!sock) { in lwip_bind()
594 if (!SOCK_ADDR_TYPE_MATCH(name, sock)) { in lwip_bind()
596 sock_set_errno(sock, err_to_errno(ERR_VAL)); in lwip_bind()
603 sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); in lwip_bind()
619 err = netconn_bind(sock->conn, &local_addr, local_port); in lwip_bind()
623 sock_set_errno(sock, err_to_errno(err)); in lwip_bind()
628 sock_set_errno(sock, 0); in lwip_bind()
635 struct lwip_sock *sock; in lwip_close() local
641 sock = get_socket(s); in lwip_close()
642 if (!sock) { in lwip_close()
646 if (sock->conn != NULL) { in lwip_close()
647 is_tcp = NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP; in lwip_close()
649 LWIP_ASSERT("sock->lastdata == NULL", sock->lastdata == NULL); in lwip_close()
657 err = netconn_delete(sock->conn); in lwip_close()
659 sock_set_errno(sock, err_to_errno(err)); in lwip_close()
663 free_socket(sock, is_tcp); in lwip_close()
671 struct lwip_sock *sock; in lwip_connect() local
674 sock = get_socket(s); in lwip_connect()
675 if (!sock) { in lwip_connect()
679 if (!SOCK_ADDR_TYPE_MATCH_OR_UNSPEC(name, sock)) { in lwip_connect()
681 sock_set_errno(sock, err_to_errno(ERR_VAL)); in lwip_connect()
688 err = netconn_disconnect(sock->conn); in lwip_connect()
696 sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); in lwip_connect()
711 err = netconn_connect(sock->conn, &remote_addr, remote_port); in lwip_connect()
716 sock_set_errno(sock, err_to_errno(err)); in lwip_connect()
721 sock_set_errno(sock, 0); in lwip_connect()
736 struct lwip_sock *sock; in lwip_listen() local
741 sock = get_socket(s); in lwip_listen()
742 if (!sock) { in lwip_listen()
749 err = netconn_listen_with_backlog(sock->conn, (u8_t)backlog); in lwip_listen()
753 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { in lwip_listen()
754 sock_set_errno(sock, EOPNOTSUPP); in lwip_listen()
757 sock_set_errno(sock, err_to_errno(err)); in lwip_listen()
761 sock_set_errno(sock, 0); in lwip_listen()
769 struct lwip_sock *sock; in lwip_recvfrom() local
778 sock = get_socket(s); in lwip_recvfrom()
779 if (!sock) { in lwip_recvfrom()
784 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom: top while sock->lastdata=%p\n", sock->lastdata)); in lwip_recvfrom()
786 if (sock->lastdata) { in lwip_recvfrom()
787 buf = sock->lastdata; in lwip_recvfrom()
790 if (((flags & MSG_DONTWAIT) || netconn_is_nonblocking(sock->conn)) && in lwip_recvfrom()
791 (sock->rcvevent <= 0)) { in lwip_recvfrom()
794 sock_set_errno(sock, 0); in lwip_recvfrom()
804 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { in lwip_recvfrom()
805 err = netconn_recv_tcp_pbuf(sock->conn, (struct pbuf **)&buf); in lwip_recvfrom()
807 err = netconn_recv(sock->conn, (struct netbuf **)&buf); in lwip_recvfrom()
816 event_callback(sock->conn, NETCONN_EVT_RCVPLUS, 0); in lwip_recvfrom()
819 sock_set_errno(sock, 0); in lwip_recvfrom()
825 sock_set_errno(sock, err_to_errno(err)); in lwip_recvfrom()
833 sock->lastdata = buf; in lwip_recvfrom()
836 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { in lwip_recvfrom()
843 buflen, len, off, sock->lastoffset)); in lwip_recvfrom()
845 buflen -= sock->lastoffset; in lwip_recvfrom()
855 pbuf_copy_partial(p, (u8_t*)mem + off, copylen, sock->lastoffset); in lwip_recvfrom()
859 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { in lwip_recvfrom()
864 (sock->rcvevent <= 0) || in lwip_recvfrom()
883 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { in lwip_recvfrom()
885 netconn_getaddr(sock->conn, fromaddr, &port, 0); in lwip_recvfrom()
893 if (NETCONNTYPE_ISIPV6(netconn_type(sock->conn)) && IP_IS_V4(fromaddr)) { in lwip_recvfrom()
919 if ((NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) && (buflen - copylen > 0)) { in lwip_recvfrom()
920 sock->lastdata = buf; in lwip_recvfrom()
921 sock->lastoffset += copylen; in lwip_recvfrom()
924 sock->lastdata = NULL; in lwip_recvfrom()
925 sock->lastoffset = 0; in lwip_recvfrom()
927 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { in lwip_recvfrom()
937 sock_set_errno(sock, 0); in lwip_recvfrom()
956 struct lwip_sock *sock; in lwip_send() local
964 sock = get_socket(s); in lwip_send()
965 if (!sock) { in lwip_send()
969 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { in lwip_send()
973 sock_set_errno(sock, err_to_errno(ERR_ARG)); in lwip_send()
982 err = netconn_write_partly(sock->conn, data, size, write_flags, &written); in lwip_send()
985 sock_set_errno(sock, err_to_errno(err)); in lwip_send()
992 struct lwip_sock *sock; in lwip_sendmsg() local
1001 sock = get_socket(s); in lwip_sendmsg()
1002 if (!sock) { in lwip_sendmsg()
1007 sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); in lwip_sendmsg()
1013 sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); in lwip_sendmsg()
1015 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { in lwip_sendmsg()
1027 …err = netconn_write_partly(sock->conn, msg->msg_iov[i].iov_base, msg->msg_iov[i].iov_len, write_fl… in lwip_sendmsg()
1044 sock_set_errno(sock, err_to_errno(err)); in lwip_sendmsg()
1047 sock_set_errno(sock, err_to_errno(ERR_ARG)); in lwip_sendmsg()
1059 sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); in lwip_sendmsg()
1064 sock_set_errno(sock, err_to_errno(ERR_MEM)); in lwip_sendmsg()
1131 err = netconn_send(sock->conn, chain_buf); in lwip_sendmsg()
1137 sock_set_errno(sock, err_to_errno(err)); in lwip_sendmsg()
1141 sock_set_errno(sock, err_to_errno(ERR_ARG)); in lwip_sendmsg()
1150 struct lwip_sock *sock; in lwip_sendto() local
1156 sock = get_socket(s); in lwip_sendto()
1157 if (!sock) { in lwip_sendto()
1161 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { in lwip_sendto()
1166 sock_set_errno(sock, err_to_errno(ERR_ARG)); in lwip_sendto()
1177 sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); in lwip_sendto()
1189 ip_addr_set_any(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), &buf.addr); in lwip_sendto()
1206 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_RAW) { in lwip_sendto()
1229 err = netconn_send(sock->conn, &buf); in lwip_sendto()
1235 sock_set_errno(sock, err_to_errno(err)); in lwip_sendto()
1336 struct lwip_sock *sock; in lwip_selscan() local
1354 sock = tryget_socket(i); in lwip_selscan()
1355 if (sock != NULL) { in lwip_selscan()
1356 void* lastdata = sock->lastdata; in lwip_selscan()
1357 s16_t rcvevent = sock->rcvevent; in lwip_selscan()
1358 u16_t sendevent = sock->sendevent; in lwip_selscan()
1359 u16_t errevent = sock->errevent; in lwip_selscan()
1471 struct lwip_sock *sock; in lwip_select() local
1473 sock = tryget_socket(i); in lwip_select()
1474 if (sock != NULL) { in lwip_select()
1475 sock->select_waiting++; in lwip_select()
1476 LWIP_ASSERT("sock->select_waiting > 0", sock->select_waiting > 0); in lwip_select()
1517 struct lwip_sock *sock; in lwip_select() local
1519 sock = tryget_socket(i); in lwip_select()
1520 if (sock != NULL) { in lwip_select()
1522 LWIP_ASSERT("sock->select_waiting > 0", sock->select_waiting > 0); in lwip_select()
1523 if (sock->select_waiting > 0) { in lwip_select()
1524 sock->select_waiting--; in lwip_select()
1599 struct lwip_sock *sock; in event_callback() local
1627 sock = get_socket(s); in event_callback()
1628 if (!sock) { in event_callback()
1639 sock->rcvevent++; in event_callback()
1642 sock->rcvevent--; in event_callback()
1645 sock->sendevent = 1; in event_callback()
1648 sock->sendevent = 0; in event_callback()
1651 sock->errevent = 1; in event_callback()
1658 if (sock->select_waiting == 0) { in event_callback()
1678 if (sock->rcvevent > 0) { in event_callback()
1683 if (sock->sendevent != 0) { in event_callback()
1688 if (sock->errevent != 0) { in event_callback()
1718 struct lwip_sock *sock; in lwip_shutdown() local
1724 sock = get_socket(s); in lwip_shutdown()
1725 if (!sock) { in lwip_shutdown()
1729 if (sock->conn != NULL) { in lwip_shutdown()
1730 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { in lwip_shutdown()
1731 sock_set_errno(sock, EOPNOTSUPP); in lwip_shutdown()
1735 sock_set_errno(sock, ENOTCONN); in lwip_shutdown()
1747 sock_set_errno(sock, EINVAL); in lwip_shutdown()
1750 err = netconn_shutdown(sock->conn, shut_rx, shut_tx); in lwip_shutdown()
1752 sock_set_errno(sock, err_to_errno(err)); in lwip_shutdown()
1759 struct lwip_sock *sock; in lwip_getaddrname() local
1765 sock = get_socket(s); in lwip_getaddrname()
1766 if (!sock) { in lwip_getaddrname()
1771 err = netconn_getaddr(sock->conn, &naddr, &port, local); in lwip_getaddrname()
1773 sock_set_errno(sock, err_to_errno(err)); in lwip_getaddrname()
1779 if (NETCONNTYPE_ISIPV6(netconn_type(sock->conn)) && in lwip_getaddrname()
1797 sock_set_errno(sock, 0); in lwip_getaddrname()
1817 struct lwip_sock *sock = get_socket(s); in lwip_getsockopt() local
1822 if (!sock) { in lwip_getsockopt()
1827 sock_set_errno(sock, EFAULT); in lwip_getsockopt()
1842 sock_set_errno(sock, ENOBUFS); in lwip_getsockopt()
1847 LWIP_SETGETSOCKOPT_DATA_VAR_ALLOC(data, sock); in lwip_getsockopt()
1859 LWIP_SETGETSOCKOPT_DATA_VAR_REF(data).completed_sem = &sock->conn->op_completed; in lwip_getsockopt()
1864 sock_set_errno(sock, err_to_errno(err)); in lwip_getsockopt()
1881 sock_set_errno(sock, err); in lwip_getsockopt()
1915 struct lwip_sock *sock = tryget_socket(s); in lwip_getsockopt_impl() local
1916 if (!sock) { in lwip_getsockopt_impl()
1928 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int); in lwip_getsockopt_impl()
1929 if (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_TCP) { in lwip_getsockopt_impl()
1932 if ((sock->conn->pcb.tcp != NULL) && (sock->conn->pcb.tcp->state == LISTEN)) { in lwip_getsockopt_impl()
1946 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int); in lwip_getsockopt_impl()
1947 *(int*)optval = ip_get_option(sock->conn->pcb.ip, optname); in lwip_getsockopt_impl()
1953 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, int); in lwip_getsockopt_impl()
1954 switch (NETCONNTYPE_GROUP(netconn_type(sock->conn))) { in lwip_getsockopt_impl()
1965 *(int*)optval = netconn_type(sock->conn); in lwip_getsockopt_impl()
1977 if (((sock->err == 0) || (sock->err == EINPROGRESS)) && (sock->conn != NULL)) { in lwip_getsockopt_impl()
1978 sock_set_errno(sock, err_to_errno(sock->conn->last_err)); in lwip_getsockopt_impl()
1980 *(int *)optval = (sock->err == 0xFF ? (int)-1 : (int)sock->err); in lwip_getsockopt_impl()
1981 sock->err = 0; in lwip_getsockopt_impl()
1988 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, LWIP_SO_SNDRCVTIMEO_OPTTYPE); in lwip_getsockopt_impl()
1989 LWIP_SO_SNDRCVTIMEO_SET(optval, netconn_get_sendtimeout(sock->conn)); in lwip_getsockopt_impl()
1994 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, LWIP_SO_SNDRCVTIMEO_OPTTYPE); in lwip_getsockopt_impl()
1995 LWIP_SO_SNDRCVTIMEO_SET(optval, netconn_get_recvtimeout(sock->conn)); in lwip_getsockopt_impl()
2000 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, int); in lwip_getsockopt_impl()
2001 *(int *)optval = netconn_get_recvbufsize(sock->conn); in lwip_getsockopt_impl()
2009 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, struct linger); in lwip_getsockopt_impl()
2010 conn_linger = sock->conn->linger; in lwip_getsockopt_impl()
2023 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_UDP); in lwip_getsockopt_impl()
2025 if ((udp_flags(sock->conn->pcb.udp) & UDP_FLAGS_UDPLITE) != 0) { in lwip_getsockopt_impl()
2030 *(int*)optval = (udp_flags(sock->conn->pcb.udp) & UDP_FLAGS_NOCHKSUM) ? 1 : 0; in lwip_getsockopt_impl()
2045 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int); in lwip_getsockopt_impl()
2046 *(int*)optval = sock->conn->pcb.ip->ttl; in lwip_getsockopt_impl()
2051 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int); in lwip_getsockopt_impl()
2052 *(int*)optval = sock->conn->pcb.ip->tos; in lwip_getsockopt_impl()
2058 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, u8_t); in lwip_getsockopt_impl()
2059 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) { in lwip_getsockopt_impl()
2062 *(u8_t*)optval = udp_get_multicast_ttl(sock->conn->pcb.udp); in lwip_getsockopt_impl()
2067 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, struct in_addr); in lwip_getsockopt_impl()
2068 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) { in lwip_getsockopt_impl()
2071 …inet_addr_from_ip4addr((struct in_addr*)optval, udp_get_multicast_netif_addr(sock->conn->pcb.udp)); in lwip_getsockopt_impl()
2076 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, u8_t); in lwip_getsockopt_impl()
2077 if ((sock->conn->pcb.udp->flags & UDP_FLAGS_MULTICAST_LOOP) != 0) { in lwip_getsockopt_impl()
2098 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_TCP); in lwip_getsockopt_impl()
2099 if (sock->conn->pcb.tcp->state == LISTEN) { in lwip_getsockopt_impl()
2104 *(int*)optval = tcp_nagle_disabled(sock->conn->pcb.tcp); in lwip_getsockopt_impl()
2109 *(int*)optval = (int)sock->conn->pcb.tcp->keep_idle; in lwip_getsockopt_impl()
2116 *(int*)optval = (int)(sock->conn->pcb.tcp->keep_idle/1000); in lwip_getsockopt_impl()
2121 *(int*)optval = (int)(sock->conn->pcb.tcp->keep_intvl/1000); in lwip_getsockopt_impl()
2126 *(int*)optval = (int)sock->conn->pcb.tcp->keep_cnt; in lwip_getsockopt_impl()
2145 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, int); in lwip_getsockopt_impl()
2146 *(int*)optval = (netconn_get_ipv6only(sock->conn) ? 1 : 0); in lwip_getsockopt_impl()
2163 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int); in lwip_getsockopt_impl()
2165 if (!NETCONNTYPE_ISUDPLITE(netconn_type(sock->conn))) { in lwip_getsockopt_impl()
2170 *(int*)optval = sock->conn->pcb.udp->chksum_len_tx; in lwip_getsockopt_impl()
2175 *(int*)optval = sock->conn->pcb.udp->chksum_len_rx; in lwip_getsockopt_impl()
2192 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_RAW); in lwip_getsockopt_impl()
2193 if (sock->conn->pcb.raw->chksum_reqd == 0) { in lwip_getsockopt_impl()
2196 *(int *)optval = sock->conn->pcb.raw->chksum_offset; in lwip_getsockopt_impl()
2223 struct lwip_sock *sock = get_socket(s); in lwip_setsockopt() local
2228 if (!sock) { in lwip_setsockopt()
2233 sock_set_errno(sock, EFAULT); in lwip_setsockopt()
2248 sock_set_errno(sock, ENOBUFS); in lwip_setsockopt()
2253 LWIP_SETGETSOCKOPT_DATA_VAR_ALLOC(data, sock); in lwip_setsockopt()
2267 LWIP_SETGETSOCKOPT_DATA_VAR_REF(data).completed_sem = &sock->conn->op_completed; in lwip_setsockopt()
2272 sock_set_errno(sock, err_to_errno(err)); in lwip_setsockopt()
2282 sock_set_errno(sock, err); in lwip_setsockopt()
2316 struct lwip_sock *sock = tryget_socket(s); in lwip_setsockopt_impl() local
2317 if (!sock) { in lwip_setsockopt_impl()
2335 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int); in lwip_setsockopt_impl()
2337 ip_set_option(sock->conn->pcb.ip, optname); in lwip_setsockopt_impl()
2339 ip_reset_option(sock->conn->pcb.ip, optname); in lwip_setsockopt_impl()
2350 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, optlen, LWIP_SO_SNDRCVTIMEO_OPTTYPE); in lwip_setsockopt_impl()
2351 netconn_set_sendtimeout(sock->conn, LWIP_SO_SNDRCVTIMEO_GET_MS(optval)); in lwip_setsockopt_impl()
2356 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, optlen, LWIP_SO_SNDRCVTIMEO_OPTTYPE); in lwip_setsockopt_impl()
2357 netconn_set_recvtimeout(sock->conn, (int)LWIP_SO_SNDRCVTIMEO_GET_MS(optval)); in lwip_setsockopt_impl()
2362 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, optlen, int); in lwip_setsockopt_impl()
2363 netconn_set_recvbufsize(sock->conn, *(const int*)optval); in lwip_setsockopt_impl()
2370 LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, optlen, struct linger); in lwip_setsockopt_impl()
2379 sock->conn->linger = (s16_t)lingersec; in lwip_setsockopt_impl()
2381 sock->conn->linger = -1; in lwip_setsockopt_impl()
2388 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_UDP); in lwip_setsockopt_impl()
2390 if ((udp_flags(sock->conn->pcb.udp) & UDP_FLAGS_UDPLITE) != 0) { in lwip_setsockopt_impl()
2396 udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) | UDP_FLAGS_NOCHKSUM); in lwip_setsockopt_impl()
2398 udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) & ~UDP_FLAGS_NOCHKSUM); in lwip_setsockopt_impl()
2414 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int); in lwip_setsockopt_impl()
2415 sock->conn->pcb.ip->ttl = (u8_t)(*(const int*)optval); in lwip_setsockopt_impl()
2417 s, sock->conn->pcb.ip->ttl)); in lwip_setsockopt_impl()
2420 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int); in lwip_setsockopt_impl()
2421 sock->conn->pcb.ip->tos = (u8_t)(*(const int*)optval); in lwip_setsockopt_impl()
2423 s, sock->conn->pcb.ip->tos)); in lwip_setsockopt_impl()
2427 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, u8_t, NETCONN_UDP); in lwip_setsockopt_impl()
2428 udp_set_multicast_ttl(sock->conn->pcb.udp, (u8_t)(*(const u8_t*)optval)); in lwip_setsockopt_impl()
2433 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, struct in_addr, NETCONN_UDP); in lwip_setsockopt_impl()
2435 udp_set_multicast_netif_addr(sock->conn->pcb.udp, &if_addr); in lwip_setsockopt_impl()
2439 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, u8_t, NETCONN_UDP); in lwip_setsockopt_impl()
2441 … udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) | UDP_FLAGS_MULTICAST_LOOP); in lwip_setsockopt_impl()
2443 … udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) & ~UDP_FLAGS_MULTICAST_LOOP); in lwip_setsockopt_impl()
2457 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, struct ip_mreq, NETCONN_UDP); in lwip_setsockopt_impl()
2490 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_TCP); in lwip_setsockopt_impl()
2491 if (sock->conn->pcb.tcp->state == LISTEN) { in lwip_setsockopt_impl()
2497 tcp_nagle_disable(sock->conn->pcb.tcp); in lwip_setsockopt_impl()
2499 tcp_nagle_enable(sock->conn->pcb.tcp); in lwip_setsockopt_impl()
2505 sock->conn->pcb.tcp->keep_idle = (u32_t)(*(const int*)optval); in lwip_setsockopt_impl()
2507 s, sock->conn->pcb.tcp->keep_idle)); in lwip_setsockopt_impl()
2512 sock->conn->pcb.tcp->keep_idle = 1000*(u32_t)(*(const int*)optval); in lwip_setsockopt_impl()
2514 s, sock->conn->pcb.tcp->keep_idle)); in lwip_setsockopt_impl()
2517 sock->conn->pcb.tcp->keep_intvl = 1000*(u32_t)(*(const int*)optval); in lwip_setsockopt_impl()
2519 s, sock->conn->pcb.tcp->keep_intvl)); in lwip_setsockopt_impl()
2522 sock->conn->pcb.tcp->keep_cnt = (u32_t)(*(const int*)optval); in lwip_setsockopt_impl()
2524 s, sock->conn->pcb.tcp->keep_cnt)); in lwip_setsockopt_impl()
2541 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_TCP); in lwip_setsockopt_impl()
2543 netconn_set_ipv6only(sock->conn, 1); in lwip_setsockopt_impl()
2545 netconn_set_ipv6only(sock->conn, 0); in lwip_setsockopt_impl()
2548 s, (netconn_get_ipv6only(sock->conn) ? 1 : 0))); in lwip_setsockopt_impl()
2563 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int); in lwip_setsockopt_impl()
2565 if (!NETCONNTYPE_ISUDPLITE(netconn_type(sock->conn))) { in lwip_setsockopt_impl()
2572 sock->conn->pcb.udp->chksum_len_tx = 8; in lwip_setsockopt_impl()
2574 sock->conn->pcb.udp->chksum_len_tx = (u16_t)*(const int*)optval; in lwip_setsockopt_impl()
2582 sock->conn->pcb.udp->chksum_len_rx = 8; in lwip_setsockopt_impl()
2584 sock->conn->pcb.udp->chksum_len_rx = (u16_t)*(const int*)optval; in lwip_setsockopt_impl()
2604 if(sock->conn->pcb.raw->protocol == IPPROTO_ICMPV6) { in lwip_setsockopt_impl()
2608 LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_RAW); in lwip_setsockopt_impl()
2610 sock->conn->pcb.raw->chksum_reqd = 0; in lwip_setsockopt_impl()
2615 sock->conn->pcb.raw->chksum_reqd = 1; in lwip_setsockopt_impl()
2616 sock->conn->pcb.raw->chksum_offset = (u16_t)*(const int *)optval; in lwip_setsockopt_impl()
2619 s, sock->conn->pcb.raw->chksum_reqd)); in lwip_setsockopt_impl()
2642 struct lwip_sock *sock = get_socket(s); in lwip_ioctl() local
2649 if (!sock) { in lwip_ioctl()
2657 sock_set_errno(sock, EINVAL); in lwip_ioctl()
2661 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { in lwip_ioctl()
2663 if (sock->lastdata) { in lwip_ioctl()
2664 p = ((struct netbuf *)sock->lastdata)->p; in lwip_ioctl()
2665 *((int*)argp) = p->tot_len - sock->lastoffset; in lwip_ioctl()
2669 if (sock->rcvevent <= 0) { in lwip_ioctl()
2672 err = netconn_recv(sock->conn, &rxbuf); in lwip_ioctl()
2676 sock->lastdata = rxbuf; in lwip_ioctl()
2677 sock->lastoffset = 0; in lwip_ioctl()
2688 SYS_ARCH_GET(sock->conn->recv_avail, recv_avail); in lwip_ioctl()
2695 if (sock->lastdata) { in lwip_ioctl()
2696 struct pbuf *p = (struct pbuf *)sock->lastdata; in lwip_ioctl()
2697 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { in lwip_ioctl()
2701 buflen -= sock->lastoffset; in lwip_ioctl()
2707 sock_set_errno(sock, 0); in lwip_ioctl()
2719 netconn_set_nonblocking(sock->conn, val); in lwip_ioctl()
2721 sock_set_errno(sock, 0); in lwip_ioctl()
2728 sock_set_errno(sock, ENOSYS); /* not yet implemented */ in lwip_ioctl()
2739 struct lwip_sock *sock = get_socket(s); in lwip_fcntl() local
2742 if (!sock) { in lwip_fcntl()
2748 ret = netconn_is_nonblocking(sock->conn) ? O_NONBLOCK : 0; in lwip_fcntl()
2749 sock_set_errno(sock, 0); in lwip_fcntl()
2754 netconn_set_nonblocking(sock->conn, val & O_NONBLOCK); in lwip_fcntl()
2756 sock_set_errno(sock, 0); in lwip_fcntl()
2758 sock_set_errno(sock, ENOSYS); /* not yet implemented */ in lwip_fcntl()
2763 sock_set_errno(sock, ENOSYS); /* not yet implemented */ in lwip_fcntl()
2779 struct lwip_sock *sock = get_socket(s); in lwip_socket_register_membership() local
2782 if (!sock) { in lwip_socket_register_membership()
2787 if (socket_ipv4_multicast_memberships[i].sock == NULL) { in lwip_socket_register_membership()
2788 socket_ipv4_multicast_memberships[i].sock = sock; in lwip_socket_register_membership()
2805 struct lwip_sock *sock = get_socket(s); in lwip_socket_unregister_membership() local
2808 if (!sock) { in lwip_socket_unregister_membership()
2813 if ((socket_ipv4_multicast_memberships[i].sock == sock) && in lwip_socket_unregister_membership()
2816 socket_ipv4_multicast_memberships[i].sock = NULL; in lwip_socket_unregister_membership()
2831 struct lwip_sock *sock = get_socket(s); in lwip_socket_drop_registered_memberships() local
2834 if (!sock) { in lwip_socket_drop_registered_memberships()
2839 if (socket_ipv4_multicast_memberships[i].sock == sock) { in lwip_socket_drop_registered_memberships()
2843 socket_ipv4_multicast_memberships[i].sock = NULL; in lwip_socket_drop_registered_memberships()
2847 netconn_join_leave_group(sock->conn, &multi_addr, &if_addr, NETCONN_LEAVE); in lwip_socket_drop_registered_memberships()