- size = vls_sendto (vlsh, (void *) buf, n, flags, ep);
+ if (addr)
+ {
+ ep.ip = src_addr;
+ size = vls_recvfrom (vlsh, buf, n, flags, &ep);
+
+ if (size > 0)
+ {
+ rv = ldp_copy_ep_to_sockaddr (addr, addr_len, &ep);
+ if (rv < 0)
+ size = rv;
+ }
+ }
+ else
+ size = vls_recvfrom (vlsh, buf, n, flags, NULL);
+
+ return size;
+}
+
+ssize_t
+sendto (int fd, const void *buf, size_t n, int flags,
+ __CONST_SOCKADDR_ARG addr, socklen_t addr_len)
+{
+ vls_handle_t vlsh;
+ ssize_t size;
+
+ ldp_init_check ();
+
+ vlsh = ldp_fd_to_vlsh (fd);
+ if (vlsh != VLS_INVALID_HANDLE)
+ {
+ size = ldp_vls_sendo (vlsh, buf, n, flags, addr, addr_len);