- socklen_t from_len = sizeof(from);
- ssize_t len = recvfrom(sock, buf, sizeof(buf), MSG_DONTWAIT, &from, &from_len);
+ struct iovec iov = {buf, sizeof(buf)};
+ struct msghdr msg = {&from, sizeof(from), &iov, 1,
+ cmsg_buf, sizeof(cmsg_buf), 0};
+
+ ssize_t len = recvmsg(sock, &msg, MSG_DONTWAIT);