Lines Matching refs:msg
490 pcb_new(struct api_msg_msg *msg) argument
492 LWIP_ASSERT("pcb_new: pcb already allocated", msg->conn->pcb.tcp == NULL);
495 switch(NETCONNTYPE_GROUP(msg->conn->type)) {
498 msg->conn->pcb.raw = raw_new(msg->msg.n.proto);
499 if(msg->conn->pcb.raw == NULL) {
500 msg->err = ERR_MEM;
503 raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn);
508 msg->conn->pcb.udp = udp_new();
509 if(msg->conn->pcb.udp == NULL) {
510 msg->err = ERR_MEM;
514 if (msg->conn->type==NETCONN_UDPLITE) {
515 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_UDPLITE);
518 if (msg->conn->type==NETCONN_UDPNOCHKSUM) {
519 udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
521 udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
526 msg->conn->pcb.tcp = tcp_new();
527 if(msg->conn->pcb.tcp == NULL) {
528 msg->err = ERR_MEM;
531 setup_tcp(msg->conn);
536 msg->err = ERR_VAL;
548 do_newconn(struct api_msg_msg *msg) argument
550 msg->err = ERR_OK;
551 if(msg->conn->pcb.tcp == NULL) {
552 pcb_new(msg);
558 TCPIP_APIMSG_ACK(msg);
758 shut = conn->current_msg->msg.sd.shut;
832 do_delconn(struct api_msg_msg *msg) argument
835 if ((msg->conn->state != NETCONN_NONE) &&
836 (msg->conn->state != NETCONN_LISTEN) &&
837 (msg->conn->state != NETCONN_CONNECT)) {
839 LWIP_ASSERT("msg->conn->type == NETCONN_TCP", msg->conn->type == NETCONN_TCP);
840 msg->err = ERR_INPROGRESS;
843 (msg->conn->state != NETCONN_CONNECT) || IN_NONBLOCKING_CONNECT(msg->conn));
845 netconn_drain(msg->conn);
847 if (msg->conn->pcb.tcp != NULL) {
849 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
852 raw_remove(msg->conn->pcb.raw);
857 msg->conn->pcb.udp->recv_arg = NULL;
858 udp_remove(msg->conn->pcb.udp);
863 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL &&
864 msg->conn->write_offset == 0);
865 msg->conn->state = NETCONN_CLOSE;
866 msg->msg.sd.shut = NETCONN_SHUT_RDWR;
867 msg->conn->current_msg = msg;
868 do_close_internal(msg->conn);
876 msg->conn->pcb.tcp = NULL;
882 API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0);
883 API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
885 if (sys_sem_valid(&msg->conn->op_completed)) {
886 sys_sem_signal(&msg->conn->op_completed);
898 do_bind(struct api_msg_msg *msg) argument
900 if (ERR_IS_FATAL(msg->conn->last_err)) {
901 msg->err = msg->conn->last_err;
903 msg->err = ERR_VAL;
904 if (msg->conn->pcb.tcp != NULL) {
905 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
908 msg->err = raw_bind(msg->conn->pcb.raw, msg->msg.bc.ipaddr);
913 msg->err = udp_bind(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port);
918 msg->err = tcp_bind(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port);
926 TCPIP_APIMSG_ACK(msg);
984 do_connect(struct api_msg_msg *msg) argument
986 if (msg->conn->pcb.tcp == NULL) {
988 msg->err = ERR_CLSD;
990 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
993 msg->err = raw_connect(msg->conn->pcb.raw, msg->msg.bc.ipaddr);
998 msg->err = udp_connect(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port);
1004 if (msg->conn->state != NETCONN_NONE) {
1005 msg->err = ERR_ISCONN;
1007 setup_tcp(msg->conn);
1008 msg->err = tcp_connect(msg->conn->pcb.tcp, msg->msg.bc.ipaddr,
1009 msg->msg.bc.port, do_connected);
1010 if (msg->err == ERR_OK) {
1011 u8_t non_blocking = netconn_is_nonblocking(msg->conn);
1012 msg->conn->state = NETCONN_CONNECT;
1013 SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
1015 msg->err = ERR_INPROGRESS;
1017 msg->conn->current_msg = msg;
1027 LWIP_ERROR("Invalid netconn type", 0, do{ msg->err = ERR_VAL; }while(0));
1031 sys_sem_signal(&msg->conn->op_completed);
1042 do_disconnect(struct api_msg_msg *msg) argument
1045 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1046 udp_disconnect(msg->conn->pcb.udp);
1047 msg->err = ERR_OK;
1051 msg->err = ERR_VAL;
1053 TCPIP_APIMSG_ACK(msg);
1064 do_listen(struct api_msg_msg *msg) argument
1066 if (ERR_IS_FATAL(msg->conn->last_err)) {
1067 msg->err = msg->conn->last_err;
1069 msg->err = ERR_CONN;
1070 if (msg->conn->pcb.tcp != NULL) {
1071 if (msg->conn->type == NETCONN_TCP) {
1072 if (msg->conn->state == NETCONN_NONE) {
1074 struct tcp_pcb* lpcb = tcp_listen_with_backlog(msg->conn->pcb.tcp, msg->msg.lb.backlog);
1076 struct tcp_pcb* lpcb = tcp_listen(msg->conn->pcb.tcp);
1080 msg->err = ERR_MEM;
1083 if (sys_mbox_valid(&msg->conn->recvmbox)) {
1085 sys_mbox_free(&msg->conn->recvmbox);
1086 sys_mbox_set_invalid(&msg->conn->recvmbox);
1088 msg->err = ERR_OK;
1089 if (!sys_mbox_valid(&msg->conn->acceptmbox)) {
1090 msg->err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE);
1092 if (msg->err == ERR_OK) {
1093 msg->conn->state = NETCONN_LISTEN;
1094 msg->conn->pcb.tcp = lpcb;
1095 tcp_arg(msg->conn->pcb.tcp, msg->conn);
1096 tcp_accept(msg->conn->pcb.tcp, accept_function);
1100 msg->conn->pcb.tcp = NULL;
1105 msg->err = ERR_ARG;
1109 TCPIP_APIMSG_ACK(msg);
1120 do_send(struct api_msg_msg *msg) argument
1122 if (ERR_IS_FATAL(msg->conn->last_err)) {
1123 msg->err = msg->conn->last_err;
1125 msg->err = ERR_CONN;
1126 if (msg->conn->pcb.tcp != NULL) {
1127 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1130 if (ip_addr_isany(&msg->msg.b->addr)) {
1131 msg->err = raw_send(msg->conn->pcb.raw, msg->msg.b->p);
1133 msg->err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, &msg->msg.b->addr);
1140 if (ip_addr_isany(&msg->msg.b->addr)) {
1141 msg->err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1142 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1144 msg->err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p,
1145 &msg->msg.b->addr, msg->msg.b->port,
1146 msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum);
1149 if (ip_addr_isany(&msg->msg.b->addr)) {
1150 msg->err = udp_send(msg->conn->pcb.udp, msg->msg.b->p);
1152 … msg->err = udp_sendto(msg->conn->pcb.udp, msg->msg.b->p, &msg->msg.b->addr, msg->msg.b->port);
1162 TCPIP_APIMSG_ACK(msg);
1173 do_recv(struct api_msg_msg *msg) argument
1175 msg->err = ERR_OK;
1176 if (msg->conn->pcb.tcp != NULL) {
1177 if (msg->conn->type == NETCONN_TCP) {
1179 if (msg->conn->pcb.tcp->state == LISTEN) {
1180 tcp_accepted(msg->conn->pcb.tcp);
1184 u32_t remaining = msg->msg.r.len;
1187 tcp_recved(msg->conn->pcb.tcp, recved);
1193 TCPIP_APIMSG_ACK(msg);
1216 (conn->current_msg->msg.w.apiflags & NETCONN_DONTBLOCK);
1217 u8_t apiflags = conn->current_msg->msg.w.apiflags;
1224 conn->write_offset < conn->current_msg->msg.w.len);
1228 ((s32_t)(sys_now() - conn->current_msg->msg.w.time_started) >= conn->send_timeout)) {
1233 conn->current_msg->msg.w.len = 0;
1237 conn->current_msg->msg.w.len = conn->write_offset;
1242 dataptr = (u8_t*)conn->current_msg->msg.w.dataptr + conn->write_offset;
1243 diff = conn->current_msg->msg.w.len - conn->write_offset;
1269 …ERT("do_writemore: invalid length!", ((conn->write_offset + len) <= conn->current_msg->msg.w.len));
1274 if (dontblock && (len < conn->current_msg->msg.w.len)) {
1289 if ((conn->write_offset == conn->current_msg->msg.w.len) || dontblock) {
1291 conn->current_msg->msg.w.len = conn->write_offset;
1312 conn->current_msg->msg.w.len = 0;
1343 do_write(struct api_msg_msg *msg) argument
1345 if (ERR_IS_FATAL(msg->conn->last_err)) {
1346 msg->err = msg->conn->last_err;
1348 if (msg->conn->type == NETCONN_TCP) {
1350 if (msg->conn->state != NETCONN_NONE) {
1352 msg->err = ERR_INPROGRESS;
1353 } else if (msg->conn->pcb.tcp != NULL) {
1354 msg->conn->state = NETCONN_WRITE;
1356 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL &&
1357 msg->conn->write_offset == 0);
1358 LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0);
1359 msg->conn->current_msg = msg;
1360 msg->conn->write_offset = 0;
1362 msg->conn->flags &= ~NETCONN_FLAG_WRITE_DELAYED;
1363 if (do_writemore(msg->conn) != ERR_OK) {
1364 LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE);
1366 sys_arch_sem_wait(&msg->conn->op_completed, 0);
1368 LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
1371 do_writemore(msg->conn);
1377 msg->err = ERR_CONN;
1380 msg->err = ERR_VAL;
1384 msg->err = ERR_VAL;
1388 TCPIP_APIMSG_ACK(msg);
1398 do_getaddr(struct api_msg_msg *msg) argument
1400 if (msg->conn->pcb.ip != NULL) {
1401 *(msg->msg.ad.ipaddr) = (msg->msg.ad.local ? msg->conn->pcb.ip->local_ip :
1402 msg->conn->pcb.ip->remote_ip);
1404 msg->err = ERR_OK;
1405 switch (NETCONNTYPE_GROUP(msg->conn->type)) {
1408 if (msg->msg.ad.local) {
1409 *(msg->msg.ad.port) = msg->conn->pcb.raw->protocol;
1412 msg->err = ERR_CONN;
1418 if (msg->msg.ad.local) {
1419 *(msg->msg.ad.port) = msg->conn->pcb.udp->local_port;
1421 if ((msg->conn->pcb.udp->flags & UDP_FLAGS_CONNECTED) == 0) {
1422 msg->err = ERR_CONN;
1424 *(msg->msg.ad.port) = msg->conn->pcb.udp->remote_port;
1431 …*(msg->msg.ad.port) = (msg->msg.ad.local?msg->conn->pcb.tcp->local_port:msg->conn->pcb.tcp->remote…
1439 msg->err = ERR_CONN;
1441 TCPIP_APIMSG_ACK(msg);
1451 do_close(struct api_msg_msg *msg) argument
1455 if ((msg->conn->state != NETCONN_NONE) && (msg->conn->state != NETCONN_LISTEN)) {
1457 LWIP_ASSERT("msg->conn->type == NETCONN_TCP", msg->conn->type == NETCONN_TCP);
1458 msg->err = ERR_INPROGRESS;
1459 } else if ((msg->conn->pcb.tcp != NULL) && (msg->conn->type == NETCONN_TCP)) {
1460 if ((msg->msg.sd.shut != NETCONN_SHUT_RDWR) && (msg->conn->state == NETCONN_LISTEN)) {
1462 msg->err = ERR_CONN;
1464 if (msg->msg.sd.shut & NETCONN_SHUT_RD) {
1466 netconn_drain(msg->conn);
1468 LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL &&
1469 msg->conn->write_offset == 0);
1470 msg->conn->state = NETCONN_CLOSE;
1471 msg->conn->current_msg = msg;
1472 do_close_internal(msg->conn);
1479 msg->err = ERR_VAL;
1481 sys_sem_signal(&msg->conn->op_completed);
1492 do_join_leave_group(struct api_msg_msg *msg) argument
1494 if (ERR_IS_FATAL(msg->conn->last_err)) {
1495 msg->err = msg->conn->last_err;
1497 if (msg->conn->pcb.tcp != NULL) {
1498 if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
1500 if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
1501 msg->err = igmp_joingroup(msg->msg.jl.netif_addr, msg->msg.jl.multiaddr);
1503 msg->err = igmp_leavegroup(msg->msg.jl.netif_addr, msg->msg.jl.multiaddr);
1508 msg->err = ERR_VAL;
1512 msg->err = ERR_CONN;
1515 TCPIP_APIMSG_ACK(msg);
1528 struct dns_api_msg *msg = (struct dns_api_msg*)arg; local
1530 LWIP_ASSERT("DNS response for wrong host name", strcmp(msg->name, name) == 0);
1535 *msg->err = ERR_VAL;
1538 *msg->err = ERR_OK;
1539 *msg->addr = *ipaddr;
1542 sys_sem_signal(msg->sem);
1554 struct dns_api_msg *msg = (struct dns_api_msg*)arg; local
1556 *msg->err = dns_gethostbyname(msg->name, msg->addr, do_dns_found, msg);
1557 if (*msg->err != ERR_INPROGRESS) {
1560 sys_sem_signal(msg->sem);