updated lwip connect() code
This commit is contained in:
@@ -2055,28 +2055,40 @@ void NetconEthernetTap::handleConnect(PhySocket *sock, PhySocket *rpcSock, Conne
|
||||
|
||||
// lwIP
|
||||
#if defined(SDK_LWIP)
|
||||
struct sockaddr_in *rawAddr = (struct sockaddr_in *) &connect_rpc->addr;
|
||||
int port = lwipstack->__lwip_ntohs(rawAddr->sin_port);
|
||||
ip_addr_t connAddr = convert_ip(rawAddr);
|
||||
int err = 0, ip = rawAddr->sin_addr.s_addr;
|
||||
|
||||
ip_addr_t ba;
|
||||
char addrstr[INET6_ADDRSTRLEN];
|
||||
struct sockaddr_in6 *rawAddr = (struct sockaddr_in6 *) &connect_rpc->addr;
|
||||
struct sockaddr *addr = (struct sockaddr*)rawAddr;
|
||||
int err, port = lwipstack->__lwip_ntohs(rawAddr->sin6_port);
|
||||
|
||||
// ipv4
|
||||
#if defined(SDK_IPV4)
|
||||
//ip4_addr_t ba;
|
||||
if(addr->sa_family == AF_INET) {
|
||||
struct sockaddr_in *connaddr = (struct sockaddr_in *)addr;
|
||||
inet_ntop(AF_INET, &(connaddr->sin_addr), addrstr, INET_ADDRSTRLEN);
|
||||
sprintf(addrstr, "%s:%d", addrstr, lwipstack->__lwip_ntohs(connaddr->sin_port));
|
||||
}
|
||||
#endif
|
||||
|
||||
// ipv6
|
||||
#if defined(SDK_IPV6)
|
||||
//ip6_addr_t ba;
|
||||
struct sockaddr_in6 *in6 = (struct sockaddr_in6*)&connect_rpc->addr;
|
||||
in6_to_ip6((ip6_addr *)&ba, in6);
|
||||
|
||||
if(addr->sa_family == AF_INET6) {
|
||||
struct sockaddr_in6 *connaddr6 = (struct sockaddr_in6 *)addr;
|
||||
inet_ntop(AF_INET6, &(connaddr6->sin6_addr), addrstr, INET6_ADDRSTRLEN);
|
||||
sprintf(addrstr, "%s:%d", addrstr, lwipstack->__lwip_ntohs(connaddr6->sin6_port));
|
||||
}
|
||||
#endif
|
||||
DEBUG_INFO("addr=%s", addrstr);
|
||||
|
||||
if(conn->type == SOCK_DGRAM) {
|
||||
// Generates no network traffic
|
||||
if((err = lwipstack->__udp_connect(conn->UDP_pcb,&connAddr,port)) < 0)
|
||||
if((err = lwipstack->__udp_connect(conn->UDP_pcb,(ip_addr_t *)&ba,port)) < 0)
|
||||
DEBUG_ERROR("error while connecting to with UDP");
|
||||
lwipstack->__udp_recv(conn->UDP_pcb, nc_udp_recved, new Larg(this, conn));
|
||||
sendReturnValue(rpcSock, 0, ERR_OK);
|
||||
@@ -2095,13 +2107,7 @@ void NetconEthernetTap::handleConnect(PhySocket *sock, PhySocket *rpcSock, Conne
|
||||
sendReturnValue(rpcSock, -1, EAGAIN);
|
||||
return;
|
||||
}
|
||||
|
||||
static ip_addr_t ba;
|
||||
|
||||
IP6_ADDR2(&ba, 0xfd56,0x5799,0xd8f6,0x1238,0x8c99,0x9322,0x30ce,0x418a);
|
||||
|
||||
|
||||
if((err = lwipstack->__tcp_connect(conn->TCP_pcb,&ba,port,nc_connected)) < 0)
|
||||
if((err = lwipstack->__tcp_connect(conn->TCP_pcb,(ip_addr_t *)&ba,port,nc_connected)) < 0)
|
||||
{
|
||||
if(err == ERR_ISCONN) {
|
||||
sendReturnValue(rpcSock, -1, EISCONN); // Already in connected state
|
||||
|
||||
Reference in New Issue
Block a user