net: Make si_listen callback optional
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
2553b7701c
commit
a97e2523a4
@ -57,7 +57,6 @@ static int bluetooth_getsockname(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
static int bluetooth_getpeername(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
static int bluetooth_listen(FAR struct socket *psock, int backlog);
|
||||
static int bluetooth_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int bluetooth_accept(FAR struct socket *psock,
|
||||
@ -87,7 +86,7 @@ const struct sock_intf_s g_bluetooth_sockif =
|
||||
bluetooth_bind, /* si_bind */
|
||||
bluetooth_getsockname, /* si_getsockname */
|
||||
bluetooth_getpeername, /* si_getpeername */
|
||||
bluetooth_listen, /* si_listen */
|
||||
NULL, /* si_listen */
|
||||
bluetooth_connect, /* si_connect */
|
||||
bluetooth_accept, /* si_accept */
|
||||
bluetooth_poll_local, /* si_poll */
|
||||
@ -672,36 +671,6 @@ static int bluetooth_getpeername(FAR struct socket *psock,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: bluetooth_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of
|
||||
* PF_BLUETOOTH sockets, psock_listen() calls this function. The listen()
|
||||
* call does not apply only to PF_BLUETOOTH sockets.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, boound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int bluetooth_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: bluetooth_poll
|
||||
*
|
||||
|
@ -53,7 +53,6 @@ static sockcaps_t can_sockcaps(FAR struct socket *psock);
|
||||
static void can_addref(FAR struct socket *psock);
|
||||
static int can_bind(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int can_listen(FAR struct socket *psock, int backlog);
|
||||
static int can_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int can_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
|
||||
@ -74,7 +73,7 @@ const struct sock_intf_s g_can_sockif =
|
||||
can_bind, /* si_bind */
|
||||
NULL, /* si_getsockname */
|
||||
NULL, /* si_getpeername */
|
||||
can_listen, /* si_listen */
|
||||
NULL, /* si_listen */
|
||||
can_connect, /* si_connect */
|
||||
can_accept, /* si_accept */
|
||||
can_poll_local, /* si_poll */
|
||||
@ -338,37 +337,6 @@ static int can_bind(FAR struct socket *psock,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: can_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of AFINET
|
||||
* and AFINET6 sockets, psock_listen() calls this function. The
|
||||
* psock_listen() call applies only to sockets of type SOCK_STREAM or
|
||||
* SOCK_SEQPACKET.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, bound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int can_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: can_connect
|
||||
*
|
||||
|
@ -47,7 +47,6 @@
|
||||
static int icmp_setup(FAR struct socket *psock);
|
||||
static sockcaps_t icmp_sockcaps(FAR struct socket *psock);
|
||||
static void icmp_addref(FAR struct socket *psock);
|
||||
static int icmp_listen(FAR struct socket *psock, int backlog);
|
||||
static int icmp_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int icmp_accept(FAR struct socket *psock,
|
||||
@ -69,7 +68,7 @@ const struct sock_intf_s g_icmp_sockif =
|
||||
NULL, /* si_bind */
|
||||
NULL, /* si_getsockname */
|
||||
NULL, /* si_getpeername */
|
||||
icmp_listen, /* si_listen */
|
||||
NULL, /* si_listen */
|
||||
icmp_connect, /* si_connect */
|
||||
icmp_accept, /* si_accept */
|
||||
icmp_netpoll, /* si_poll */
|
||||
@ -273,36 +272,6 @@ static int icmp_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: icmp_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of raw
|
||||
* packet sockets, psock_listen() calls this function. The psock_listen()
|
||||
* call applies only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, boound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int icmp_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: icmp_netpoll
|
||||
*
|
||||
|
@ -47,7 +47,6 @@
|
||||
static int icmpv6_setup(FAR struct socket *psock);
|
||||
static sockcaps_t icmpv6_sockcaps(FAR struct socket *psock);
|
||||
static void icmpv6_addref(FAR struct socket *psock);
|
||||
static int icmpv6_listen(FAR struct socket *psock, int backlog);
|
||||
static int icmpv6_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int icmpv6_accept(FAR struct socket *psock,
|
||||
@ -69,7 +68,7 @@ const struct sock_intf_s g_icmpv6_sockif =
|
||||
NULL, /* si_bind */
|
||||
NULL, /* si_getsockname */
|
||||
NULL, /* si_getpeername */
|
||||
icmpv6_listen, /* si_listen */
|
||||
NULL, /* si_listen */
|
||||
icmpv6_connect, /* si_connect */
|
||||
icmpv6_accept, /* si_accept */
|
||||
icmpv6_netpoll, /* si_poll */
|
||||
@ -273,36 +272,6 @@ static int icmpv6_accept(FAR struct socket *psock, FAR struct sockaddr *addr,
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: icmpv6_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of raw
|
||||
* packet sockets, psock_listen() calls this function. The psock_listen()
|
||||
* call applies only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, boound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int icmpv6_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: icmpv6_netpoll
|
||||
*
|
||||
|
@ -55,7 +55,6 @@ static int ieee802154_getsockname(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
static int ieee802154_getpeername(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
static int ieee802154_listen(FAR struct socket *psock, int backlog);
|
||||
static int ieee802154_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int ieee802154_accept(FAR struct socket *psock,
|
||||
@ -77,7 +76,7 @@ const struct sock_intf_s g_ieee802154_sockif =
|
||||
ieee802154_bind, /* si_bind */
|
||||
ieee802154_getsockname, /* si_getsockname */
|
||||
ieee802154_getpeername, /* si_getpeername */
|
||||
ieee802154_listen, /* si_listen */
|
||||
NULL, /* si_listen */
|
||||
ieee802154_connect, /* si_connect */
|
||||
ieee802154_accept, /* si_accept */
|
||||
ieee802154_poll_local, /* si_poll */
|
||||
@ -546,36 +545,6 @@ static int ieee802154_getpeername(FAR struct socket *psock,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ieee802154_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of
|
||||
* PF_IEEE802154 sockets, psock_listen() calls this function. The listen()
|
||||
* call does not apply only to PF_IEEE802154 sockets.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, boound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int ieee802154_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: ieee802154_poll
|
||||
*
|
||||
|
@ -56,9 +56,6 @@ static int local_getsockname(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
static int local_getpeername(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
#ifndef CONFIG_NET_LOCAL_STREAM
|
||||
static int local_listen(FAR struct socket *psock, int backlog);
|
||||
#endif
|
||||
static int local_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
#ifndef CONFIG_NET_LOCAL_STREAM
|
||||
@ -92,7 +89,11 @@ const struct sock_intf_s g_local_sockif =
|
||||
local_bind, /* si_bind */
|
||||
local_getsockname, /* si_getsockname */
|
||||
local_getpeername, /* si_getpeername */
|
||||
#ifdef CONFIG_NET_LOCAL_STREAM
|
||||
local_listen, /* si_listen */
|
||||
#else
|
||||
NULL, /* si_listen */
|
||||
#endif
|
||||
local_connect, /* si_connect */
|
||||
local_accept, /* si_accept */
|
||||
local_poll, /* si_poll */
|
||||
@ -548,38 +549,6 @@ static int local_setsockopt(FAR struct socket *psock, int level, int option,
|
||||
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: local_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of local
|
||||
* unix sockets, psock_listen() calls this function. The psock_listen()
|
||||
* call applies only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, boound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_NET_LOCAL_STREAM
|
||||
int local_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: local_connect
|
||||
*
|
||||
|
@ -56,7 +56,6 @@ static int netlink_getsockname(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
static int netlink_getpeername(FAR struct socket *psock,
|
||||
FAR struct sockaddr *addr, FAR socklen_t *addrlen);
|
||||
static int netlink_listen(FAR struct socket *psock, int backlog);
|
||||
static int netlink_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int netlink_accept(FAR struct socket *psock,
|
||||
@ -82,7 +81,7 @@ const struct sock_intf_s g_netlink_sockif =
|
||||
netlink_bind, /* si_bind */
|
||||
netlink_getsockname, /* si_getsockname */
|
||||
netlink_getpeername, /* si_getpeername */
|
||||
netlink_listen, /* si_listen */
|
||||
NULL, /* si_listen */
|
||||
netlink_connect, /* si_connect */
|
||||
netlink_accept, /* si_accept */
|
||||
netlink_poll, /* si_poll */
|
||||
@ -365,37 +364,6 @@ static int netlink_getpeername(FAR struct socket *psock,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: netlink_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of AFINET
|
||||
* and AFINET6 sockets, psock_listen() calls this function. The
|
||||
* psock_listen() call applies only to sockets of type SOCK_STREAM or
|
||||
* SOCK_SEQPACKET.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, bound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int netlink_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: netlink_connect
|
||||
*
|
||||
|
@ -52,7 +52,6 @@ static sockcaps_t pkt_sockcaps(FAR struct socket *psock);
|
||||
static void pkt_addref(FAR struct socket *psock);
|
||||
static int pkt_bind(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int pkt_listen(FAR struct socket *psock, int backlog);
|
||||
static int pkt_connect(FAR struct socket *psock,
|
||||
FAR const struct sockaddr *addr, socklen_t addrlen);
|
||||
static int pkt_accept(FAR struct socket *psock,
|
||||
@ -74,7 +73,7 @@ const struct sock_intf_s g_pkt_sockif =
|
||||
pkt_bind, /* si_bind */
|
||||
NULL, /* si_getsockname */
|
||||
NULL, /* si_getpeername */
|
||||
pkt_listen, /* si_listen */
|
||||
NULL, /* si_listen */
|
||||
pkt_connect, /* si_connect */
|
||||
pkt_accept, /* si_accept */
|
||||
pkt_poll_local, /* si_poll */
|
||||
@ -368,36 +367,6 @@ static int pkt_bind(FAR struct socket *psock,
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: pkt_listen
|
||||
*
|
||||
* Description:
|
||||
* To accept connections, a socket is first created with psock_socket(), a
|
||||
* willingness to accept incoming connections and a queue limit for
|
||||
* incoming connections are specified with psock_listen(), and then the
|
||||
* connections are accepted with psock_accept(). For the case of raw
|
||||
* packet sockets, psock_listen() calls this function. The psock_listen()
|
||||
* call applies only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.
|
||||
*
|
||||
* Input Parameters:
|
||||
* psock Reference to an internal, boound socket structure.
|
||||
* backlog The maximum length the queue of pending connections may grow.
|
||||
* If a connection request arrives with the queue full, the client
|
||||
* may receive an error with an indication of ECONNREFUSED or,
|
||||
* if the underlying protocol supports retransmission, the request
|
||||
* may be ignored so that retries succeed.
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, zero is returned. On error, a negated errno value is
|
||||
* returned. See listen() for the set of appropriate error values.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int pkt_listen(FAR struct socket *psock, int backlog)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: pkt_poll
|
||||
*
|
||||
|
@ -82,7 +82,12 @@ int psock_listen(FAR struct socket *psock, int backlog)
|
||||
|
||||
/* Let the address family's listen() method handle the operation */
|
||||
|
||||
DEBUGASSERT(psock->s_sockif != NULL && psock->s_sockif->si_listen != NULL);
|
||||
DEBUGASSERT(psock->s_sockif != NULL);
|
||||
if (psock->s_sockif->si_listen == NULL)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
ret = psock->s_sockif->si_listen(psock, backlog);
|
||||
if (ret >= 0)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user