Lines Matching refs:msg
312 if (conn->current_msg && conn->current_msg->msg.sd.polls_left) {
313 conn->current_msg->msg.sd.polls_left--;
546 pcb_new(struct api_msg *msg) argument
550 LWIP_ASSERT("pcb_new: pcb already allocated", msg->conn->pcb.tcp == NULL);
554 if(NETCONNTYPE_ISIPV6(netconn_type(msg->conn))) {
560 switch(NETCONNTYPE_GROUP(msg->conn->type)) {
563 msg->conn->pcb.raw = raw_new_ip_type(iptype, msg->msg.n.proto);
564 if (msg->conn->pcb.raw != NULL) {
567 if (NETCONNTYPE_ISIPV6(msg->conn->type) && msg->conn->pcb.raw->protocol == IP6_NEXTH_ICMP6) {
568 msg->conn->pcb.raw->chksum_reqd = 1;
569 msg->conn->pcb.raw->chksum_offset = 2;
572 raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn);
578 msg->conn->pcb.udp = udp_new_ip_type(iptype);
579 if (msg->conn->pcb.udp != NULL) {
581 if (NETCONNTYPE_ISUDPLITE(msg->conn->type)) {
582 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_UDPLITE);
585 if (NETCONNTYPE_ISUDPNOCHKSUM(msg->conn->type)) {
586 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
588 udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
594 msg->conn->pcb.tcp = tcp_new_ip_type(iptype);
595 if (msg->conn->pcb.tcp != NULL) {
596 setup_tcp(msg->conn);
602 msg->err = ERR_VAL;
605 if (msg->conn->pcb.ip == NULL) {
606 msg->err = ERR_MEM;
619 struct api_msg *msg = (struct api_msg*)m; local
621 msg->err = ERR_OK;
622 if (msg->conn->pcb.tcp == NULL) {
623 pcb_new(msg);
629 TCPIP_APIMSG_ACK(msg);
835 shut = conn->current_msg->msg.sd.shut;
889 } else if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >=
938 if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >= close_timeout) {
940 if (conn->current_msg->msg.sd.polls_left == 0) {
1014 struct api_msg *msg = (struct api_msg*)m; local
1016 enum netconn_state state = msg->conn->state;
1018 (state == NETCONN_NONE) || (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP));
1023 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1026 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
1027 op_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
1028 msg->conn->current_msg->err = ERR_CLSD;
1029 msg->conn->current_msg = NULL;
1030 msg->conn->state = NETCONN_NONE;
1031 NETCONN_SET_SAFE_ERR(msg->conn, ERR_CLSD);
1039 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1042 msg->err = ERR_INPROGRESS;
1047 (state != NETCONN_CONNECT) || IN_NONBLOCKING_CONNECT(msg->conn));
1048 msg->err = ERR_OK;
1050 netconn_drain(msg->conn);
1052 if (msg->conn->pcb.tcp != NULL) {
1054 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1057 raw_remove(msg->conn->pcb.raw);
1062 msg->conn->pcb.udp->recv_arg = NULL;
1063 udp_remove(msg->conn->pcb.udp);
1068 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1069 msg->conn->state = NETCONN_CLOSE;
1070 msg->msg.sd.shut = NETCONN_SHUT_RDWR;
1071 msg->conn->current_msg = msg;
1073 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
1074 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
1076 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1078 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1081 lwip_netconn_do_close_internal(msg->conn);
1090 msg->conn->pcb.tcp = NULL;
1096 API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0);
1097 API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
1099 if (sys_sem_valid(LWIP_API_MSG_SEM(msg))) {
1100 TCPIP_APIMSG_ACK(msg);
1114 struct api_msg *msg = (struct api_msg*)m; local
1116 if (ERR_IS_FATAL(msg->conn->last_err)) {
1117 msg->err = msg->conn->last_err;
1119 msg->err = ERR_VAL;
1120 if (msg->conn->pcb.tcp != NULL) {
1121 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1124 msg->err = raw_bind(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1129 msg->err = udp_bind(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1134 msg->err = tcp_bind(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1142 TCPIP_APIMSG_ACK(msg);
1205 struct api_msg *msg = (struct api_msg*)m; local
1207 if (msg->conn->pcb.tcp == NULL) {
1209 msg->err = ERR_CLSD;
1211 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1214 msg->err = raw_connect(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1219 … msg->err = udp_connect(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1225 if (msg->conn->state == NETCONN_CONNECT) {
1226 msg->err = ERR_ALREADY;
1227 } else if (msg->conn->state != NETCONN_NONE) {
1228 msg->err = ERR_ISCONN;
1230 setup_tcp(msg->conn);
1231 msg->err = tcp_connect(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr),
1232 msg->msg.bc.port, lwip_netconn_do_connected);
1233 if (msg->err == ERR_OK) {
1234 u8_t non_blocking = netconn_is_nonblocking(msg->conn);
1235 msg->conn->state = NETCONN_CONNECT;
1236 SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
1238 msg->err = ERR_INPROGRESS;
1240 msg->conn->current_msg = msg;
1244 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CONNECT);
1246 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1248 LWIP_ASSERT("state!", msg->conn->state != NETCONN_CONNECT);
1257 LWIP_ERROR("Invalid netconn type", 0, do{ msg->err = ERR_VAL; }while(0));
1263 TCPIP_APIMSG_ACK(msg);
1276 struct api_msg *msg = (struct api_msg*)m; local
1279 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1280 udp_disconnect(msg->conn->pcb.udp);
1281 msg->err = ERR_OK;
1285 msg->err = ERR_VAL;
1287 TCPIP_APIMSG_ACK(msg);
1300 struct api_msg *msg = (struct api_msg*)m; local
1302 if (ERR_IS_FATAL(msg->conn->last_err)) {
1303 msg->err = msg->conn->last_err;
1305 msg->err = ERR_CONN;
1306 if (msg->conn->pcb.tcp != NULL) {
1307 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1308 if (msg->conn->state == NETCONN_NONE) {
1310 if (msg->conn->pcb.tcp->state != CLOSED) {
1312 msg->err = ERR_VAL;
1317 backlog = msg->msg.lb.backlog;
1325 if (ip_addr_cmp(&msg->conn->pcb.ip->local_ip, IP6_ADDR_ANY) &&
1326 (netconn_get_ipv6only(msg->conn) == 0)) {
1328 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->local_ip, IPADDR_TYPE_ANY);
1329 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->remote_ip, IPADDR_TYPE_ANY);
1333 lpcb = tcp_listen_with_backlog_and_err(msg->conn->pcb.tcp, backlog, &err);
1337 msg->err = err;
1340 if (sys_mbox_valid(&msg->conn->recvmbox)) {
1342 sys_mbox_free(&msg->conn->recvmbox);
1343 sys_mbox_set_invalid(&msg->conn->recvmbox);
1345 msg->err = ERR_OK;
1346 if (!sys_mbox_valid(&msg->conn->acceptmbox)) {
1347 msg->err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE);
1349 if (msg->err == ERR_OK) {
1350 msg->conn->state = NETCONN_LISTEN;
1351 msg->conn->pcb.tcp = lpcb;
1352 tcp_arg(msg->conn->pcb.tcp, msg->conn);
1353 tcp_accept(msg->conn->pcb.tcp, accept_function);
1357 msg->conn->pcb.tcp = NULL;
1361 } else if (msg->conn->state == NETCONN_LISTEN) {
1363 msg->err = ERR_OK;
1364 tcp_backlog_set(msg->conn->pcb.tcp, msg->msg.lb.backlog);
1367 msg->err = ERR_ARG;
1371 TCPIP_APIMSG_ACK(msg);
1384 struct api_msg *msg = (struct api_msg*)m; local
1386 if (ERR_IS_FATAL(msg->conn->last_err)) {
1387 msg->err = msg->conn->last_err;
1389 msg->err = ERR_CONN;
1390 if (msg->conn->pcb.tcp != NULL) {
1391 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1394 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1395 msg->err = raw_send(msg->conn->pcb.raw, msg->msg.b->p);
1397 msg->err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, &msg->msg.b->addr);
1404 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1405 msg->err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1406 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1408 msg->err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1409 &msg->msg.b->addr, msg->msg.b->port,
1410 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1413 if (ip_addr_isany_val(msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1414 msg->err = udp_send(msg->conn->pcb.udp, msg->msg.b->p);
1416 … msg->err = udp_sendto(msg->conn->pcb.udp, msg->msg.b->p, &msg->msg.b->addr, msg->msg.b->port);
1426 TCPIP_APIMSG_ACK(msg);
1439 struct api_msg *msg = (struct api_msg*)m; local
1441 msg->err = ERR_OK;
1442 if (msg->conn->pcb.tcp != NULL) {
1443 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1444 u32_t remaining = msg->msg.r.len;
1447 tcp_recved(msg->conn->pcb.tcp, recved);
1452 TCPIP_APIMSG_ACK(msg);
1464 struct api_msg *msg = (struct api_msg*)m; local
1466 msg->err = ERR_OK;
1467 if (msg->conn->pcb.tcp != NULL) {
1468 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1469 tcp_backlog_accepted(msg->conn->pcb.tcp);
1472 TCPIP_APIMSG_ACK(msg);
1504 conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len);
1505 LWIP_ASSERT("conn->current_msg->msg.w.vector_cnt > 0", conn->current_msg->msg.w.vector_cnt > 0);
1507 apiflags = conn->current_msg->msg.w.apiflags;
1512 ((s32_t)(sys_now() - conn->current_msg->msg.w.time_started) >= conn->send_timeout)) {
1514 if (conn->current_msg->msg.w.offset == 0) {
1525 … dataptr = (const u8_t*)conn->current_msg->msg.w.vector->ptr + conn->current_msg->msg.w.vector_off;
1526 diff = conn->current_msg->msg.w.vector->len - conn->current_msg->msg.w.vector_off;
1540 err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
1548 ((conn->current_msg->msg.w.vector_off + len) <= conn->current_msg->msg.w.vector->len));
1554 (len == (u16_t)diff && conn->current_msg->msg.w.vector_cnt > 1)) {
1562 conn->current_msg->msg.w.offset += len;
1563 conn->current_msg->msg.w.vector_off += len;
1565 if (conn->current_msg->msg.w.vector_off == conn->current_msg->msg.w.vector->len) {
1566 conn->current_msg->msg.w.vector_cnt--;
1568 if (conn->current_msg->msg.w.vector_cnt > 0) {
1569 conn->current_msg->msg.w.vector++;
1570 conn->current_msg->msg.w.vector_off = 0;
1578 if (dontblock && (conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len)) {
1593 if ((conn->current_msg->msg.w.offset == conn->current_msg->msg.w.len) || dontblock) {
1622 err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
1664 struct api_msg *msg = (struct api_msg*)m; local
1666 if (ERR_IS_FATAL(msg->conn->last_err)) {
1667 msg->err = msg->conn->last_err;
1669 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1671 if (msg->conn->state != NETCONN_NONE) {
1673 msg->err = ERR_INPROGRESS;
1674 } else if (msg->conn->pcb.tcp != NULL) {
1675 msg->conn->state = NETCONN_WRITE;
1677 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1678 LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0);
1679 msg->conn->current_msg = msg;
1681 if (lwip_netconn_do_writemore(msg->conn, 0) != ERR_OK) {
1682 LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE);
1684 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1686 LWIP_ASSERT("state!", msg->conn->state != NETCONN_WRITE);
1689 lwip_netconn_do_writemore(msg->conn);
1695 msg->err = ERR_CONN;
1698 msg->err = ERR_VAL;
1702 msg->err = ERR_VAL;
1706 TCPIP_APIMSG_ACK(msg);
1718 struct api_msg *msg = (struct api_msg*)m; local
1720 if (msg->conn->pcb.ip != NULL) {
1721 if (msg->msg.ad.local) {
1722 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1723 msg->conn->pcb.ip->local_ip);
1725 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1726 msg->conn->pcb.ip->remote_ip);
1729 msg->err = ERR_OK;
1730 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1733 if (msg->msg.ad.local) {
1734 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.raw->protocol;
1737 msg->err = ERR_CONN;
1743 if (msg->msg.ad.local) {
1744 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->local_port;
1746 if ((msg->conn->pcb.udp->flags & UDP_FLAGS_CONNECTED) == 0) {
1747 msg->err = ERR_CONN;
1749 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->remote_port;
1756 if ((msg->msg.ad.local == 0) &&
1757 ((msg->conn->pcb.tcp->state == CLOSED) || (msg->conn->pcb.tcp->state == LISTEN))) {
1759 msg->err = ERR_CONN;
1761 …API_EXPR_DEREF(msg->msg.ad.port) = (msg->msg.ad.local ? msg->conn->pcb.tcp->local_port : msg->conn…
1770 msg->err = ERR_CONN;
1772 TCPIP_APIMSG_ACK(msg);
1785 struct api_msg *msg = (struct api_msg*)m; local
1788 enum netconn_state state = msg->conn->state;
1791 if ((msg->conn->pcb.tcp != NULL) &&
1792 (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) &&
1793 ((msg->msg.sd.shut == NETCONN_SHUT_RDWR) || (state != NETCONN_LISTEN))) {
1797 msg->err = ERR_CONN;
1800 if (msg->msg.sd.shut & NETCONN_SHUT_WR) {
1803 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
1804 write_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
1805 msg->conn->current_msg->err = ERR_CLSD;
1806 msg->conn->current_msg = NULL;
1807 msg->conn->state = NETCONN_NONE;
1809 NETCONN_SET_SAFE_ERR(msg->conn, ERR_CLSD);
1812 LWIP_ASSERT("msg->msg.sd.shut == NETCONN_SHUT_RD", msg->msg.sd.shut == NETCONN_SHUT_RD);
1815 msg->err = tcp_shutdown(msg->conn->pcb.tcp, 1, 0);
1820 msg->err = ERR_INPROGRESS;
1823 if (msg->msg.sd.shut & NETCONN_SHUT_RD) {
1825 netconn_drain(msg->conn);
1827 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1828 msg->conn->state = NETCONN_CLOSE;
1829 msg->conn->current_msg = msg;
1831 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
1832 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
1834 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1836 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1839 lwip_netconn_do_close_internal(msg->conn);
1847 msg->err = ERR_CONN;
1849 TCPIP_APIMSG_ACK(msg);
1862 struct api_msg *msg = (struct api_msg*)m; local
1864 if (ERR_IS_FATAL(msg->conn->last_err)) {
1865 msg->err = msg->conn->last_err;
1867 if (msg->conn->pcb.tcp != NULL) {
1868 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1871 if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
1872 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
1873 msg->err = mld6_joingroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
1874 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
1876 msg->err = mld6_leavegroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
1877 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
1884 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
1885 msg->err = igmp_joingroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
1886 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
1888 msg->err = igmp_leavegroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
1889 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
1896 msg->err = ERR_VAL;
1900 msg->err = ERR_CONN;
1903 TCPIP_APIMSG_ACK(msg);
1916 struct dns_api_msg *msg = (struct dns_api_msg*)arg; local
1923 API_EXPR_DEREF(msg->err) = ERR_VAL;
1926 API_EXPR_DEREF(msg->err) = ERR_OK;
1927 API_EXPR_DEREF(msg->addr) = *ipaddr;
1930 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));
1942 struct dns_api_msg *msg = (struct dns_api_msg*)arg; local
1945 msg->dns_addrtype;
1950 API_EXPR_DEREF(msg->err) = dns_gethostbyname_addrtype(msg->name,
1951 API_EXPR_REF(msg->addr), lwip_netconn_do_dns_found, msg, addrtype);
1952 if (API_EXPR_DEREF(msg->err) != ERR_INPROGRESS) {
1955 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));