2
0
mirror of https://github.com/openvswitch/ovs synced 2025-09-03 07:45:30 +00:00

socket-util: Add functions for sending fds over Unix domain sockets.

These will be used in upcoming commits.

This commit also adds corresponding definitions to the "sparse" header,
so that sparse still works.

Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Ben Pfaff
2012-06-14 09:46:18 -07:00
parent a0505c49dd
commit fd94a42c43
3 changed files with 310 additions and 0 deletions

View File

@@ -47,6 +47,37 @@ struct msghdr {
int msg_flags;
};
struct cmsghdr {
size_t cmsg_len;
int cmsg_level;
int cmsg_type;
unsigned char cmsg_data[];
};
#define __CMSG_ALIGNTO sizeof(size_t)
#define CMSG_ALIGN(LEN) \
(((LEN) + __CMSG_ALIGNTO - 1) / __CMSG_ALIGNTO * __CMSG_ALIGNTO)
#define CMSG_DATA(CMSG) ((CMSG)->cmsg_data)
#define CMSG_LEN(LEN) (sizeof(struct cmsghdr) + (LEN))
#define CMSG_SPACE(LEN) CMSG_ALIGN(CMSG_LEN(LEN))
#define CMSG_FIRSTHDR(MSG) \
((MSG)->msg_controllen ? (struct cmsghdr *) (MSG)->msg_control : NULL)
#define CMSG_NXTHDR(MSG, CMSG) __cmsg_nxthdr(MSG, CMSG)
static inline struct cmsghdr *
__cmsg_nxthdr(struct msghdr *msg, struct cmsghdr *cmsg)
{
size_t ofs = (char *) cmsg - (char *) msg->msg_control;
size_t next_ofs = ofs + CMSG_ALIGN(cmsg->cmsg_len);
return (next_ofs < msg->msg_controllen
? (void *) ((char *) msg->msg_control + next_ofs)
: NULL);
}
enum {
SCM_RIGHTS = 1
};
enum {
SOCK_DGRAM,
SOCK_RAW,