mirror of
https://gitlab.com/openconnect/ocserv.git
synced 2026-03-10 23:07:00 +08:00
small reorganization
This commit is contained in:
@@ -77,6 +77,44 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int send_udp_fd(main_server_st* s, struct proc_st * proc,
|
||||
void* cli_addr, socklen_t cli_addr_size, int fd)
|
||||
{
|
||||
struct iovec iov[2];
|
||||
uint8_t cmd = CMD_UDP_FD;
|
||||
struct msghdr hdr;
|
||||
union {
|
||||
struct cmsghdr cm;
|
||||
char control[CMSG_SPACE(sizeof(int))];
|
||||
} control_un;
|
||||
struct cmsghdr *cmptr;
|
||||
|
||||
|
||||
memset(&hdr, 0, sizeof(hdr));
|
||||
iov[0].iov_base = &cmd;
|
||||
iov[0].iov_len = 1;
|
||||
hdr.msg_iovlen++;
|
||||
|
||||
iov[1].iov_base = cli_addr;
|
||||
iov[1].iov_len = cli_addr_size;
|
||||
hdr.msg_iovlen++;
|
||||
|
||||
hdr.msg_iov = iov;
|
||||
|
||||
hdr.msg_control = control_un.control;
|
||||
hdr.msg_controllen = sizeof(control_un.control);
|
||||
|
||||
cmptr = CMSG_FIRSTHDR(&hdr);
|
||||
cmptr->cmsg_len = CMSG_LEN(sizeof(int));
|
||||
cmptr->cmsg_level = SOL_SOCKET;
|
||||
cmptr->cmsg_type = SCM_RIGHTS;
|
||||
memcpy(CMSG_DATA(cmptr), &fd, sizeof(int));
|
||||
|
||||
return(sendmsg(proc->fd, &hdr, 0));
|
||||
}
|
||||
|
||||
|
||||
|
||||
int handle_commands(main_server_st *s, struct proc_st* proc)
|
||||
{
|
||||
struct iovec iov[2];
|
||||
|
||||
Reference in New Issue
Block a user