/* Make sure there are enough bits in the fd set for vcl sessions */
if (ldp->vlsh_bit_val > FD_SETSIZE / 2)
{
- LDBG (0, "ERROR: LDP vlsh bit value %d > FD_SETSIZE/2 %d!",
+ /* Only valid for select/pselect, so just WARNING and not exit */
+ LDBG (0,
+ "WARNING: LDP vlsh bit value %d > FD_SETSIZE/2 %d, "
+ "select/pselect not supported now!",
ldp->vlsh_bit_val, FD_SETSIZE / 2);
- ldp->init = 0;
- return -1;
}
}
env_var_str = getenv (LDP_ENV_TLS_TRANS);
time_out = (timeout->tv_sec == 0 && timeout->tv_nsec == 0) ?
(f64) 0 : (f64) timeout->tv_sec + (f64) timeout->tv_nsec / (f64) 1e9;
+ time_out += clib_time_now (&ldpw->clib_time);
+
/* select as fine grained sleep */
if (!nfds)
{
- time_out += clib_time_now (&ldpw->clib_time);
while (clib_time_now (&ldpw->clib_time) < time_out)
;
return 0;
return -1;
ckp_len = sizeof (ldp->ckpair_index);
- return vppcom_session_attr (vlsh_to_session_index (vlsh),
- VPPCOM_ATTR_SET_CKPAIR, &ldp->ckpair_index,
- &ckp_len);
+ return vls_attr (vlsh, VPPCOM_ATTR_SET_CKPAIR, &ldp->ckpair_index, &ckp_len);
}
int
return size;
}
+ssize_t
+__recv_chk (int fd, void *buf, size_t n, size_t buflen, int flags)
+{
+ if (n > buflen)
+ return -1;
+
+ return recv (fd, buf, n, flags);
+}
+
static int
ldp_vls_sendo (vls_handle_t vlsh, const void *buf, size_t n, int flags,
__CONST_SOCKADDR_ARG addr, socklen_t addr_len)
ldp_init_check ();
vlsh = ldp_fd_to_vlsh (fd);
- if (vlsh != INVALID_SESSION_ID)
+ if (vlsh != VLS_INVALID_HANDLE)
{
size = ldp_vls_sendo (vlsh, buf, n, flags, addr, addr_len);
if (size < 0)
{
struct iovec *iov = msg->msg_iov;
ssize_t total = 0;
- int i, rv;
+ int i, rv = 0;
for (i = 0; i < msg->msg_iovlen; ++i)
{
ldp_init_check ();
- if (sh != INVALID_SESSION_ID)
+ if (sh != VLS_INVALID_HANDLE)
{
clib_warning ("LDP<%d>: LDP-TBD", getpid ());
errno = ENOSYS;
ldp_init_check ();
- if (sh != INVALID_SESSION_ID)
+ if (sh != VLS_INVALID_HANDLE)
{
clib_warning ("LDP<%d>: LDP-TBD", getpid ());
errno = ENOSYS;
case SO_ERROR:
rv = vls_attr (vlsh, VPPCOM_ATTR_GET_ERROR, optval, optlen);
break;
+ case SO_BINDTODEVICE:
+ rv = 0;
+ break;
default:
LDBG (0, "ERROR: fd %d: getsockopt SOL_SOCKET: vlsh %u "
"optname %d unsupported!", fd, vlsh, optname);
shutdown (int fd, int how)
{
vls_handle_t vlsh;
- int rv = 0, flags;
- u32 flags_len = sizeof (flags);
+ int rv = 0;
ldp_init_check ();
if (vlsh != VLS_INVALID_HANDLE)
{
LDBG (0, "called shutdown: fd %u vlsh %u how %d", fd, vlsh, how);
-
- if (vls_attr (vlsh, VPPCOM_ATTR_SET_SHUT, &how, &flags_len))
- {
- close (fd);
- return -1;
- }
-
- if (vls_attr (vlsh, VPPCOM_ATTR_GET_SHUT, &flags, &flags_len))
- {
- close (fd);
- return -1;
- }
-
- if (flags == SHUT_RDWR)
- rv = close (fd);
- else if (flags == SHUT_WR)
- rv = vls_shutdown (vlsh);
+ rv = vls_shutdown (vlsh, how);
}
else
{