net/usrsock: fix USRSOCK to work with recent changes to networking layer
This commit is contained in:
parent
52becb7811
commit
86df036ff2
@ -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 */
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user