Lines Matching refs:msg

318     if (conn->current_msg && conn->current_msg->msg.sd.polls_left) {
319 conn->current_msg->msg.sd.polls_left--;
552 pcb_new(struct api_msg *msg) argument
556 LWIP_ASSERT("pcb_new: pcb already allocated", msg->conn->pcb.tcp == NULL);
560 if(NETCONNTYPE_ISIPV6(netconn_type(msg->conn))) {
566 switch(NETCONNTYPE_GROUP(msg->conn->type)) {
569 msg->conn->pcb.raw = raw_new_ip_type(iptype, msg->msg.n.proto);
570 if (msg->conn->pcb.raw != NULL) {
573 if (NETCONNTYPE_ISIPV6(msg->conn->type) && msg->conn->pcb.raw->protocol == IP6_NEXTH_ICMP6) {
574 msg->conn->pcb.raw->chksum_reqd = 1;
575 msg->conn->pcb.raw->chksum_offset = 2;
578 raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn);
584 msg->conn->pcb.udp = udp_new_ip_type(iptype);
585 if (msg->conn->pcb.udp != NULL) {
587 if (NETCONNTYPE_ISUDPLITE(msg->conn->type)) {
588 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_UDPLITE);
591 if (NETCONNTYPE_ISUDPNOCHKSUM(msg->conn->type)) {
592 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
594 udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
600 msg->conn->pcb.tcp = tcp_new_ip_type(iptype);
601 if (msg->conn->pcb.tcp != NULL) {
602 setup_tcp(msg->conn);
608 msg->err = ERR_VAL;
611 if (msg->conn->pcb.ip == NULL) {
612 msg->err = ERR_MEM;
625 struct api_msg *msg = (struct api_msg*)m; local
627 msg->err = ERR_OK;
628 if (msg->conn->pcb.tcp == NULL) {
629 pcb_new(msg);
635 TCPIP_APIMSG_ACK(msg);
842 shut = conn->current_msg->msg.sd.shut;
896 } else if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >=
945 if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >= close_timeout) {
947 if (conn->current_msg->msg.sd.polls_left == 0) {
1021 struct api_msg *msg = (struct api_msg*)m; local
1023 enum netconn_state state = msg->conn->state;
1025 (state == NETCONN_NONE) || (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP));
1030 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1033 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
1034 op_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
1035 msg->conn->current_msg->err = ERR_CLSD;
1036 msg->conn->current_msg = NULL;
1037 msg->conn->write_offset = 0;
1038 msg->conn->state = NETCONN_NONE;
1039 NETCONN_SET_SAFE_ERR(msg->conn, ERR_CLSD);
1047 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1050 msg->err = ERR_INPROGRESS;
1055 (state != NETCONN_CONNECT) || IN_NONBLOCKING_CONNECT(msg->conn));
1056 msg->err = ERR_OK;
1058 netconn_drain(msg->conn);
1060 if (msg->conn->pcb.tcp != NULL) {
1062 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1065 raw_remove(msg->conn->pcb.raw);
1070 msg->conn->pcb.udp->recv_arg = NULL;
1071 udp_remove(msg->conn->pcb.udp);
1076 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL &&
1077 msg->conn->write_offset == 0);
1078 msg->conn->state = NETCONN_CLOSE;
1079 msg->msg.sd.shut = NETCONN_SHUT_RDWR;
1080 msg->conn->current_msg = msg;
1082 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
1083 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
1085 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1087 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1090 lwip_netconn_do_close_internal(msg->conn);
1099 msg->conn->pcb.tcp = NULL;
1105 API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0);
1106 API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
1108 if (sys_sem_valid(LWIP_API_MSG_SEM(msg))) {
1109 TCPIP_APIMSG_ACK(msg);
1123 struct api_msg *msg = (struct api_msg*)m; local
1125 if (ERR_IS_FATAL(msg->conn->last_err)) {
1126 msg->err = msg->conn->last_err;
1128 msg->err = ERR_VAL;
1129 if (msg->conn->pcb.tcp != NULL) {
1130 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1133 msg->err = raw_bind(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1138 msg->err = udp_bind(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1143 msg->err = tcp_bind(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1151 TCPIP_APIMSG_ACK(msg);
1214 struct api_msg *msg = (struct api_msg*)m; local
1216 if (msg->conn->pcb.tcp == NULL) {
1218 msg->err = ERR_CLSD;
1220 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1223 msg->err = raw_connect(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1228msg->err = udp_connect(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1234 if (msg->conn->state == NETCONN_CONNECT) {
1235 msg->err = ERR_ALREADY;
1236 } else if (msg->conn->state != NETCONN_NONE) {
1237 msg->err = ERR_ISCONN;
1239 setup_tcp(msg->conn);
1240 msg->err = tcp_connect(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr),
1241 msg->msg.bc.port, lwip_netconn_do_connected);
1242 if (msg->err == ERR_OK) {
1243 u8_t non_blocking = netconn_is_nonblocking(msg->conn);
1244 msg->conn->state = NETCONN_CONNECT;
1245 SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
1247 msg->err = ERR_INPROGRESS;
1249 msg->conn->current_msg = msg;
1253 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CONNECT);
1255 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1257 LWIP_ASSERT("state!", msg->conn->state != NETCONN_CONNECT);
1266 LWIP_ERROR("Invalid netconn type", 0, do{ msg->err = ERR_VAL; }while(0));
1272 TCPIP_APIMSG_ACK(msg);
1285 struct api_msg *msg = (struct api_msg*)m; local
1288 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1289 udp_disconnect(msg->conn->pcb.udp);
1290 msg->err = ERR_OK;
1294 msg->err = ERR_VAL;
1296 TCPIP_APIMSG_ACK(msg);
1309 struct api_msg *msg = (struct api_msg*)m; local
1311 if (ERR_IS_FATAL(msg->conn->last_err)) {
1312 msg->err = msg->conn->last_err;
1314 msg->err = ERR_CONN;
1315 if (msg->conn->pcb.tcp != NULL) {
1316 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1317 if (msg->conn->state == NETCONN_NONE) {
1319 if (msg->conn->pcb.tcp->state != CLOSED) {
1321 msg->err = ERR_VAL;
1326 backlog = msg->msg.lb.backlog;
1334 if (ip_addr_cmp(&msg->conn->pcb.ip->local_ip, IP6_ADDR_ANY) &&
1335 (netconn_get_ipv6only(msg->conn) == 0)) {
1337 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->local_ip, IPADDR_TYPE_ANY);
1338 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->remote_ip, IPADDR_TYPE_ANY);
1342 lpcb = tcp_listen_with_backlog_and_err(msg->conn->pcb.tcp, backlog, &err);
1346 msg->err = err;
1349 if (sys_mbox_valid(&msg->conn->recvmbox)) {
1351 sys_mbox_free(&msg->conn->recvmbox);
1352 sys_mbox_set_invalid(&msg->conn->recvmbox);
1354 msg->err = ERR_OK;
1355 if (!sys_mbox_valid(&msg->conn->acceptmbox)) {
1356 msg->err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE);
1358 if (msg->err == ERR_OK) {
1359 msg->conn->state = NETCONN_LISTEN;
1360 msg->conn->pcb.tcp = lpcb;
1361 tcp_arg(msg->conn->pcb.tcp, msg->conn);
1362 tcp_accept(msg->conn->pcb.tcp, accept_function);
1366 msg->conn->pcb.tcp = NULL;
1370 } else if (msg->conn->state == NETCONN_LISTEN) {
1372 msg->err = ERR_OK;
1373 tcp_backlog_set(msg->conn->pcb.tcp, msg->msg.lb.backlog);
1376 msg->err = ERR_ARG;
1380 TCPIP_APIMSG_ACK(msg);
1393 struct api_msg *msg = (struct api_msg*)m; local
1395 if (ERR_IS_FATAL(msg->conn->last_err)) {
1396 msg->err = msg->conn->last_err;
1398 msg->err = ERR_CONN;
1399 if (msg->conn->pcb.tcp != NULL) {
1400 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1403 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1404 msg->err = raw_send(msg->conn->pcb.raw, msg->msg.b->p);
1406 msg->err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, &msg->msg.b->addr);
1413 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1414 msg->err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1415 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1417 msg->err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1418 &msg->msg.b->addr, msg->msg.b->port,
1419 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1422 if (ip_addr_isany_val(msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1423 msg->err = udp_send(msg->conn->pcb.udp, msg->msg.b->p);
1425msg->err = udp_sendto(msg->conn->pcb.udp, msg->msg.b->p, &msg->msg.b->addr, msg->msg.b->port);
1435 TCPIP_APIMSG_ACK(msg);
1448 struct api_msg *msg = (struct api_msg*)m; local
1450 msg->err = ERR_OK;
1451 if (msg->conn->pcb.tcp != NULL) {
1452 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1453 u32_t remaining = msg->msg.r.len;
1456 tcp_recved(msg->conn->pcb.tcp, recved);
1461 TCPIP_APIMSG_ACK(msg);
1473 struct api_msg *msg = (struct api_msg*)m; local
1475 msg->err = ERR_OK;
1476 if (msg->conn->pcb.tcp != NULL) {
1477 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1478 tcp_backlog_accepted(msg->conn->pcb.tcp);
1481 TCPIP_APIMSG_ACK(msg);
1512 conn->write_offset < conn->current_msg->msg.w.len);
1514 apiflags = conn->current_msg->msg.w.apiflags;
1519 ((s32_t)(sys_now() - conn->current_msg->msg.w.time_started) >= conn->send_timeout)) {
1524 conn->current_msg->msg.w.len = 0;
1528 conn->current_msg->msg.w.len = conn->write_offset;
1534 dataptr = (const u8_t*)conn->current_msg->msg.w.dataptr + conn->write_offset;
1535 diff = conn->current_msg->msg.w.len - conn->write_offset;
1555 …conn_do_writemore: invalid length!", ((conn->write_offset + len) <= conn->current_msg->msg.w.len));
1560 if (dontblock && (len < conn->current_msg->msg.w.len)) {
1576 if ((conn->write_offset == conn->current_msg->msg.w.len) || dontblock) {
1578 conn->current_msg->msg.w.len = conn->write_offset;
1589 conn->current_msg->msg.w.len = 0;
1605 conn->current_msg->msg.w.len = 0;
1610 conn->current_msg->msg.w.len = 0;
1616 conn->current_msg->msg.w.len = 0;
1653 struct api_msg *msg = (struct api_msg*)m; local
1655 if (ERR_IS_FATAL(msg->conn->last_err)) {
1656 msg->err = msg->conn->last_err;
1658 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1660 if (msg->conn->state != NETCONN_NONE) {
1662 msg->err = ERR_INPROGRESS;
1663 } else if (msg->conn->pcb.tcp != NULL) {
1664 msg->conn->state = NETCONN_WRITE;
1666 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL &&
1667 msg->conn->write_offset == 0);
1668 LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0);
1669 msg->conn->current_msg = msg;
1670 msg->conn->write_offset = 0;
1672 if (lwip_netconn_do_writemore(msg->conn, 0) != ERR_OK) {
1673 LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE);
1675 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1677 LWIP_ASSERT("state!", msg->conn->state != NETCONN_WRITE);
1680 lwip_netconn_do_writemore(msg->conn);
1686 msg->err = ERR_CONN;
1689 msg->err = ERR_VAL;
1693 msg->err = ERR_VAL;
1697 TCPIP_APIMSG_ACK(msg);
1709 struct api_msg *msg = (struct api_msg*)m; local
1711 if (msg->conn->pcb.ip != NULL) {
1712 if (msg->msg.ad.local) {
1713 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1714 msg->conn->pcb.ip->local_ip);
1716 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1717 msg->conn->pcb.ip->remote_ip);
1720 msg->err = ERR_OK;
1721 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1724 if (msg->msg.ad.local) {
1725 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.raw->protocol;
1728 msg->err = ERR_CONN;
1734 if (msg->msg.ad.local) {
1735 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->local_port;
1737 if ((msg->conn->pcb.udp->flags & UDP_FLAGS_CONNECTED) == 0) {
1738 msg->err = ERR_CONN;
1740 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->remote_port;
1747 if ((msg->msg.ad.local == 0) &&
1748 ((msg->conn->pcb.tcp->state == CLOSED) || (msg->conn->pcb.tcp->state == LISTEN))) {
1750 msg->err = ERR_CONN;
1752 …API_EXPR_DEREF(msg->msg.ad.port) = (msg->msg.ad.local ? msg->conn->pcb.tcp->local_port : msg->conn…
1761 msg->err = ERR_CONN;
1763 TCPIP_APIMSG_ACK(msg);
1776 struct api_msg *msg = (struct api_msg*)m; local
1779 enum netconn_state state = msg->conn->state;
1782 if ((msg->conn->pcb.tcp != NULL) &&
1783 (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) &&
1784 ((msg->msg.sd.shut == NETCONN_SHUT_RDWR) || (state != NETCONN_LISTEN))) {
1788 msg->err = ERR_CONN;
1791 if (msg->msg.sd.shut & NETCONN_SHUT_WR) {
1794 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
1795 write_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
1796 msg->conn->current_msg->err = ERR_CLSD;
1797 msg->conn->current_msg = NULL;
1798 msg->conn->write_offset = 0;
1799 msg->conn->state = NETCONN_NONE;
1801 NETCONN_SET_SAFE_ERR(msg->conn, ERR_CLSD);
1804 LWIP_ASSERT("msg->msg.sd.shut == NETCONN_SHUT_RD", msg->msg.sd.shut == NETCONN_SHUT_RD);
1807 msg->err = tcp_shutdown(msg->conn->pcb.tcp, 1, 0);
1812 msg->err = ERR_INPROGRESS;
1815 if (msg->msg.sd.shut & NETCONN_SHUT_RD) {
1817 netconn_drain(msg->conn);
1819 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL &&
1820 msg->conn->write_offset == 0);
1821 msg->conn->state = NETCONN_CLOSE;
1822 msg->conn->current_msg = msg;
1824 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
1825 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
1827 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1829 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1832 lwip_netconn_do_close_internal(msg->conn);
1840 msg->err = ERR_CONN;
1842 TCPIP_APIMSG_ACK(msg);
1855 struct api_msg *msg = (struct api_msg*)m; local
1857 if (ERR_IS_FATAL(msg->conn->last_err)) {
1858 msg->err = msg->conn->last_err;
1860 if (msg->conn->pcb.tcp != NULL) {
1861 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1864 if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
1865 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
1866 msg->err = mld6_joingroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
1867 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
1869 msg->err = mld6_leavegroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
1870 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
1877 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
1878 msg->err = igmp_joingroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
1879 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
1881 msg->err = igmp_leavegroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
1882 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
1889 msg->err = ERR_VAL;
1893 msg->err = ERR_CONN;
1896 TCPIP_APIMSG_ACK(msg);
1909 struct dns_api_msg *msg = (struct dns_api_msg*)arg; local
1916 API_EXPR_DEREF(msg->err) = ERR_VAL;
1919 API_EXPR_DEREF(msg->err) = ERR_OK;
1920 API_EXPR_DEREF(msg->addr) = *ipaddr;
1923 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));
1935 struct dns_api_msg *msg = (struct dns_api_msg*)arg; local
1938 msg->dns_addrtype;
1943 API_EXPR_DEREF(msg->err) = dns_gethostbyname_addrtype(msg->name,
1944 API_EXPR_REF(msg->addr), lwip_netconn_do_dns_found, msg, addrtype);
1945 if (API_EXPR_DEREF(msg->err) != ERR_INPROGRESS) {
1948 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));