net/usrsock: fix USRSOCK to work with recent changes to networking layer

This commit is contained in:
Jussi Kivilinna 2017-07-31 07:38:24 -06:00 committed by Gregory Nutt
parent 52becb7811
commit 86df036ff2
6 changed files with 38 additions and 26 deletions

View File

@ -54,10 +54,10 @@
/* Event message flags */
#define USRSOCK_EVENT_ABORT (1 << 0)
#define USRSOCK_EVENT_SENDTO_READY (1 << 1)
#define USRSOCK_EVENT_RECVFROM_AVAIL (1 << 2)
#define USRSOCK_EVENT_REMOTE_CLOSED (1 << 3)
#define USRSOCK_EVENT_ABORT (1 << 1)
#define USRSOCK_EVENT_SENDTO_READY (1 << 2)
#define USRSOCK_EVENT_RECVFROM_AVAIL (1 << 3)
#define USRSOCK_EVENT_REMOTE_CLOSED (1 << 4)
/* Response message flags */

View File

@ -1611,6 +1611,14 @@ ssize_t inet_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
#endif
default:
#ifdef CONFIG_NET_USRSOCK
if (psock->s_type == SOCK_USRSOCK_TYPE)
{
minlen = 0;
break;
}
#endif
DEBUGPANIC();
return -EINVAL;
}

View File

@ -208,6 +208,8 @@ static int inet_udp_alloc(FAR struct socket *psock)
static int usrsock_socket_setup(int domain, int type, int protocol,
FAR struct socket *psock)
{
int ret;
switch (domain)
{
default:
@ -219,13 +221,13 @@ static int usrsock_socket_setup(int domain, int type, int protocol,
#ifndef CONFIG_NET_USRSOCK_UDP
if (type == SOCK_DGRAM)
{
return OK;
return -ENETDOWN;
}
#endif
#ifndef CONFIG_NET_USRSOCK_TCP
if (type == SOCK_STREAM)
{
return OK;
return -ENETDOWN;
}
#endif
psock->s_type = PF_UNSPEC;
@ -240,7 +242,13 @@ static int usrsock_socket_setup(int domain, int type, int protocol,
* to open socket with kernel networking stack in this case.
*/
return usrsock_socket(domain, type, protocol, psock);
ret = usrsock_socket(domain, type, protocol, psock);
if (ret == -ENETDOWN)
{
nwarn("WARNING: usrsock daemon is not running\n");
}
return ret;
}
}
}
@ -275,20 +283,15 @@ static int inet_setup(FAR struct socket *psock, int protocol)
/* Handle special setup for user INET sockets */
ret = usrsock_socket_setup(psock->s_domain, psock->s_type, protocol, psock);
if (ret < 0)
if (ret == -ENETDOWN)
{
if (ret == -ENETDOWN)
{
/* -ENETDOWN means that usrsock daemon is not running. Attempt to
* open socket with kernel networking stack.
*/
nwarn("WARNING: usrsock daemon is not running\n");
}
else
{
return ret;
}
/* -ENETDOWN means that usrsock daemon is not running. Attempt to
* open socket with kernel networking stack.
*/
}
else
{
return ret;
}
#endif /* CONFIG_NET_USRSOCK */

View File

@ -66,9 +66,10 @@
/* Internal event flags */
#define USRSOCK_EVENT_REQ_COMPLETE (1 << 14)
#define USRSOCK_EVENT_CONNECT_RESP (1 << 15)
#define USRSOCK_EVENT_INTERNAL_MASK 0xf000U
#define USRSOCK_EVENT_CONNECT_READY (1 << 0)
#define USRSOCK_EVENT_REQ_COMPLETE (1 << 15)
#define USRSOCK_EVENT_INTERNAL_MASK (USRSOCK_EVENT_CONNECT_READY | \
USRSOCK_EVENT_REQ_COMPLETE)
/****************************************************************************
* Public Type Definitions

View File

@ -86,7 +86,7 @@ int usrsock_event(FAR struct usrsock_conn_s *conn, uint16_t events)
if (conn->state == USRSOCK_CONN_STATE_CONNECTING)
{
conn->state = USRSOCK_CONN_STATE_READY;
events |= USRSOCK_EVENT_CONNECT_RESP;
events |= USRSOCK_EVENT_CONNECT_READY;
if (conn->resp.result == 0)
{

View File

@ -94,7 +94,7 @@ static uint16_t poll_event(FAR struct net_driver_s *dev, FAR void *pvconn,
eventset |= (POLLERR | POLLHUP);
}
else if ((flags & USRSOCK_EVENT_CONNECT_RESP) && !conn->connected)
else if ((flags & USRSOCK_EVENT_CONNECT_READY) && !conn->connected)
{
ninfo("socket connect failed.\n");
@ -213,7 +213,7 @@ static int usrsock_pollsetup(FAR struct socket *psock, FAR struct pollfd *fds)
* callback processing.
*/
cb->flags = USRSOCK_EVENT_ABORT | USRSOCK_EVENT_CONNECT_RESP |
cb->flags = USRSOCK_EVENT_ABORT | USRSOCK_EVENT_CONNECT_READY |
USRSOCK_EVENT_SENDTO_READY | USRSOCK_EVENT_RECVFROM_AVAIL |
USRSOCK_EVENT_REMOTE_CLOSED;
cb->priv = (FAR void *)info;