summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2014-06-03 15:04:18 +0200
committerMichael Adam <obnox@samba.org>2014-06-05 23:57:10 +0200
commit6a35c6777d65cedaac51ac96cc47223807b15592 (patch)
treefac5758241bd2bde2ac69286f327c07698326cc8 /lib
parent2fe96124369fa51e18d83f7b90a8735047fa7012 (diff)
downloadsamba-6a35c6777d65cedaac51ac96cc47223807b15592.tar.gz
samba-6a35c6777d65cedaac51ac96cc47223807b15592.tar.xz
samba-6a35c6777d65cedaac51ac96cc47223807b15592.zip
swrap: Add swrap_sendmsg_filter_cmsg_socket().
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/socket_wrapper/socket_wrapper.c36
1 files changed, 35 insertions, 1 deletions
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,