version 1.4, 2002/06/26 14:50:04 |
version 1.5, 2004/06/21 17:36:31 |
|
|
#include "monitor_fdpass.h" |
#include "monitor_fdpass.h" |
|
|
void |
void |
mm_send_fd(int socket, int fd) |
mm_send_fd(int sock, int fd) |
{ |
{ |
struct msghdr msg; |
struct msghdr msg; |
char tmp[CMSG_SPACE(sizeof(int))]; |
char tmp[CMSG_SPACE(sizeof(int))]; |
|
|
msg.msg_iov = &vec; |
msg.msg_iov = &vec; |
msg.msg_iovlen = 1; |
msg.msg_iovlen = 1; |
|
|
if ((n = sendmsg(socket, &msg, 0)) == -1) |
if ((n = sendmsg(sock, &msg, 0)) == -1) |
fatal("%s: sendmsg(%d): %s", __func__, fd, |
fatal("%s: sendmsg(%d): %s", __func__, fd, |
strerror(errno)); |
strerror(errno)); |
if (n != 1) |
if (n != 1) |
|
|
} |
} |
|
|
int |
int |
mm_receive_fd(int socket) |
mm_receive_fd(int sock) |
{ |
{ |
struct msghdr msg; |
struct msghdr msg; |
char tmp[CMSG_SPACE(sizeof(int))]; |
char tmp[CMSG_SPACE(sizeof(int))]; |
|
|
msg.msg_control = tmp; |
msg.msg_control = tmp; |
msg.msg_controllen = sizeof(tmp); |
msg.msg_controllen = sizeof(tmp); |
|
|
if ((n = recvmsg(socket, &msg, 0)) == -1) |
if ((n = recvmsg(sock, &msg, 0)) == -1) |
fatal("%s: recvmsg: %s", __func__, strerror(errno)); |
fatal("%s: recvmsg: %s", __func__, strerror(errno)); |
if (n != 1) |
if (n != 1) |
fatal("%s: recvmsg: expected received 1 got %ld", |
fatal("%s: recvmsg: expected received 1 got %ld", |