+ if (list->rw_state == STATE_SHUT_WR || list->rw_state == STATE_SHUT_RDWR) {
+ errno = ENOTCONN;
+ goto sock_err;
+ }
+/*
+ if (list->state == STATE_NOBOUND) {
+ errno = EDESTADDRREQ;
+ goto sock_err;
+ }
+ */
+
+ /* Specify the components of the message in an "iovec". */
+ __iov[0].iov_base = __buf;
+ __iov[0].iov_len = __n;
+
+ /* The message header contains parameters for sendmsg. */
+ __msgh.msg_name = (caddr_t) __addr;
+ __msgh.msg_namelen = sizeof(__addr);
+ __msgh.msg_iov = __iov;
+ __msgh.msg_iovlen = 1;
+ __msgh.msg_control = NULL; /* irrelevant to AF_INET */
+ __msgh.msg_controllen = 0; /* irrelevant to AF_INET */
+
+ return sendmsg(__fd, &__msgh, 0);
+
+sock_err:
+ return -1;