- memset(&m, 0, sizeof m);
- m.msg_iov = &iov;
- m.msg_iovlen = 1;
- iov.iov_base = (void *)sm;
- iov.iov_len = sizeof *sm;
- if(datafd != -1) {
- m.msg_control = (void *)&u.cmsg;
- m.msg_controllen = sizeof u;
- memset(&u, 0, sizeof u);
- u.cmsg.cmsg_len = CMSG_LEN(sizeof (int));
- u.cmsg.cmsg_level = SOL_SOCKET;
- u.cmsg.cmsg_type = SCM_RIGHTS;
- *(int *)CMSG_DATA(&u.cmsg) = datafd;
- }