Lines Matching refs:msg

99 lwip_netconn_is_deallocated_msg(void *msg)
101 if (msg == &netconn_deleted) {
131 lwip_netconn_is_err_msg(void *msg, err_t *err)
135 if (msg == &netconn_aborted) {
138 } else if (msg == &netconn_reset) {
141 } else if (msg == &netconn_closed) {
297 void *msg;
324 msg = p;
327 msg = LWIP_CONST_CAST(void *, &netconn_closed);
331 if (sys_mbox_trypost(&conn->recvmbox, msg) != ERR_OK) {
368 if (conn->current_msg && conn->current_msg->msg.sd.polls_left) {
369 conn->current_msg->msg.sd.polls_left--;
606 * @param msg the api_msg describing the connection type
609 pcb_new(struct api_msg *msg)
613 LWIP_ASSERT("pcb_new: pcb already allocated", msg->conn->pcb.tcp == NULL);
617 if (NETCONNTYPE_ISIPV6(netconn_type(msg->conn))) {
623 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
626 msg->conn->pcb.raw = raw_new_ip_type(iptype, msg->msg.n.proto);
627 if (msg->conn->pcb.raw != NULL) {
630 if (NETCONNTYPE_ISIPV6(msg->conn->type) && msg->conn->pcb.raw->protocol == IP6_NEXTH_ICMP6) {
631 msg->conn->pcb.raw->chksum_reqd = 1;
632 msg->conn->pcb.raw->chksum_offset = 2;
635 raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn);
641 msg->conn->pcb.udp = udp_new_ip_type(iptype);
642 if (msg->conn->pcb.udp != NULL) {
644 if (NETCONNTYPE_ISUDPLITE(msg->conn->type)) {
645 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_UDPLITE);
648 if (NETCONNTYPE_ISUDPNOCHKSUM(msg->conn->type)) {
649 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
651 udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
657 msg->conn->pcb.tcp = tcp_new_ip_type(iptype);
658 if (msg->conn->pcb.tcp != NULL) {
659 setup_tcp(msg->conn);
665 msg->err = ERR_VAL;
668 if (msg->conn->pcb.ip == NULL) {
669 msg->err = ERR_MEM;
682 struct api_msg *msg = (struct api_msg *)m;
684 msg->err = ERR_OK;
685 if (msg->conn->pcb.tcp == NULL) {
686 pcb_new(msg);
692 TCPIP_APIMSG_ACK(msg);
895 void *msg = LWIP_CONST_CAST(void *, &netconn_deleted);
903 sys_mbox_trypost(&conn->recvmbox, msg);
905 sys_mbox_trypost(&conn->acceptmbox, msg);
937 shut = conn->current_msg->msg.sd.shut;
991 } else if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >=
1040 if ((s32_t)(sys_now() - conn->current_msg->msg.sd.time_started) >= close_timeout) {
1042 if (conn->current_msg->msg.sd.polls_left == 0) {
1115 struct api_msg *msg = (struct api_msg *)m;
1117 enum netconn_state state = msg->conn->state;
1119 (state == NETCONN_NONE) || (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP));
1124 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1127 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
1128 op_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
1129 msg->conn->current_msg->err = ERR_CLSD;
1130 msg->conn->current_msg = NULL;
1131 msg->conn->state = NETCONN_NONE;
1139 ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
1142 msg->err = ERR_INPROGRESS;
1147 (state != NETCONN_CONNECT) || IN_NONBLOCKING_CONNECT(msg->conn));
1148 msg->err = ERR_OK;
1151 netconn_mark_mbox_invalid(msg->conn);
1153 netconn_drain(msg->conn);
1156 if (msg->conn->pcb.tcp != NULL) {
1158 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1161 raw_remove(msg->conn->pcb.raw);
1166 msg->conn->pcb.udp->recv_arg = NULL;
1167 udp_remove(msg->conn->pcb.udp);
1172 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1173 msg->conn->state = NETCONN_CLOSE;
1174 msg->msg.sd.shut = NETCONN_SHUT_RDWR;
1175 msg->conn->current_msg = msg;
1177 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
1178 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
1180 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1182 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1185 lwip_netconn_do_close_internal(msg->conn);
1194 msg->conn->pcb.tcp = NULL;
1200 API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0);
1201 API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
1203 if (sys_sem_valid(LWIP_API_MSG_SEM(msg))) {
1204 TCPIP_APIMSG_ACK(msg);
1218 struct api_msg *msg = (struct api_msg *)m;
1221 if (msg->conn->pcb.tcp != NULL) {
1222 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1225 err = raw_bind(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1230 err = udp_bind(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1235 err = tcp_bind(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1245 msg->err = err;
1246 TCPIP_APIMSG_ACK(msg);
1259 struct api_msg *msg = (struct api_msg *)m;
1262 netif = netif_get_by_index(msg->msg.bc.if_idx);
1264 if ((netif != NULL) && (msg->conn->pcb.tcp != NULL)) {
1266 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1269 raw_bind_netif(msg->conn->pcb.raw, netif);
1274 udp_bind_netif(msg->conn->pcb.udp, netif);
1279 tcp_bind_netif(msg->conn->pcb.tcp, netif);
1289 msg->err = err;
1290 TCPIP_APIMSG_ACK(msg);
1352 struct api_msg *msg = (struct api_msg *)m;
1355 if (msg->conn->pcb.tcp == NULL) {
1359 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1362 err = raw_connect(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
1367 err = udp_connect(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
1373 if (msg->conn->state == NETCONN_CONNECT) {
1375 } else if (msg->conn->state != NETCONN_NONE) {
1378 setup_tcp(msg->conn);
1379 err = tcp_connect(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr),
1380 msg->msg.bc.port, lwip_netconn_do_connected);
1382 u8_t non_blocking = netconn_is_nonblocking(msg->conn);
1383 msg->conn->state = NETCONN_CONNECT;
1384 SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
1388 msg->conn->current_msg = msg;
1392 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CONNECT);
1394 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1396 LWIP_ASSERT("state!", msg->conn->state != NETCONN_CONNECT);
1411 msg->err = err;
1414 TCPIP_APIMSG_ACK(msg);
1427 struct api_msg *msg = (struct api_msg *)m;
1430 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1431 udp_disconnect(msg->conn->pcb.udp);
1432 msg->err = ERR_OK;
1436 msg->err = ERR_VAL;
1438 TCPIP_APIMSG_ACK(msg);
1451 struct api_msg *msg = (struct api_msg *)m;
1454 if (msg->conn->pcb.tcp != NULL) {
1455 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1456 if (msg->conn->state == NETCONN_NONE) {
1458 if (msg->conn->pcb.tcp->state != CLOSED) {
1464 backlog = msg->msg.lb.backlog;
1472 if (ip_addr_cmp(&msg->conn->pcb.ip->local_ip, IP6_ADDR_ANY) &&
1473 (netconn_get_ipv6only(msg->conn) == 0)) {
1475 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->local_ip, IPADDR_TYPE_ANY);
1476 IP_SET_TYPE_VAL(msg->conn->pcb.tcp->remote_ip, IPADDR_TYPE_ANY);
1480 lpcb = tcp_listen_with_backlog_and_err(msg->conn->pcb.tcp, backlog, &err);
1486 if (sys_mbox_valid(&msg->conn->recvmbox)) {
1488 sys_mbox_free(&msg->conn->recvmbox);
1489 sys_mbox_set_invalid(&msg->conn->recvmbox);
1492 if (!sys_mbox_valid(&msg->conn->acceptmbox)) {
1493 err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE);
1496 msg->conn->state = NETCONN_LISTEN;
1497 msg->conn->pcb.tcp = lpcb;
1498 tcp_arg(msg->conn->pcb.tcp, msg->conn);
1499 tcp_accept(msg->conn->pcb.tcp, accept_function);
1503 msg->conn->pcb.tcp = NULL;
1507 } else if (msg->conn->state == NETCONN_LISTEN) {
1510 tcp_backlog_set(msg->conn->pcb.tcp, msg->msg.lb.backlog);
1520 msg->err = err;
1521 TCPIP_APIMSG_ACK(msg);
1534 struct api_msg *msg = (struct api_msg *)m;
1536 err_t err = netconn_err(msg->conn);
1538 if (msg->conn->pcb.tcp != NULL) {
1539 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1542 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1543 err = raw_send(msg->conn->pcb.raw, msg->msg.b->p);
1545 err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, &msg->msg.b->addr);
1552 if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1553 err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1554 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1556 err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1557 &msg->msg.b->addr, msg->msg.b->port,
1558 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1561 if (ip_addr_isany_val(msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
1562 err = udp_send(msg->conn->pcb.udp, msg->msg.b->p);
1564 err = udp_sendto(msg->conn->pcb.udp, msg->msg.b->p, &msg->msg.b->addr, msg->msg.b->port);
1577 msg->err = err;
1578 TCPIP_APIMSG_ACK(msg);
1591 struct api_msg *msg = (struct api_msg *)m;
1593 msg->err = ERR_OK;
1594 if (msg->conn->pcb.tcp != NULL) {
1595 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1596 size_t remaining = msg->msg.r.len;
1599 tcp_recved(msg->conn->pcb.tcp, recved);
1604 TCPIP_APIMSG_ACK(msg);
1616 struct api_msg *msg = (struct api_msg *)m;
1618 msg->err = ERR_OK;
1619 if (msg->conn->pcb.tcp != NULL) {
1620 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1621 tcp_backlog_accepted(msg->conn->pcb.tcp);
1624 TCPIP_APIMSG_ACK(msg);
1655 LWIP_ASSERT("conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len",
1656 conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len);
1657 LWIP_ASSERT("conn->current_msg->msg.w.vector_cnt > 0", conn->current_msg->msg.w.vector_cnt > 0);
1659 apiflags = conn->current_msg->msg.w.apiflags;
1664 ((s32_t)(sys_now() - conn->current_msg->msg.w.time_started) >= conn->send_timeout)) {
1666 if (conn->current_msg->msg.w.offset == 0) {
1677 dataptr = (const u8_t *)conn->current_msg->msg.w.vector->ptr + conn->current_msg->msg.w.vector_off;
1678 diff = conn->current_msg->msg.w.vector->len - conn->current_msg->msg.w.vector_off;
1692 err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
1700 ((conn->current_msg->msg.w.vector_off + len) <= conn->current_msg->msg.w.vector->len));
1706 (len == (u16_t)diff && conn->current_msg->msg.w.vector_cnt > 1)) {
1714 conn->current_msg->msg.w.offset += len;
1715 conn->current_msg->msg.w.vector_off += len;
1717 if (conn->current_msg->msg.w.vector_off == conn->current_msg->msg.w.vector->len) {
1718 conn->current_msg->msg.w.vector_cnt--;
1720 if (conn->current_msg->msg.w.vector_cnt > 0) {
1721 conn->current_msg->msg.w.vector++;
1722 conn->current_msg->msg.w.vector_off = 0;
1730 if (dontblock && (conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len)) {
1745 if ((conn->current_msg->msg.w.offset == conn->current_msg->msg.w.len) || dontblock) {
1746 /* return sent length (caller reads length from msg.w.offset) */
1774 err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
1815 struct api_msg *msg = (struct api_msg *)m;
1817 err_t err = netconn_err(msg->conn);
1819 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
1821 if (msg->conn->state != NETCONN_NONE) {
1824 } else if (msg->conn->pcb.tcp != NULL) {
1825 msg->conn->state = NETCONN_WRITE;
1827 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1828 LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0);
1829 msg->conn->current_msg = msg;
1831 if (lwip_netconn_do_writemore(msg->conn, 0) != ERR_OK) {
1832 LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE);
1834 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1836 LWIP_ASSERT("state!", msg->conn->state != NETCONN_WRITE);
1839 lwip_netconn_do_writemore(msg->conn);
1856 msg->err = err;
1857 TCPIP_APIMSG_ACK(msg);
1869 struct api_msg *msg = (struct api_msg *)m;
1871 if (msg->conn->pcb.ip != NULL) {
1872 if (msg->msg.ad.local) {
1873 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1874 msg->conn->pcb.ip->local_ip);
1876 ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
1877 msg->conn->pcb.ip->remote_ip);
1880 msg->err = ERR_OK;
1881 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1884 if (msg->msg.ad.local) {
1885 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.raw->protocol;
1888 msg->err = ERR_CONN;
1894 if (msg->msg.ad.local) {
1895 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->local_port;
1897 if ((msg->conn->pcb.udp->flags & UDP_FLAGS_CONNECTED) == 0) {
1898 msg->err = ERR_CONN;
1900 API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->remote_port;
1907 if ((msg->msg.ad.local == 0) &&
1908 ((msg->conn->pcb.tcp->state == CLOSED) || (msg->conn->pcb.tcp->state == LISTEN))) {
1910 msg->err = ERR_CONN;
1912 API_EXPR_DEREF(msg->msg.ad.port) = (msg->msg.ad.local ? msg->conn->pcb.tcp->local_port : msg->conn->pcb.tcp->remote_port);
1921 msg->err = ERR_CONN;
1923 TCPIP_APIMSG_ACK(msg);
1936 struct api_msg *msg = (struct api_msg *)m;
1939 enum netconn_state state = msg->conn->state;
1942 if ((msg->conn->pcb.tcp != NULL) &&
1943 (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) &&
1944 ((msg->msg.sd.shut == NETCONN_SHUT_RDWR) || (state != NETCONN_LISTEN))) {
1948 msg->err = ERR_CONN;
1951 if (msg->msg.sd.shut & NETCONN_SHUT_WR) {
1954 LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
1955 write_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
1956 msg->conn->current_msg->err = ERR_CLSD;
1957 msg->conn->current_msg = NULL;
1958 msg->conn->state = NETCONN_NONE;
1962 LWIP_ASSERT("msg->msg.sd.shut == NETCONN_SHUT_RD", msg->msg.sd.shut == NETCONN_SHUT_RD);
1965 msg->err = tcp_shutdown(msg->conn->pcb.tcp, 1, 0);
1970 msg->err = ERR_INPROGRESS;
1973 if (msg->msg.sd.shut & NETCONN_SHUT_RD) {
1976 netconn_mark_mbox_invalid(msg->conn);
1978 netconn_drain(msg->conn);
1981 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
1982 msg->conn->state = NETCONN_CLOSE;
1983 msg->conn->current_msg = msg;
1985 if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
1986 LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
1988 sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
1990 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1993 lwip_netconn_do_close_internal(msg->conn);
2001 msg->err = ERR_CONN;
2003 TCPIP_APIMSG_ACK(msg);
2016 struct api_msg *msg = (struct api_msg *)m;
2018 msg->err = ERR_CONN;
2019 if (msg->conn->pcb.tcp != NULL) {
2020 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
2023 if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
2024 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2025 msg->err = mld6_joingroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
2026 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2028 msg->err = mld6_leavegroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
2029 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2035 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2036 msg->err = igmp_joingroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
2037 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2039 msg->err = igmp_leavegroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
2040 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2047 msg->err = ERR_VAL;
2051 TCPIP_APIMSG_ACK(msg);
2062 struct api_msg *msg = (struct api_msg *)m;
2065 netif = netif_get_by_index(msg->msg.jl.if_idx);
2067 msg->err = ERR_IF;
2071 msg->err = ERR_CONN;
2072 if (msg->conn->pcb.tcp != NULL) {
2073 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
2076 if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
2077 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2078 msg->err = mld6_joingroup_netif(netif,
2079 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2081 msg->err = mld6_leavegroup_netif(netif,
2082 ip_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr)));
2088 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
2089 msg->err = igmp_joingroup_netif(netif,
2090 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2092 msg->err = igmp_leavegroup_netif(netif,
2093 ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
2100 msg->err = ERR_VAL;
2106 TCPIP_APIMSG_ACK(msg);
2119 struct dns_api_msg *msg = (struct dns_api_msg *)arg;
2126 API_EXPR_DEREF(msg->err) = ERR_VAL;
2129 API_EXPR_DEREF(msg->err) = ERR_OK;
2130 API_EXPR_DEREF(msg->addr) = *ipaddr;
2133 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));
2145 struct dns_api_msg *msg = (struct dns_api_msg *)arg;
2148 msg->dns_addrtype;
2153 API_EXPR_DEREF(msg->err) = dns_gethostbyname_addrtype(msg->name,
2154 API_EXPR_REF(msg->addr), lwip_netconn_do_dns_found, msg, addrtype);
2157 if (API_EXPR_DEREF(msg->err) == ERR_INPROGRESS) {
2159 sys_sem_wait(API_EXPR_REF_SEM(msg->sem));
2161 LWIP_ASSERT("do_gethostbyname still in progress!!", API_EXPR_DEREF(msg->err) != ERR_INPROGRESS);
2164 if (API_EXPR_DEREF(msg->err) != ERR_INPROGRESS) {
2167 sys_sem_signal(API_EXPR_REF_SEM(msg->sem));