From 6a35c6777d65cedaac51ac96cc47223807b15592 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Tue, 3 Jun 2014 15:04:18 +0200 Subject: swrap: Add swrap_sendmsg_filter_cmsg_socket(). Signed-off-by: Andreas Schneider Reviewed-by: Michael Adam --- lib/socket_wrapper/socket_wrapper.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/socket_wrapper/socket_wrapper.c b/lib/socket_wrapper/socket_wrapper.c index 5212cadd356..8cb924e282a 100644 --- a/lib/socket_wrapper/socket_wrapper.c +++ b/lib/socket_wrapper/socket_wrapper.c @@ -3157,6 +3157,9 @@ static int swrap_msghdr_add_socket_info(struct socket_info *si, static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg, uint8_t *cm_data, size_t *cm_data_space); +static int swrap_sendmsg_filter_cmsg_socket(struct cmsghdr *cmsg, + uint8_t *cm_data, + size_t *cm_data_space); static int swrap_sendmsg_filter_cmsghdr(struct msghdr *msg, uint8_t *cm_data, @@ -3174,7 +3177,9 @@ static int swrap_sendmsg_filter_cmsghdr(struct msghdr *msg, cmsg = CMSG_NXTHDR(msg, cmsg)) { switch (cmsg->cmsg_level) { case IPPROTO_IP: - /* TODO swrap_sendmsg_filter_cmsg_socket */ + rc = swrap_sendmsg_filter_cmsg_socket(cmsg, + cm_data, + cm_data_space); break; default: rc = swrap_sendmsg_copy_cmsg(cmsg, @@ -3211,6 +3216,35 @@ static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg, return 0; } + +static int swrap_sendmsg_filter_cmsg_socket(struct cmsghdr *cmsg, + uint8_t *cm_data, + size_t *cm_data_space) +{ + int rc = -1; + + switch(cmsg->cmsg_type) { +#ifdef IP_PKTINFO + case IP_PKTINFO: + /* TODO swrap_msghdr_filter_cmsg_pktinfo */ + break; +#endif +#ifdef IPV6_PKTINFO + case IPV6_PKTINFO: + /* TODO swrap_msghdr_filter_cmsg_pktinfo */ + break; +#endif +#ifdef IP_RECVDSTADDR + case IP_RECVDSTADDR: + /* TODO swrap_msghdr_filter_cmsg_pktinfo */ + break; +#endif + default: + break; + } + + return rc; +} #endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL */ static ssize_t swrap_sendmsg_before(int fd, -- cgit v1.2.1