29 #include <sys/types.h> 30 #include <sys/socket.h> 41 #if defined(SOLARIS) || defined(UNIXWARE7) 42 #include <sys/sockio.h> 43 #elif defined(AIX) || defined(OSF1) || defined(LINUX) || defined(ALPHA_LINUX) 44 #include <sys/ioctl.h> 47 #if defined(LINUX) || defined(ALPHA_LINUX) || defined(UNIXWARE7) || defined(AIX) 48 #define CONTROLLEN (sizeof(struct cmsghdr) + sizeof(int)) 58 recv_fd (
int fd,
int *rid,
char *driver_info)
64 #if defined(LINUX) || defined(ALPHA_LINUX) || defined(UNIXWARE7) || defined(AIX) 65 static struct cmsghdr *cmptr =
NULL;
69 iov[0].iov_base = (
char *) &send_msg;
70 iov[0].iov_len =
sizeof (
struct sendmsg_s);
73 msg.msg_name = (caddr_t)
NULL;
75 #if !defined(LINUX) && !defined(ALPHA_LINUX) && !defined(UNIXWARE7) && !defined(AIX) 76 msg.msg_accrights = (caddr_t) & new_fd;
77 msg.msg_accrightslen =
sizeof (new_fd);
81 msg.msg_control = (
void *) cmptr;
84 rc = recvmsg (fd, &msg, 0);
86 if (
rc < (
signed int) (
sizeof (
int)))
89 printf (
"recvmsg failed. errno = %d. str=%s\n", errno, strerror (errno));
101 #if defined(LINUX) || defined(ALPHA_LINUX) || defined(UNIXWARE7) || defined(AIX) 102 new_fd = *(
int *) CMSG_DATA (cmptr);
106 ioctl (new_fd, SIOCSPGRP, (caddr_t) & pid);
108 fcntl (new_fd, F_SETOWN, pid);
#define SRV_CON_CLIENT_INFO_SIZE
char driver_info[SRV_CON_CLIENT_INFO_SIZE]
int recv_fd(int fd, int *rid, char *driver_info)