summaryrefslogtreecommitdiffstats
path: root/src/socket_wrapper.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2014-05-23 15:44:23 +0200
committerAndreas Schneider <asn@samba.org>2014-05-26 16:45:16 +0200
commit69f22c94b4ad061263c40c8c271a86f444cee72d (patch)
treed76637a1c0a11a6bddf9a56082b5737f32ed4074 /src/socket_wrapper.c
parent63c59be9ace8282ed19b15fa9d66c7448c1bdd97 (diff)
downloadsocket_wrapper-69f22c94b4ad061263c40c8c271a86f444cee72d.tar.gz
socket_wrapper-69f22c94b4ad061263c40c8c271a86f444cee72d.tar.xz
socket_wrapper-69f22c94b4ad061263c40c8c271a86f444cee72d.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 'src/socket_wrapper.c')
-rw-r--r--src/socket_wrapper.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 5212cad..8cb924e 100644
--- a/src/socket_wrapper.c
+++ b/src/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,