- ret = recvfrom(cs, buf, sizeof(buf), 0, (struct sockaddr *)&name, &namelen);
+
+ iov.iov_len = sizeof(buf);
+ iov.iov_base = buf;
+ mhdr.msg_name = &name;
+ mhdr.msg_namelen = sizeof(name);
+ mhdr.msg_iov = &iov;
+ mhdr.msg_iovlen = 1;
+ mhdr.msg_control = cmsgbuf;
+ mhdr.msg_controllen = sizeof(cmsgbuf);
+
+ ret = recvmsg(cs, &mhdr, 0);